嗯这是篇有故事的博文回想起来历历在目php
这次项目参与人数共计五人我荣幸担任组长项目顺利完成真心感谢你们html
先分享一下九台机器项目构架图(后期有修改):mysql
简单说明一下其中问题:linux
负载均衡keepalived配置文件第一次出现nginx配置错误(属于组员未理解配置需求)致使心跳测试失败nginx
两台web服务器配置php编译时建议安装而不启动mysql缘由配置时就心明眼亮啦web
mysql单独服务器来跑,在配置完成后如何链接到nginx上,固然是在配置zrlog等网站配置时直接使用ip地址(数据库地址)就能够了算法
nfs这里问题就大了,nfs提供的是共享存储因此两台web上的数据能够直接从这里分享过去,就意味着不须要每台机器上重复安装,而是将须要的目录共享便可sql
准备工做:数据库
主机名 | ip地址 | 角色 |
xm01 | 192.168.14.137 | Master LVS + Keepalived |
xm02 | 192.168.14.138 | Slave LVS + Keepalived |
vip | 192.168.14.14 | vip |
xm03 | 192.168.14.139 | Nginx server1+tomcat+jdk |
xm04 | 192.168.14.140 | Nginx server2+tomcat+jdk |
xm05 | 192.168.14.141 | zabbix |
xm06 | 192.168.14.143 | mysql master |
xm07 | 192.168.14.144 | mysql slave |
xm08 | 192.168.14.145 | NFS共享存储服务器 |
xm09 | 192.168.14.146 | NFS热备服务器 |
开干,首先关闭全部的firewalld(centos7)和selinux(iptables)vim
# systemctl stop firewalld # systemctl disable firewalld # iptables -F # setenforce 0 #临时关闭 # vi /etc/selinux/config selinux=disabled reboot #永久关闭
[root@zhdy-01 ~]# yum install -y keepalived [root@zhdy-01 ~]# vim /etc/keepalived/keepalived.conf vrrp_instance VI_1 { #备用服务器上为 BACKUP state MASTER #绑定vip的网卡为ens33,你的网卡和阿铭的可能不同,这里须要你改一下 interface ens33 virtual_router_id 51 #备用服务器上为90 priority 100 advert_int 1 authentication { auth_type PASS auth_pass zhangduanya } virtual_ipaddress { 192.168.14.14 } } virtual_server 192.168.14.14 80 { #(每隔10秒查询realserver状态) delay_loop 10 #(lvs 算法) lb_algo wlc #(DR模式) lb_kind DR #(同一IP的链接60秒内被分配到同一台realserver) persistence_timeout 0 #(用TCP协议检查realserver状态) protocol TCP real_server 192.168.14.137 80 { #(权重) weight 100 TCP_CHECK { #(10秒无响应超时) connect_timeout 10 nb_get_retry 3 delay_before_retry 3 connect_port 80 } } real_server 192.168.14.138 80 { weight 100 TCP_CHECK { connect_timeout 10 nb_get_retry 3 delay_before_retry 3 connect_port 80 } } } [root@zhdy-01 ~]# echo 1 >/proc/sys/net/ipv4/ip_forward #配置完keepalived后,须要开启端口转发 [root@zhdy-01 ~]# systemctl start keepalived
[root@zhdy-01 ~]# yum install -y keepalived [root@zhdy-01 ~]# vim /etc/keepalived/keepalived.conf vrrp_instance VI_1 { #备用服务器上为 BACKUP state BACKUP #绑定vip的网卡为ens33,你的网卡和阿铭的可能不同,这里须要你改一下 interface ens33 virtual_router_id 51 #备用服务器上为90 priority 90 advert_int 1 authentication { auth_type PASS auth_pass zhangduanya } virtual_ipaddress { 192.168.14.14 } } virtual_server 192.168.14.14 80 { #(每隔10秒查询realserver状态) delay_loop 10 #(lvs 算法) lb_algo wlc #(DR模式) lb_kind DR #(同一IP的链接60秒内被分配到同一台realserver) persistence_timeout 0 #(用TCP协议检查realserver状态) protocol TCP real_server 192.168.14.137 80 { #(权重) weight 100 TCP_CHECK { #(10秒无响应超时) connect_timeout 10 nb_get_retry 3 delay_before_retry 3 connect_port 80 } } real_server 192.168.14.138 80 { weight 100 TCP_CHECK { connect_timeout 10 nb_get_retry 3 delay_before_retry 3 connect_port 80 } } } [root@zhdy-01 ~]# echo 1 >/proc/sys/net/ipv4/ip_forward #配置完keepalived后,须要开启端口转发 [root@zhdy-01 ~]# systemctl start keepalived
xm03(Nginx server1+tomcat+jdk)192.168.14.139
#把vip绑定到lo上 vim /usr/local/sbin/lvs_rs.sh #! /bin/bash vip=192.168.14.14 #把vip绑定在lo上,是为了实现rs直接把结果返回给客户端 ifdown lo ifup lo ifconfig lo:0 $vip broadcast $vip netmask 255.255.255.255 up route add -host $vip lo:0 #如下操做为更改arp内核参数,目的是为了让rs顺利发送mac地址给客户端 echo "1" >/proc/sys/net/ipv4/conf/lo/arp_ignore echo "2" >/proc/sys/net/ipv4/conf/lo/arp_announce echo "1" >/proc/sys/net/ipv4/conf/all/arp_ignore echo "2" >/proc/sys/net/ipv4/conf/all/arp_announce 两台Real server分别执行脚本 # sh /usr/local/sbin/lvs_rs.sh 查看一下两台real server的router -n # route -n 查看IP是否已经绑在lo卡上 # ip addr #安装nginx+php+mysql(编译使用)+tomcat+jdk
xm04(Nginx server1+tomcat+jdk)192.168.14.140
#把vip绑定到lo上 vim /usr/local/sbin/lvs_rs.sh #! /bin/bash vip=192.168.14.14 #把vip绑定在lo上,是为了实现rs直接把结果返回给客户端 ifdown lo ifup lo ifconfig lo:0 $vip broadcast $vip netmask 255.255.255.255 up route add -host $vip lo:0 #如下操做为更改arp内核参数,目的是为了让rs顺利发送mac地址给客户端 echo "1" >/proc/sys/net/ipv4/conf/lo/arp_ignore echo "2" >/proc/sys/net/ipv4/conf/lo/arp_announce echo "1" >/proc/sys/net/ipv4/conf/all/arp_ignore echo "2" >/proc/sys/net/ipv4/conf/all/arp_announce 两台Real server分别执行脚本 # sh /usr/local/sbin/lvs_rs.sh 查看一下两台real server的router -n # route -n 查看IP是否已经绑在lo卡上 # ip addr #安装nginx+php+mysql(编译使用)+tomcat+jdk
没错zabbx须要注意的点来了,分为服务端和客户端,此处的客户端为mysql服务器和两个web服务器
而后安装到位后个性化的监控脚本这里不展现了,留下一篇来专门回忆
#下载yum源 [root@yb1 ~]# cd /usr/local/src [root@yb1 src]# wget http://repo.zabbix.com/zabbix/3.2/rhel/7/x86_64/zabbix-release-3.2-1.el7.noarch.rpm #安装yum源 [root@yb1 src]# rpm -ivh zabbix-release-3.2-1.el7.noarch.rpm 2.3 安装zabbix及其组件注意必定要安装好mysql(此过程会安装php和http服务) [root@yb1 src]# yum install -y zabbix-agent zabbix-get zabbix-server-mysql zabbix-web zabbix-web-mysql #安装mysql #下载yum源 wget http://repo.mysql.com/mysql-community-release-el7-5.noarch.rpm #安装yum源 rpm -ivh mysql-community-release-el7-5.noarch.rpm #安装mysql yum install -y mysql mysql-server mysql-devel #配置mysql #修改配置文件 vi /etc/my.cnf #在[mysqld]下添加: character_set_server = utf8 #重启mysql systemctl restart mysql #登入mysql,配置 mysql -uroot create database zabbix character set utf8; //建立zabbix库,并设置字符集为utf-8 grant all on zabbix.* to 'zabbix'@'127.0.0.1' identified by 'zabbixpasswd'; //建立zabbix用户并设置密码,并登出mysql #导入zabbix数据库 cd /usr/share/doc/zabbix-server-mysql-3.2.7 gzip -d create.sql.gz mysql -uroot zabbix < create.sql //将数据和结构导入zabbix数据库中 #配置zabbix vim /etc/zabbix/zabbix_server.conf DBHost=127.0.0.1 #此处写zabbix所在机器的IP(生产环境中zabbix可能单独使用一天机器) #该IP应该和数据库受权时指定的IP一致 DBName=zabbix DBUser=zabbix DBPassword=zabbixpasswd #web界面配置 #放行80端口 iptables -I INPUT -p tcp --dport 80 -j ACCEPT #浏览器访问并配置 http://192.168.14.141/zabbix
下面整理客户端配置
#环境 zabbixagent:192.168.14.139 web服务器 zabbixagent:192.168.14.140 web服务器 zabbixagent:192.168.14.143 mysql服务器主 zabbixagent:192.168.14.144 mysql服务器从 #zabbixagent安装 #下载yum源 [root@yb1 ~]# cd /usr/local/src [root@yb1 src]# wget http://repo.zabbix.com/zabbix/3.2/rhel/7/x86_64/zabbix-release-3.2-1.el7.noarch.rpm #安装yum源 [root@yb1 src]# rpm -ivh zabbix-release-3.2-1.el7.noarch.rpm #安装zabbix及其组件注意必定要安装好mysql(此过程会安装php和http服务) [root@yb1 src]# yum install -y zabbix-agent #配置zabbix-agent vim /etc/zabbix/zabbix_agentd.conf #修改以下配置 Server=127.0.0.1修改成Server=192.168.14.141 //定义服务端的ip(被动模式) ServerActive=127.0.0.1修改成ServerActive=192.168.14.141 //定义服务端的ip(主动模式) Hostname=Zabbix server修改成Hostname=zabbix-web //这是自定义的主机名,一会还须要在web界面下设置一样的主机名 #启动zabbix客户端服务 systemctl start zabbix-agent #加入开机启动 systemctl enable zabbix-agent #到这一步下来就是服务端的web端监控配置了,按照具体的的个性化需求配置
以前有总结,疑问直接摆上来,若是说mysql安装在一台独立的server,如何链接?以前都是安装在一台,若是分离那就直接使用ip地址喽(数据库主机)
这里针对zrlog来设置数据库,由于一个web上装了zrlog、discuz、WordPress三个服务,每一个都要针对其设置数据库和权限
这里有个mysql+DRBD还没搞清楚让人很焦虑
恩这里成短板了,也是谈问题安装不说了,nfs为何出现,除了把相同的图片这种内容放到这台服务器上共享出去,还有个关键的地方,居然被我忽视了,既然能够共享目录,那么zrlog和discuz这些的数据文件夹还有安装文件夹直接放到nfs上直接共享挂载,就不须要重复安装了也保证了负载均衡后数据的同步,其实同步是最关键的,第一次被分到web1上写下了一篇文章,而后数据库配置有问题就会致使下次登陆被分配到web2上消失了,哈哈这可怎么行,因此就把这些所有共享出去,其余的还没想到,后面添加吧
rsync+inotify实时同步备份数据,备份的是全构架中须要提供的全部数据,除了zabbix是本身的数据库为了安全考虑
先分享一篇文章:inotify+rsync实现实时同步部署
就先到这里了明天继续,哦对了立刻过年啦,加油哈刚跟朋友聊天才明白本身的想法坚持就好