LVS+Keepalived高可用群集

chw_throx發表於2022-03-09

LVS+Keepalived高可用群集

一、LVS+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地址,繼續提供服務

二、實驗

1、配置負載排程器

systemctl stop firewalld.service

setenforce 0


yum -y install ipvsadm keepalived

modprobe ip_vs

cat /proc/net/ip_vs


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    ###載入/etc/sysctl.conf配置引數


ipvsadm-save > /etc/sysconfig/ipvsadm     ###儲存負載分配策略

systemctl start ipvsadm   ##開啟服務,開啟前需儲存


ipvsadm -C     ###清空分配策略

ipvsadm -A -t 192.168.184.10:80 -s rr       #這裡指定的虛擬IP為ens33網路卡ip,重啟keepliaved後會自動繫結虛擬網路卡

ipvsadm -a -t 192.168.184.10:80 -r 192.168.184.40:80 -g

ipvsadm -a -t 192.168.184.10:80 -r 192.168.184.50:80 -g

ipvsadm    ###啟用策略


ipvsadm -ln    ###檢視節點狀態

1.

2.

3.

4.

5.

6.

7.

8.

9.

10.

11.

12.

13.

14.

15.

16.

17.

18.

19.

20.

21.

22.

23.

24.

25.






2、部署NFS共享伺服器

systemctl stop firewalld.service

systemctl disable firewalld.service

setenforce 0


yum -y install nfs-utils rpcbind    ##安裝nfs兩安裝包


systemctl start rpcbind.service

systemctl start nfs.service


systemctl enable nfs.service

systemctl enable rpcbind.service


mkdir /opt/lic

mkdir /opt/kiki


chmod 777 /opt/lic 

chmod 777 /opt/kiki


vim /etc/exports    ##寫入共享策略

/opt/lic 192.168.184.0/24(rw,sync)

/opt/kiki 192.168.184.0/24(rw,sync)     ###其許可權可讀寫, 資訊同步


exportfs -rv    ###釋出共享


1.

2.

3.

4.

5.

6.

7.

8.

9.

10.

11.

12.

13.

14.

15.

16.

17.

18.

19.

20.

21.

22.

23.

24.





3、配置節點伺服器 (兩臺)

systemctl stop firewalld

setenforce 0


yum -y install httpd

systemctl start httpd


vim /etc/sysconfig/network-scripts/ifcfg-lo:0   ###編輯環回口的虛擬網路卡

DEVICE=lo:0   

>

IPADDR=192.168.184.188

NETMASK=255.255.255.255


service network restart 或 systemctl restart network

ifup lo:0

ifconfig 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   ## 載入核心配置檔案引數

1.

2.

3.

4.

5.

6.

7.

8.

9.

10.

11.

12.

13.

14.

15.

16.

17.

18.

19.

20.

21.

22.

23.

24.




web 1 和 2一樣


showmount -e 192.168.184.30

mount.nfs 192.168.184.30:/opt/lic /var/www/html

echo 'this is lic web!' > /var/www/html/index.html

1.

2.

3.

mount.nfs 192.168.184.30:/opt/kiki /var/www/html

echo 'this is kiki web!' > /var/www/html/index.html

1.

2.

4、配置keepalived(主備DR伺服器都要設)

cd /etc/keepalived/   ##將keepalived配置檔案進行備份

cp keepalived.conf keepalived.conf.bak

vim keepalived.conf

......

global_defs { #定義全域性引數

1.

2.

3.

4.

5.

smtp_server 127.0.0.1      ##10行修改郵件服務指向本地

router_id LVS_01       ##12行,指定伺服器名稱,主備不同,備為LVS_02


#vrrp_strict #加註釋

}

vrrp_instance VI_1 { #定義VRRP熱備例項引數          ###14行,vrrp_strict:嚴格遵守VRRP協議


state MASTER    ##20行,指定熱備狀態,主為MASTER,備為BACKUP


interface ens33    ##21行,指定承載vip地址的物理介面


virtual_router_id 10    ##22行,指定虛擬路由器的ID號,每個熱備組保持一致



##23行,指定優先順序,主為100 ,備為99

priority 100

advert_int 1 #通告間隔秒數(心跳頻率)

authentication { #定義認證資訊,每個熱備組保持一致

auth_type PASS     #認證型別



##27行,指定驗證碼,主備一致

auth_pass 123123

}


virtual_ipaddress { #指定群集vip地址

192.168.184.188

}

}




##34行,指定虛擬伺服器地址(VIP),埠,定義虛擬伺服器和web伺服器池引數

virtual_server 192.168.184.188 80 {

delay_loop 6 #健康檢查的間隔時間(秒)

lb_algo rr #指定排程演算法,輪詢(rr)



##37行,指定群集工作模式,DR模式

lb_kind DR

persistence_timeout 50 #連線保持時間(秒)

protocol TCP #應用服務採用的是 TCP協議



##41行,指定第一個web節點地址,埠

real_server 192.168.184.40 80 {

weight 1 #節點的權重



##43行,新增一下健康檢查方式

    TCP_CHECK {

connect_port 80 #新增檢查的目標埠

connect_timeout 3 #新增連線超時(秒)

nb_get_retry 3 #新增重試次數

delay_before_retry 4 #新增重試間隔

}

}


real_server 192.168.184.50 80 { #新增第二個 Web節點的地址、埠

    weight 1

    TCP_CHECK {

connect_port 80

connect_timeout 3

nb_get_retry 3

delay_before_retry 4

}


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/22198239/viewspace-2868431/,如需轉載,請註明出處,否則將追究法律責任。

相關文章