部署LVS-DR(LVS+Keepalived)群集
文章目錄
- 部署LVS—DR群集
- LVS DR模式的流程大概如下:
- LVS-DR數(shù)據(jù)包流向分析
- LVS-DR中的ARP問題
- Keepalived簡介及原理
- Keepalived簡介
- 服務應用場景
- Keepalived實現(xiàn)原理剖析
- 實驗:構建負載均衡(DR)+高可用群集
- 配置Keepalived master服務器
- **實驗步驟**:
- 配置web節(jié)點服務器的虛擬網(wǎng)卡
- 在LVS調度服務器上配置Keepalived
- 在win10客戶機上打開命令提示符,測試VIP連通性
部署LVS—DR群集
LVS DR模式的流程大概如下:
1:cirector Server作為群集的訪問入口,但不作為網(wǎng)關使用,
2:戶端發(fā)送請求至VIP,也就是訪問服務,請求報文源地址是CIP,目標地址為VIP;
3:服務端經(jīng)過調度算法,衡策略選擇某臺后端RS,并將目標MAC地址修改RIP的MAC地址
4:后端節(jié)點處理請求,將響應直接發(fā)往客戶端,此時源IP地址為VIP,目標IP為CIP
這里vip是協(xié)商出來的是客戶端唯一接口
客戶端》》》服務器vip(虛擬地址)》》服務端經(jīng)過調度算法》》后端服務器池》》》后端節(jié)點處理請求》》直接回應客戶端
LVS-DR數(shù)據(jù)包流向分析
Client向目標VIP發(fā)出請求,Director(負載均衡器)接收
IP包頭及數(shù)據(jù)幀頭信息
| … | … | … | … | 192.168.57.135 | 55014 | 192.168.57.126 | 80 | … | … |
| 00:18:82:3c:e8:96 | 00:0c:29:6a:8d:5d |
Director根據(jù)負載均衡算法選擇RealServer_1,不修改也不封裝IP報文,而是將數(shù)據(jù)幀的MAC地址改為RealServer_1的MAC地址,然后在局域網(wǎng)上發(fā)送(ip不變,變的是MAC)
| … | … | … | … | 192.168.57.135 | 55014 | 192.168.57.126 | 80 | … | … |
| 00:0c:29:6a:8d:5d | 00:0c:29:b1:97:82 |
RealServer_1收到這個幀,解封裝后發(fā)現(xiàn)目標IP與本機匹配(RealServer事先綁定了VIP),于是處理這個報文,隨后重新封裝報文,發(fā)送到局域網(wǎng)
- IP包頭及數(shù)據(jù)幀頭信息
| … | … | … | … | 192.168.57.126 | 80 | 192.168.57.135 | 55014 | … | … |
| 00:0c:29:b1:97:82 | 00:18:82:3c:e8:96 |
LVS-DR中的ARP問題
1:在LVS-DR負載均衡集群中
- 負載均衡與節(jié)點服務器都要配置相同的VIP地址
LVS-DR中ARP問題
- 在局域網(wǎng)中具有相同的IP地址,勢必會造成各服務器ARP通信的紊亂
- 對節(jié)點服務器進行處理,使其不響應針對VIP的ARP請求
- RealServer返回報文(源IP是VIP)經(jīng)路由器轉發(fā),重新封裝報文時,需要先獲取路由器的MAC地址
- 發(fā)送ARP請求時,Linux默認使用IP包的源IP地址(即VIP)作為ARP請求包中的源IP地址,而不使用發(fā)送接口的IP地址(如:ens33接口)
| 源MAC | RealServer的MAC |
| 目的IP | 路由器的IP |
| 目的MAC | ? |
- 路由器收到ARP請求后,將更新ARP表項
- 原有的VIP對應Director的MAC地址會被更新為VIP對應RealServer的MAC地址
| VIP | Director的MAC |
| VIP | RealServer的MAC |
-
問題:路由器根據(jù)ARP表項,會將新來的請求報文轉發(fā)給RealServer,導致Director的VIP失效
-
解決方法:對節(jié)點服務器進行處理,設置內核參數(shù)arp_announce=2:系統(tǒng)不使用IP包的源地址來
設置ARP請求的源地址,而選擇發(fā)送接口的IP地址
節(jié)點服務配置抑制ARP請求
修改letclsysctl.conf文件net.ipv4.conf.lo.arp_ignore = 1 過濾本地arp
net.ipv4.conf.lo.arp_announce = 2
net.ipv4.conf.all.arp_ignore = 1
net.ipv4.conf.all.arp_announce = 2
Keepalived簡介及原理
Keepalived簡介
- 企業(yè)應用中,單臺服務器承載應用存在單點故障的危險
- 單點故障一旦發(fā)生,企業(yè)服務將發(fā)生中斷,造成極大的危害
- Keepalived是專為LVS和HA設計的一款健康檢查工具
服務應用場景
企業(yè)應用中,單臺服務器承載應用存在單點故障的危險
單點故障一旦發(fā)生,企業(yè)服務將發(fā)生中斷,造成極大的危害,
Keepalived是專為LVS和HA設計的一款健康檢查工具
Keepalived實現(xiàn)原理剖析
- Keepalived采用VRRP熱備份協(xié)議,實現(xiàn)Linux服務器的多機熱備功能
- VRRP(虛擬路由冗余協(xié)議)是針對路由器的一種備份解決方案
實驗:構建負載均衡(DR)+高可用群集
實驗軟件環(huán)境:VMware Workstation 15.5、Xshell 6、Centos7.6
| LVS+Keepalived(1) | 192.168.100.128/192.168.100.10(VIP) | LVS-DR(主) |
| LVS+Keepalived(2) | 192.168.100.129/192.168.100.10(VIP) | LVS-DR(備) |
| Web節(jié)點1 | 192.168.100.201 | 提供web頁面 |
| Web節(jié)點2 | 192.168.100.202 | 提供web頁面 |
| 客戶端(Win10) | 192.168.100.66 | 測試訪問 |
配置Keepalived master服務器
Keepalived配置目錄位于letc/keepalivedl/
keepalived.conf是主配置文件一
- global_defs {…}區(qū)段指定全局參數(shù)
- vrrp_instance 實例名稱{…}區(qū)段指定VRRP熱備參數(shù)
- 注釋文字以"!"”符號開頭
- 目錄samples,提供了許多配置樣例作為參考
實驗步驟:
實驗前準備,在兩臺LV上安裝keepalived和ipvsadm工具;在兩臺Web服務器上安裝http服務
yum -y install keepalived ipvsadm yum -y install httpd將以上工具下載安裝完成后,將所有服務器節(jié)點及客戶機網(wǎng)卡均設置為僅主機模式
3、分別在兩臺VLS調度器上進行如下配置
節(jié)點服務配置抑制ARP請求
分別在兩臺VLS調度器上配置網(wǎng)卡及VIP
[root@localhost ~]# cd /etc/sysconfig/network-scripts/ [root@localhost network-scripts]# cp -p ifcfg-ens33 ifcfg-ens33:0[root@localhost network-scripts]# vim ifcfg-ens33:0 DEVICE=ens33:0 ONBOOT=yes IPADDR=192.168.100.10 NETMASK=255.255.225.0[root@localhost network-scripts]# vim ifcfg-ens33 下面簡寫 192.168.100.129 GATEWAY=192.168.100.1配置DR模式啟動腳本
[root@localhost network-scripts]# cd /etc/init.d/[root@localhost init.d]# vim dr.sh 直接復制下面 #!/bin/bash GW=192.168.100.1 VIP=192.168.100.10 RIP1=192.168.100.201 RIP2=192.168.100.202 case "$1" in start)/sbin/ipvsadm --save > /etc/sysconfig/ipvsadm#先保存systemctl start ipvsadm#先開啟服務/sbin/ifconfig ens33:0 $VIP broadcast $VIP netmask 255.255.255.255 $VIP up#開啟ens33:0網(wǎng)卡,ip地址,廣播地址,子網(wǎng)掩碼/sbin/route add -host $VIP dev ens33:0#添加路由網(wǎng)段信息/sbin/ipvsadm -A -t $VIP:80 -s rr#添加LVS設置,訪問80端口,使用輪詢算法/sbin/ipvsadm -a -t $VIP:80 -r $RIP1:80 -g#-g 代表使用DR,上一次使用的是-m ,代表使用nat(此處為個人理解)/sbin/ipvsadm -a -t $VIP:80 -r $RIP2:80 -gecho "ipvsadm starting ____________________[ok]";; stop)/sbin/ipvsadm -C#清除緩存systemctl stop ipvsadm#關閉LVSifconfig ens33:0 down#關掉虛擬IProute del $VIP#刪掉路由條目echo "ipvsadm stoped _______________________[ok]";; status)if [ ! -e /var/lock/subsys/ipvsadm ];then#如果文件不存在,則echo "ipvsadm stoped _______________________"exit 1elseecho "ipvsadm Runing____________________[ok]"fi;; *)echo "Usage: $0 {start|stop|status}"exit 1 esac exit 0[root@localhost init.d]# chmod +x dr.sh [root@localhost init.d]# service network restart [root@localhost init.d]# service dr.sh start ipvsadm starting ____________________[ok]另一臺LVS-DR的操作步驟同上,不需要更改任何內容,ens33網(wǎng)卡信息改為192.168.100.128
配置web節(jié)點服務器的虛擬網(wǎng)卡
安裝apache服務
[root@localhost init.d]# yum -y install httpd配置兩臺Web節(jié)點服務器
cd /etc/sysconfig/network-scripts/ cp -p ifcfg-lo ifcfg-lo:0 ## 復制配置文件作為VIP的配置 vim ifcfg-lo:0 添加如下內容: DEVICE=lo:0 IPADDR=192.168.100.10 NETMASK=255.255.255.0 ONBOOT=yes配置本地網(wǎng)卡信息
[root@localhost network-scripts]# vim ifcfg-ens33 IPADDR=192.168.100.201 GATEWAY=192.168.100.1分別在兩臺Web節(jié)點服務器上創(chuàng)建配置服務管理腳本
cd /etc/init.d/ [root@localhost init.d]# vim web.sh #!/bin/bash VIP=192.168.100.10 case "$1" in start)ifconfig lo:0 $VIP netmask 255.255.255.255 broadcast $VIP/sbin/route add -host $VIP dev lo:0echo "1" > /proc/sys/net/ipv4/conf/lo/arp_ignoreecho "2" > /proc/sys/net/ipv4/conf/lo/arp_announceecho "1" > /proc/sys/net/ipv4/conf/all/arp_ignoreecho "2" > /proc/sys/net/ipv4/conf/all/arp_announcesysctl -p > /dev/null 2>&1echo "RealServer Start OK";; stop)ifconfig lo:0 downroute del $VIP /dev/null 2>&1echo "0" > /proc/sys/net/ipv4/conf/lo/arp_ignoreecho "0" > /proc/sys/net/ipv4/conf/lo/arp_announceecho "0" > /proc/sys/net/ipv4/conf/all/arp_ignoreecho "0" > /proc/sys/net/ipv4/conf/all/arp_announceecho "RealServer Stoped";; *)echo "Usage: $0 {start|stop}"exit 1 esac exit 0啟動腳本
[root@localhost init.d]# chmod +x web.sh [root@localhost init.d]# service web.sh start [root@localhost init.d]# service network restart [root@localhost html]# systemctl restart httpd配置網(wǎng)頁
[root@localhost ~]# cd /var/www/html/ [root@localhost ~]# vi index.html <h1>this is benet web </h1>另一臺web的操作步驟同上,不需要更改任何內容,ens33網(wǎng)卡信息改為192.168.100.202
配置網(wǎng)頁
[root@localhost ~]# cd /var/www/html/ [root@localhost ~]# vi index.html <h1>this is benet web </h1>驗證一下apache服務
在LVS調度服務器上配置Keepalived
vim cd /etc/keepalived/keepalived.conf ## 編輯keepalived配置文件修改全局10 smtp_server 127.0.0.112 router_id LVS_0121 interface ens3330 192.168.100.10 刪除下2行34 virtual_server 192.168.100.10 80 { 虛擬服務器37 lb_kind DR LVS模式41 real_server 192.168.100.201 80 {從43行刪除9行41 real_server 192.168.100.201 80 { 在下面添加42 weight 143 TCP_CHECK { #健康狀態(tài)檢查44 connect_port 80復制到下面到49行下面real_server 192.168.100.202 80 {weight 1TCP_CHECK { connect_port 80connect_timeout 3nb_get_retry 3delay_before_retry 3}}}刪除60行下面所有在LVS-DR(1)上配置完成后,直接使用scp命令上傳到LVS-DR(2)上即可:
[root@localhost keepalived]# scp /etc/keepalived/keepalived.conf root@192.168.100.129:/etc/keepalived/在LVS+Keepalived(2)上繼續(xù)進行調整
root@localhost ~]# vim /etc/keepalived/keepalived.conf 12 router_id LVS_02 ## 主為01,備就是02,不一樣即可 20 state BACKUP ## 角色身份不能一樣,要改為BACKUP 32 priority 90 ## 優(yōu)先級要改為90在兩臺LVS上分別啟動Keepalived服務
systemctl start keepalived在win10客戶機上打開命令提示符,測試VIP連通性
刷新一下
總結
以上是生活随笔為你收集整理的部署LVS-DR(LVS+Keepalived)群集的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 傲腾内存在京东上线,性能更强,质量更可靠
- 下一篇: 内存水冷,选对套件才能提升性能