“lnmap實戰之負載均衡架構(無高可用)”之新增keepalived高可用
我之前有一篇”lnmap實戰之負載均衡架構(無高可用)“博客是專門部署了lanmap,之前沒有做高可用,那么我們現在就把高可用補上去吧
這樣我們照著之前的文檔從新部署一下 1.機器結構如下:
192.168.42.150 node0 [負載均衡器] 192.168.42.151 node1 [負載均衡器 新增] 192.168.42.152 node2 [web1] 192.168.42.153 node3 [web2] 192.168.42.154 node4 [nfs 共享存儲] 192.168.42.155 node5 [memcached session存儲] 192.168.42.156 node6 [mariadb]
我們在此基礎之上新增一臺nginx[負載均衡器]
我們此次是針對這兩臺nginx負載均衡器做高可用
2.我們依照上面的機器結構和之前的部署文檔,把”lnmap實戰之負載均衡架構(無高可用)”部署出來,部署出來,測試沒問題之后我們在node1節點上安裝nignx
安裝方法和node0一樣
node1操作:
(1).安裝nginx
yum install nginx -y
(2).備份nginx.conf
cp /etc/nginx/nginx.conf{,.back}
(3).將node0的nginx配置文件cp一份到node1 ->[記得是在node0上操作]
scp /etc/nginx/nginx.conf 192.168.42.151:/etc/nginx/ cd /etc/nginx/conf.d/ scp *.conf 192.168.42.151:/etc/nginx/conf.d/
(4).更改node1上的hosts文件
echo "192.168.42.151 www.test.com">>/etc/hosts echo "192.168.42.151 test.discuz.com">>/etc/hosts cat /etc/hosts nginx -t nginx -s reload
3.nginx+keepalived高可用
node0,node1 關閉nignx
node0:
(1).安裝keepalived
yum install keepalived -y
(2).配置keepalived
配置如下:
! Configuration File for keepalived global_defs { notification_email { root@localhost } notification_email_from keepalived@localhost smtp_server 127.0.0.1 smtp_connect_timeout 30 router_id node0 vrrp_mcast_group4 224.1.101.23 } #存在文件時,檢測成功,即執行降級;否則不存在,全部退出;實現服務器切換 vrrp_script chk_down{ script "[[ -f /etc/keepalived/down ]] && exit 1 || exit 0" interval 1 weight -10 fall 1 rize 1 } #腳本,健康狀態檢測,檢測nginx是否存活 vrrp_script chk_nginx { script "killall -0 nginx && exit 0 || exit 1" interval 1 weight -10 fall 1 rise 1 } vrrp_instance sr1 { state MASTER interface ens33 virtual_router_id 51 priority 100 advert_int 1 authentication { auth_type PASS auth_pass rEiszbuO } virtual_ipaddress { 192.168.42.182/24 dev ens33 label ens33:0 } #腳本調用 track_script { chk_down chk_nginx } notify_master "/etc/keepalived/notify.sh master" notify_backup "/etc/keepalived/notify.sh backup" notify_fault "/etc/keepalived/notify.sh fault" }
node1:
(1).安裝keepalived
yum install keepalived -y
(2).配置keepalived
配置如下:
! Configuration File for keepalived global_defs { notification_email { root@localhost } notification_email_from keepalived@localhost smtp_server 127.0.0.1 smtp_connect_timeout 30 router_id node1 vrrp_mcast_group4 224.1.101.23 } #存在文件時,檢測成功,即執行降級;否則不存在,全部退出;實現服務器切換 vrrp_script chk_down{ script "[[ -f /etc/keepalived/down ]] && exit 1 || exit 0" interval 1 weight -10 fall 1 rize 1 } #腳本,健康狀態檢測,檢測nginx是否存活 vrrp_script chk_nginx { script "killall -0 nginx && exit 0 || exit 1" interval 1 weight -10 fall 1 rise 1 } vrrp_instance sr1 { state BACKUP interface ens33 virtual_router_id 51 priority 96 advert_int 1 authentication { auth_type PASS auth_pass rEiszbuO } virtual_ipaddress { 192.168.42.182/24 dev ens33 label ens33:0 } #腳本調用 track_script { chk_down chk_nginx } notify_master "/etc/keepalived/notify.sh master" notify_backup "/etc/keepalived/notify.sh backup" notify_fault "/etc/keepalived/notify.sh fault" }
調用腳本notify.sh:
cd /etc/keepalived/ [root@centos703 keepalived]# vim notify.sh #!/bin/bash # contact='root@localhost' notify() { mailsubject="vrrp:$(hostname) to be $1" mailbody="$(hostname) to be $1,vrrp transition, $(date)." echo "$mailbody" | mail -s "$mailsubject" $contact } case $1 in master) notify master systemctl start nginx ;; backup) notify backup systemctl start nginx ;; fault) notify fault systemctl stop nginx ;; *) echo "Usage: $(basename $0) {master|backup|fault}" exit 1 ;; esac
6.node0,node1重新更改hosts解析
vim /etc/hosts 192.168.42.182 www.test.com 192.168.42.182 test.discuz.com
7.我們在node3,node4上是做了兩個虛擬主機,因此我們在負載均衡上也是要做兩個虛擬主機,并且需要把$host推送到后方的機器
test.conf 的內容如下:
server { listen 80; server_name www.test.com; location / { proxy_pass http://sshsrvs; proxy_set_header Host $host; proxy_set_header X-Forwarded-For $remote_addr; add_header X-Via $server_addr; add_header X-Accel $server_name; } }
discuz.conf的內容如下:
server { listen 80; server_name test.discuz.com; location / { proxy_pass http://sshsrvs; proxy_set_header Host $host; proxy_set_header X-Forwarded-For $remote_addr; add_header X-Via $server_addr; add_header X-Accel $server_name; } }
8.我們在瀏覽器中訪問www.test.com ,test.discuz.com
是兩個不同的網站記得在物理機需要做域名解析哦
原創文章,作者:srayban,如若轉載,請注明出處:http://www.www58058.com/78538