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