集群(二)——LVS-DR-Keepalived
生活随笔
收集整理的這篇文章主要介紹了
集群(二)——LVS-DR-Keepalived
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
集群(二)——LVS-DR-Keepalived
- 一、LVS-DR數(shù)據(jù)包流量分析(同一局域網(wǎng))
- 二、LVS-DR中的ARP問題
- 三、解決ARP的兩個(gè)問題的設(shè)置方法
- 四、LVS-DR處理問題后的流量分析
- 五、LVS-DR 特性
- 六、Keepalived
- 1、Keepalived
- 2、Keepalived實(shí)現(xiàn)原理剖析
- 七 、案例:LVS-DR-Keepalived部署
- 1、環(huán)境準(zhǔn)備
- 2、LVS調(diào)度服務(wù)器配置(主-備)
- 3、web站點(diǎn)服務(wù)器配置
- ①、配置虛擬IP地址
- ②、調(diào)整內(nèi)核的ARP響應(yīng)參數(shù)以阻止更新VIP的MAC地址,避免沖突
- 4、部署keepalived(主-備)
- 5、使用客戶機(jī)訪問
一、LVS-DR數(shù)據(jù)包流量分析(同一局域網(wǎng))
二、LVS-DR中的ARP問題
- 1、在LVS-DR負(fù)載均衡集樣中,負(fù)載均衡與節(jié)點(diǎn)服務(wù)器都要配置相同的VIP地址。
- 2、在局域網(wǎng)中具有相同的IP地址,勢(shì)必會(huì)造成各服務(wù)器ARP通信的紊亂。
當(dāng)ARP廣播發(fā)送到LVS-DR集群時(shí),因?yàn)樨?fù)載均衡器和節(jié)點(diǎn)服務(wù)器都是連接到相同網(wǎng)絡(luò)上,它們都會(huì)接收到ARP廣播。只有前端的負(fù)載均衡器進(jìn)行響應(yīng),其他節(jié)點(diǎn)服務(wù)器不應(yīng)該響應(yīng)ARP廣播。 - 3、對(duì)節(jié)點(diǎn)服務(wù)器進(jìn)行處理,使其不響應(yīng)針對(duì)VIP的ARP請(qǐng)求。
使用虛接口 lo:0 承載VIP地址設(shè)置內(nèi)核參數(shù) arp_ignore=1:系統(tǒng)只響應(yīng)目的IP為本地 IP 的ARP請(qǐng)求 - 4、RealServer返回報(bào)文(源IP是VIP)經(jīng)路由器轉(zhuǎn)發(fā),重新封裝報(bào)文時(shí),需要先獲取路由器的MAC地址。
- 5、發(fā)送ARP請(qǐng)求時(shí),Linux默認(rèn)使用IP包的源IP地址(即VIP)作為ARP請(qǐng)求包中的源IP地址,而不使用發(fā)送接口的IP地址如:ens33
- 6、路由器收到ARP請(qǐng)求后,將更新ARP表項(xiàng)
- 7、原有的VIP對(duì)應(yīng)Director的MAC地址會(huì)被更新為VIP對(duì)應(yīng)RealServer的MAC地址
- 8、路由器根據(jù)ARP表項(xiàng),會(huì)將新來的請(qǐng)求報(bào)文轉(zhuǎn)發(fā)給Realserver,導(dǎo)致Director的VIP失效
- 解決方法:對(duì)節(jié)點(diǎn)服務(wù)器進(jìn)行處理,設(shè)置內(nèi)核參數(shù) arp_announce=2:系統(tǒng)不使用IP包的源地址來設(shè)置ARP請(qǐng)求的源地址,而選擇發(fā)送接口的IP地址。
三、解決ARP的兩個(gè)問題的設(shè)置方法
修改 /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四、LVS-DR處理問題后的流量分析
- 客戶端發(fā)送請(qǐng)求到Director server (負(fù)載均衡器),請(qǐng)求的數(shù)據(jù)報(bào)文(源IP是CIP,目標(biāo)IP是VIP)到達(dá)內(nèi)核空間。
- Director Server和Real server在同一個(gè)網(wǎng)絡(luò)中,數(shù)據(jù)通過二層數(shù)據(jù)鏈路層來傳輸。
- 內(nèi)核空間判斷數(shù)據(jù)包的目標(biāo)I是本機(jī)VIP,此時(shí)IPVS (IP虛擬服務(wù)器)比對(duì)數(shù)據(jù)包請(qǐng)求的服務(wù)是否是集群服務(wù),是集群服務(wù)就重新封裝數(shù)據(jù)包。修改源MAC地址為Director Server的MAC地址,修改目標(biāo)MAC地址為Real Server的MAC地址,源IP地址與目標(biāo)IP地址沒有改變,然后將數(shù)據(jù)包發(fā)送給Real Server。
- 到達(dá)Real server的請(qǐng)求報(bào)文的MAC地址是自身的MAC地址,就接收此報(bào)文。數(shù)據(jù)包重新封裝報(bào)文(源IP地址為VIP,目標(biāo)IP為CIP),將響應(yīng)報(bào)文通過 lo 接口傳送給物理網(wǎng)卡然后向外發(fā)出。
- Real Server 直接將響應(yīng)報(bào)文傳送到客戶端。
五、LVS-DR 特性
- Director Server和Real Server必須在同一-個(gè)物理網(wǎng)絡(luò)中。
- Real Server可以使用私有地址,也可以使用公網(wǎng)地址。如果使用公網(wǎng)地址,可以通過互聯(lián)網(wǎng)對(duì)RIP進(jìn)行直接訪問。
- Director Server作為群集的訪問入口,但不作為網(wǎng)關(guān)使用。
- 所有的請(qǐng)求報(bào)文經(jīng)由Director Server,但回復(fù)響應(yīng)報(bào)文不能經(jīng)過Director Server
- Real Server的網(wǎng)關(guān)不允許指向Director Server IP,即Real Server發(fā)送的數(shù)據(jù)包不允許經(jīng)過Director Server。
- Real Server上的10接口配置VIP的IP地址。
六、Keepalived
1、Keepalived
- 支持故障自動(dòng)切換(Failover)
- 支持節(jié)點(diǎn)健康狀態(tài)檢查(Health Checking)
判斷LVS負(fù)載調(diào)度器、節(jié)點(diǎn)服務(wù)器的可用性,當(dāng)master主機(jī)出現(xiàn)故障及時(shí)切換到backup節(jié)點(diǎn)保證業(yè)務(wù)正常,當(dāng) master 故障主機(jī)恢復(fù)后將其重新加入群集并且業(yè)務(wù)重新切換回 master 節(jié)點(diǎn)。
2、Keepalived實(shí)現(xiàn)原理剖析
- keepalived采用VRRP熱備份協(xié)議實(shí)現(xiàn)Linux 服務(wù)器的多機(jī)熱備功能
- VRRP(虛擬路由冗余協(xié)議)是針對(duì)路由器的一種備份解決方案。
- 由多臺(tái)路由器組成一個(gè)熱備份組,通過共用的虛擬IP地址對(duì)外提供服務(wù)
- 每個(gè)熱備組內(nèi)同時(shí)只有一臺(tái)主路由器提供服務(wù),其他路由器處于冗余狀態(tài)
- 若當(dāng)前在線的路由器失效,則其他路由器會(huì)根據(jù)設(shè)置的優(yōu)先級(jí)自動(dòng)接替虛擬IP地址,繼續(xù)提供服務(wù)
七 、案例:LVS-DR-Keepalived部署
1、環(huán)境準(zhǔn)備
| 主負(fù)載調(diào)度器(Director1) | ens33:192.168.163.10 | ipvsadm、keepalived |
| 備負(fù)載調(diào)度器(Director2) | ens33:192.168.163.20 | ipvsadm、keepalived |
| web服務(wù)器1 | 192.168.184.40 ens33:192.168.184.40 lo:0 (VIP):192.168.184.100 | rpcbind、httpd |
| web服務(wù)器2 | 192.168.184.50 ens33:192.168.184.50 lo:0 (VIP):192.168.184.100 | rpcbind、httpd |
| centos客戶端 | 192.168.184.60 | web瀏覽器 |
| centos客戶端 | 192.168.184.70 | web瀏覽器 |
2、LVS調(diào)度服務(wù)器配置(主-備)
systemctl stop firewalld.service setenforce 0yum -y install ipvsadm keepalived modprobe ip_vs #加載ip_vs模塊 cat /proc/net/ip_vs #查看ip_vs版本信息cd /etc/sysconfig/network-scripts/ cp -p ifcfg-ens33 ifcfg-ens33:0 vim ifcfg-ens33:0 DEVICE=ens33:0 ONBOOT=yes IPADDR=192.168.184.100 NETMASK=255.255.255.255ifup ens33:0 ifconfig ens33:0#調(diào)整proc響應(yīng)參數(shù) #由于LVS負(fù)載均衡器和各節(jié)點(diǎn)需要共用vip地址,應(yīng)該關(guān)閉linux內(nèi)核的重定向響應(yīng)參數(shù),不充當(dāng)路由器(轉(zhuǎn)發(fā)、重定向) vim /etc/sysctl.conf 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 = 0sysctl -p#配置負(fù)載分配策略 ipvsadm-save > /etc/sysconfig/ipvsadm systemctl start ipvsadmvim /opt/dr.sh #!/bin/bash ipvsadm -C ipvsadm -A -t 192.168.184.10:80 -s rr #這里指定的虛擬IP為ens33網(wǎng)卡ip,重啟keepliaved后會(huì)自動(dòng)綁定虛擬網(wǎng)卡 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 ipvsadmipvsadm -Lnc
3、web站點(diǎn)服務(wù)器配置
①、配置虛擬IP地址
此地址僅用做發(fā)送Web響應(yīng)數(shù)據(jù)包的源地址,并不需要監(jiān)聽客戶機(jī)的訪問請(qǐng)求(改由調(diào)度器監(jiān)聽并分發(fā))
因此使用虛接口 lo:0 來承載VIP地址,并為本機(jī)添加一條路由記錄,將訪問VIP的數(shù)據(jù)限制在本地,以避免通信紊亂。
②、調(diào)整內(nèi)核的ARP響應(yīng)參數(shù)以阻止更新VIP的MAC地址,避免沖突
vim /etc/sysctl.confnet.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 = 2sysctl -psystemctl start httpdweb1: vim /var/www/html/index.html <html> <body> <meta http-equiv="Content-Type" content="text/html;charset=utf-8"> <h1>成功不是將來才有的,是從你決定去做的那一刻起,持續(xù)積累來的!!</h1> </body> </html>web2: vim /var/www/html/index.html <html> <body> <meta http-equiv="Content-Type" content="text/html;charset=utf-8"> <h1>解決問題的唯一辦法,就是讓自己變得更強(qiáng)大!!</h1> </body> </html>
4、部署keepalived(主-備)
cd /etc/keepalived/ cp keepalived.conf keepalived.conf.bak vim keepalived.conf global_defs { #定義全局參數(shù)router_id lvs_01 } vrrp_instance vi_1 { #定義VRRP熱備實(shí)例參數(shù)state MASTER #指定熱備狀態(tài),主為master,備為backupinterface ens33 #指定承載vip地址的物理接口virtual_router_id 51 #指定虛擬路由器的ID號(hào),每個(gè)熱備組保持一致priority 110 #指定優(yōu)先級(jí),數(shù)值越大越優(yōu)先advert_int 1authentication {auth_type PASSauth_pass 6666} virtual_ipaddress { #指定集群VIP地址192.168.184.100 } } #指定虛擬服務(wù)器地址vip,端口,定義虛擬服務(wù)器和web服務(wù)器池參數(shù) virtual_server 192.168.184.100 80 { lb_algo rr #指定調(diào)度算法,輪詢(rr)lb_kind DR #指定集群工作模式,直接路由DRpersistence_timeout 6 #健康檢查的間隔時(shí)間protocol TCP #應(yīng)用服務(wù)采用的是TCP協(xié)議 #指定第一個(gè)web節(jié)點(diǎn)的地址,端口 real_server 192.168.184.40 80 {weight 1 #節(jié)點(diǎn)權(quán)重TCP_CHECK {connect_port 80 #添加檢查的目標(biāo)端口connect_timeout 3 #添加連接超時(shí)nb_get_retry 3 #添加重試次數(shù)delay_before_retry 3 #添加重試間隔} } #指定第二個(gè)web節(jié)點(diǎn)的地址,端口 real_server 192.168.184.50 80 {weight 1TCP_CHECK {connect_port 80connect_timeout 3nb_get_retry 3delay_before_retry 3} } }systemctl restart keepalived5、使用客戶機(jī)訪問
總結(jié)
以上是生活随笔為你收集整理的集群(二)——LVS-DR-Keepalived的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 内存超频,烧不烧?解密ryzen内存超频
- 下一篇: 内存价格疯涨!销售员如何化解危机?