haproxy

keepalived 保持在線,實現高可用集羣

主要解決單點故障,

vrrp動態路由協議,可以解決任何單點故障

運行原理:檢測每個服務器節點狀態,節點異常或工作出現故障將故障節點從集羣系統中剔除,故障節點恢復後在加入到時集羣系統中,所有工作自動完成。

HA(High Available),高可用性集羣,是保證業務連續性的有效解決方案,一般有兩個或兩個以上的節點,且分爲活動節點及備用節點。通常把正在執行業務的稱爲活動節點,而作爲活動節點的一個備份的則稱爲備用節點。當活動節點出現問題,導致正在運行的業務(任務)不能正常運行時,備用節點此時就會偵測到,並立即接續活動節點來執行業務。從而實現業務的不中斷或短暫中斷。

VRRP的工作原理:

路由器開啓VRRP功能後,會根據優先級確定自己在備份組中的角色。優先級高的路由器成爲主用路由器,優先級低的成爲備用路由器。主用路由器定期發送VRRP通告報文,通知備份組內的其他路由器自己工作正常;備用路由器則啓動定時器等待通告報文的到來。

VRRP在不同的主用搶佔方式下,主用角色的替換方式不同:

l在搶佔方式下,當主用路由器收到VRRP通告報文後,會將自己的優先級與通告報文中的優先級進行比較。如果大於通告報文中的優先級,則成爲主用路由器;否則將保持備用狀態。

l在非搶佔方式下,只要主用路由器沒有出現故障,備份組中的路由器始終保持主用或備用狀態,備份組中的路由器即使隨後被配置了更高的優先級也不會成爲主用路由器。

如果備用路由器的定時器超時後仍未收到主用路由器發送來的VRRP通告報文,則認爲主用路由器已經無法正常工作,此時備用路由器會認爲自己是主用路由器,並對外發送VRRP通告報文。備份組內的路由器根據優先級選舉出主用路由器,承擔報文的轉發功能。


配置HA集羣

  1. 安裝keepalived,那些網站要做高可用集羣就在那些上面安裝keepalived軟件因爲做高可用集羣必須用keepalived軟件注意要兩臺計算機以上

    2.配置主服務器和備用服務器 

       /etc/keepalived/keepalived.conf

global_defs {

   notification_email {

     [email protected]

     [email protected]

     [email protected]

   }

   notification_email_from [email protected]

   smtp_server 192.168.200.1

   smtp_connect_timeout 30

   router_id LVS_DEVEL

   vrrp_skip_check_adv_addr

  # vrrp_strict注意要把這要註釋掉

   vrrp_garp_interval 0

   vrrp_gna_interval 0

}

vrrp_instance webha { 集羣名字兩臺要一樣

 20     state MASTER  描述,這只是一個描述信息,狀態主state備master

 21     interface eth0  接口網卡名

 22     virtual_router_id 51 這是一個編號不用動

 23     priority 100  優先級誰做主誰優先級就大點優先級最大255

 24     advert_int 1  默認比此通信時間間隔默認爲秒

 25     authentication { 認證方式

 26         auth_type PASS 通過密碼兩臺要一樣

 27         auth_pass 1111

 28     }

 29     virtual_ipaddress {vip地址是多少就在裏面寫多少

 30         192.168.200.16

 31         192.168.200.17

 32         192.168.200.18

 33     }}

建議先啓用優先級高的設置


ip addr show 專門用來查ip地址


注意:如何網站服務壞了我們可以讓keepalived自己停了,需要自己寫腳本



綜合應用:

keepalived+lvs 配置lvs調度器,HA集羣

注意:/etc/rc.d/rc.local要給這執行權限才能去讀/etc/rc.local裏面寫的東西

刪除主機上策略和VIP地址

ipvsadm -C

ifdown eth0

ifup eth0

刪除/etc/rc.local文件裏的ifconfig eth0:1 192.168.4.253 命令

默認/etc/rc.local是一個鏈接文件,真實文件是/etc/rc.d/rc.local這個文件默認沒有執行權限要自己手動去改一個權限

eth0 eth0:1 和eth0.1三者的關係對應於物理網卡、子網卡、虛擬VLAN網卡的關係:

物理網卡:物理網卡這裏指的是服務器上實際的網絡接口設備,這裏我服務器上雙網卡,在系統中看到的2個物理網卡分別對應是eth0和eth1這兩個網絡接口。

 

子網卡:子網卡在這裏並不是實際上的網絡接口設備,但是可以作爲網絡接口在系統中出現,如eth0:1、eth1:2這種網絡接口。它們必須要依賴於物理網卡,雖然可以與物理網卡的網絡接口同時在系統中存在並使用不同的IP地址,而且也擁有它們自己的網絡接口配置文件。但是當所依賴的物理網卡不啓用時(Down狀態)這些子網卡也將一同不能工作。

 

虛擬VLAN網卡:這些虛擬VLAN網卡也不是實際上的網絡接口設備,也可以作爲網絡接口在系統中出現,但是與子網卡不同的是,他們沒有自己的配置文件。他們只是通過將物理網加入不同的VLAN而生成的VLAN虛擬網卡。如果將一個物理網卡通過vconfig命令添加到多個VLAN當中去的話,就會有多個VLAN虛擬網卡出現,他們的信息以及相關的VLAN信息都是保存在/proc/net/vlan/config這個臨時文件中的,而沒有獨自的配置文件。它們的網絡接口名是eth0.1、eth1.2這種名字。


注意:當需要啓用VLAN虛擬網卡工作的時候,關聯的物理網卡網絡接口上必須沒有IP地址的配置信息,並且,這些主物理網卡的子網卡也必須不能被啓用和必須不能有IP地址配置信息。這個在網上看到的結論根據我的實際測試結果來看是不準確的,物理網卡本身可以綁定IP,並且給本徵vlan提供通信網關的功能,但必須是在802.1q下。



分別在主機上安裝keepalived

修改配置文件

修改做主分發配置文件

virtual_server 192.168.4.253 80 { 虛擬服務器 端口 相當於ipvsadm -A -t

 persistence_timeout 50

lvs配置persistence_timeout 參數導致數據庫負載不均
 
現象是網站訪問很慢,某臺數據庫的負載很高,在LVS上看到連接數分佈非常不均衡。


臨時解決方式是數據庫訪問不通過LVS,不同的web配置不同的數據庫讀IP。網站暫時恢復正常。


 檢查keepalived軟件配置,發現virtual_server配置了persistence_timeout 連接保持,意思就是在這個一定時間內會講來自同一用戶(根據ip來判斷的)訪問到同一個real server。


配置連接保持後用戶訪問到哪個後端由persistence_timeout和lvs的超時共同決定




擴展:配置keepalived對lvs服務的realserver 做健康檢查默認不配是沒有的



使用Haproxy 軟件配置 LB集羣

LVS 基於端口 傳輸層tcp/udp 不能做健康檢查,不能做應用層


Haproxy 基於端口,基於健康檢查,基於應用層

(1).LB:Load Balancing:負載均衡集羣

負載均衡集羣中有一個分發器或者叫調度器,我們將其稱之爲Director,它處在多臺服務器的上面,分發器根據內部鎖定義的規則或調度方式從下面的服務器羣中選擇一個以此來響應客戶端發送的請求。

(2).HA:High Availability 高可用集羣 
高可用集羣是服務的可用性比較高,當我們某臺服務器死機後不會造成我們的服務不可用。其工作模式則是將一個具有故障的服務轉交給一個正常工作的服務器,從而達到服務不會中斷。一般來說我們集羣中工作在前端(分發器)的服務器都會對我們的後端服務器做一個健康檢查,如果發現我們服務器當機就不會對其在做轉發。

衡量標準:可用性=在線時間/(在線時間+故障處理時間)

99%、99.9%、99.99%、99.999%



lvs和haproxy都是實現的負載均衡的作用,keepalived和heartbeat都是提高高可用性的,避免單點故障。

兩者的區別:

lvs的是通過vrrp協議進行數據包轉發的,提供的是4層的負載均衡。特點是效率高,只要你機器網卡抗的住就不是問題。
haproxy可以提供4層或7層的數據轉發服務,能做到7層的好處是可以根據服務所處的狀態等進行負載。

以上兩者只是實現了負載均衡,但是他們本身是明顯的單點故障,因此需要使用雙機軟件做熱備,來保證高可用性。keepalived可以通過檢測vrrp數據包來切換,因此更適合與lvs搭配。而heartbeat更適於和haproxy搭配。這樣就出現了這兩個應用比較多也比較經典的負載均衡的高可用性方案了。


URL統一資源定位器

URI



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