實驗環境:
? ? RS1:rip(172.16.125.7),安裝httpd軟件包;
? ? RS2:rip(172.16.125.8),安裝httpd軟件包;
? ? director1(7-1.lcs.com):vip(172.16.125.100),dip(172.16.125.5),安裝nginx、keepalived軟件包。
? ? director2(7-2.lcs.com):vip(172.16.125.110),dip(172.16.125.6),安裝nginx、keepalived軟件包。
? ? 首先關閉所有節點上iptables和selinux,同時進行時間同步。
使用雙主模型實現nginx的高可用:
(1)在兩臺keepalived高可用主機上安裝keepalived和nginx軟件包,并提供配置文件。
? ? a.首先使用時間同步,保證節點上的時間是同步的。
? ? b.首先使用nginx反向代理實現后臺RS上的web服務的負載均衡,在nginx的主配置文件(/etc/nginx/nginx.conf)中,進行修改。
? ??? ? 在http段中添加upstream,將后端兩臺RS加入到該upstream中。
upstream?myblancer?{server?172.16.125.7:80;server?172.16.125.8:80;}
????????在server段中location /{}中加入代理,實現負載均衡調度。
location?/?{proxy_pass?http://myblancer;}
????c.進行檢測,是否實現了后端RS的輪詢調度。
????????
????????
(2)上述說明已經通過nginx的反向代理實現了http服務的負載均衡。在此處就可以開始配置keepalived的主配置文件,實現對nginx的高可用。詳細配置文件如下:
? ? keepalived的配置文件1:
global_defs?{notification_email?{root@localhostfailover@firewall.locsysadmin@firewall.loc}notification_email_from?Alexandre.Cassen@firewall.locsmtp_server?127.0.0.1smtp_connect_timeout?30router_id?LVS_DEVEL } vrrp_script?chk_nginx?{?script?"killall?-0?nginx?&>?/dev/null"interval?1weight?-20 }vrrp_instance?VI_1?{state?MASTERinterface?eno16777736virtual_router_id?100priority?100advert_int?1authentication?{auth_type?PASSauth_pass?100}virtual_ipaddress?{172.16.125.100/16?dev?eno16777736?label?eno16777736:0}track_script?{chk_nginx??} }vrrp_instance?VI_2?{state?BACKUPinterface?eno16777736virtual_router_id?110priority?90advert_int?1authentication?{auth_type?PASSauth_pass?110}virtual_ipaddress?{172.16.125.110/16?dev?eno16777736?label?eno16777736:1}track_script?{chk_nginx} }
????keepalived配置文件2:
global_defs?{notification_email?{root@localhostfailover@firewall.locsysadmin@firewall.loc}notification_email_from?Alexandre.Cassen@firewall.locsmtp_server?127.0.0.1smtp_connect_timeout?30router_id?LVS_DEVEL } vrrp_script?chk_nginx?{script?"killall?-0?nginx?&>?/dev/null"interval?1weight?-20 }? vrrp_instance?VI_1?{state?BACKUPinterface?eno16777736virtual_router_id?100priority?90advert_int?1authentication?{auth_type?PASSauth_pass?100}virtual_ipaddress?{172.16.125.100/16?dev?eno16777736?label?eno16777736:0}track_script?{chk_nginx} }vrrp_instance?VI_2?{state?MASTERinterface?eno16777736virtual_router_id?110priority?100advert_int?1authentication?{auth_type?PASSauth_pass?110}virtual_ipaddress?{172.16.125.110/16?dev?eno16777736?label?eno16777736:1}track_script?{chk_nginx} }
????使用如下這個腳本檢測nginx服務的狀態,如果nginx服務發生了問題,那么在該服務器上的vip會自動流動到另一臺高可用服務器上。使用下邊這個腳本要保證高可用服務器上有killall命令,該命令是由psmisc軟件包提供。
vrrp_script?chk_nginx?{script?"killall?-0?nginx?&>?/dev/null"interval?1weight?-20 }
????????通過這一步的keepalived的配置,keepalived服務已經配置完成,那么在這兩臺director上啟動keepalived和nginx服務。
? ??? ? a.查看兩臺director上vip是否已經添加成功。
????????
????????
????????b.分別訪問vip(172.16.125.100)和vip(172.16.125.110)。
????????
????c.在director1上關閉nginx服務,檢測到vip已經消失,轉移到director2上。
????????
????????
????????
轉載于:https://blog.51cto.com/angrybird/1706598