linux中級之lvs配置(命令)


一、nat模式配置

       環境說明:

              DS:nat網卡(自動獲取也可以,充當vip):   

                     192.168.254.13

                     255.255.255.0

                 vmnet3網卡(僅主機):      

                            172.16.100.1

                            255.255.255.0

              RS1:(僅主機vmnet3)

                     172.16.100.10

                     255.255.255.0

                     172.16.100.1

              RS2:(僅主機vmnet3)

                     172.16.100.20

                     255.255.255.0

                     172.16.100.1

工作流程:

1、用戶請求VIP(也可以說是CIP請求VIP)

2Director Server 收到用戶的請求后,發現源地址為CIP請求的目標地址為VIP,那么Director Server會認為用戶請求的是一個集群服務,那么Director Server 會根據此前設定好的調度算法將用戶請求負載給某台Real Server

 假如說此時Director Server 根據調度的結果會將請求分攤到RealServer1上去,那么Director Server 會將用戶的請求報文中的目標地址,從原來的VIP改為RealServer1IP,然后再轉發給RealServer1

3、此時RealServer1收到一個源地址為CIP目標地址為自己的請求,那么RealServer1處理好請求后會將一個源地址為自己目標地址為CIP的數據包通過Director Server 發出去

4、當Driector Server收到一個源地址為RealServer1 IP 目標地址為CIP的數據包,此時Driector Server 會將源地址修改為VIP,然后再將數據包發送給用戶

   安裝lvs:

              yum install ipvsadm

       調度器上開啟路由轉發模式:

              臨時性:

                     echo 1 > /proc/sys/net/ipv4/ip_forward

              永久性:

                     vim /etc/sysctl.conf

                            net.ipv4.ip_forward = 1

                     sysctl -p

       ipvsadm配置:

              ipvsadm -A -t 192.168.254.13:80 -s rr

              ipvsadm -a -t 192.168.254.13:80 -r 172.16.105.10 -m

              ipvsadm -a -t 192.168.254.13:80 -r 172.16.100.20 -m

              ipvsadm命令:

              查看lvs集群連接狀態           ipvsadm -Ln --stats

              查看lvs集群配置                   ipvsadm -Ln

              保存ipvs配置                  ipvsadm-save

              還原                                  ipvsadm-restore

ipvsadm -S > /etc/sysconfig/ipvsadm     #把配置文件保存在配置文件中

ipvsadm -R < /etc/sysconfig/ipvsadm     #從配置文件中恢復到當前配置

二、dr模式配置

       虛擬機網卡模式:

              DSNAT(自動獲取)

              RS1NAT(自動獲取)

              RS2NAT(自動獲取)

       DR模式

              direct_server192.168.254.13

              real_server192.168.254.12

              real_server192.168.254.10

              vip:192.168.254.250    #vip為虛擬服務ip

              direct_serveryum install ipvsadm

工作方式:

上面說了NAT模型的實現方式,那么NAT模型有個缺陷,因為進出的每個數據包都要經過Director Server,當集群系統負載過大的時候Director Server將會成為整個集群系統的瓶頸,那么DR模型就避免了這樣的情況發生,DR模型在只有請求的時候才會經過Director Server, 回應的數據包由Real Server 直接響應用戶不需要經過Director Server,其實三種模型中最常用的也就是DR模型了。

工作流程:

1、首先用戶用CIP請求VIP

2、不管是Director Server還是Real Server上都需要配置VIP,當用戶請求到達我們的集群網絡的前端路由器的時候,請求數據包的源地址為CIP目標地址為VIP,此時路由器會發廣播問誰是VIP,那么我們集群中所有的節點都配置有VIP,此時誰先響應路由器那么路由器就會將用戶請求發給誰,這樣一來我們的集群系統是不是沒有意義了,那我們可以在網關路由器上配置靜態路由指定VIP就是Director Server,或者使用一種機制不讓Real Server 接收來自網絡中的ARP地址解析請求,這樣一來用戶的請求數據包都會經過Director Servrer

3、當Director Server收到用戶的請求后根據此前設定好的調度算法結果來確定將請求負載到某台Real Server上去,假如說此時根據調度算法的結果,會將請求負載到RealServer 1上面去,此時Director Server 會將數據幀中的目標MAC地址修改為Real Server1MAC地址,然后再將數據幀發送出去

4、當Real Server1 收到一個源地址為CIP目標地址為VIP的數據包時,Real Server1發現目標地址為VIP,而VIP是自己,於是接受數據包並給予處理,Real Server1處理完請求后,會將一個源地址為VIP目標地址為CIP的數據包發出去,此時的響應請求就不會再經過Director Server了,而是直接響應給用戶。

老板

       direct_server:

                     ipvsadm -C    #清除配置信息

                     #添加對外提供的服務ip

                     ipvsadm -A -t 192.168.254.250:80 -s rr    #-AADD   -ttcp   -s rr為設置算法為輪叫算法

                     #添加2real_server主機

                     ipvsadm -a -t 192.168.254.250:80 -r 192.168.254.12:80 -g #-aadd   -ttcp   -rrealserver   -gDR路由模式

                     ipvsadm -a -t 192.168.254.250:80 -r 192.168.254.10:80 -g #-aadd   -ttcp   -rrealserver   -gDR路由模式

                     #配置網卡的子網口為vipip地址為192.168.254.250

                     ifconfig ens33:0 192.168.254.250 broadcast 192.168.254.250 netmask 255.255.255.255 up

                     #添加路由(訪問192.168.254.250都走ens33:0這個網卡)

                     route add -host 192.168.254.250 dev ens33:0

員工1 | 員工2

              real_server:

                     #在回環地址的子網口上配置服務ip(vip)

                     ifconfig lo:0 192.168.254.250 broadcast 192.168.254.250 netmask 255.255.255.255 up

                     #添加路由

                     route add -host 192.168.254.250 dev lo:0

                    #刪除路由:route delete -host 192.168.254.250

        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

              關閉:

                     echo "0">/proc/sys/net/ipv4/conf/lo/arp_ignore

                     echo "0">/proc/sys/net/ipv4/conf/lo/arp_announce

                     echo "0">/proc/sys/net/ipv4/conf/all/arp_ignore

                     echo "0">/proc/sys/net/ipv4/conf/all/arp_announce

              arp_ignore:定義接收到ARP請求時的響應級別 

                            0:默認,只用本地配置的有響應地址都給予響應

                            1:僅僅在目標IP是本地地址,並且是配置在請求進來的接口上的時候才給予響應 (僅在請求的目標地址配置請求到達的接口上的時候,才給予響應)

            2:只回答目標IP地址是來訪網絡接口本地地址的ARP查詢請求,且來訪IP必須在該網絡接口的子網段內

            3:不回應該網絡界面的arp請求,而只對設置的唯一和連接地址做出回應

            4-7:保留未使用

                            8:不回應所有(本地地址)的arp查詢

              arp_announce:定義將自己的地址向外通告時的級別      

                            0:默認,表示使用配置在任何接口的任何地址向外通告      

                            1:盡量僅向目標網絡通告與其網絡匹配的地址      

                            2:僅向與本地接口上地址匹配的網絡進行通告

1RealServer為什么要在lo接口上配置VIP

既然要讓RS能夠處理目標地址為vipIP包,首先必須要讓RS能接收到這個包。在lo上配置vip能夠完成接收包並將結果返回client

2、在eth0網卡上配置VIP可以嗎?

不可以,將VIP設置在eth0網卡上,會影響RSarp請求,造成整體LVS集群arp緩存表紊亂,以至於整個負載均衡集群都不能正常工作。

3、為什么要抑制ARP響應?

arp協議說明

ARP協議,全稱"Address Resolution Protocol",中文名是地址解析協議,使用ARP協議可實現通過IP地址獲得對應主機的物理地址(MAC地址)

ARP協議要求通信的主機雙方必須在同一個物理網段(即局域網環境)!

為了提高IP轉換MAC的效率,系統會將解析結果保存下來,這個結果叫做ARP緩存。

Windows查看ARP緩存命令 arp -a

Linux查看ARP緩存命令 arp -n

Linux解析IP對應的MAC地址 arping -c 1 -I eth0 10.0.0.6

ARP緩存表是把雙刃劍

a) 主機有了arp緩存表,可以加快ARP的解析速度,減少局域網內廣播風暴。因為arp是發廣播解析的,頻繁的解析也是消耗帶寬的,尤其是機器多的時候。

b) 正是有了arp緩存表,給惡意黑客帶來了攻擊服務器主機的風險,這個就是arp欺騙攻擊。

c) 切換路由器,負載均衡器等設備時,可能會導致短時網絡中斷。因為所有的客戶端ARP緩存表沒有更新

②服務器切換ARP問題

當集群中一台提供服務的lb01機器宕機后,然后VIP會轉移到備機lb02上,但是客戶端的ARP緩存表的地址解析還是宕機的lb01MAC地址。從而導致,即使在lb02上添加VIP,也會發生客戶端無法訪問的情況。

解決辦法是:當lb01宕機,VIP地址遷移到lb02時,需要通過arping命令通知所有網絡內機器更新本地的ARP緩存表,從而使得客戶機訪問時重新廣播獲取MAC地址。這個是自己開發服務器高可用腳本及所有高可用軟件必須考慮到的問題。

ARP廣播進行新的地址解析

arping -I eth0 -c 1 -U VIP

arping -I eth0 -c 1 -U 10.0.0.13

測試命令

ip addr del 10.0.0.13/24 dev eth0

ip addr add 10.0.0.13/24 dev eth0

ip addr show eth0

arping -I eth0 -c 1 -U 10.0.0.13

三、tun隧道模式

lvs-server

    ifconfig tunl0 192.168.254.250 broadcast 192.168.254.250 netmask 255.255.255.0 up

    route add -host 192.168.254.250 dev tunl0

    ipvsadm -A -t 192.168.254.250:80 -s rr

    ipvsadm -a -t 192.168.254.250:80 -r 192.168.254.18 -i

    ipvsadm -a -t 192.168.254.250:80 -r 192.168.254.19 -i

    real_server

    ifconfig tunl0 192.168.254.250 netmask 255.255.255.255 broadcast 192.168.254.250 up

    route add -host 192.168.254.250 dev tunl0

    echo "1" >/proc/sys/net/ipv4/conf/tunl0/arp_ignore

    echo "2" >/proc/sys/net/ipv4/conf/tunl0/arp_announce

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

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

    echo "0" >/proc/sys/net/ipv4/conf/tunl0/rp_filter

    echo "0" > /proc/sys/net/ipv4/conf/all/rp_filter

    0:不開啟源地址校驗。

    1:開啟嚴格的反向路徑校驗。對每個進來的數據包,校驗其反向路徑是否是最佳路徑。

        如果反向路徑不是最佳路徑,則直接丟棄該數據包。

    2:開啟松散的反向路徑校驗。對每個進來的數據包,校驗其源地址是否可達,即反向路徑是否能通(通過任意網口),

        如果反向路徑不同,則直接丟棄該數據包。

四、ipvsadm語法及選項

1、語法:

ipvsadm -A|E -t|u|f <集群服務地址> [-s <調度算法>] [-p <超時時間>] [-M <掩碼>] [-b <標志>]

ipvsadm -D -t|u|f <集群服務地址>

ipvsadm -C

ipvsadm -R

ipvsadm -S [-n]

ipvsadm -a|e -t|u|f <集群服務地址> -r <真實服務器地址> [選項]

ipvsadm -d -t|u|f <集群服務地址> -r <真實服務器地址>

ipvsadm -L|l [options]

ipvsadm -Z [-t|u|f <集群服務地址>]

ipvsadm --set <超時時間>

ipvsadm --start-daemon <主或備> [--mcast-interface <組播接口>] [--syncid <SID>]

ipvsadm --stop-daemon <主或備>

ipvsadm -h

2、子命令:

--add-service     -A        添加一個集群服務,需要使用選項

--edit-service    -E        編輯一個集群服務,需要使用選項

--delete-service  -D        刪除指定集群服務,需要使用選項

--clear           -C        刪除所有集群服務,包括真實服務器轉發策略規則

--restore         -R        從標准輸入中恢復策略規則

--save            -S        保存策略規則到標准輸出

--add-server      -a        添加一個真實服務器,需要使用選項

--edit-server     -e        編輯一個真實服務器,需要使用選項

--delete-server   -d        刪除一個真實服務器,需要使用選項

--list            -L|-l     查看集群服務列表,包括真實服務器轉發策略規則

--zero            -Z        計數器清零。清除連接數、包轉發等數量統計信息

--set <超時時間>            設置TCPTCPFINTCP關閉連接狀態)、UDP連接超時時間,用於會話保持。一般情況下TCPUDP超時時間保持默認就好,TCPFIN

可以根據情況設定,指定它則用戶請求連接關閉,該連接則會變

為非活躍(InActive)空閑等待狀態,在空閑等待時間內,如果

來自同一源IP的請求,則還會轉發給后端的同一台真實服務器上

--start-daemon              開啟連接同步守護進程。在選項后面指定自己是Master(主)還是backup(備),主負載調度器會同步所有策略及連接狀態到備負載調度器,當主故障,備可以接替其工作

--stop-daemon               停止連接同步守護進程

--help            -h        顯示幫助信息

3、集群服務相關

-A:添加一個集群服務

   -ttcp

   -uudp

   -ffirewall-mark,通常用於將兩個或以上的服務綁定為一個服務進行處理是使用,integer類型

   service-address

      -tip:port

      -uip:port

      -ffirewall-mark

   -s:調度算法,默認為wlc

   -ptimoutpersistent connection,持久連接

-E:修改定義過的集群服務

-D-t|-u|-f service-address:刪除指定得集群服務

4RS(Real Server)相關

-a:向指定得CS(Cluster Service)中添加RS(Real Server)

   -t|-u|-f service-address:指明將RS添加至哪個Cluster Service

   -r:指定RS(Real Server),可包含{IP[:port]},只有支持端口映射的LVS類型才允許此處使用跟集群服務中不同的端口

   LVS類型:

      -gGatewayDR(默認使用的類型)

      -iipipTUN

      -mmasquerade(地址偽裝)NAT

   指定RS(Real Server)權重:

      -w 取值范圍0-65535

-e:修改指定的RS屬性

-d-t|-u|-f service-address -r server-address:從指定得集群服務中刪除某RS

5、清空所有的集群服務:

-C

6、保存規則:(使用輸出重定向)

ipvsadm-save

ipvsadm -S

7、載入指定的規則:(使用輸入重定向)

ipvsadm-restore

ipvsadm -R

8、查看ipvsadm規則

ipvsadm -L [options]

-n:數字格式顯示IP地址

-c:顯示連接數相關信息

--stats:顯示統計數據

--rate:速率

--exact:顯示統計數據的精確值

9、計數器清零

-Z


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM