具体原理请查看我的博客LVS原理:贴出拓扑图

linux LVS-NAT 实践_LVS

       说明一点 如果有朋友要做实验的又没有公网ip,又要动手做的。鼓励下!接着往下看

ip规划:

   lvs:        eth1    172.168.11.12(我随便设置的一个公网ip)

                eth0    192.168.11.50(私网ip)

   real server1 eth0    192.168.11.252(私网ip)

   real server2 eth0    192.168.11.253(私网ip)


一、首先配置ip地址

   这里我就贴下配置文件说明下:

   LVS调度器:

[root@LVS ~]# more /etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE="eth0"
BOOTPROTO="static"
DNS1="8.8.8.8"
GATEWAY="192.168.11.1"
HWADDR="00:0C:29:FA:76:E3"
IPV6INIT="yes"
MTU="1500"
NM_CONTROLLED="yes"
ONBOOT="yes"
TYPE="Ethernet"
NETMASK=255.255.255.0
IPADDR=192.168.11.50


[root@LVS ~]# more /etc/sysconfig/network-scripts/ifcfg-eth1
DEVICE="eth1"
BOOTPROTO="static"
HWADDR="00:0C:29:FA:76:ED"
NM_CONTROLLED="yes"
ONBOOT="yes"
TYPE="Ethernet"
IPADDR=172.168.11.12
NETMASK=255.255.255.0

注意此处配置没有网关,所以不用配置网关,测试时只需要测试服务器和这个ip在同一个网段。

线上服务器必须配置网关。

在LVS上相互ping下各自ip看能互通不!如果不通表示没有开启路由管道功能,设置内核ip转发,具体参考步骤二。


测试机器windows ip设置

linux LVS-NAT 实践_LVS_02

这里也不要设置网关 ,也没有网关。测试机和LVS就可以通过交换机通信了。测试下相互ping对方看是否有问题。


real server1

[root@WEB1 ~]# more /etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE="eth0"
BOOTPROTO="static"
DNS1="8.8.8.8"
GATEWAY="192.168.11.50"
HWADDR="00:0C:29:64:A9:70"
IPV6INIT="yes"
MTU="1500"
NM_CONTROLLED="yes"
ONBOOT="yes"
TYPE="Ethernet"
NETMASK=255.255.255.0
IPADDR=192.168.11.252

注意此处网关应该设置为LVS调度器私网ip,如果不设置网关,服务器响应用户的报文是不知道如何路由的。


real server2

[root@WEB2 ~]#  more /etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE="eth0"
BOOTPROTO="static"
DNS1="8.8.8.8"
GATEWAY="192.168.11.50"
HWADDR="00:0C:29:15:29:29"
IPV6INIT="yes"
MTU="1500"
NM_CONTROLLED="yes"
ONBOOT="yes"
TYPE="Ethernet"
IPADDR=192.168.11.253
NETMASK=255.255.255.0

同样网关设置为lvs调度器私网ip


二、设置LVS调度器

1,首先开启ip转发

[root@LVS ~]# grep -v ^# /etc/sysctl.conf |grep -v ^$
net.ipv4.ip_forward = 1    默认为0,不开启  设置为1,开启状态 如果没有加入即可。

[root@bs-p_w_picpath1 ~]# sysctl -p|grep ip_forward

net.ipv4.ip_forward = 1


2,设置ipvsadm转发:

   首先验证有无ipvsadm工具

如果没有请使用

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


建立脚本


[root@LVS ~]# more ipvs.sh
#!/bin/bash

ipvsadm -C                                             #清除之前所有的转发规则
ipvsadm -At 172.168.11.12:80 -s rr      #增加一种算法对于172.168.11.12:80的报文,rr为轮询
ipvsadm -at 172.168.11.12:80 -r 192.168.11.253:80 -m    #增加一个realserver
ipvsadm -at 172.168.11.12:80 -r 192.168.11.252:80 -m    #再增加一个realserver
ipvsadm                                                #打印当前的ipvsadm规则


注意这里的-m的含义

-g, --gatewaying  Use gatewaying (direct routing). This is the default.
-i, --ipip  Use ipip encapsulation (tunneling).
-m, --masquerading  Use masquerading (network access translation, or NAT).

使用的什么模式。更多参数,参考man ipvsadm。

[root@LVS ~]# bash ipvs.sh


IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
 -> RemoteAddress:Port           Forward Weight ActiveConn InActConn
TCP  ACA80B0C.ipt.aol.com:http rr
 -> 192.168.11.252:http          Masq    1      0          0        
 -> 192.168.11.253:http          Masq    1      0          0


现在可以开始测试了。注意如果你提前修改了windows的ip是不能通过网络连接虚拟机的。这个就自己想办法了,有问题可以联系我。

linux LVS-NAT 实践_linux_03

linux LVS-NAT 实践_LVS_04