Haproxy+Keepalived(雙機熱備)搭建高可用web架構
阿新 • • 發佈:2018-10-15
ise mark 高可用web keepalive email protocol rip 火墻 詳情 1、目的
搭建web高可用架構,用haproxy作為前段負載均衡分攤後端web服務器壓力,Keepalived保證haproxy的存活(雙機熱備:一臺haproxy掛了,自動切換到另外一臺haproxy上)
2、環境(系統均為centos7,防火墻與selinux都關閉)
192.168.0.100:web1(端口7000)、web2(端口8000)
192.168.0.101:haproxy1、keepalived(MASTER)
192.168.0.102:haproxy2、keepalived(BACKUP)
虛擬ip(VIP):192.168.0.11(端口8600)
3、搭建web1與web2
在192.168.0.100上安裝docker,運行兩個容器分別是web1與web2
4、分別在master和backup節點上安裝haproxy與keepalived
直接yum安裝,過程省略。。。
5、配置haproxy(在master與backup節點配置相同)
搭建web高可用架構,用haproxy作為前段負載均衡分攤後端web服務器壓力,Keepalived保證haproxy的存活(雙機熱備:一臺haproxy掛了,自動切換到另外一臺haproxy上)
2、環境(系統均為centos7,防火墻與selinux都關閉)
192.168.0.100:web1(端口7000)、web2(端口8000)
192.168.0.101:haproxy1、keepalived(MASTER)
192.168.0.102:haproxy2、keepalived(BACKUP)
虛擬ip(VIP):192.168.0.11(端口8600)
3、搭建web1與web2
在192.168.0.100上安裝docker,運行兩個容器分別是web1與web2
直接yum安裝,過程省略。。。
5、配置haproxy(在master與backup節點配置相同)
- 編輯配置文件/etc/haproxy/haproxy.cfg
- 在最後添加後端web主機的訪問地址
backend webapp
balance roundrobin
server web1 192.168.0.101:7000 check inter 2000 fall 3 weight 1
server web2 192.168.0.101:8000 check inter 2000 fall 3 weight 1
//check啟動對此server執行健康狀態檢查
//fall<count>確認server從正常狀態轉為不可用狀態需要檢查的次數
//rise<count>確認server從不可用狀態到正常狀態需要檢查的次數
//maxcount<count>指此服務器接受的最大並打連接數
//weight<count>設置server訪問權重
//更多詳細參數參考:http://www.ttlsa.com/linux/haproxy-study-tutorial/ - 在default_backend處將app修改為webapp
6、配置keepalived(master節點)
- 編輯配置文件/etc/keepalived/keepalived.conf
global_defs { notification_email { [email protected] [email protected] [email protected] } notification_email_from [email protected] smtp_server 127.0.0.1 smtp_connect_timeout 30 router_id LVS_DEVEL } //以下部分是檢查haproxy進程的腳本 vrrp_script chk_haproxy { script "killall -0 haproxy" interval 1 weight -5 fall 3 rise 5 } vrrp_instance VI_1 { state MASTER //此為主節點所以設置為master interface ens33 //指定網卡來映射虛擬ip virtual_router_id 51 //backup節點應與此id一致,否則vip無法漂移 priority 200 //值越大優先權越高,所以backup節點要低於此值 advert_int 1 authentication { //與backup節點認證的方式,需一致 auth_type PASS auth_pass 1111 } virtual_ipaddress { //虛擬節點的ip(vip) 192.168.0.11 } track_script { //指定haproxy腳本的名稱 chk_haproxy } } virtual_server 192.168.0.11 8600 { //指定vip的端口為8600 delay_loop 6 lb_algo rr lb_kind NAT persistence_timeout 50 protocol TCP real_server 192.168.0.101 5000 { //指定haproxy的地址與端口 weight 1 } }
- 在backup(192.168.0.102)節點上需修改三處
- MASTER 改為BACKUP
- priority 200 改為 priority 199
- real_server 192.168.0.101 5000 改為real_server 192.168.0.102 5000
- 另,查看系統網卡並修改interface
7、按順序啟動服務並測試 - 測試web1與web2是否可以訪問
- 分別在master與backup上啟動haproxy服務,測試ip+5000是否能訪問
- 先啟動master上的keepalived服務,用systemctl status keepalived查看啟動詳情(以下情況是正常啟動)
- 在master上查看vip
- 在瀏覽器上輸入192.168.0.11:8600(點擊刷新兩個web1與web2會交替顯示出來)
- 啟動backup上的keepalived服務,用systemctl status keepalived查看啟動詳情(vip未漂移過來)
- 關閉master上的haproxy服務,檢查vip是否漂移到backup上,查看backup上keepalived的狀態(vip已漂移過來)
- 在瀏覽器上輸入192.168.0.11:8600(點擊刷新兩個web1與web2會交替顯示出來)
8、總結 - vip不產生和不漂移:
- 查看網卡是否開啟轉發
- 在網絡暢通,防火墻關閉前提下,原因基本上是keepalived的配置有錯誤
- vip能漂移,但無法訪問:
- 系統是否一致(系統不一致可能會造成vip漂移後不能訪問)
Haproxy+Keepalived(雙機熱備)搭建高可用web架構