LVS DR模式搭建

2022-03-28 13:56:35 字數 2743 閱讀 7617

出於對架構的興趣,一有時間我就會了解一下如何搭建乙個高併發,高可用,可擴充套件的伺服器執行環境。lvs-dr究竟現在的企業運用頻率有多高其實我也不清楚,本文是下班之餘斷斷續續研究搭建筆錄,並且僅僅在virtual box虛擬機器實踐,沒有實際生產實踐。但是在搭建過程中確實學到了許多理論知識,這裡只記錄我的搭建歷程和在搭建中遇到的疑惑,至於lvs是什麼,dr又是什麼這些已經有足夠多的帖子,不再闡述。

環境搭建過程

1. 使用virtual box,我這裡開了3臺虛擬機器,network使用了橋接模式,開啟後ip分別如下:

server1: 192.168.0.112(direct server,eth0網絡卡)

server2: 192.168.0.113(real server1,eth0網絡卡)

server3: 192.168.0.114(real server2,eth0網絡卡)

dr模式要求direct server(ds)和real server(rs)要部署在乙個不分段網路,也就是說ip要在同乙個網段上,我這裡使用三個同乙個區域網的內網ip來搭建,生產環境據說最好是分別有乙個同網段公網ip比較好,但也可以使用乙個公網ip來搭建的(沒怎麼細究,估計就是使用nat**到區域網,但是這種方式貌似nat**伺服器會有問題吧?)

2. real server新增虛擬ip(vip),並修改arp接收和回答規則,這裡我統一寫到乙個shell指令碼裡面:

#!/bin/bash

#這裡的vip是direct server的訪問ip

ifconfig eth0:0 192.168.0.112 netmask 255.255.255.255

#修改arp應答策略

echo 1 > /proc/sys/net/ipv4/conf/lo/arp_ignore

echo 2 > /proc/sys/net/ipv4/conf/lo/arp_announce

echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore

echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce

vip繫結在real server的lo回環網絡卡上

關於vip的原理是:當乙個請求到達direct server後,ds上的lvs服務(ipvsadm)會將報文的目的mac位址改為某台rs的mac位址,其他的原封不動的廣播到網路,由於real server繫結了該虛擬ip並且mac也匹配上了所以就會被接收處理。處理完以後資料報文是直接返回給客戶端的,並沒有經過direct server。

關於arp應答策略修改原理:

arp_ignore決定了當乙個arp請求報文到達主機的時候,接收網絡卡的應答規則:0表示不論該網絡卡是否繫結了請求的ip位址,只要本機上有網絡卡繫結了該請求ip就會應答,並返回應答網絡卡的mac位址;1表示乙個請求過來,如果網絡卡沒有繫結該ip則忽略該arp請求。(解釋:如果arp_ignore規則為預設值0,則當乙個請求過來的時候,路由進行arp請求目的主機mac位址的時候就會有無數臺機子回覆這個arp,這樣會造成混亂,所以將該值改為1,限制了rs的arp答覆)

arp_announce決定了當乙個機子要為乙個ip資料報傳送乙個arp請求報文的時候,傳送的arp報文的源mac位址填寫規則:0表示arp報文從哪個網絡卡發出的,arp的源mac位址選擇該網路mac位址,arp的源ip位址保留ip 報文的源ip;2表示arp報文從哪個網絡卡發出的,arp的源mac位址和源ip位址都使用該網絡卡的。(解釋:real server在處理完後要把處理好的資料返回給客戶端,這時他會從eth0網絡卡廣播乙個arp,arp_anncounce預設值是0,那麼arp的源mac是eth0的mac位址,源ip位址是vip,這個時候路由會回覆這個arp並且更改路由表的對映,請注意這裡!更改了路由表對映以後,客戶端以後的請求將會直接轉給real server,而不會給direct server,這樣達不到負載的作用了;所以要改成1,real server在廣播arp的時候源mac位址是eth0,源ip也將會是eth0的ip,所以就不會衝突了)

至於vip為什麼要繫結在lo上,以我的理解應該就是想利用arp_announce的規則繞過路由器修改操作。

3. 在direct server上安裝ipvadm服務並新增**規則:

yum -y install ipvsadm

systemctl start ipvsadm

#先清楚原來的配置

ipvsadm -c

#指定排程演算法。排程演算法可以指定以下8種:rr(輪詢),wrr(權重),lc(最後連線),wlc(權重),lblc(本地最後連線),lblcr(帶複製的本地最後連線),dh(目的位址雜湊),sh(源位址雜湊),sed(最小期望延遲),nq(永不排隊)

ipvsadm -a -t 192.168.0.112:80 -s rr

#新增**規則, -g表示直接路由模式

ipvsadm -a -t 192.168.0.112:80 -r 192.168.0.113 -g

ipvsadm -a -t 192.168.0.112:80 -r 192.168.0.114 -g

到此,環境已經搭建好了,我們客戶端訪問的時候是直接訪問112的,但是請求會**給配置好的主機。在搭建過程中其實有很多理論知識是不懂的,開始很疑惑,看了別人的解釋也一知半解,不過每天思考一點點,現在算是懂一些了,不過還有很多知識漏洞需要慢慢補充,加油吧

LVS DR模式搭建

1 dr模式下分發器和真實伺服器要在同ip段 2 分發器和真是伺服器都需要設定相同的vip,並且都能通外網 3 負載均衡器安裝 yum install y ipvsadm 4 負載均衡 ifconfig eno16777984 0 172.16.54.244 24 route add host 17...

LVS DR模式搭建

ip 備註192.168.174.128 排程器 關閉防火牆 安全規則 192.168.174.130 web端 關閉防火牆 安全規則 192.168.174.131 web端 關閉防火牆 安全規則 三颱centos7 兩台web端搭建ecshop和ecshop1,一台安裝ipvsadm實現排程 安...

LVS DR模式搭建 keepalived lvs

一 lvs dr模式搭建 1.準備3臺機器 a機器為分發器,也叫排程器 簡寫為dir a機器 192.168.177.7 b機器 192.168.177.100 c機器 192.168.177.200 vip 192.168.177.55 vim usr local sbin lvs dr.sh 在...