LVS中nat和dr的原理與用法簡述

 

LVSnatdr的原理與用法簡述

lvs-nat

  多目標IPDNAT,通過將請求報文中的目標地址和目標端口修改為某挑出的RSRIPPORT實現轉發;

1RIPDIP必須在同一個IP網絡,且應該使用私網地址;RS的網關要指向DIP;

2)請求報文和響應報文都必須經由Director轉發;Director易于成為系統瓶頸;

3)支持端口映射,可修改請求報文的目標PORT;

4vs必須是Linux系統,rs可以是任意系統;

blob.png 

請求和響應過程:

ciprip請求時,先是cip作為源,vip作為目標,當請求到達VIP時,源還是cip,但是

目標變成了rip,并通過diprip。源ip始終不變。

rip響應請求時,rip作為源ipcip作為目標ip,經由dip轉發。轉發完成后,vip為源ip,cip為目標。目標ip始終不變。

Ivs-nat示例:

實驗環境:

    1、一臺director;安裝ipvsadm;

       內網ip192.168.1.1   外網ip10.1.64.1

    2、兩臺后端服務器,分別部署httpd服務。將網關指向192.168.1.1,并且打開核心轉

       發功能。echo 1 >  /proc/sys/net/ipv4/ip_forward 。并提供測試頁。并且三臺機器

       的時間同步。

實驗步驟:

    1、搭建好實驗環境。

    2、部署ipvsadm策略

       ipvsadm  -A  -t  10.1.64.1  -s  rr

       ipvsadm  -a  -t  10.1.64.1  -r  192.168.1.2  -m

       ipvsadm  -a  -t  10.1.64.1  -r  192.168.1.3  -m

    3、測試

      For  i  in  {1..9}; do  curl  http://10.1.64.1;  done

blob.png 

 

lvs-dr

Direct Routing,直接路由;

  通過為請求報文重新封裝一個MAC首部進行轉發,源MACDIP所在的接口的MAC,目標MAC是某挑選出的RSRIP所在接口的MAC地址;源IP/PORT,以及目標IP/PORT均保持不變;

   

Director和各RS都得配置使用VIP

(1) 確保前端路由器將目標IPVIP的請求報文發往Director

(a) 在前端網關做靜態綁定;

(b) RS上使用arptables

(c) RS上修改內核參數以限制arp通告及應答級別;

arp_announce

arp_ignore

(2) RSRIP可以使用私網地址,也可以是公網地址;RIPDIP在同一IP網絡;RIP的網關不能指向DIP,以確保響應報文不會經由Director;

(3) RSDirector要在同一個物理網絡;

(4) 請求報文要經由Director,但響應不能經由Director,而是由RS直接發往Client;

(5) 不支持端口映射;

blob.png 

請求和響應的具體過程:

任何本地通信,都是通過Mac地址進行的,IP僅僅是實現網絡間通信的。當路由器的網絡

接口到real serverdirector的網絡接口都是有Mac地址封裝轉發的。

當路由器收到來自客戶端的請求報文時,路由發現Mac地址是自己的,就將其報文拆解,

發現目標IP不是自己,需要轉發,就會在網路中進行ARP廣播,尋找VIPMac地址,然后

Directorreal server 都會響應路由的廣播,但是不能讓real server響應路由的廣播。否則將造

成路由混亂,可能路由會直接將報文發送給real server而不經過director。

為了避免路由混亂問題:

    1、不讓路由發廣播,直接將directorMac地址綁定。但是若以后對director做冗余

的時候,Mac地址就不能綁定了。

    2、對real server的物理網卡上做ARPtables,在Mac層做防火墻,用來限制ARP廣播,

明確說明那些廣播通告可以出去(進入),哪些不可以出去(進入)。

        3、RS上修改內核參數以限制arp通告及應答級別;

             arp_announce

             arp_ignore

當客戶端的請求到達前端路由時,路由向全網發廣播,但是由于對real server做了策略限

制,因此只有director響應路由的廣播,因此所有的請求都會到達director,director通過為請求報文重新封裝一個MAC首部進行轉發,源MACDIP所在的接口的MAC,目標MAC是某挑選出的RSRIP所在接口的MAC地址;源IP/PORT,以及目標IP/PORT均保持不變;然后通過交

換機發送給real server。

響應時,源目標是RIP,目標ipCIP,但是cip并未訪問rip,所以得強行限制該響應報文

先到lovip,通過vip到達cip。

 

IVS-dr實驗示例:

示例一:

①客戶端一臺(192.268.249.148)    directordip 10.1.64.1.1)主機一臺。

Real server主機2臺。(rip1:10.1.64.2    rip210.1.64.3

VIP10.1.64.10

②在real server主機中分別部署兩臺httpd服務。在生產環境中兩臺httpd服務的內容應該是一

  樣的,以達到負載均衡的目的。在該實驗中為了達到實驗效果可以將兩臺httpd服務的網頁

  內容稍加區別。

  Rip1 :測試頁內容RS1           rip2:測試頁內容RS2

③在director主機的物理網卡上設定別名,ip地址指向VIP10.1.64.10

  Ifconfig  eth0:0  10.1.64.10  netmask  255.255.255.255  broadcast  10.1.64.10  up

④在director主機上設定ipvsadm策略。

  Ipvsadm  -A  -t  10.1.64.10:80  -s  rr

  Ipvsadm  -a  -t  10.1.64.10:80  -r  10.1.64.2  -g  -w  1

  Ipvsadm  -a  -t  10.1.64.10:80  -r  10.1.64.3  -g  -w  1

blob.png 

⑤在兩臺real server主機中設置響應和通告級別

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

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

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

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

⑥在客戶端主機中用curl測試,如圖所示,在不斷的請求時兩臺httpd服務會以輪循的方式響

  應客戶端。

   blob.png

⑦在實驗過程中注意防火墻和SElinux的設置。建議清空防火墻和關閉SElinux。

 

示例二:

①在上述實驗原有的基礎上,在real server主機上部署MySQL服務。對MySQL做負載均衡。

②為兩臺MySQL服務添加可以遠程連接的用戶,兩臺MySQL服務的用戶名要相同。

  Real server1

    mysql

    GRANT  ALL  ON  *.*  TO  test@10.1.%.%  IDENTIFIED  BY  testpass;

    FLUSH  PRIVILEGES;

  Real server2

    mysql

    GRANT  ALL  ON  *.*  TO  test@10.1.%.%  IDENTIFIED  BY  testpass;

    FLUSH  PRIVILEGES;

  為了顯示實驗效果,在real server2中添加一張表;

CREATE  DATABASE  zhangzhide;

③在director主機上添加ipvsadm策略

  Ipvsadm  -A  -t  10.1.64.10:3306  -s  rr

  Ipvsadm  -a  -t  10.1.64.10:3306  -r  10.1.64.2  -g  -w  1

  Ipvsadm  -a  -t  10.1.64.10:3306  -r  10.1.64.2  -g  -w  1

blob.png 

④在客戶機上測試MySQL的負載均衡

blob.png 

 

 

示例三、

FWMFireWall Mark

通過在director主機上的防火墻上打標記的方式將MySQLhttpd服務放在同一個集群中。

為了不受上述實驗的ipvsadm策略的影響,建議將其清空ipvsadm -C

①在director主機防火墻上打標記。

  iptables -t mangle -A PREROUTING -d 10.1.64.10 -p tcp -m multiport –dports 80,3306 -j MARK

             –set-mark 11

②在director主機上寫ipvsadm策略

  ipvsadm  -A  -f  11  -s  rr

  ipvsadm  -a  -f  11  -r  10.1.64.2  -g  -w  1

  ipvsadm  -a  -f  11  -r  10.1.64.3  -g  -w  2

blob.png 

③在客戶機上分別測試httpd服務和MySQL服務。

  測試MySQL

blob.png 

測試httpd服務

blob.png 

 

示例四、

Prot affinity

借助于FireWall Mark能夠完成將多個端口綁定在一起,并使用持久連接來實現統一調度

之效用。

blob.png 

 

 

 

原創文章,作者:zzd,如若轉載,請注明出處:http://www.www58058.com/56240

(0)
zzdzzd
上一篇 2016-10-30
下一篇 2016-10-30

相關推薦

  • HA Cluster 之 vrrp (keepalived)

      HA Cluster 之 vrrp (keepalived) 0x00 前言 0x01 VRRP 協議 VRRP 簡介 VRRP 工作原理 VRRP負載分擔方式的特點 VRRP 中的一些術語 0x02 keepalived 功用: 0x03 keepalived 配置 HA Cluster 的配置前提: 配置文件組件部分: 配置文件解析: 附:…

    Linux干貨 2017-05-16
  • Linux命令的使用格式以及命令幫助信息的獲取方式

    1.Linux系統上的命令使用格式 2.Linux系統程序文件存放位置 3.Linux獲取命令的幫助信息 區分內部命令和外部命令 內部命令在系統啟動時就調入內存,是常駐內存的,所以執行效率高。 外部命令是系統的軟件功能,用戶需要時才從硬盤中讀入內存。 #type COMMAND 內部命令獲取幫助信息:#help COMMAND 外部命令獲取幫助信息…

    Linux干貨 2016-10-29
  • 計算機基礎知識及服務器介紹

    現代計算機組成 根據馮·諾依曼結構體系計算機有五大部件組成: 運算器、控制器、存儲器、輸入設備、輸出設備 CPU=運算器+控制器 運算器由算術邏輯單元(ALU)、累加器、狀態寄存器、通用寄存器組等組成。 算術邏輯運算單元(ALU)的基本功能為加、減、乘、除四則運算,與、或、非、異或等邏輯操作,以及移位、求補等操作。 運算器只能進行二進制運算、邏輯運算 控制器…

    Linux干貨 2016-06-09
  • linux作業管理

    作業管理 kill kill命令:     向進程發送控制信號,以實現對進程管理     顯示當前系統可用信號:kill -l     常用信號:man 7 signal    &…

    Linux干貨 2016-09-09
  • 2016-10-17作業

    1 生產環境發現一臺服務器系統時間產生偏差,造成服務異常,請幫忙校正。 答:hwclock -s 2 生產有一個數據同步腳本需要執行很長時間,怎樣做到無人值守,在管理工具退出的情況下,腳本依然能正常運行。 答:screen -S work  進去后開始做工作,暫時離開時可使用 ctrl+a,d 剝離當前會話。 3 Linux系統中命令共分為內建命令…

    Linux干貨 2016-10-18
  • 文本處理工具-2

    1、 sed 是一種行/流編輯器,它一次處理一行內容;處理時,把當前處理的行存儲在臨時緩沖區中,稱為“模式空間”(pattern space ),接著用sed 命令處理緩沖區中該行內容,處理完成后,把緩沖區的該行內容送往屏幕,接著處理下一行,這樣不斷重復,直到文件末尾。文件內容并沒有改變,除非你使用重定向存儲輸出,Sed 可以用來自動編輯一個或多個文件。 2…

    Linux干貨 2016-08-15
欧美性久久久久