LINUX負載均衡LVS-NAT搭建


1.搭建前的規划工作

這里從lvs官方網站找了一個nat模型的圖,如下:

我這里使用虛擬機模擬出了4台rhel6機器。一台服務器作為lvs調度器(40網段使用的都是僅主機模式,168網段使用橋接模式),3台服務器作為具體的web服務器(使用僅主機模式),我本是的宿主機就是作為web測試機器。

具體配置如下

機器名稱 ip配置 ip配置附加 備注信息
lvs調度器 192.168.40.200 192.168.168.200 有2個網卡地址,
RS1 192.168.40.201   和lvs的第一個ip地址,rs2,rs3屬於同一網段
RS2 192.168.40.202   和lvs的第一個ip地址,rs2,rs3屬於同一網段
RS3 192.168.40.203   和lvs的第一個ip地址,rs2,rs3屬於同一網段
宿主機   192.168.168.10 和lvs的第二個ip地址屬於同一網段

配置好上面的環境,確保同一個網段的主機可以相互ping的通。 這里都先關閉防火牆和selinux設置。

2.檢查操作系統支持lvs情況

[root@localhost ~]# grep -i 'vs' /boot/config-2.6.32-279.el6.i686      #有輸出說明支持,我們使用的rhel6,默認的編譯就有lvs模塊。

3.安裝ipvsadm工具

[root@localhost ~]# yum -y install ipvsadm

4.ipvsadm工具的簡單使用

ipvsadm:
    管理集群服務
        添加:-A -t|u|f service-address [-s scheduler]
            -t: TCP協議的集群 
            -u: UDP協議的集群
                service-address:     IP:PORT
            -f: FWM: 防火牆標記 
                service-address: Mark Number
        修改:-E
        刪除:-D -t|u|f service-address

        # ipvsadm -A -t 172.16.100.1:80 -s rr

    管理集群服務中的RS
        添加:-a -t|u|f service-address -r server-address [-g|i|m] [-w weight]
            -t|u|f service-address:事先定義好的某集群服務
            -r server-address: 某RS的地址,在NAT模型中,可使用IP:PORT實現端口映射;
            [-g|i|m]: LVS類型    
                -g: DR模型
                -i: TUN模型
                -m: NAT模型
            [-w weight]: 定義服務器權重
        修改:-e
        刪除:-d -t|u|f service-address -r server-address

        # ipvsadm -a -t 172.16.100.1:80 -r 192.168.10.8 -m 
        # ipvsadm -a -t 172.16.100.1:80 -r 192.168.10.9 -m
    查看
        -L|l
            -n: 數字格式顯示主機地址和端口
            --stats:統計數據
            --rate: 速率
            --timeout: 顯示tcp、tcpfin和udp的會話超時時長
            -c: 顯示當前的ipvs連接狀況

    刪除所有集群服務
        -C:清空ipvs規則
    保存規則
        -S 
        # ipvsadm -S > /path/to/somefile
    載入此前的規則:
        -R
        # ipvsadm -R < /path/form/somefile

 5.設置所有的RS服務器的網關為調度器的ip地址

[root@localhost ntpstats]# vim /etc/sysconfig/network-scripts/ifcfg-eth0
#修改網關為調度器的ip地址
GATEWAY=192.168.40.200
#三個rs服務器都需要設
確保在各個RS服務的路由信息的正確性
[root@localhost ~]# route
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
192.168.40.0    *               255.255.255.0   U     0      0        0 eth0
link-local      *               255.255.0.0     U     1002   0        0 eth0
default         192.168.40.200  0.0.0.0         UG    0      0        0 eth

6.給那個RS服務器安裝http服務並測試

[root@localhost ntpstats]# yum install httpd              #每個rs服務器都安裝httpd服務
[root@localhost ntpstats]# service httpd restart          #每個rs服務器都重新啟動
[root@localhost ntpstats]# echo rs1> /var/www/html/index.html  #給rs1服務器創建一個主頁,只在rs1上執行
[root@localhost ntpstats]# echo rs2> /var/www/html/index.html #給rs2服務器創建一個主頁,只在rs2上執行
[root@localhost ntpstats]# echo rs2> /var/www/html/index.html #給rs3服務器創建一個主頁,只在rs3上執行
#接下來使用在調度器lvs服務器先測試下各個頁面是否可以正常訪問
[root@localhost ~]# elinks -source 192.168.40.201
rs1
[root@localhost ~]# elinks -source 192.168.40.202
rs2
[root@localhost ~]# elinks -source 192.168.40.203
rs3

7.創建LVS

[root@localhost ~]# ipvsadm -A -t 192.168.168.200:80 -s rr              #創建一個集群服務,調度算法rr,
[root@localhost ~]# ipvsadm -a -t 192.168.168.200:80 -r 192.168.40.201 -m    #添加rs1 nat方式
[root@localhost ~]# ipvsadm -a -t 192.168.168.200:80 -r 192.168.40.202 -m    #添加rs2 nat方式
[root@localhost ~]# ipvsadm -a -t 192.168.168.200:80 -r 192.168.40.203 -m    #添加rs3 nat方式

 

8.打開ip轉發機制

調度器要能訪問168,40兩個網段的,需要打開ipforward功能。

[root@localhost ~]# echo 1 >/proc/sys/net/ipv4/ip_forward #打開ipv的ip轉發機制,當前生效
[root@localhost ~]# vim /etc/sysctl.conf 
#打開ipv的ip轉發機制,永久生效
net.ipv4.ip_forward = 1

9. 確保集群的時間不能太大

這里建議在調度器lvs上安裝ntp服務,其他RS服務器來同步時間

10.我們使用宿主機進行測試

瀏覽器輸入http://192.168.168.200,不斷刷新,就可以看到如下的三個圖片信息。測試成功后,就可以把三個RS服務器頁面做成一樣的啦。

宿主機測試量太小了。 我們直接在調度器上使用ab命令測試下

[root@localhost ~]# ab -n 10000 -c 200 http://192.168.168.200/index.html
[root@localhost ~]# ipvsadm -L -n --rate
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port                 CPS    InPPS   OutPPS    InBPS   OutBPS
  -> RemoteAddress:Port
TCP  192.168.168.200:80                168      838      837    60477    90073
  -> 192.168.40.201:80                  56      279      279    20154    30036
  -> 192.168.40.202:80                  56      280      278    20162    29991
  -> 192.168.40.203:80                  56      279      279    20160    30045

上面可以看到,3個RS的任務是基本一樣多的。

 


免責聲明!

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



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