1. 程式人生 > >LVS的NAT模型建立

LVS的NAT模型建立

定位 _for ifconf 流向 編輯 如果 vpd centos6.8 log

LVS的NAT模型建立
一、 LVS的NAT模型拓撲圖
客戶端請求時,請求報文時通過director來改變目標ip實現轉發。(經過director時目標ip由VIP改為RIP,但是請求報文從director出來時,還是由DIP所在的網卡接口出去的。)
報文流向:1->2->3
1的源地址是CIP,目標地址是director的VIP。
2的源地址是CIP,目標地址是director的RIP。

技術分享圖片

圖一

服務器端回應時,響應報文時通過director改變源ip實現轉發。(經過director時,源ip由RIP改為VIP)
報文流向:1->2->3
1的源地址是RIP,目標地址是director的CIP。

2的源地址是VIP,目標地址是director的CIP。

技術分享圖片

圖二

二、 LVS-NAT模型內容解析
1、 請求報文時,報文必須經過director,才能達到負載均衡的效果。同時在director上修改目標ip實現轉發。響應報文時,在director上修改源ip實現轉發。
2、 Director的DIP和各real server的RIP必須在同一個物理網段中,並且RIP的網關要指向DIP。
3、 支持端口映射。
4、 NAT模型中一般VIP是公網地址,DIP和RIP一般是私網地址。使用NAT模型主要的目的是隱藏服務器ip。

三、 演示環境規劃(系統red hat 6.8)
Director(bridge,eth0,eth1):

VIP,eth0 :172.16.100.9
DIP,eth1 :192.168.20.1
Real server 1(vmnet2,eth0)
RIP,eth0 :192.168.20.7
Real server 2(vmnet2,eth0)
RIP,eth0 :192.168.20.8

四、 設置lvs-nat模型的演示步驟。(NAT模型支持端口映射。
1 配置director的vip和dip,配置完後重啟網絡。
配置director服務器eth0(或eno16777736)網卡的VIP為172.16.100.9(下面是centos7,centos7網卡名為eno16777736即為centos6.8的eth0)。
技術分享圖片
技術分享圖片
查看系統的網卡名ifconfig –a(centos7的兩個網卡名為eno16777736和eno33554992)。

技術分享圖片
配置director的eth1(或eno33554992)網卡DIP為192.168.20.1,DIP為私網地址,不需要網關,我們不打算用這個做路由。 VIP配置完後配置DIP,可以直接用cp復制vip的配置文件到DIP配置文件再進行修改(變化的有IPADDR,NETMASK,NAME,DEVICE,去掉GATEWAY和UUID)。
技術分享圖片
技術分享圖片
配置完之後重啟網絡:
Centos7
技術分享圖片
Centos6.8
技術分享圖片
配置完重啟網絡後查看VIP和DIP配置。
技術分享圖片

2 檢查yum源並安裝(安裝yum的目的是為了安裝ipvsadm套件)。
先利用yum grouplist查看yum的安裝情況,再安裝yum源。在封閉式網絡或是OS是Red hat的話,有可能會沒辦法載入yum套件(Red Hat要錢的),在Linux的command mode下yum grouplist檢查,若沒有的話會顯示不了套件列表,無法安裝必要套件。(藍色是新能廠商步驟)
技術分享圖片

先把ISO鏡像放到director的/tmp目錄下再掛載,之後安裝yum源。
技術分享圖片

設定掛載位置
mkdir –p /media/cdrom
掛載到指定位置
技術分享圖片
【此為馬哥掛載】
技術分享圖片
mount -t iso9660 -o loop rhel-server-6.8-x86_64-dvd.iso /media/cdrom 【此為新能廠商掛載】

設定開機即掛載
vim /etc/fstab
/tmp/rhel-server-6.8-x86_64-dvd.iso /media/cdrom iso9660 defaults,ro,loop 0 0
技術分享圖片
進入yum文件夾
cd /etc/yum.repos.d/

新增讀取的yum源
vim dvd.repo
技術分享圖片
dvd.repo內容:
[dvd-source]
name=RHEL 6.8 dvd repo
baseurl=file:///media/cdrom
enabled=1
gpgcheck=0

清掉系統yum暫存以及重新建立
yum clean all
yum makecache
yum install –y "subscription-manager-gui"

檢查是否成功,成功的話會顯示列表
yum grouplist

從yum安裝,所以務必將yum安裝完畢

  1. 中文語言包
    yum groupinstall "Chinese Support"
  2. 開發者工具
    yum groupinstall "development tools"
  3. vim(好用的Linux檔案編輯工具)
    yum install vim

3 安裝ipvsadm套件。
直接yum install ipvsadm

或者利用rpm –ivh安裝ipvsadm
技術分享圖片

4 配置real server的RIP(eth0)分別為192.168.20.7,192.168.20.8(RIP的網關指向DIP192.168.20.1),之後重啟網絡。

進入real server(兩個都要配)網卡配置(配置RIP)文件中進行編輯:
技術分享圖片
IPADDR=192.168.20.7
GATEWAY=192.168.20.1
NETMASK=255.255.255.0
技術分享圖片

重啟real server網絡
~] service network restart
技術分享圖片

在real server上ping DIP192.168.20.1檢查是否通。
技術分享圖片
5 測試lvs功能,先讓兩個real server的web界面不同。編輯兩個real server的/var/www/html/index.html文件,內容如下。
<h1>Test Page on real server 1</h1>
技術分享圖片

啟動兩個real server的httpd服務。
~] service httpd start

先自己手動直接請求real server的web界面,看內容。
技術分享圖片

6 確保director的iptables關閉。因為ipvsadm和iptables很難共存(iptables包括iptables –Ln ,iptables –L –n –t nat,iptables –L –n –t mangle都要清理掉),如果要共存,需要精心設計應用機制才能實現。
技術分享圖片
在director上,centos6直接
~] service iptables stop
或者
~] iptables –F
~] iptables –S > /etc/sysconfig/ipvsadm
7 開啟director的IP_FORWARD。
打開 /etc/sysctl.conf
~] vim /etc/sysctl.conf
設定net.ipv4.ip_forward =1,存檔
技術分享圖片
技術分享圖片

8 在director上定義ipvsadm規則(ipvsadm中-A是定義規則,-t是定義tcp,因為演練的http服務是基於tcp服務的,-s指明調度器調度算法,集群類型在添加real server中指定)。【nat集群在添加real server時可以利用端口映射實現集群服務。】實現集群只需要定義一個集群和添加real server即可完成。即下面的one two兩步驟就可以。
One:先定義一個集群。
技術分享圖片
Two:添加兩個real sever。
技術分享圖片
技術分享圖片

上面內容解釋:
Forward時轉發,Masq是基於nat模型。
Weight:權重,rr不用指定權重,默認是1.
ActiveConn:當前服務器上的活動連接數。
InActConn:當前服務器上的非活動連接數。

五、ipvsadm用法介紹。Ipvsadm的編輯,增加修改刪除等操作。
1 Ipvsadm的保存。
先查看安裝ipvsadm生成的有哪些文件(director是centos7)。我們保存的ipvsadm規則在/usr/lib/systemd/system/ipvsadm.service文件中。
技術分享圖片

查看ipvsadm保存文件。
技術分享圖片

上面的ipvsadm規則定義和添加完real server後,保存ipvsadm規則到ipvsadm規則保存文件中(規則保存文件為/etc/sysconfig/ipvsadm)。
ipvsadm –S > /etc/sysconfig/ipvsadm
技術分享圖片

2 ipvsadm釋放如果恢復規則可以使用(ipvsadm –R < /etc/sysconfig/ipvsadm)來讓ipvsadm保存文件的規則恢復至ipvsadm規則中。
技術分享圖片

3清除ipvsadm規則。如果不需要規則可以清規則(ipvsadm -C)。
技術分享圖片

4 修改ipvsadm規則(ipvsadm –E、ipvsadm -e)。-E是修改director,-e是修改real server部分。但是-E和-e都是在director上操作。
示例(ipvsadm -E),把ipvsadm規則中的rr算法改為sh算法,如下。
技術分享圖片

示例(ipvsadm -e),把ipvsadm後端的real server的http服務的端口由80改為8080,如下。
One:先改real server的端口由80改為8080(在real server上執行)。
技術分享圖片
技術分享圖片

Two:重啟real server的http服務(real server上執行)。
技術分享圖片

Three:在director上修改ipvsadm的real server的端口映射,後端的real server的端口由80改為8080(在director上執行)(ipvsadm -e)。(可以直接用ipvsadm –e修改,也可以通過保存文件修改再重載保存文件兩種方式去修改real server的信息。)
技術分享圖片

上面的正常操作如果有誤(上面的就有問題,Menory allocation problem內存分配有問題),可以使用(先修改保存文件,再ipvsadm –C清除規則,最後ipvsadm-R /etc/sysconfig/ipvsadm)
I:修改保存文件(由一改為二)。
技術分享圖片
技術分享圖片

技術分享圖片

II:清空現有ipvsadm規則。
技術分享圖片

III:重讀ipvsadm保存文件。
技術分享圖片

5 ipvsadm刪除操作(ipvsadm –d刪除real server,ipvsadm –D刪除集群服務)。
技術分享圖片

6 ipvsadm用法介紹。
技術分享圖片
技術分享圖片

1 ~] ipvsadm –L –c (顯示當前的活動狀態)如下
技術分享圖片

2 ~] ipvsadm – L –n --stats (--stats顯示統計數據)
技術分享圖片
Conns:處理的鏈接數
InPkts:統計入棧包個數
OutPkts:統計出棧包個數
InBytes:統計入棧字節數
OutBytes:統計出棧字節數

3 ~] ipvsadm – L –n --rate(--rate顯示統計速率)
技術分享圖片
CPS:
InPPS:入棧每秒包個數
OutPPS:出棧每秒包個數
InBPS:入棧每秒的字節數
OutBPS:出棧每秒的字節數

4 --exact顯示精確值,不做單位換算。

LVS的NAT模型建立