一、项目概述
1.拓扑结构
monitor55
web33--| | -------mysql11
-------- maxscale77-----|
web44--| | -------mysql22
NFS30
2.IP地址及角色规划
主机名 IP地址 角色
mysql11 192.168.4.11/24 MySQL数据库服务器
mysql22 192.168.4.22/24 MySQL数据库服务器
maxscale77 192.168.4.77/24 读写分离服务器
nfs30 192.168.4.30/24 共享存储服务器
web33 192.168.4.33/24 网站服务器
web44 192.168.4.44/24 网站服务器
zabbix55 192.168.4.55/24 监控服务器
二、部署数据库服务mysql
1)配置逻辑卷(两台数据库服务器相同操作)
1.拓扑图
为两台数据库服务器,分别添加两块5G磁盘
mysql服务器 /dev/sdb 5G /dev/sdc 5G
2.添加磁盘
3.创建LV
两台服务器
分区
修改系统类型为8e
安装软件lvm2
创建PV
创建VG(卷组名 vg0)
创建LV (逻辑卷名 lv0)
格式化LV (文件系统类型 xfs)
[root@mysql11 ~]# fdisk /dev/sdb
欢迎使用 fdisk (util-linux 2.23.2)。
更改将停留在内存中,直到您决定将更改写入磁盘。
使用写入命令前请三思。
Device does not contain a recognized partition table
使用磁盘标识符 0xee9ddad9 创建新的 DOS 磁盘标签。
命令(输入 m 获取帮助):n
Partition type:
p primary (0 primary, 0 extended, 4 free)
e extended
Select (default p): p
分区号 (1-4,默认 1):
起始 扇区 (2048-10485759,默认为 2048):
将使用默认值 2048
Last 扇区, +扇区 or +size{K,M,G} (2048-10485759,默认为 10485759):
将使用默认值 10485759
分区 1 已设置为 Linux 类型,大小设为 5 GiB
命令(输入 m 获取帮助):w
[root@mysql11 ~]# fdisk -l /dev/sdb
磁盘 /dev/sdb:5368 MB, 5368709120 字节,10485760 个扇区
设备 Boot Start End Blocks Id System
/dev/sdb1 2048 10485759 5241856 83 Linux
[root@mysql11 ~]# fdisk /dev/sdb
命令(输入 m 获取帮助):t
已选择分区 1
Hex 代码(输入 L 列出所有代码):8e
命令(输入 m 获取帮助):p
磁盘 /dev/sdb:5368 MB, 5368709120 字节,10485760 个扇区
设备 Boot Start End Blocks Id System
/dev/sdb1 2048 10485759 5241856 8e Linux LVM
命令(输入 m 获取帮助):w
[root@mysql11 ~]# fdisk /dev/sdc
命令(输入 m 获取帮助):n
Partition type:
p primary (0 primary, 0 extended, 4 free)
e extended
Select (default p): p
分区号 (1-4,默认 1):
起始 扇区 (2048-10485759,默认为 2048):
将使用默认值 2048
Last 扇区, +扇区 or +size{K,M,G} (2048-10485759,默认为 10485759):
将使用默认值 10485759
分区 1 已设置为 Linux 类型,大小设为 5 GiB
命令(输入 m 获取帮助):t
已选择分区 1
Hex 代码(输入 L 列出所有代码):8e
已将分区“Linux”的类型更改为“Linux LVM”
命令(输入 m 获取帮助):p
磁盘 /dev/sdc:5368 MB, 5368709120 字节,10485760 个扇区
设备 Boot Start End Blocks Id System
/dev/sdc1 2048 10485759 5241856 8e Linux LVM
命令(输入 m 获取帮助):w
[root@mysql11 ~]# yum -y install lvm2
[root@mysql11 ~]# pvcreate /dev/sdb1 /dev/sdc1
Physical volume "/dev/sdb1" successfully created.
Physical volume "/dev/sdc1" successfully created.
[root@mysql11 ~]# pvscan
PV /dev/sdb1 lvm2 [<5.00 GiB]
PV /dev/sdc1 lvm2 [<5.00 GiB]
[root@mysql11 ~]# vgcreate vg0 /dev/sdb1 /dev/sdc1
Volume group "vg0" successfully created
[root@mysql11 ~]# vgscan
Reading volume groups from cache.
Found volume group "vg0" using metadata type lvm2
[root@mysql11 ~]# lvcreate -L 9.99G -n lv0 vg0
Rounding up size to full physical extent 9.99 GiB
Logical volume "lv0" created.
[root@mysql11 ~]# lvscan
ACTIVE '/dev/vg0/lv0' [9.99 GiB] inherit
[root@mysql11 ~]# mkfs.xfs /dev/vg0/lv0
[root@mysql11 ~]# blkid /dev/vg0/lv0
/dev/vg0/lv0: UUID="e2351af8-27e6-4398-8044-b2ab2ebd18db" TYPE="xfs"
2)配置数据库服务
1.安装mysql软件(两台数据库服务器相同操作)
下载软件
解压缩
安装依赖软件
安装MySQL服务软件
[root@mysql11 ~]# wget http://repo.mysql.com/mysql57-community-release-el7-9.noarch.rpm
[root@mysql11 ~]# rpm -ivh mysql57-community-release-el7-9.noarch.rpm
[root@mysql11 ~]# yum install mysql mysql-server
2.挂载LV分区(两台数据库服务器相同操作)
[root@mysql11 ~]# vim /etc/fstab
/dev/vg0/lv0 /var/lib/mysql xfs defaults 0 0
[root@mysql11 ~]# mount -a
[root@mysql11 ~]# mount |grep /var/lib/mysql
/dev/mapper/vg0-lv0 on /var/lib/mysql type xfs (rw,relatime,attr2,inode64,noquota)
3.启动服务并查看(两台数据库服务器相同操作)
[root@mysql11 ~]# systemctl enable --now mysqld
[root@mysql11 ~]# netstat -utnlp|grep :3306
tcp6 0 0 :::3306 :::* LISTEN 2519/mysqld
4.管理员登录(两台数据库服务器相同操作)
查看初始密码
初始密码登录
修改登录密码
断开连接
新密码登录
[root@mysql11 ~]# grep "temporary password" /var/log/mysqld.log
2020-07-25T07:50:56.663846Z 1 [Note] A temporary password is generated for root@localhost: K2sj!YGpbizD
[root@mysql11 ~]# mysql -uroot -p'K2sj!YGpbizD'
mysql> alter user root@"localhost" identified by "123qqq...A";
mysql> exit
Bye
[root@mysql11 ~]# mysql -uroot -p123qqq...A
3)配置主从同步
1.配置主服务器
启用binlog欸之
重启服务
用户授权
查看binlog日志
[root@mysql11 ~]# vim /etc/my.cnf
12 log_bin=master11
13 server_id=11
[root@mysql11 ~]# systemctl restart mysqld
[root@mysql11 ~]# mysql -uroot -p123qqq...A
mysql> grant replication slave on *.* to repluser@"%" identified by "123qqq...A";
Query OK, 0 rows affected, 1 warning (0.00 sec)
mysql> show master status;
+-----------------+----------+--------------+------------------+-------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+-----------------+----------+--------------+------------------+-------------------+
| master11.000001 | 441 | | | |
+-----------------+----------+--------------+------------------+-------------------+
1 row in set (0.00 sec)
[root@mysql22 ~]# systemctl restart mysqld
2.配置从服务器
指定server_id
重启服务
指定主服务器信息
启动slave程序
查看状态信息
[root@mysql22 ~]# vim /etc/my.cnf
4 [mysqld]
5 server_id=22
[root@mysql22 ~]# systemctl restart mysqld
[root@mysql22 ~]# mysql -uroot -p123qqq...A
mysql> change master to master_host="192.168.4.11",
-> master_user="repluser",
-> master_password="123qqq...A",
-> master_log_file="master11.000001",
-> master_log_pos=441;
Query OK, 0 rows affected, 2 warnings (0.00 sec)
mysql> show slave status\G
*************************** 1. row ***************************
Slave_IO_State: Waiting for master to send event
Master_Host: 192.168.4.11
Master_User: repluser
Master_Port: 3306
Connect_Retry: 60
Master_Log_File: master11.000001
Read_Master_Log_Pos: 441
Relay_Log_File: mysql22-relay-bin.000003
Relay_Log_Pos: 319
Relay_Master_Log_File: master11.000001
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
3.测试主从配置
在主服务器建库projectdb,表user,授权用户admin
在从服务器查看数据
[root@mysql11 ~]# mysql -uroot -p123qqq...A
mysql> grant select,insert on project.* to admin@"%" identified by "123qqq...A";
Query OK, 0 rows affected, 1 warning (0.00 sec)
mysql> create database project;
Query OK, 1 row affected (0.00 sec)
mysql> create table project.user(id int);
Query OK, 0 rows affected (0.12 sec)
[root@web33 ~]# yum -y install mariadb
[root@web33 ~]# mysql -h192.168.4.11 -uadmin -p123qqq...A
MySQL [(none)]> insert into project.user values(11);
Query OK, 1 row affected (0.43 sec)
MySQL [(none)]> insert into project.user values(22);
Query OK, 1 row affected (0.00 sec)
[root@mysql22 ~]# mysql -uroot -p123qqq...A
mysql> select * from project.user;
+------+
| id |
+------+
| 11 |
| 22 |
+------+
2 rows in set (0.00 sec)
4)读写分离服务
1.安装软件
rpm 装包
查看主配置文件
查看日志文件
查看相关命令
[root@maxscale77 ~]# rpm -ivh maxscale-2.1.2-1.rhel.7.x86_64.rpm
[root@maxscale77 ~]# ls /etc/maxscale.cnf
/etc/maxscale.cnf
[root@maxscale77 ~]# max
maxadmin maxbinlogcheck maxpasswd
maxavrocheck maxkeys maxscale
2.修改配置文件
[root@maxscale77 ~]# vim /etc/maxscale.cnf
9 [maxscale]
10 threads=auto
18 [server1]
19 type=server
20 address=192.168.4.11
21 port=3306
22 protocol=MySQLBackend
23
24 [server2]
25 type=server
26 address=192.168.4.22
27 port=3306
28 protocol=MySQLBackend
36 [MySQL Monitor]
37 type=monitor
38 module=mysqlmon
39 servers=server1,server2
40 user=scalemon
41 passwd=123qqq...A
42 monitor_interval=10000
53 #[Read-Only Service]
54 #type=service
55 #router=readconnroute
56 #servers=server1
57 #user=myuser
58 #passwd=mypwd
59 #router_options=slave
64 [Read-Write Service]
65 type=service
66 router=readwritesplit
67 servers=server1,server2
68 user=scaleroute
69 passwd=123qqq...A
70 max_slave_connections=100%
76 [MaxAdmin Service]
77 type=service
78 router=cli
86 #[Read-Only Listener]
87 #type=listener
88 #service=Read-Only Service
89 #protocol=MySQLClient
90 #port=4008
92 [Read-Write Listener]
93 type=listener
94 service=Read-Write Service
95 protocol=MySQLClient
96 port=4006
97
98 [MaxAdmin Listener]
99 type=listener
100 service=MaxAdmin Service
101 protocol=maxscaled
102 socket=default
103 port=4016
3.配置数据库服务器
在主服务器添加授权用户,在从服务器查看
创建监控用户scalemon
创建路由用户scaleroute
[root@mysql11 ~]# mysql -uroot -p123qqq...A
mysql> grant replication slave ,replication client on *.* to scalemon@"%" identified by "123qqq...A";
Query OK, 0 rows affected, 1 warning (0.12 sec)
mysql> grant select on mysql.* to scaleroute@"%" identified by "123qqq...A";
Query OK, 0 rows affected, 1 warning (0.09 sec)
4.启动服务并查看
[root@maxscale77 ~]# maxscale -f /etc/maxscale.cnf
[root@maxscale77 ~]# ps -C maxscale
PID TTY TIME CMD
2072 ? 00:00:00 maxscale
[root@maxscale77 ~]# netstat -utnlp |grep maxscale
tcp6 0 0 :::4006 :::* LISTEN 2072/maxscale
tcp6 0 0 :::4016 :::* LISTEN 2072/maxscale
5.查看监控信息
有主从角色
数据库服务运行状态
[root@maxscale77 ~]# maxadmin -uadmin -pmariadb -P4016
MaxScale> list servers
Servers.
-------------------+-----------------+-------+-------------+--------------------
Server | Address | Port | Connections | Status
-------------------+-----------------+-------+-------------+--------------------
server1 | 192.168.4.11 | 3306 | 0 | Master, Running
server2 | 192.168.4.22 | 3306 | 0 | Slave, Running
-------------------+-----------------+-------+-------------+--------------------
三、部署共享存储服务NFS
1)准备磁盘
1.拓扑图
为NFS服务添加一块10G磁盘
NFS服务器 /dev/sdb 10G
2.添加磁盘
3.挂载磁盘
分区(/dev/sdb1)
格式化(xfs文件系统)
创建挂载目录(mkdir /sitedir)
配置开机挂载(vim /etc/fstab)
挂载(mount -a)
查看挂载信息
[root@nfs30 ~]# fdisk /dev/sdb
命令(输入 m 获取帮助):n
Partition type:
p primary (0 primary, 0 extended, 4 free)
e extended
Select (default p): p
分区号 (1-4,默认 1):
起始 扇区 (2048-20971519,默认为 2048):
将使用默认值 2048
Last 扇区, +扇区 or +size{K,M,G} (2048-20971519,默认为 20971519):
将使用默认值 20971519
分区 1 已设置为 Linux 类型,大小设为 10 GiB
命令(输入 m 获取帮助):w
[root@nfs30 ~]# fdisk -l /dev/sdb
设备 Boot Start End Blocks Id System
/dev/sdb1 2048 20971519 10484736 83 Linux
[root@nfs30 ~]# mkfs.ext4 /dev/sdb1
[root@nfs30 ~]# blkid /dev/sdb1
/dev/sdb1: UUID="d84fa33f-137d-47fe-82fc-2a9f8885958f" TYPE="ext4"
[root@nfs30 ~]# mkdir /sitedir
[root@nfs30 ~]# vim /etc/fstab
/dev/sdb1 /sitedir ext4 defaults 0 0
[root@nfs30 ~]# mount -a
[root@nfs30 ~]# mount |grep -i /sitedir
/dev/sdb1 on /sitedir type ext4 (rw,relatime,data=ordered)
2)配置NFS服务
1.安装软件
[root@nfs30 ~]# yum -y install nfs-utils rpcbind
2.修改主配置文件
[root@nfs30 ~]# vim /etc/exports
/sitedir *(rw)
[root@nfs30 ~]# exportfs -r
[root@nfs30 ~]# chmod o+w /sitedir/
3.启动服务并开机自启
[root@nfs30 ~]# systemctl enable --now rpcbind
[root@nfs30 ~]# systemctl enable --now nfs
4.查看共享信息
[root@nfs30 ~]# showmount -e localhost
Export list for localhost:
/sitedir *
四、配置网站服务
1.安装软件(2台web服务器相同操作)
安装网站服务软件httpd
[root@web33 ~]# yum -y install httpd
2.挂载共享存储
设置开机挂载
挂载共享目录到网页目录
[root@web33 ~]# yum -y install nfs-utils
[root@web33 ~]# showmount -e 192.168.4.30
Export list for 192.168.4.30:
/sitedir *
[root@web33 ~]# vim /etc/fstab
192.168.4.30:/sitedir /var/www/html nfs defaults 0 0
[root@web33 ~]# mount -a
3.启动服务并开机自启
[root@web33 ~]# systemctl enable --now httpd
[root@web33 ~]# systemctl enable remote-fs.target ==>>远程挂载服务
4.查看挂在信息
[root@web33 ~]# mount |grep -i "/var/www/html"
192.168.4.30:/sitedir on /var/www/html type nfs4 (rw,relatime,vers=4.1,rsize=131072,wsize=131072,namlen=255,hard,proto=tcp,port=0,timeo=600,retrans=2,sec=sys,clientaddr=192.168.4.33,local_lock=none,addr=192.168.4.30)
五、测试配置
1.测试NFS服务
[root@nfs30 ~]# echo "web test page" >/sitedir/test.html
[root@web33 ~]# curl http://192.168.4.44/test.html
web test page
[root@web44 ~]# curl http://192.168.4.33/test.html
web test page
2.测试MySQL服务
在主服务器添加访问数据用户
[root@mysql11 ~]# mysql -uroot -p123qqq...A
mysql> create database gamedb;
Query OK, 1 row affected (0.00 sec)
mysql> grant select,insert,update,delete on gamedb.* to yaya99@"%" identified by "123qqq...A";
Query OK, 0 rows affected, 1 warning (0.00 sec)
mysql> create table gamedb.user(name char(15));
Query OK, 0 rows affected (0.04 sec)
mysql> select * from gamedb.user;
Empty set (0.64 sec)
客户端访问
在网站服务器,连接读写分离服务器访问数据
[root@web33 ~]# mysql -h192.168.4.77 -P4006 -uyaya99 -p123qqq...A
MySQL [(none)]> insert into gamedb.user values("pmmmm");
Query OK, 1 row affected (0.01 sec)
MySQL [(none)]> select * from gamedb.user;
+-------+
| name |
+-------+
| pmmmm |
+-------+
1 row in set (0.00 sec)
六、部署监控服务Zabbix
1)配置监控服务
1.部署运行环境LNMP
安装源码nginx软件
安装mariadb服务软件
安装php-fpm服务软件
启动php-fpm服务软件
修改nginx服务配置文件
启动nginx服务
启动mariadb服务
测试配置
[root@zabbix55 ~]# yum -y install gcc pcre-devel zlib-devel openssl-devel
[root@zabbix55 ~]# tar -xf nginx-1.12.2.tar.gz
[root@zabbix55 ~]# cd nginx-1.12.2/
[root@zabbix55 nginx-1.12.2]# ./configure --with-http_ssl_module
[root@zabbix55 nginx-1.12.2]# make && make install
[root@zabbix55 nginx-1.12.2]# cd /root/
[root@zabbix55 ~]# yum -y install php php-fpm php-mysql mariadb mariadb-devel mariadb-server
[root@zabbix55 ~]# vim +65 /usr/local/nginx/conf/nginx.conf
20 fastcgi_buffers 8 16k;
21 fastcgi_buffer_size 32k;
22 fastcgi_connect_timeout 300;
23 fastcgi_send_timeout 300;
24 fastcgi_read_timeout 300;
65 location ~ \.php$ {
66 root html;
67 fastcgi_pass 127.0.0.1:9000;
68 fastcgi_index index.php;
69 # fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name;
70 include fastcgi.conf;
71 }
[root@zabbix55 ~]# systemctl enable --now mariadb
[root@zabbix55 ~]# systemctl enable --now php-fpm
[root@zabbix55 ~]# /usr/local/nginx/sbin/nginx
[root@zabbix55 ~]# netstat -ntlup|grep :3306
tcp 0 0 0.0.0.0:3306 0.0.0.0:* LISTEN 4374/mysqld
[root@zabbix55 ~]# netstat -ntlup|grep :80
tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 4443/nginx: master
[root@zabbix55 ~]# netstat -ntlup|grep :9000
tcp 0 0 127.0.0.1:9000 0.0.0.0:* LISTEN 4434/php-fpm: maste
[root@zabbix55 ~]# vim /usr/local/nginx/html/test.php
$i=33;
echo $i;
?>
[root@zabbix55 ~]# curl http://192.168.4.55/test.php
33
2.安装zabbix软件
安装依赖软件
解压源码
配置,编译,安装M
创建数据库
添加授权用户
创建表
[root@zabbix55 ~]# yum -y install net-snmp-devel curl-devel libevent-devel
[root@zabbix55 ~]# tar -xf zabbix-3.4.4.tar.gz
[root@zabbix55 ~]# cd zabbix-3.4.4/
[root@zabbix55 zabbix-3.4.4]# ./configure --enable-server --enable-proxy --enable-agent --with-mysql=/usr/bin/mysql_config --with-net-snmp --with-libcurl
[root@zabbix55 zabbix-3.4.4]# make install
[root@zabbix55 ~]# mysql
MariaDB [(none)]> create database zabbix character set utf8;
Query OK, 1 row affected (0.00 sec)
MariaDB [(none)]> grant all on zabbix.* to zabbix@'localhost' identified by 'zabbix';
Query OK, 0 rows affected (0.11 sec)
[root@zabbix55 ~]# cd zabbix-3.4.4/database/mysql/
[root@zabbix55 mysql]# mysql -uzabbix -pzabbix zabbix < schema.sql
[root@zabbix55 mysql]# mysql -uzabbix -pzabbix zabbix < images.sql
[root@zabbix55 mysql]# mysql -uzabbix -pzabbix zabbix < data.sql
[root@zabbix55 mysql]# cd /root/zabbix-3.4.4/frontends/php/
[root@zabbix55 php]# cp -a * /usr/local/nginx/html/
[root@zabbix55 php]# chmod -R 777 /usr/local/nginx/html/
3.初始化配置
修改nginx服务运行参数
修改php.ini文件
安装依赖软件包
登录管理页面
初始配置
[root@zabbix55 ~]# yum -y install php-gd php-xml php-ldap php-bcmath php-mbstring
[root@zabbix55 ~]# vim /etc/php.ini
384 max_execution_time = 300
394 max_input_time = 300
672 post_max_size = 32M
878 date.timezone = Asia/Shanghai
[root@zabbix55 ~]# systemctl restart php-fpm
4.修改配置文件
定义数据库服务器IP地址
定义使用的数据库名
定义数据库连接用户
定义用户连接密码
[root@zabbix55 ~]# vim /usr/local/etc/zabbix_server.conf
38 LogFile=/tmp/zabbix_server.log ==>>设置日志
85 DBHost=localhost ==>>数据库主机
95 DBName=zabbix ==>>设置数据库账户
111 DBUser=zabbix ==>>设置数据库账户
119 DBPassword=zabbix ==>>设置数据库密码
5.启动服务
[root@zabbix55 ~]# useradd zabbix
[root@zabbix55 ~]# zabbix_server
[root@zabbix55 ~]# netstat -ntlup|grep :10051
tcp 0 0 0.0.0.0:10051 0.0.0.0:* LISTEN 17370/zabbix_server
2)配置客户端(所有客户端)
1.安装zabbix软件
安装依赖软件
解压源码
配置,编译,安装
[root@web33 ~]# yum -y install gcc pcre-devel
[root@web33 ~]# tar -xf zabbix-3.4.4.tar.gz
[root@web33 ~]# cd zabbix-3.4.4/
[root@web33 zabbix-3.4.4]# ./configure --enable-agent
[root@web33 zabbix-3.4.4]# make install
2.修改配置文件
被动监控
[root@web33 zabbix-3.4.4]# vim /usr/local/etc/zabbix_agentd.conf
30 LogFile=/tmp/zabbix_agentd.log ==>>日志文件
93 Server=127.0.0.1,192.168.2.5 ==>>允许访问服务地址列表
134 ServerActive=192.168.2.5:10051 ==>>监控服务器IP地址
主动监控
[root@web44 zabbix-3.4.4]# vim /usr/local/etc/zabbix_agentd.conf
93 #Server=127.0.0.1 ==>>注释改行
118 StartAgents=0 ==>>禁止被动监控(有服务进程没有端口)
132 ServerActive=192.168.2.5 ==>>监控服务器IP,一定要取消127.0.0.1
145 Hostname=web201 ==>>告诉监控器,是谁发的数据信息,一定要和zabbix服务器监控的主机名一致(后面设置)
183 RefreshActiveChecks=120 ==>>默认120秒检测一次
3.启动服务
[root@web33 zabbix-3.4.4]# useradd zabbix
[root@web33 zabbix-3.4.4]# zabbix_agentd
被动监控
[root@web33 zabbix-3.4.4]# netstat -ntlup|grep :10050
tcp 0 0 0.0.0.0:10050 0.0.0.0:* LISTEN 10008/zabbix_agentd
主动监控
[root@web44 zabbix-3.4.4]# ps -C zabbix_agentd
PID TTY TIME CMD
9344 ? 00:00:00 zabbix_agentd
9345 ? 00:00:00 zabbix_agentd
9346 ? 00:00:00 zabbix_agentd
[root@web44 zabbix-3.4.4]# netstat -ntlup|grep :10050 ==>>有进程没端口
3)监控配置
1.创建主动模式监控模板
克隆模板
修改模板
2.配置自动发现
创建自动发现规则
创建动作
3.查看监控信息