Keepalived+LVS

一、Keepalived

1.1 介紹

keepalived觀察其名可知,保持存活,在網絡裏面就是保持在線了,也就是所謂的高可用或熱備,它集羣管理中保證集羣高可用的一個服務軟件,其功能類似於heartbeat,用來防止單點故障(單點故障是指一旦某一點出現故障就會導致整個系統架構的不可用)的發生。說到keepalived就不得不說VRRP協議,可以說這個協議就是keepalived實現的基礎,那麼首先我們來看看VRRP協議。

1.2 VRRP

虛擬路由器冗餘協議,用於master與slave的通信以及狀態檢查,單臺LVS應該可以不理會此項。

1)VRRP是用來實現路由器冗餘的協議。
2)VRRP協議是爲了消除在靜態缺省路由環境下路由器單點故障引起的網絡失效而設計的主備模式的協議,使得發生故障而進行設計設備功能切換時可以不影響內外數據通信,不需要再修改內部網絡的網絡參數。
3)VRRP協議需要具有IP備份,優先路由選擇,減少不必要的路由器通信等功能。
4)VRRP協議將兩臺或多臺路由器設備虛擬成一個設備,對外提供虛擬路由器IP(一個或多個)。然而,在路由器組內部,如果實際擁有這個對外IP的路由器如果工作正常的話,就是master,或者是通過算法選舉產生的,MASTER實現針對虛擬路由器IP的各種網絡功能,如ARP請求,ICMP,以及數據的轉發等,其他設備不具有該IP,狀態是BACKUP。除了接收MASTER的VRRP狀態通告信息外,不執行對外的網絡功能,當主級失效時,BACKUP將接管原先MASTER的網絡功能。
5)VRRP協議配置時,需要配置每個路由器的虛擬路由ID(VRID)和優先權值,使用VRID將路由器進行分組,具有相同VRID值的路由器爲同一個組,VRID是一個0-255的整整數;同一個組中的路由器通過使用優先權值來選舉MASTER,優先權大者爲MASTER。

1.3 運行原理

keepalived檢查每個服務器節點狀態,服務器節點異常或者工作出現故障,keepalived將故障節點從集羣系統中剔除;故障恢復後,keepalived再將其加入到集羣系統中。master會發組播,當backup收不到VRRP包時就認爲master宕掉了,這時就需要根據VRRP的優先級來選舉一個backup當master。


keepalived也是模塊化設計,不同模塊複雜不同的功能,它主要有三個模塊,分別是core、check和VRRP,其中:
core模塊:爲keepalived的核心組件,負責主進程的啓動、維護以及全局配置文件的加載和解析;
check:負責健康檢查,包括常見的各種檢查方式;

VRRP模塊:是來實現VRRP協議的。


二、LVS

2.1 介紹

LVS是Linux Virtual Server的簡寫,意即Linux虛擬服務器,是一個虛擬的服務器集羣系統。在1998年5月由章文嵩博士期間創建,是中國國內最早出現的自由軟件項目之一。

2.2 組成

前端:負載均衡層

由一臺或多臺負載調度器構成

中間:服務器羣組層

由一組實際運行應用服務的服務器組成

底端:數據共享存儲層

提供共享存儲空間的存儲區域

2.3 LVS術語

Director Server:調度服務器

--將負載分發到real server的服務器

Real Server:真實服務器

--真正提供應用服務的服務器

VIP:虛擬IP

--公佈給用戶訪問的虛擬IP地址

RIP:真實IP

--集羣節點上使用的IP地址

DIP:調度器連接服務器的ip地址

2.4 LVS的工作模式:

(1)VS/NAT:通過網絡地址轉換實現的虛擬服務器

存在的問題:大併發量訪問時,調度器的性能成爲瓶頸

(2)VS/DR:直接使用路由技術實現虛擬服務器

客戶端過來訪問由調度器分發給服務器,服務器返回數據的時候不通過調度器直接給客戶端

(3)VS/TUN:通過隧道方式實現虛擬服務器

2.5 負載均衡常用調度算法

輪詢:rr              round robin

加權輪詢:wrr         weighted round robin

最少連接:lc           least connections

加權最少連接:wlc     weighted least connections


三、項目案例

3.1 環境:

系統版本:rhel7.2

2臺調度器做高可用(192.168.4.42 192.168.4.43)

2臺web服務器做負載均衡(192.168.4.45 192.168.4.46)

虛擬VIP:192.168.4.250

3.2 配置KVS/DR模式的LB集羣

(1) 配置web服務器

yum -y install httpd

echo web44 > /var/www/html/index.html

echo web45 > /var/www/html/index.html

ifconfig lo:1 192.168.4.250/32

echo 1 > /proc/sys/net/ipv4/conf/lo/arp_ignore

echo 2 > /proc/sys/net/ipv4/conf/lo/arp_announce

echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore

echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce

爲了防止重新啓動配置失效,可以將配置命令書寫在/etc/rc.local文件中。

該文件爲鏈接文件,指向的文件路徑爲/etc/rc.d/rc.loacl,需要將這兩個文件+x權限,開機才能夠自加載。


虛擬ip地址也可以寫在配置文件中

vim /etc/sysconfig/network-scripts/ifcfg-lo:1

DEVICE=lo:1

ONBOOT=yes

BOOTPROTO=static

IPADDR=192.168.4.250

NETMASK=0.0.0.0


3.3 在分發器上安裝提供lvs服務的ipvsadm軟件

[root@server42 ~]# yum -y install ipvsadm

[root@server43 ~]# yum -y install ipvsadm

3.4 配置分發器的HA集羣

(1) 分發器安裝keepalived軟件

[root@server42 ~]# yum -y install keepalived

[root@server43 ~]# yum -y install keepalived

(2) 修改keepalived服務的配置文件

[root@server42 ~]# vim /etc/keepalived/keepalived.conf

! Configuration File for keepalived
global_defs {                             #全局定義(global definition)
   notification_email {
     [email protected]           #設置報警收件人郵箱
     [email protected]
     [email protected]
   }
   notification_email_from [email protected]     #表示發送通知郵件時郵件源地址是誰
   smtp_server 192.168.200.1               #表示發送email時使用的smtp服務器地址
   smtp_connect_timeout 30
   router_id LVS_DEVEL
}
vrrp_instance VI_1 {
    state MASTER                #設置爲主,從的設置可以爲BACKUP
    interface eth0                 #定義網絡接口
    virtual_router_id 51        #主從VRID號保持一致
    priority 150                     #服務器優先級,主的高於從的
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111           #主從密碼保持一致
    }
    virtual_ipaddress {           #設置VIP
        192.168.4.250
    }
}
virtual_server 192.168.4.250 80 {
    delay_loop 6
    lb_algo rr                                    #設置LVS調度算法爲rr
    lb_kind DR                                 #設置LVS的模式爲DR
    nat_mask 255.255.255.0
 # persistence_timeout 50             #該項要註釋否則無法實現輪詢效果,這個參數的意義是保持客戶端的請求在這個時間段內全部發到同一個真實服務器
    protocol TCP
    connect_timeout 3                     #鏈接超時時間
    nb_get_retry 3                           #重連次數
    delay_before_retry 3                 #重連間隔
real_server 192.168.4.44 80 {       #後端提供web的真實ip
        weight 1
            }
    real_server 192.168.4.45 80 {
        weight 1
}
}

3.5 啓動keepalived服務

先啓動主的keepalived服務,再啓動備份的服務。

systemctl start keepalived

3.6 查看是否獲取到VIP地址和虛擬服務及realserver

ip add show | grep 192.168.4.250

3.7 客戶端測試

elinks -dump http://192.168.4.250


四、ipvsadm命令使用

yum -y install ipvsadm

ipvsadm -L       #查看詳細信息

ipvsadm -Ln     #顯示端口

ipvsadm -Ln --stats    #查看狀態信息,訪問web ip的次數 

ipvsadm -A -t 192.168.4.250:80 -s rr

#-A添加虛擬服務器 -t tcp -s指定負載調度算法


ipvsadm -a -t 192.168.4.250:80 -r 192.168.4.44:80 -m

ipvsadm -a -t 192.168.4.250:80 -r 192.168.4.45:80 -m

#添加real server

-a 添加真實服務器

-d 刪除真實服務器

-r 指定真實服務器

-m 使用NAT模式 ;-g 使用DR模式 ;-i 使用TUN模式

-w 爲節點服務器設置權重,默認爲1


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