但這樣的話有沒有發現所有請求都經過了HAproxy代理,自然當并發量越來越高時HAproxy就成了瓶頸,突發時HAproxy就會挂掉,或HAproxy伺服器出現故障,這時外部唯一的請求入口沒有了,怎麼辦?重新開機是個辦法,但還是需要搶修時間,這期間内客戶都無法通路損失的鍋又得程式猿來背。
![](https://img.laitimes.com/img/_0nNw4CM6IyYiwiM6ICdiwiIn5GcuYzY2UGZhZmYjVGM0QGM3IzNkVDOiZ2MihDO5AzYmFDMfdWbp9CXt92Yu4GZjlGbh5SZslmZxl3Lc9CX6MHc0RHaiojIsJye.png)
這種情況下備胎出現了, Keepalived登場,他可以解決服務當機自動無縫切換。
Keepalived采用VRRP(virtual router redundancy protocol,虛拟路由備援協定)熱備份協定,以軟體的方式實作linux伺服器的多機熱備功能。VRRP是針對路由器的一種備份解決方案——由多台路由器組成一個熱備組。通過共用的虛拟IP位址對外提供服務;每個熱備組内同一時刻隻有一台主伺服器提供服務,其他伺服器處于備援狀态,若目前線上的伺服器失敗,其他伺服器會自動接替(優先級決定接替順序)虛拟IP位址,以繼續提供服務。 keepalived 預設需要使用D類多點傳播位址224.0.0.18 進行心跳通信 keepalived 使用vrrp協定(虛拟路由備援協定)進行通信(協定号碼為112)
Keepalived也可以與LVS、Nginx、MySQL等結合使用,形成可靠的主備機,給了你寶貴的搶修時間。
下面來講如何一步步搭建。
CentOS6.X
HAProxy 1.7.3
Keepalived 1.3.4
用root使用者安裝
若線上安裝不用下載下傳,可直接通過yum指令安裝(建議),不過需要聯網。
去官網下載下傳 :http://www.keepalived.org/software/keepalived-1.3.4.tar.gz
下載下傳後放進CentOS中的/usr/local/ 檔案夾中
分兩種:
1、線上裝:yum install -y ipvsadm keepalived (建議)
2、安裝包;
此處按照下載下傳好的安裝包操作:
在此之前還需要設定主備機的時間一緻,可用ntpdate向時間伺服器同步,具體的方法有時間再詳細說明。
修改keepalived.conf檔案配置
具體配置内容:
說明:
因為Keepalived在轉換狀态時會依照狀态來呼叫: 當進入Master狀态時會呼叫notify_master 當進入Backup狀态時會呼叫notify_backup 當發現異常情況時進入Fault狀态呼叫notify_fault 當Keepalived程式終止時則呼叫notify_stop
配置中notify.sh:
配置内容:
其中chk_haproxy.sh
添加内容:
将以上三個檔案全部更改後 複制一份到備機;注意根據上述高亮描述進行更改。(非常重要)
還要給chk_haproxy.sh和notify.sh執行腳本的權限。
配置完後進行啟動keepalived 和haproxy,主備機均要啟動:
service keepalived start
其它指令:
down掉主機的haproxy,檢視haproxy監控通路VIP:192.168.80.32:8089/stats,看haproxy的ID是否有變化,然後重新開機主機的haproxy,再看haproxy的ID是否有變化。
執行ip a檢視VIP在兩台機子上有變化
虛拟IP必須與master 和 備機 在同一網段,經測試若虛拟IP與他們不在同一網段通路不了VIP。
防止keepalived互搶IP的辦法,這個也有網有提出過,有相應的方法。
主備機互作主備,即主機也是備機,可以做配置多個執行個體來實作。
有網友測試出Keepalived限制死20個VIP問題,那這個是怎麼解決的。