高可用haproxy調度後端服務器實現動靜分離集羣架構

項目要求:

(1) 動靜分離部署wordpress,動靜都要能實現負載均衡,要注意會話的問題;

(2) 設計拓撲;

(3) haproxy的設計要求:

(a) stats page,要求僅能通過本地訪問使用管理接口;

(b) 動靜分離;

(4) haproxy高可用;

項目需求:
(1) 要實現haproxy高可用,可利用keepalived主備高可用兩個haproxy服務器;
(2)動態web集羣【實現負載均衡,項目實驗中使用兩臺即可】;
(3)靜態web集羣【實現負載均衡,項目實驗中使用兩臺即可】;
使用CentOS 7.5鏡像虛擬機完成項目試驗:
wordpress服務器 172.16.75.1 進行NFS共享給集羣
haproxy1 172.16.75.2
haproxy2 172.16.75.2
動態web集羣 172.16.75.4 172.16.75.5
靜態web集羣 172.16.75.6 172.16.75.7

設計拓撲:
高可用haproxy調度後端服務器實現動靜分離集羣架構

一、兩臺haproxy主配置文件配置
~]#cp /etc/haproxy/haproxy.cfg /etc/haproxy/haproxy.cfg.bck //進行備份防止改錯是吧,每次我們在更改主配置文件時最好備份
~]# vim /etc/haproxy/haproxy.cfg //兩臺haproxy主機設置是相同的
高可用haproxy調度後端服務器實現動靜分離集羣架構
先將原先配置文件中maxconn這行以下的內容刪除,然後添加圖示內容即可;
~]# systemctl start haproxy //確保之前沒有開啓httpd服務,此條命令執行後ss -tnl可以看到5000端口打開,查看狀態,正常開啓即可
高可用haproxy調度後端服務器實現動靜分離集羣架構

二、keepalive配置
haproxy1 172.16.75.3 //要保證這兩臺haproxy的時間是同步的,且將防火牆以及SElinux關閉
~]# hostnamectl set-hostname drct1
~]# vim /etc/keepalived/keepalived.conf
global_defs {
notification_email {br/>root@localhost
}
notification_email_from keepalived@localhost
smtp_server 127.0.0.1
smtp_connect_timeout 30
router_id drct1
vrrp_mcast_group4 224.0.100.18
}

vrrp_script check_httpd {
script "killall -0 haproxy && exit 0 || exit 1"
interval 1
notification_email {br/>root@localhost
}
notification_email_from keepalived@localhost
smtp_server 127.0.0.1
smtp_connect_timeout 30
router_id drct1
vrrp_mcast_group4 224.0.100.18
}

vrrp_script check_httpd {
script "killall -0 haproxy && exit 0 || exit 1"
interval 1
weight -20
}
vrrp_instance VI_1 {
state MASTER
interface ens33
virtual_router_id 51
priority 100
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
nopreempt
}

virtual_ipaddress {
    172.16.72.1
}
notify_master "/etc/keepalived/notify.sh master"
notify_backup "/etc/keepalived/notify.sh backup"
notify_fault "/etc/keepalived/notify.sh fault"

}
[root@drct1 ~]# vim /etc/keepalived/notify.sh

#!/bin/bashbr/>#
CONTACT='root@localhost'
notify() {
MAILSUBJECT="$(hostname) changed state to $1, VIP reflact."
MAILBODY="$(date +'%F %T'): VRRP STATUS CHANGED, $(hostname) change state to $1"
echo "$MAILBODY" | mail -s "$MAILSUBJECT" "$CONTACT"
}

case $1 in
master)
notify MASTER
;;
backup)
notify BACKUP
if ! killall -0 haproxy ; then
systemctl start haproxy
fi
;;
fault)
notify FAULT
;;
*)
echo "Usage: $(basename $0) { master | backup | fault}"
;;
esac
~]# systemctl start keepalived
高可用haproxy調度後端服務器實現動靜分離集羣架構
高可用haproxy調度後端服務器實現動靜分離集羣架構

haproxy2 172.16.75.4 //注意文件路徑呦
~]# hostnamectl set-hostname drct2
keepalived]# vim keepalived.conf
! Configuration File for keepalived
global_defs {
notification_email {br/>root@localhost
}
notification_email_from keepalived@localhost
smtp_server 127.0.0.1
smtp_connect_timeout 30
router_id drct2
vrrp_mcast_group4 224.0.100.18
}
vrrp_script check_httpd {
script "killall -0 haproxy && exit 0 || exit 1"
interval 1
weight -20
vrrp_instance VI_1 {
state BACKUP
interface ens33
virtual_router_id 51
priority 90
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
nopreempt
}
virtual_ipaddress {
172.16.72.1
}

notify_master "/etc/keepalived/notify.sh master"
notify_backup "/etc/keepalived/notify.sh backup"
notify_fault "/etc/keepalived/notify.sh fault"

}

drct2 keepalived]# vim notify.sh

#!/bin/bash
#

CONTACT='root@localhost'
notify() {
MAILSUBJECT="$(hostname) changed state to $1, VIP reflact."
MAILBODY="$(date +'%F %T'): VRRP STATUS CHANGED, $(hostname) change state to $1"
echo "$MAILBODY" | mail -s "$MAILSUBJECT" "$CONTACT"
}

case $1 in
master)
notify MASTER
;;
backup)
notify BACKUP
if ! killall -0 haproxy ; then
systemctl start haproxy
fi

    ;;

fault)
notify FAULT
if ! killall -0 haproxy ; then
systemctl start haproxy
fi

    ;;

*)
echo "Usage: $(basename $0) { master | backup | fault}"
;;
esac
然後我們這裏將haproxy1服務器的keepalived宕掉 然後在haproxy2服務器中開啓keepalived可以看到:
高可用haproxy調度後端服務器實現動靜分離集羣架構
這時就證明我們所做的高可用成功了;

三、動態主機和靜態主機的配置
在172.16.75.1中部署wordpress並用NFS進行共享,這裏共享以及wordpress我們不再贅述,因爲博主有一篇專門寫共享的,不懂的可以看博主的NFS共享的博客;
動態主機中:
172.16.75.4
~]# mount -t nfs 172.16.72.1:/var/www/html /var/www/html
~]# vim /var/www/html/health.php

<h1>DynamicServer 1 is Health.</h1>
172.16.75.5
~]# mount -t nfs 172.16.72.1:/var/www/html /var/www/html
~]# vim /var/www/html/health.php

<h1>DynamicServer 2 is Health.</h1>

靜態主機中:
172.16.75.6
~]# vim /var/www/html/health.html

<h1>DynamicServer 1 is Health.</h1>
172.16.75.7
~]# vim /var/www/html/health.php

<h1>DynamicServer 2 is Health.</h1>

開啓http服務並進將防火牆關閉:
~]# systemctl start httpd
~]# setenforce 0

三、訪問測試
訪問:http://172.16.72.1:5000/health.php並重復刷新,要保證此地址能夠在客戶端主技能被解析,即更改你本地客戶機的host文件,添加這些地址即可
高可用haproxy調度後端服務器實現動靜分離集羣架構
高可用haproxy調度後端服務器實現動靜分離集羣架構

訪問:http://172.16.72.1:5000/health.html並重復刷新
高可用haproxy調度後端服務器實現動靜分離集羣架構
高可用haproxy調度後端服務器實現動靜分離集羣架構

訪問:http://172.16.72.1:5000/haproxy?stats //這是狀態檢測頁面
高可用haproxy調度後端服務器實現動靜分離集羣架構

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章