Keepalived高可用集群来实现web服务器负载均衡集群
?
?Keepalived高可用集群來實現web服務器負載均衡集群
一、Keepalived的介紹
Keepalived是一個提供HA重要的底層工具,最早期的作用是為ipvs提供HA功能的,還是一個可以提供vrrp已經health-check功能的服務軟件,可以只用它提供雙機浮動的vip(vrrp虛擬路由功能),這樣可以簡單實現一個雙機熱備高可用功能。同時我們還可以利用LVS+Keepalived基于完整開源軟件的架構可以為你提供一個負載均衡及高可用的服務器。?Keepalived是一個基于VRRP協議來實現的WEB?服務高可用方案,可以利用其來避免單點故障。一個WEB服務至少會有2臺服務器運行Keepalived,一臺為主服務器(MASTER),一臺為備份服務器(BACKUP),但是對外表現為一個虛擬IP,主服務器會發送特定的消息給備份服務器,當備份服務器收不到這個消息的時候,即主服務器宕機的時候,備份服務器就會接管虛擬IP,繼續提供服務,從而保證了高可用性。
二、VRRP的介紹
VRRP:Virtual?Router?Redundancy?Protocol,是虛擬路由冗余協議,通過此協議我們可以把多個路由器做成一個虛擬路由器,從而來保證其中某個路由宕掉的時候不會造成我們內部外出網絡的全部中斷。VRRP中的各個路由器都有一個唯一的標識VRID,其范圍為0-255,路由器對外表現為唯一的虛擬MAC地址,地址的格式為00-00-5E-00-01-[VRID]。主控路由器負責對ARP請求用該MAC地址做應答。這樣,無論如何切換,保證給終端設備的是唯一一致的IP和MAC地址,減少了切換對終端設備的影響。其中的VRID中的0和255是保留的,0用于IP地址所有者主動放棄主控者角色時使用,255用于VRRP路由器的IP地址和虛擬路由器的接口IP地址相同時所擁有
三、LVS的配置與安裝,
啟用四臺虛擬機,我選擇是192.168.0.x.的網段,虛擬主機是172.16.9.1,由于不在一個網段,需要加一個路由Routdde?add?default?gw?172.16.0.1
Real?Server1:192.168.0.54?Real?Server2:192.168.0.55
HA1:192.168.0.53?HA2;192.168.0.57
VIP:172.16.9.1
配置之前keepalived之前,先下載好yum軟件包,配置好http的軟件安裝,解決好依賴關系,更有利于后面的進行
?
RIP不能被外部主機解析使用腳本vipset.sh進行設置,要用vipset.sh腳本如配置VIP和arp參數
?
測試一下
Real?Server1
Real?Server2
Vipset.sh腳本如下所示:
#!/bin/bash # #?Script?to?start?LVS?DR?real?server. #?description:?LVS?DR?real?server # .?/etc/rc.d/init.d/functions VIP=172.16.9.1??????????#VIP地址 host=`/bin/hostname`?#定義host變量 case"$1"in start)?#start的時候設置本機arp不被外部主機解析 #?Start?LVS-DR?real?server?onthismachine. /sbin/ifconfig?lo?down /sbin/ifconfig?lo?up echo1>?/proc/sys/net/ipv4/conf/lo/arp_ignore echo2>?/proc/sys/net/ipv4/conf/lo/arp_announce echo1>?/proc/sys/net/ipv4/conf/all/arp_ignore echo2>?/proc/sys/net/ipv4/conf/all/arp_announce /sbin/ifconfig?lo:0$VIP?broadcast?$VIP?netmask255.255.255.255up #配置vip在lo:0,并且設置廣播地址和子網掩碼,此處使用32位是保證此vip不能與其他地址通信。 /sbin/route?add?-host?$VIP?dev?lo:0#增加路由 ;; stop)?#stop的時候恢復到系統的初始化arp參數 #?Stop?LVS-DR?real?server?loopback?device(s). /sbin/ifconfig?lo:0down echo0>?/proc/sys/net/ipv4/conf/lo/arp_ignore echo0>?/proc/sys/net/ipv4/conf/lo/arp_announce echo0>?/proc/sys/net/ipv4/conf/all/arp_ignore echo0>?/proc/sys/net/ipv4/conf/all/arp_announce ;; status) #?Status?of?LVS-DR?real?server. islothere=`/sbin/ifconfig?lo:0|?grep?$VIP` isrothere=`netstat?-rn?|?grep"lo:0"|?grep?$VIP` if[?!"$islothere"-o?!"isrothere"];then #?Either?the?route?or?the?lo:0device #?not?found. echo"LVS-DR?real?server?Stopped." else echo"LVS-DR?real?server?Running." fi ;; *) #?Invalid?entry. echo"$0:?Usage:?$0?{start|status|stop}" exit1 ;; Esac?
四、DR上的相關軟件的配置和安裝
?(1)下載keepalived-1.2.7-5.el5.i386.rpm
(2)安裝keepalived軟件,一定要解決依賴關系
安裝之前一定要與服務器時間同步?ntpdate?172.16.9.1
?
??(3)、ipvsadm軟件安裝
?
五、LVS的配置包括兩部分,虛擬主機組和虛擬主機
virtual_server?192.168.200.100?443?{????????#設置VIP?port????delay_loop?6?????????????????????#多少秒檢查一次real?server的健康狀態?????lb_algo?rr??????????????????????#調度算法?????lb_kind?NAT?????????????????????#lvs模型?????nat_mask?255.255.255.0??????????????#虛擬VIP的掩碼?????persistence_timeout?50??????????????#長連接時間?????protocol?TCP?????????????????????#協議類型real_server?192.168.201.100?443?{??????????#定義real?server????weight?1??????????????????????????#定義權重?????SSL_GET?{??????????????????????????#檢查web服務的SSL狀況?????url?{?????path?/?????digest?ff20ad2481f97b1754ef3e12ecd3a9cc?????}?????url?{??????????????????????????#檢查服務器的web服務狀況?????path?/mrtg/?????digest?9b3a0c85a887a256d6939da88aabd8cd?????}?????connect_timeout?3???????????#連接超時時間?????nb_get_retry?3?????????????#重試次數?????delay_before_retry?3?????????#重試連接時間間隔?????}?????}????? }六、keepalived配置文件的詳解
??(1)RS1里面的keepalived.conf上的配置
?
??Keepalived.conf的腳本 !?Configuration?File?for?keepalivedglobal_defs?{notification_email?{root@localhost }notification_email_from?root@localhostsmtp_server?127.0.0.1smtp_connect_timeout?30router_id?LVS_DEVEL }vrrp_instance?VI_1?{state?MASTERinterface?eth0virtual_router_id?51priority?101advert_int?1authentication?{auth_type?PASSauth_pass?keepalivedpass}virtual_ipaddress?{172.16.9.1} }virtual_server?172.16.9.1?80??{delay_loop?6lb_algo?rrlb_kind?NATnat_mask?255.255.0.0persistence_timeout?50protocol?TCPreal_server?192.168.0.54?80?{weight?1SSL_GET?{url?{path?/status_code?200}connect_timeout?3nb_get_retry?3delay_before_retry?3}} }virtual_server?172.16.9.1?80?{delay_loop?6lb_algo?rrlb_kind?DRnat_mask?255.255.0.0#?persistence_timeout?50protocol?TCPreal_server?192.168.0.54?80?{weight?2TCP_CHECK?{connect_timeout?3nb_get_retry?3delay_before_retry?1}}real_server?192.168.0.55?{weight?2TCP_CHECK?{connect_timeout?3nb_get_retry?3delay_before_retry?1connect_port?80}} }然后把RS1上的keepalived.com復制到RS2上,并把其中的stata改成BACKUP,priority修改為100,其他內容不變
?
RS2里面的keepalived.conf腳本
!?Configuration?File?for?keepalivedglobal_defs?{notification_email?{root@localhost }notification_email_from?root@localhostsmtp_server?127.0.0.1smtp_connect_timeout?30router_id?LVS_DEVEL }vrrp_instance?VI_1?{state?BACKUPinterface?eth0virtual_router_id?51priority?100advert_int?1authentication?{auth_type?PASSauth_pass?keepalivedpass}virtual_ipaddress?{172.16.9.1} }virtual_server?172.16.9.1?80?{delay_loop?6lb_algo?rrlb_kind?DRnat_mask?255.255.0.0#?persistence_timeout?50protocol?TCPreal_server?192.168.0.54?80?{weight?2TCP_CHECK?{connect_timeout?3nb_get_retry?3delay_before_retry?1}}real_server?192.168.0.55?{weight?2TCP_CHECK?{connect_timeout?3nb_get_retry?3delay_before_retry?1connect_port?80}} }啟動keepalived服務;
?
?
?
訪問虛擬IP地址
主備轉換測試
#?cd?/etc/keepalived/
#?touch?down
在備用節點node2上查看
訪問虛擬IP
現在把down文件刪除,MASTER節點會奪回資源,因為在node1上的優先級(101)比nod2上的優先級(100)高
雙主模式實現
兩個主機web服務同時開啟,配置的VIP不同,讓他們互為主從
修改keepalived.conf配置文件(只需修改配置文件末尾“vrrp_instance?VI_2”中的內容)
vrrp_instance?VI_2?{ interface?eth0 state?BACKUP??#?BACKUP?for?slave?routers priority?100??#?100?for?BACKUP virtual_router_id?52 garp_master_delay?1authentication?{ auth_type?PASS auth_pass?password } track_interface?{ eth0 } virtual_ipaddress?{ 172.16.51.80/16?dev?eth0?label?eth0:1 } track_script?{ chk_httpd chk_schedown }notify_master?"/etc/keepalived/notify.sh?master?eth0:1" notify_backup?"/etc/keepalived/notify.sh?backup?eth0:1" notify_fault?"/etc/keepalived/notify.sh?fault?eth0:1" }在node2上啟用“vrrp_instance?VI_2”中的內容后,修改一下第二VIP地址與腳本名稱(track_httpd,?chk_schedown)
修改完成后,啟動keepalived服務,查看node1與node2上的VIP地址配置
node1主機
node2主機
測試
模擬node1出現故障
#?cd?/etc/keepalived/
#?touch?down
查看node2上虛擬IP地址
?
此時,訪問172.16..9.1與192.16.53都是由node2主機返回結果
?
?
轉載于:https://blog.51cto.com/749806593/1202925
總結
以上是生活随笔為你收集整理的Keepalived高可用集群来实现web服务器负载均衡集群的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: express基础一:开始
- 下一篇: 文件复制软件绿化之dos命令