LVS+Keepalived:實現高效軟負載均衡的利器
一、概念
LVS是Linux Virtual Server的簡寫,意即Linux虛擬服務器,是一個虛擬的服務器集群系統,它可以通過不同的調度算法和工作模式,將客戶端的請求轉發給后端的真實服務器。
Keepalived是一個基于VRRP協議來實現的服務高可用方案,可以利用其來避免IP單點故障,一般與其他負載均衡技術(如LVS、HAProxy、Nginx)一起工作來達到集群的高可用。
二、環境準備
兩臺 CentOS 7 機器,IP 地址分別為 10.9.2.121和 10.9.2.122。
vip | 10.9.2.120 | 虛擬出來的IP |
master | 10.9.2.121 | master主機IP |
backup | 10.9.2.122 | backup主機IP |
三、安裝
1、安裝 ipvsadm keepalived
在兩臺機器上,執行以下命令,安裝 ipvsadm keepalived 軟件包:
yum install -y ipvsadm keepalived
2、配置keepalived
在master機器上,執行以下命令,配置 Keepalived:
vim /etc/keepalived/keepalived.conf
添加以下內容:
global_defs {
router_id 1
}
vrrp_instance VI_1 {
state MASTER
interface enp0s3
virtual_router_id 1
mcast_src_ip 10.9.2.121
priority 100
advert_int 1
authentication {
auth_type PASS
auth_pass 123456
}
virtual_ipaddress {
10.9.2.120
}
}
在 backup機器上,執行以下命令,配置 Keepalived:
vim /etc/keepalived/keepalived.conf
添加以下內容:
global_defs {
router_id 2
}
vrrp_instance VI_1 {
state BACKUP
interface enp0s3
virtual_router_id 1
mcast_src_ip 10.9.2.122
priority 90
advert_int 1
authentication {
auth_type PASS
auth_pass 123456
}
virtual_ipaddress {
10.9.2.120
}
}
保存并退出。
參數說明:
global_defs {
router_id 1 # 定義 VRRP 組的 ID,主備服務器必須相同
}
authentication { # 定義 VRRP 認證類型和密碼,主備服務器必須相同
auth_type PASS
auth_pass 123456
}
vrrp_instance VI_1 {
state MASTER # 指定該節點的狀態,主節點為 MASTER,備節點為 BACKUP
interface eth0 # 指定VRRP使用的網卡,換成master機器的網卡名稱
virtual_router_id 1
mcast_src_ip 10.9.2.121 # 指定 VRRP 使用的組播源 IP 地址
priority 100 # 指定 VRRP 優先級,優先級越高,該節點成為主節點的概率越大
advert_int 1 # 指定 VRRP 通告間隔,單位為秒
virtual_ipaddress { # 指定 VRRP 虛擬 IP 地址
10.9.2.120
}
}
3、啟動
在兩臺機器上,執行以下命令,啟動 LVS 和 Keepalived:
systemctl start keepalived
systemctl start ipvsadm
如果systemctl start ipvsadm異常Active: failed (Result: exit-code) since Fri 2023-09-01 14:31:28 CST; 5min agoProcess: 3618 ExecStart=/bin/bash -c exec /sbin/ipvsadm-restore < /etc/sysconfig/ipvsadm (code=exited, status=1/FAILURE)。
systemctl status ipvsadm.service
journalctl -xe
可以看到/bin/bash: /etc/sysconfig/ipvsadm: No such file or directory。
ipvsadm --save > /etc/sysconfig/ipvsadm
systemctl start ipvsadm
systemctl status ipvsadm.service
4、測試
看看是否能ping通。
ping 10.9.2.120
再在master和backup機器上都安裝一個nginx或apache httpd。
#master
yum install -y httpd
echo "Master" > /var/www/html/index.html
systemctl start httpd
#backup
yum install -y httpd
echo "Backup" > /var/www/html/index.html
systemctl start httpd
在瀏覽器訪問:http://10.9.2.120。
master優先級高,10.9.2.120顯示的是master。
再來模擬一下故障轉移測試。
在 10.9.2.121 機器上,執行以下命令,停掉 LVS:
systemctl stop keepalived
如果 LVS 配置正確,Keepalived 會自動將 VIP 切換到 10.9.2.122。
再在瀏覽器訪問:http://10.9.2.120。
注意事項
- LVS 和 Keepalived 的配置文件中,virtual_ipaddress 配置的 IP 地址必須是同一網段的。
- LVS 和 Keepalived 的配置文件中,priority 配置的值越高,該節點的優先級越高。
- Keepalived 的配置文件中,advert_int 配置的值越小,該節點發送 VRRP 報文的頻率越高
四、相關知識點
1、集群負載均衡網絡方案
實現集群負載均衡網絡的方案可以分為軟件、硬件、云等方面:
軟件負載均衡
軟件負載均衡是指在現有服務器上安裝負載均衡軟件來實現負載均衡,其優點是成本低廉、配置簡單、靈活性強,適用于中小型集群。常見的軟件負載均衡方案包括:
- DNS輪詢:將所有后端服務器的IP地址添加到DNS服務器,并按照輪詢的方式返回給客戶端,客戶端根據返回的IP地址進行訪問。
- Keepalive+LVS:在Linux操作系統上使用Keepalive機制和LVS功能來實現負載均衡。Keepalive機制用于檢測后端服務器的狀態,ipvs功能用于將客戶端請求轉發到后端服務器。
- Keepalive+Nginx+Lua:Nginx是一個高性能的Web服務器,Lua是一個腳本語言。Nginx+Lua負載均衡方案是將Nginx作為負載均衡器,使用Lua腳本來實現負載均衡策略。
硬件負載均衡
硬件負載均衡是指使用專門的負載均衡設備來實現負載均衡,其優點是性能高、功能豐富、可靠性強,適用于大型集群。常見的硬件負載均衡方案包括:
- F5 Big-IP:F5 Big-IP是F5 Networks公司推出的一款高性能負載均衡設備。
- A10 Thunder:A10 Thunder是A10 Networks公司推出的一款高性能負載均衡設備。
- Juniper SRX:Juniper SRX是Juniper Networks公司推出的一款高性能路由器,具有負載均衡功能。
云負載均衡
云負載均衡是指在云平臺上使用負載均衡服務來實現負載均衡,其優點是部署簡單、彈性伸縮、按需付費,適用于各種規模的集群。常見的云負載均衡方案包括:
- 阿里云負載均衡:阿里云負載均衡提供多種類型的負載均衡服務,包括傳統的四層負載均衡和七層負載均衡。
- 騰訊云負載均衡:騰訊云負載均衡提供多種類型的負載均衡服務,包括傳統的四層負載均衡和七層負載均衡。
- AWS負載均衡:AWS負載均衡提供多種類型的負載均衡服務,包括傳統的四層負載均衡和七層負載均衡。
2、LVS+Keepalived
LVS
LVS(Linux Virtual Server)是 Linux 內核中的軟件負載均衡器,可以將流量分發到多個服務器。LVS 可以分為兩種模式:
- NAT 模式:LVS 將客戶端的請求轉換為新的 IP 地址和端口,然后將請求轉發到后端服務器。
- DR 模式:LVS 將客戶端的請求直接轉發到后端服務器。
LVS 是基于四層的負載均衡器,可以將流量分發到多個服務器。LVS 的核心是 LVS 轉發器,LVS 轉發器負責將客戶端的請求轉發到后端服務器。LVS 轉發器可以運行在 Linux 內核中,也可以運行在用戶空間。
LVS 的優點
- 高可用性:LVS 可以實現主備切換,確保服務的持續可用性。
- 靈活性:LVS 支持多種負載均衡算法,可以滿足不同場景的需求。
- 性能:LVS 基于 Linux 內核,具有良好的性能。
Keepalived
Keepalived 是一個基于 VRRP 協議的軟件,用于監控 LVS 的健康狀況。VRRP 協議是一種虛擬路由冗余協議,用于在多個路由器之間實現主備切換。
Keepalived 的主要功能是監控 LVS 主節點的狀態,如果主節點出現故障,Keepalived 會自動將 LVS 的 VIP 切換到備節點。
Keepalived 的優點
- 高可用性:Keepalived 可以實現 LVS 的主備切換,確保服務的持續可用性。
- 靈活性:Keepalived 支持多種 VRRP 配置,可以滿足不同場景的需求。
- 性能:Keepalived 基于 Linux 內核,具有良好的性能。