一、LVS+Keepalived 高可用群集
在這個高度資訊化的 IT 時代,企業的生產系統、業務運營、銷售和支持,以及日常管理等環節越來越依賴于計算機資訊和服務,對高可用(HA)技術的應用需求不斷提高,以便提供持續的、不間斷的計算機系統或網路服務,
Keepalived是一個基于VRRP協議來實作的LVS服務高可用方案,可以解決靜態路由出現的單點故障問題,
1.1Keepalived工具介紹
專為LVS和HA設計的一款健康檢查工具
? 支持故障自動切換(Failover)
? 支持節點健康狀態檢查(Health Checking)
? 官方網站:http://www.keepalived.org/
1.2作業原理
在一個LVS服務集群中通常有主服務器(MASTER)和備份服務器(BACKUP)兩種角色的服務器,但是對外表現為一個虛擬IP,主服務器會發送VRRP通告資訊給備份服務器,當備份服務器收不到VRRP訊息的時候,即主服務器例外的時候,備份服務器就會接管虛擬IP,繼續提供服務,從而保證了高可用性,
1.3Keepalived實作原理剖析
Keepalived采用VRRP熱備份協議實作Linux服務器的多機熱備功能
1.4VRRP (虛擬路由冗余協議)
是針對路由器的一種備份解決方案
由多臺路由器組成一個熱備組,通過共用的虛擬IP地址對外提供服務
每個熱備組內同時只有一臺主路由器提供服務,其他路由器處于冗余狀態
若當前在線的路由器失效,則其他路由器會根據設定的優先級自動接替虛擬IP地址,繼續提供服務
1.5故障轉移機制
Keepalived高可用服務之間的故障切換轉移,是通過VRRP 來實作的,
在 Keepalived服務正常作業時,主 Master節點會不斷地向備節點發送(多播的方式)心跳訊息,用以告訴備Backup節點自己還活著,當主 Master節點發生故障時,就無法發送心跳訊息,備節點也就因此無法繼續檢測到來自主 Master節點的心跳了,于是呼叫自身的接管程式,接管主Master節點的 IP資源及服務,
而當主 Master節點恢復時,備Backup節點又會釋放主節點故障時自身接管的IP資源及服務,恢復到原來的備用角色,
二、LVS+Keepalived 高可用群集的搭建步驟
環境準備:
主DR服務器:192.168.10.10
備DR服務器:192.168.10.20
Web服務器1:192.168.10.30
Web服務器2:192.168.10.40
nfs服務器:192.168.10.50
vip:192.168.10.60
2.1配置負載調度器(主、備相同;192.168.10.10;192.168.10.20)
systemctl stop firewalld.service setenforce 0 yum -y install ipvsadm keepalived modprobe ip_vs cat /proc/net/ip_vs
(1)配置keeplived(主、備DR 服務器上都要設定)
cd /etc/keepalived/ cp keepalived.conf keepalived.conf.bak vim keepalived.conf ...... global_defs { #定義全域引數 --10行--修改,郵件服務指向本地 smtp_server 127.0.0.1 --12行--修改,指定服務器(路由器)的名稱,主備服務器名稱須不同,主為LVS_01,備為LVS_02 router_id LVS_01 } vrrp_instance VI_1 { #定義VRRP熱備實體引數 --20行--修改,指定熱備狀態,主為MASTER,備為BACKUP state MASTER --21行--修改,指定承載vip地址的物理介面 interface ens33 --22行--修改,指定虛擬路由器的ID號,每個熱備組保持一致 virtual_router_id 10 --23行--修改,指定優先級,數值越大優先級越高,主為100,備為99 priority 100 advert_int 1 #通告間隔秒數(心跳頻率) authentication { #定義認證資訊,每個熱備組保持一致 auth_type PASS #認證型別 --27行--修改,指定驗證密碼,主備服務器保持一致 auth_pass abc123 } virtual_ipaddress { #指定群集vip地址 192.168.10.60 } } --36行--修改,指定虛擬服務器地址(VIP)、埠,定義虛擬服務器和Web服務器池引數 virtual_server 192.168.10.60 80 { delay_loop 6 #健康檢查的間隔時間(秒) lb_algo rr #指定調度演算法,輪詢(rr) --39行--修改,指定群集作業模式,直接路由(DR) lb_kind DR persistence_timeout 50 #連接保持時間(秒) protocol TCP #應用服務采用的是 TCP協議 --43行--修改,指定第一個Web節點的地址、埠 real_server 192.168.10.30 80 { weight 1 #節點的權重 --45行--洗掉,添加以下健康檢查方式 TCP_CHECK { connect_port 80 #添加檢查的目標埠 connect_timeout 3 #添加連接超時(秒) nb_get_retry 3 #添加重試次數 delay_before_retry 4 #添加重試間隔 } } real_server 192.168.10.40 80 { #添加第二個 Web節點的地址、埠 weight 1 TCP_CHECK { connect_port 80 connect_timeout 3 nb_get_retry 3 delay_before_retry 4 } } ##洗掉后面多余的配置## } systemctl start keepalived ip addr show dev ens33 #查看虛擬網卡vip
(2)配置分發策略(keepalived配置好后,可以不用再配ipvsadm 分發策略)
ipvsadm-save > /etc/sysconfig/ipvsadm systemctl start ipvsadm ipvsadm -C ipvsadm -A -t 192.168.10.60:80 -s rr ipvsadm -a -t 192.168.10.60:80 -r 192.168.10.30:80 -g ipvsadm -a -t 192.168.10.60:80 -r 192.168.10.40:80 -g ipvsadm ipvsadm -ln ipvsadm-save > /etc/sysconfig/ipvsadm #如果沒有vip的分發策略,則重啟keepalived 服務
(3)調整內核 proc 回應引數,關閉linux內核的重定向引數回應
vim /etc/sysctl.conf net.ipv4.conf.all.send_redirects = 0 net.ipv4.conf.default.send_redirects = 0 net.ipv4.conf.ens33.send_redirects = 0 sysctl -p
2.2部署共享存盤(NFS服務器:192.168.10.50)
systemctl stop firewalld.service systemctl disable firewalld.service setenforce 0 yum install nfs-utils rpcbind -y systemctl start nfs.service systemctl start rpcbind.service systemctl enable nfs.service systemctl enable rpcbind.service
mkdir /opt/fzr /opt/zzjchmod 777 /opt/fzr /opt/zzj vim /etc/exports /usr/share *(ro,sync) /opt/fzr 192.168.10.0/24(rw,sync) /opt/zzj 192.168.10.0/24(rw,sync) --發布共享--- exportfs -rv
2.3配置節點服務器(192.168.10.30;192.168.10.40)
systemctl stop firewalld setenforce 0 yum -y install httpd systemctl start httpd
yum install nfs-utils rpcbind -y
systemctl start nfs.service
systemctl start rpcbind.service
systemctl enable nfs.service
systemctl enable rpcbind.service
vim /etc/sysconfig/network-scripts/ifcfg-lo:0 DEVICE=lo:0 ONBOOT=yes IPADDR=192.168.10.60 NETMASK=255.255.255.255 service network restart 或 systemctl restart network ifup lo:0 ifconfig lo:0 route add -host 192.168.10.60 dev lo:0 vim /etc/sysctl.conf net.ipv4.conf.lo.arp_ignore = 1 net.ipv4.conf.lo.arp_announce = 2 net.ipv4.conf.all.arp_ignore = 1 net.ipv4.conf.all.arp_announce = 2 sysctl -p --192.168.10.30--- mount.nfs 192.168.10.50:/opt/fzr /var/www/html --192.168.10.40--- mount.nfs 192.168.10.50:/opt/zzj /var/www/html
2.4測驗驗證
在客戶端訪問 http://192.168.2.67
再在主服務器關閉 keepalived 服務后在測驗(systemctl stop keepalived)
三、實體操作:LVS+Keepalived 高可用群集
3.1配置負載調度器(主、備相同;192.168.10.10;192.168.10.20)
(1)關閉防火墻并安裝ipvsadm和keepalived工具
主DR服務器:(192.168.10.10)


備DR服務器:(192.168.10.20)


(2)配置keeplived(主、備DR 服務器上都要設定)
主DR服務器:(192.168.10.10)




備DR服務器:(192.168.10.20)



主DR服務器:(配置分發策略)

備DR服務器:(配置分發策略)


(3)調整內核 proc 回應引數,關閉linux內核的重定向引數回應
DR主服務器:(192.168.10.10)


DR備服務器:(192.168.10.20)
3.2部署共享存盤(NFS服務器:192.168.10.50)




3.3配置節點服務器(192.168.10.30;192.168.10.40)
web1服務器:(192.168.10.30)





![]()



![]()
![]()
web2服務器:(192.168.10.40)

![]()





![]()

3.4測驗驗證
瀏覽器訪問:http://192.168.10.60(虛擬vip地址)


再在主服務器關閉 keepalived 服務后在測驗(systemctl stop keepalived)
主DR服務器vip地址消失:

備DR服務器地址出現:

瀏覽器測驗依然負載均衡:


轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/538464.html
標籤:其他
