LVS和Keeplive
文章目錄
- 一、Keepalived 概述
- 1. 為什么需要 keepalived
- 2. keepalived 是什么
- 3. keepalived 服務(wù)重要功能
- 4. keepalived 高可用故障切換轉(zhuǎn)移原理
- 5. keepalived 體系主要模塊及其作用
- 6. 使用 keepalived 實現(xiàn)雙機(jī)熱備
- 二、LVS + DR + Keepalived 高可用集群構(gòu)建
- 1. 集群概述
- 3. 案例配置
- 4. 正式部署
一、Keepalived 概述
1. 為什么需要 keepalived
企業(yè)應(yīng)用中,單臺服務(wù)器承擔(dān)應(yīng)用存在單點故障的危險,單點故障一旦發(fā)生,企業(yè)服務(wù)將發(fā)生中斷,造成極大的危害和損失。
2. keepalived 是什么
keepalived 軟件起初是專為 LVS 負(fù)載均衡軟件設(shè)計的,用來管理并監(jiān)控 LVS 集群中各個服務(wù)節(jié)點的狀態(tài),后來又加入了可以實現(xiàn)高可用的 VRRP 功能。因此,keepalived 除了能夠管理 LVS 集群外,還可以為其他服務(wù)(例如:Nginx、Haproxy、MySQL等)實現(xiàn)高可用。
??keepalived 軟件主要是通過 VRRP 協(xié)議實現(xiàn)高可用功能的。VRRP 是 Virtual Router Redundancy Protocol(虛擬路由器冗余協(xié)議)的縮寫,VRRP 出現(xiàn)的目的就是為了解決靜態(tài)路由單點故障的問題,它能夠保證當(dāng)個別節(jié)點宕機(jī)時,整個網(wǎng)絡(luò)可以不間斷地運(yùn)行。
??所以,keepalived 一方面具有配置管理 LVS 的功能,同時還具有對 LVS 下面節(jié)點進(jìn)行健康檢查的功能,另一方面也可實現(xiàn)系統(tǒng)網(wǎng)絡(luò)服務(wù)的高可用。
3. keepalived 服務(wù)重要功能
- 管理 LVS 負(fù)載均衡軟件
- 支持故障自動切換(Failover)
- 實現(xiàn) LVS 集群中節(jié)點的健康檢查(Health Checking)
- 實現(xiàn) LVS 負(fù)載調(diào)度器、節(jié)點服務(wù)器的高可用性(HA)
一般企業(yè)集群需要滿足的三個特點:負(fù)載均衡、健康檢查、故障切換,使用 LVS + Keepalived 完全可以滿足需求。
4. keepalived 高可用故障切換轉(zhuǎn)移原理
keepalived 高可用服務(wù)對集群之間的故障切換轉(zhuǎn)移,是通過 VRRP(虛擬路由器冗余協(xié)議)來實現(xiàn)的。
??在 keepalived 服務(wù)正常工作時,主(Master)節(jié)點會不斷地向備(Backup)節(jié)點發(fā)送(多播的方式)心跳消息,用以告訴備節(jié)點自己還活看,當(dāng)主節(jié)點發(fā)生故障時,就無法發(fā)送心跳消息,備節(jié)點也就因此無法繼續(xù)檢測到來自主節(jié)點的心跳了,于是調(diào)用自身的接管程序,接管主節(jié)點的 IP 資源及服務(wù)。而當(dāng)主節(jié)點恢復(fù)時,備節(jié)點又會釋放主節(jié)點故障時自身接管的 IP 資源及服務(wù),恢復(fù)到原來的備用角色。
5. keepalived 體系主要模塊及其作用
| core 模塊 | 為 keepalived 的核心,負(fù)責(zé)主進(jìn)程的啟動、維護(hù)及全局配置文件的加載和解析 |
| vrrp 模塊 | 是來實現(xiàn) VRRP 協(xié)議的 |
| check 模塊 | 負(fù)責(zé)健康檢查,常見的方式有端口檢查及 UR L檢查 |
6. 使用 keepalived 實現(xiàn)雙機(jī)熱備
- 基于 VRRP 協(xié)議的熱備方式,keepalived 可以用作服務(wù)器的故障切換,每個熱備組可以有多臺服務(wù)器。當(dāng)然,最常用的還是雙機(jī)熱備。
- 在雙擊熱備方案中,故障切換主要針對虛擬 IP 地址的漂移來實現(xiàn),因此可以適用于各種應(yīng)用服務(wù)器(Web、FTP、Mail、SSH、DNS…)
- 其中主、備服務(wù)器都需安裝 keepalived
二、LVS + DR + Keepalived 高可用集群構(gòu)建
1. 集群概述
- keepalived 的設(shè)計目標(biāo)是構(gòu)建高可用的 LVS 負(fù)載均衡集群,可以調(diào)用 ipvsadm 工具來創(chuàng)建虛擬服務(wù)器、管理服務(wù)器池,而不僅僅用作雙機(jī)熱備
- 使用 keepalived 構(gòu)建 LVS 集群更加簡便易用,主要優(yōu)勢在于:對 LVS 負(fù)載調(diào)度器實現(xiàn)熱備切換,提高可用性;對服務(wù)器池中的節(jié)點進(jìn)行健康檢查,自動移除失效節(jié)點,恢復(fù)后再重新加入
- 案列將以 DR 模式的 LVS 集群為基礎(chǔ),增加一臺從負(fù)載調(diào)度器,使用 keepalived 實現(xiàn)主、從調(diào)度器的熱備,搭建兼有負(fù)載均衡、高可用性兩種能力的 LVS 集群架構(gòu)
- 使用 keepalived 構(gòu)建 LVS 集群時,也需要用到 ipvsadm 管理工具,但大部分工作會由 keepalived 自動完成,不需要手動執(zhí)行 ipvsadm (除了查看和監(jiān)控集群以外)
3. 案例配置
| 主 DR 服務(wù)器 | 192.168.10.20 |
| 從 DR 服務(wù)器 | 192.168.10.60 |
| VIP | 192.168.10.25 |
| Web 服務(wù)器 1 | 192.168.10.30 |
| Web 服務(wù)器 2 | 192.168.10.40 |
| NFS 服務(wù)器 | 192.168.10.50 |
| Win10 客戶端 | 192.168.10.85 |
keepalived 高可用集群的構(gòu)建基于 LVS-DR 模式,LVS-DR 配置參考:
LVS 負(fù)載均衡集群 - 直接路由模式(LVS-DR)
只需要在 LVS-DR 模式的基礎(chǔ)上加一臺從 DR 調(diào)度器(最好與主 DR 配置相同)
4. 正式部署
(1) 從負(fù)載調(diào)度器配置
systemctl stop firewalld.service && systemctl disable firewalld.service setenforce 0 modprobe ip_vs cat /proc/net/ip_vs yum install -y ipvsadm cd /etc/sysconfig/network-scripts/ && cp ifcfg-ens33 ifcfg-ens33:0 echo > /etc/sysconfig/network-scripts/ifcfg-ens33:0cat > /etc/sysconfig/network-scripts/ifcfg-ens33:0 <<EOF DEVICE=ens33:0 ONBOOT=yes IPADDR=192.168.10.25 NETMASK=255.255.255.255 EOFifup ens33:0 #lvs_01 已經(jīng)有 VIP 了,直接用 ifup 會執(zhí)行失敗 systemctl restart network ifup ens33:0 #再次執(zhí)行 ip a #確認(rèn)一下 ens33:0 是否生效cat >> /etc/sysctl.conf <<EOF net.ipv4.ip_forward = 0 net.ipv4.conf.all.send_redirects = 0 net.ipv4.conf.default.send_redirects = 0 net.ipv4.conf.ens33.send_redirects = 0 EOFsysctl -p ipvsadm-save > /etc/sysconfig/ipvsadm systemctl start ipvsadm && systemctl enable ipvsadm ipvsadm -C ipvsadm -A -t 192.168.10.25:80 -s rr ipvsadm -a -t 192.168.10.25:80 -r 192.168.10.30:80 -g ipvsadm -a -t 192.168.10.25:80 -r 192.168.10.40:80 -g ipvsadm ipvsadm -ln(2) 主-從負(fù)載調(diào)度器安裝配置 keepalived
keepalived 的配置大致一樣,只是名稱和優(yōu)先級有所差別,注意注釋說明,逐個修改
yum -y install keepalived #安裝軟件包cd /etc/keepalived/ cp keepalived.conf keepalived.conf.bak #備份vim keepalived.conf #配置文件只需要從 global_defs 開始的內(nèi)容,上面無用的配置也清掉 global_defs { #定義全局參數(shù)#第10行,郵件服務(wù)指向本地smtp_server 127.0.0.1#第12行,指定服務(wù)器(路由器)的名稱,主備服務(wù)器名稱須不同,主為 LVS_01,備為 LVS_02router_id LVS_01 }vrrp_instance VI_1 { #定義 VRRP 熱備實例參數(shù) #20行,指定熱備狀態(tài),主為 MASTER,備為 BACKUPstate MASTER#21行,指定承載 vip 地址的物理接口interface ens33#第22行,指定虛擬路由器的 ID 號,每個熱備組保持一致 virtual_router_id 10#第23行,指定優(yōu)先級,數(shù)值越大優(yōu)先級越高,主為 100,備為 99priority 100advert_int 1 #通告間隔秒數(shù)(心跳頻率)authentication { #定義認(rèn)證信息,每個熱備組保持一致auth_type PASS #認(rèn)證類型#第27行,指定驗證密碼,主備服務(wù)器保持一致auth_pass 123123}virtual_ipaddress { #指定群集vip地址192.168.10.25} } #第34行,指定虛擬服務(wù)器地址(VIP)、端口,定義虛擬服務(wù)器和 Web 服務(wù)器池參數(shù) virtual_server 192.168.10.25 80 {delay_loop 6 #健康檢查的間隔時間(秒)lb_algo rr #指定調(diào)度算法,輪詢(rr)#第37行,指定群集工作模式,直接路由(DR)lb_kind DRpersistence_timeout 50 #連接保持時間(秒)protocol TCP #應(yīng)用服務(wù)采用的是 TCP協(xié)議#第41行,指定第一個Web節(jié)點的地址、端口real_server 192.168.10.30 80 {weight 1 #節(jié)點的權(quán)重#第43行,添加以下健康檢查方式,刪掉不需要的配置 TCP_CHECK {connect_port 80 #添加檢查的目標(biāo)端口connect_timeout 3 #添加連接超時(秒)nb_get_retry 3 #添加重試次數(shù)delay_before_retry 3 #添加重試間隔}}real_server 192.168.10.40 80 { #添加第二個 Web 節(jié)點的地址、端口weight 1TCP_CHECK {connect_port 80connect_timeout 3nb_get_retry 3delay_before_retry 3}} } #可刪除后面多余的網(wǎng)段systemctl start keepalived && systemctl enable keepalived #兩個負(fù)載調(diào)度器開啟 keepalived 服務(wù)ip addr show dev ens33 #查看虛擬網(wǎng)卡 vip主 DR 網(wǎng)卡信息
從 DR 網(wǎng)卡信息
我們可以看到,主負(fù)載調(diào)度節(jié)點是有 VIP 的,從節(jié)點沒有,說明 VIP 目前固定在 LVS_01。
(3) Windows 10 測試訪問
- 在客戶機(jī)的瀏覽器中,能夠通過 LVS + Keepalived 群集的 VIP 地址正常訪問 Web 頁面內(nèi)容
- 當(dāng)主、從調(diào)度器任何一個失效時,Web 站點仍然可以訪問(可能需要刷新或者重新打開瀏覽器)
- 只要有兩臺及以上的真實服務(wù)器可用,就可以實現(xiàn)訪問量的負(fù)載均衡
(4) 關(guān)掉 lvs_01 keepalived 服務(wù)測試訪問
在主負(fù)載調(diào)度器上
首先 VIP 會漂移到 lvs_02
瀏覽器訪問測試,負(fù)載均衡仍然生效,高可用負(fù)載均衡集群搭建成功
重啟 lvs_01 keepalived 服務(wù),VIP 漂移回 lvs_01
上面 主/從 配置注釋太多,這里放個配置純凈版的,沒有注釋
根據(jù)自己的 IP 、網(wǎng)卡名、想要設(shè)置的密碼…進(jìn)行修改
(1) lvs_01
我們實驗是接著 LVS-DR 做的,前面配置過了 lvs_01 ,這里只需要配置 keepalived
(2) lvs_02
lvs_02 是新加入的節(jié)點,lvs_01 的所有操作都要做一遍,只有在配置 keepalived 的時候有一些差別systemctl stop firewalld.service && systemctl disable firewalld.service setenforce 0 modprobe ip_vs cat /proc/net/ip_vs yum install -y ipvsadm cd /etc/sysconfig/network-scripts/ && cp ifcfg-ens33 ifcfg-ens33:0 echo > /etc/sysconfig/network-scripts/ifcfg-ens33:0cat > /etc/sysconfig/network-scripts/ifcfg-ens33:0 <<EOF DEVICE=ens33:0 ONBOOT=yes IPADDR=192.168.10.25 NETMASK=255.255.255.255 EOFifup ens33:0 systemctl restart network ifup ens33:0 ip a show dev ens33cat >> /etc/sysctl.conf <<EOF net.ipv4.ip_forward = 0 net.ipv4.conf.all.send_redirects = 0 net.ipv4.conf.default.send_redirects = 0 net.ipv4.conf.ens33.send_redirects = 0 EOFsysctl -p ipvsadm-save > /etc/sysconfig/ipvsadm systemctl start ipvsadm && systemctl enable ipvsadm ipvsadm -C ipvsadm -A -t 192.168.10.25:80 -s rr ipvsadm -a -t 192.168.10.25:80 -r 192.168.10.30:80 -g ipvsadm -a -t 192.168.10.25:80 -r 192.168.10.40:80 -g ipvsadm ipvsadm -lnyum -y install keepalived cd /etc/keepalived/ && cp -a keepalived.conf keepalived.conf.bak echo > /etc/keepalived/keepalived.confcat > /etc/keepalived/keepalived.conf<<EOF global_defs {router_id lvs_02 }vrrp_instance vi_1 {state BACKUPinterface ens33virtual_router_id 51priority 100advert_int 1authentication {auth_type PASSauth_pass 6666}virtual_ipaddress {192.168.10.25} }virtual_server 192.168.10.25 80 {lb_algo rrlb_kind DR persistence_timeout 6protocol TCP real_server 192.168.10.30 80 {weight 1 TCP_CHECK {connect_port 80connect_timeout 3 nb_get_retry 3delay_before_retry 3}}real_server 192.168.10.40 80 {weight 1TCP_CHECK {connect_port 80connect_timeout 3nb_get_retry 3delay_before_retry 3}} } EOFsystemctl start keepalived && systemctl enable keepalived ip a show dev ens33總結(jié)
以上是生活随笔為你收集整理的LVS和Keeplive的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: cad刷新快捷键_100个快捷键50个C
- 下一篇: [Leedcode][JAVA][第57