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作為源ip,cip作為目標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廣播,

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

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

             arp_announce

             arp_ignore

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

制,因此只有director響應路由的廣播,因此所有的請求都會到達directordirector通過為請求報文重新封裝一個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 20:46
下一篇 2016-10-30 21:02

相關推薦

  • linux及其文件系統

       計算機是由CPU、存儲設備(內存、硬盤)、I/O設備(鍵盤、鼠標、顯示器)組成。CPU負責進行運算和控制;硬盤和內存負責永久和臨時存儲數據;Input設備負責輸入指令或者數據,output設備負責輸出處理過的數據。          Linux的發行版主要有Debian,S…

    Linux干貨 2016-09-21
  • 定制SecureCRT配色

    定制SecureCRT配色 SecureCRT默認的配色方案不怎么喜歡,結合網上其他人的總結+自己的探索,總結怎樣定制自己的配色。配出自己喜歡的界面,還是會很有成就感的。 使用SecureCRT自帶主題 效果圖 圖中個文件的類型: compress.tar.gz 壓縮文件 directory 目錄 file.txt 普通文件&n…

    Linux干貨 2017-09-03
  • SNAT,DNAT,端口轉發

    利用iptables配置NAT

    2018-03-01
  • N26 第二周

    1、Linux上的文件管理類命令都有哪些,其常用的使用方法及其相關示例演示。  [1]mkdir : make directories            mkdir [OPTION]… DIRECTORY… &n…

    Linux干貨 2017-02-05
  • Hadoop簡介

    Hadoop的概要介紹 Hadoop,是一個分布式系統基礎架構,由Apache基金會開發。用戶可以在不了解分布式底層細節的情況下,開發分布式程序。充分利用集群的威力高速運算和存儲。 簡單地說來,Hadoop是一個可以更容易開發和運行處理大規模數據的軟件平臺。該平臺使用的是面向對象編程語言Java實現的,具有良好的可移植性。 Hadoop的發展歷史 &nbsp…

    Linux干貨 2015-04-13
  • 馬哥教育網絡班22期+第11周課程練習

    1、詳細描述一次加密通訊的過程,結合圖示最佳。 Bob先利用單向加密算法提取當前數據的指紋(特征碼),再用自己的私鑰加密數據指紋并附加于數據尾部, 然后利用對稱加密將整個文件加密,之后用Alice的公鑰加密對稱加密密鑰附加于尾部。 Alice收到數據后,先用自己的私鑰解密,得到對稱加密密鑰,之后用對稱加密密鑰解密,然后用Bob的公鑰 解密得到數據指紋,并且驗…

    Linux干貨 2016-11-14
欧美性久久久久