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