Keepalived+LVS
1.1 介紹
keepalived觀察其名可知,保持存活,在網絡裏面就是保持在線了,也就是所謂的高可用或熱備,它集群管理中保證集群高可用的一個服務軟件,其功能類似於heartbeat,用來防止單點故障(單點故障是指一旦某一點出現故障就會導致整個系統架構的不可用)的發生。說到keepalived就不得不說VRRP協議,可以說這個協議就是keepalived實現的基礎,那麽首先我們來看看VRRP協議。
1.2 VRRP
虛擬路由器冗余協議,用於master與slave的通信以及狀態檢查,單臺LVS應該可以不理會此項。
1)VRRP是用來實現路由器冗余的協議。
2)VRRP協議是為了消除在靜態缺省路由環境下路由器單點故障引起的網絡失效而設計的主備模式的協議,使得發生故障而進行設計設備功能切換時可以不影響內外數據通信,不需要再修改內部網絡的網絡參數。
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.2.250:80 -s rr
#-A添加虛擬服務器 -t tcp -s指定負載調度算法
ipvsadm -a -t 192.168.2.100:80 -r 192.168.4.101:80 -m
ipvsadm -a -t 192.168.2.100:80 -r 192.168.4.102:80 -m
#添加real server
-a 添加真實服務器
-d 刪除真實服務器
-r 指定真實服務器
-m 使用NAT模式 ;-g 使用DR模式 ;-i 使用TUN模式
-w 為節點服務器設置權重,默認為1
Keepalived+LVS