部署LVS+Keepalived 高可用群集(DR模式)
- 一、Keepalived的概述
- 1、LVS
- 2、Keepalived的介紹
- 3、Keepalived實作原理剖析
- 二、LVS+Keepalived 高可用群集部署
- 1、部署NFS共享服務器(NFS服務器:192.168.28.20)
- 2、配置節點服務器
- (1)配置虛擬 IP 地址(VIP:192.168.28.100)
- (2)調整內核的ARP 回應引數
- (3)編輯網頁主頁
- Web節點服務器1:192.168.28.30
- Web節點服務器2:192.168.28.40
- 3、配置負載調度器
- (1)關防火墻,加載ip_vs模塊
- (2)調整 proc 回應引數
- (3)配置負載分配策略
- 主負載調度器:192.168.28.10
- 備負載調度器:192.168.28.50
- (4)配置keeplived
- 4、客戶機訪問
- 訪問192.168.28.100,隔一段時間進行重繪,輪詢顯示
- 將主調度服務器keepalived服務關閉,再次驗證
一、Keepalived的概述
1、LVS
Linux虛擬服務器(Linux Virtual Server)
LVS 實際上相當于基于IP地址的虛擬化應用, 為基于IP地址和內容請求分發的負載均衡提出了一種高效的解決方法
2、Keepalived的介紹
●支持故障自動切換(Failover)
●支持節點健康狀態檢查(Health Checking)
判斷LVS負載調度器、節點服務器的可用性,當master主機出現故障及時切換到backup節點保證業務正常,當 master 故障主機恢復后將其重新加入群集并且業務重新切換回 master 節點,
官方網站:添加鏈接描述
3、Keepalived實作原理剖析
●keepalived采用VRRP熱備份協議實作Linux 服務器的多機熱備功能
●VRRP(虛擬路由冗余協議)是針對路由器的一種備份解決方案,
●由多臺路由器組成一個熱備份組,通過共用的虛擬IP地址對外提供服務
●每個熱備組內同時只有一臺主路由器提供服務,其他路由器處于冗余狀態
●若當前在線的路由器失效,則其他路由器會根據設定的優先級自動接替虛擬IP地址,繼續提供服務

●雙機熱備份的故障切換時由虛擬IP地址的漂移來實作,適用于各種應用服務器
●可以實作基于Web服務器的雙機熱備份(如上圖)
●漂移地址:192.168.10.72
●主、備服務器:192.168.10.73、192.168.10.74
●提供的應用服務:web
二、LVS+Keepalived 高可用群集部署
| 主機 | 作業系統 | IP地址 | 軟體/安裝包/工具 |
|---|---|---|---|
| 主負載調度器(Director1) | CentOS7 | ens33:192.168.28.10 | ipvsadm、keepalived |
| 備負載調度器(Director2) | CentOS7 | ens33:192.168.28.50 | ipvsadm、keepalived |
| Web節點服務器1 | CentOS7 | ens33:192.168.28.30 lo:0 (VIP):192.168.28.100 | rpcbind、nfs-utils、httpd |
| Web節點服務器2 | CentOS7 | ens33:192.168.28.40 lo:0 (VIP):192.168.28.100 | rpcbind、nfs-utils、httpd |
| NFS服務器 | CentOS7 | 192.168.28.20 | rpcbind、nfs-utils |
| 客戶機 | Windows10 | 192.168.28.15 |
1、部署NFS共享服務器(NFS服務器:192.168.28.20)
systemctl stop firewalld.service
systemctl disable firewalld.service
setenforce 0
yum -y install nfs-utils rpcbind
systemctl start rpcbind.service
systemctl start nfs.service
systemctl enable nfs.service
systemctl enable rpcbind.service
mkdir /opt/meng
mkdir /opt/xiang
chmod 777 /opt/test1
chmod 777 /opt/test2
vim /etc/exports
/opt/test1 192.168.28.0/24(rw,sync)
/opt/test2 192.168.28.0/24(rw,sync)
exportfs -rv
2、配置節點服務器
Web節點服務器1:ens33:192.168.28.30 lo:0 (VIP):192.168.28.100
Web節點服務器2:ens33:192.168.28.40 lo:0 (VIP):192.168.28.100
systemctl stop firewalld.service
systemctl disable firewalld.service
setenforce 0
(1)配置虛擬 IP 地址(VIP:192.168.28.100)
兩個web服務器上的操作相同
vim /etc/sysconfig/network-scripts/ifcfg-lo:0 #編輯lo口虛擬網卡
DEVICE=lo:0 #填寫網卡名
IPADDR=192.168.28.100 #IP地址
NETMASK=255.255.255.255 #子網掩碼(必須是255.255.255.255)
ONBOOT=yes #開機自動連接
ifup lo:0 #啟動lo:0網卡
ifconfig lo:0 #查看網卡設定是否生效
#設定臨時的路由,重啟失效;禁錮路由(設定路由,訪問192.168.28.100地址的發給lo口,使其發不出去)
route add -host 192.168.28.100 dev lo:0
route -n #查看路由

還可以用這種方法
#開機自動添加路由
vim /etc/rc.local
/sbin/route add -host 192.168.163.100 dev lo:0
chmod +x /etc/rc.d/rc.local
(2)調整內核的ARP 回應引數
阻止更新 VIP 的MAC 地址,避免發生沖突
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
yum install -y nfs-utils rpcbind httpd
systemctl start rpcbind
systemctl enable rpcbind
systemctl start httpd.service
systemctl enable httpd.service

(3)編輯網頁主頁
Web節點服務器1:192.168.28.30
showmount -e 192.168.28.20
mount.nfs 192.168.28.20:/opt/meng /var/www/html
echo 'this is meng web!' > /var/www/html/index.html
Web節點服務器2:192.168.28.40
showmount -e 192.168.28.20
mount.nfs 192.168.28.20:/opt/meng /var/www/html
echo 'this is xiang web!' > /var/www/html/index.html
3、配置負載調度器
主負載調度器:192.168.28.10
備負載調度器:192.168.28.50
下面是兩個調度器一樣的配置
(1)關防火墻,加載ip_vs模塊
systemctl stop firewalld.service
systemctl disable firewalld.service
setenforce 0
modprobe ip_vs
cat /proc/net/ip_vs
yum -y install ipvsadm
(2)調整 proc 回應引數
vim /etc/sysctl.conf
net.ipv4.ip_forward = 1
net.ipv4.conf.all.send_redirects = 0
net.ipv4.conf.default.send_redirects = 0
net.ipv4.conf.ens33.send_redirects = 0
sysctl -p

(3)配置負載分配策略
主負載調度器:192.168.28.10
ipvsadm-save > /etc/sysconfig/ipvsadm
systemctl start ipvsadm.service
ipvsadm -C
#這里-t指定的虛擬地址為本機ens33網卡ip
ipvsadm -A -t 192.168.28.10:80 -s rr
ipvsadm -a -t 192.168.28.10:80 -r 192.168.28.30:80 -g
ipvsadm -a -t 192.168.28.10:80 -r 192.168.28.40:80 -g
ipvsadm
ipvsadm -ln

備負載調度器:192.168.28.50
這里需要修改策略里-t指定的地址即可,
ipvsadm-save > /etc/sysconfig/ipvsadm
systemctl start ipvsadm.service
ipvsadm -C
ipvsadm -A -t 192.168.28.50:80 -s rr
ipvsadm -a -t 192.168.28.50:80 -r 192.168.28.30:80 -g
ipvsadm -a -t 192.168.28.50:80 -r 192.168.28.40:80 -g
ipvsadm -ln

(4)配置keeplived
主負載調度器:192.168.28.10
備負載調度器:192.168.28.50
yum -y install keepalived
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
#14行修改;加注釋;vrrp_strict:嚴格遵守VRRP協議,下列情況將會阻止啟動Keepalived:1. 沒有VIP地址,2. 單播鄰居,3. 在VRRP版本2中有IPv6地址,
#vrrp_strict
}
#定義VRRP熱備實體引數
vrrp_instance VI_1 {
#20行修改;指定熱備狀態,主為MASTER,備為BACKUP
state MASTER
#21行修改;指定承載vip地址的物理介面
interface ens33
#22行修改;指定虛擬路由器的ID號,每個熱備組保持一致
virtual_router_id 10
#23行修改;指定優先級,數值越大優先級越高,主為100,備為90
priority 100
#通告間隔秒數(心跳頻率)
advert_int 1
#定義認證資訊,每個熱備組保持一致
authentication {
#認證型別
auth_type PASS
#27行修改,指定驗證密碼,主備服務器保持一致
auth_pass 123456
}
#指定群集vip地址
virtual_ipaddress {
192.168.28.100
}
}
#34行修改,指定虛擬服務器地址(VIP)、埠,定義虛擬服務器和Web服務器池引數
virtual_server 192.168.28.100 80 {
#健康檢查的間隔時間(秒)
delay_loop 6
#指定調度演算法,輪詢(rr)
lb_algo rr
#37行修改,指定群集作業模式,直接路由(DR)
lb_kind DR
#連接保持時間(秒)
persistence_timeout 50
#應用服務采用的是TCP協議
protocol TCP
#41行修改,指定第一個Web節點的地址、埠
real_server 192.168.28.30 80 {
#節點的權重
weight 1
#43行洗掉,添加以下健康檢查方式
TCP_CHECK {
#添加檢查的目標埠
connect_port 80
#添加連接超時(秒)
connect_timeout 3
#添加重試次數
nb_get_retry 3
#添加重試間隔
delay_before_retry 4
}
}
#添加第二個 Web節點的地址、埠
real_server 192.168.28.40 80 {
weight 1
TCP_CHECK {
connect_port 80
connect_timeout 3
nb_get_retry 3
delay_before_retry 4
}
}
}
#洗掉后面多余的配置

修改好主負載服務器上的組態檔后,主備之間配置就三點不一樣,這時候就可以遠程復制,會方便很多,(在主負載服務器上操作)
scp keepalived.conf root@192.168.28.50:/etc/keepalived/
在主備負載服務器都配置完成后,先重啟keepalived服務,再查看虛擬網卡vip
systemctl start keepalived
#查看虛擬網卡vip
ip addr show dev ens33
4、客戶機訪問
訪問192.168.28.100,隔一段時間進行重繪,輪詢顯示
注意:這里重繪輪詢會很慢,可能需要等待幾分鐘

將主調度服務器keepalived服務關閉,再次驗證
systemctl stop keepalived
ip addr show dev ens33


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