嗯這是篇有故事的博文回想起來歷歷在目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實現實時同步部署
就先到這裏了明天繼續,哦對了立刻過年啦,加油哈剛跟朋友聊天才明白本身的想法堅持就好