1. 程式人生 > >LVS NAT 模型配置實例

LVS NAT 模型配置實例

lvs nat 模型配置實例

LVS 負載均衡

一、系統環境:

系統:Centos 6.5_64位


二、Director和Real Server的配置部署:

1臺director server:VIP/外網ip:192.168.121.141 內網ip:172.16.2.31

2臺real server:172.16.2.21 172.16.2.24 並且需要設置內網網關為director的內網ip:172.16.2.31

director server 2塊網卡配置:

一塊172.16.2.31 網卡為橋接模式

一塊192.168.121.141 網卡為nat模式.


最好先安裝好eple-release源

兩個 real server 上都安裝 nginx 服務
# yum install -y nginx
Director 上安裝 ipvsadm
# yum install -y ipvsadm


兩臺real server的網卡配置:

Real Servcer1--172.16.2.24主機網卡配置:

# cat /etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=eth0
HWADDR=00:0C:29:7F:32:0F
TYPE=Ethernet
UUID=2d67590f-694e-4491-9e8c-d7757ca7e5c0
ONBOOT=yes
NM_CONTROLLED=yes
BOOTPROTO=static
IPADDR=172.16.2.24
PREFIX=24
GATEWAY=172.16.2.31


Real Server2--172.16.2.21主機網卡配置:

# cat ifcfg-eth0
DEVICE=eth0
HWADDR=00:0C:29:F9:9B:A8
TYPE=Ethernet
UUID=12ad4433-399f-4df2-b3c7-62d78444fa0d
ONBOOT=yes
NM_CONTROLLED=yes
BOOTPROTO=static
IPADDR=172.16.2.21
PREFIX=24
GATEWAY=172.16.2.31


三、簡單了解Iptables規則:

iptables內置了4個表,即raw表、filter表、nat表和mangle表,分別用於實現包過濾,網絡地址轉換和包重構的功能。

主要用於網絡地址轉換NAT,該表可以實現一對一,一對多,多對多等NAT 工作,iptables就是使用該表實現共享上網的,NAT表包含了PREROUTING鏈(修改即將到來的數據包),POSTROUTING鏈(修改即將出去的數據包),OUTPUT鏈(修改路由之前本地生成的數據包)

iptables 參數:

-n:以數字的方式顯示ip,它會將ip直接顯示出來,如果不加-n,則會將ip反向解析成主機名。

-v:顯示詳細信息

-L:查看iptables規則列表

-s --source 源地址或子網> 指定數據包匹配的源地址

四、lvs/nat 配置:

LB集群是load balance 集群的簡寫,翻譯成中文就是負載均衡集群;

LVS是一個實現負載均衡集群的開源軟件項目;

LVS架構從邏輯上可分為調度層(Director)、server集群層(Real server)和共享存儲層;

LVS可分為三種工作模式:

NAT:(調度器將請求的目標ip即vip地址改為Real server的ip, 返回的數據包也經過調度器,調度器再把源地址修改為vip)

TUN:(調度器將請求來的數據包封裝加密通過ip隧道轉發到後端的real server上,而real server會直接把數據返回給客戶端,而不再經過調度器)

DR:(調度器將請求來的數據包的目標mac地址改為real server的mac地址,返回的時候也不經過調度器,直接返回給客戶端)

LVS的調度算法:

輪叫調度(Round Robin)(簡稱rr)

加權輪叫(Weighted Round Robin)(簡稱wrr)

最少鏈接(least connection)(lc)

加權最少鏈接(Weighted Least Connections)(wlc) 等等;


五、Director 調度器的配置:

#創建腳本並添加如下規則:

[[email protected] sbin]# cat /usr/local/sbin/lvs_nat.sh
#! /bin/bash
echo 1 > /proc/sys/net/ipv4/ip_forward
echo 0 > /proc/sys/net/ipv4/conf/all/send_redirects
echo 0 > /proc/sys/net/ipv4/conf/default/send_redirects
echo 0 > /proc/sys/net/ipv4/conf/eth0/send_redirects
echo 0 > /proc/sys/net/ipv4/conf/eth1/send_redirects
iptables -t nat -F
iptables -t nat -X
#MASQUERADE 改寫封包來源IP為防火墻的IP,可以指定port 對應的範圍,進行完此處理動作後,直接跳往下一個規則鏈(mangle:postrouting)。
iptables -t nat -A POSTROUTING -s 172.16.2.0/24  -j MASQUERADE
IPVSADM=‘/sbin/ipvsadm‘
$IPVSADM -C
$IPVSADM -A -t 192.168.121.141:80 -s wlc
$IPVSADM -a -t 192.168.121.141:80 -r 172.16.2.21:80 -m -w 2
$IPVSADM -a -t 192.168.121.141:80 -r 172.16.2.24:80 -m -w 1

#添加完成後運行次腳本就完成了lvs/nat的配置了.

#sh lvs_nat.sh

六、查看ipvs規則是否生效:

[[email protected] ~]# iptables -t nat -nvL
Chain PREROUTING (policy ACCEPT 171 packets, 10777 bytes)
 pkts bytes target     prot opt in     out     source               destination         
Chain POSTROUTING (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination         
    1   136 MASQUERADE  all  --  *      *       172.16.2.0/24        0.0.0.0/0           
Chain OUTPUT (policy ACCEPT 1 packets, 136 bytes)
 pkts bytes target     prot opt in     out     source               destination         

------------------------------------------------------------------------------------------ 
[[email protected] ~]# ipvsadm
ipvsadm          ipvsadm-restore  ipvsadm-save     

-----------------------------------------------------------------------------------------
[[email protected] ~]# ipvsadm -ln
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
  -> RemoteAddress:Port           Forward Weight ActiveConn InActConn
TCP  192.168.121.141:80 wlc
  -> 172.16.2.21:80               Masq    2      0          0         
  -> 172.16.2.24:80               Masq    1      0          0         
[[email protected] network-scripts]# /etc/init.d/nginx stop
Stopping nginx:                                            [  OK  ]

Nginx 下面可以直接放一個文件做測試,截圖丟失就不展示了.


本文出自 “螞蟻” 博客,請務必保留此出處http://215687833.blog.51cto.com/6724358/1942869

LVS NAT 模型配置實例