准备工作:    

        准备最少三台机器:

        Directory :

         eth0【外网网卡】192.168.184.6  nat模式【出现的问题以及解决方案:原来是直接是NAT模式,发现不能连接网络,而和ip5lnmp的配置几乎相同,但是就是ping不同外网:最后的解决方案:

讲nat模式修改成了vmnet8,可以连接外网了。

        eth1  192.168.1.6

        注意事项,绝对不能配置默认网管啊,不然连接外网,一个主机,只能有一个外网。

      

        Realserver_ip3 

        eth0 :host_only模式:

        ip :192.168.1.3

        网关:192.168.1.6

        dns1 

        dns2配置一下,方便解析。

        同上:

        注意,在虚拟机的编辑,虚拟机网络编辑器那里的关于host_only的配置:

看看下面的子网是不是192.168.1.0 啊

        

        

        让局域网可以连接网络:

        nat转发表 【iptables nat表的路由转发】

        iptables -t -nat -A POSTROUTING  -s 192.168.1.0/24  -o eth0 -j MASQUERADE

        

 

    查看内网主机是否可以连接网络

 

2.开始配置关于lvs的负载均衡问题:

    先介绍几个概念:

    lb 就是负载均衡 load balance  也就是负载均衡

    lvs :是一个实现负载均衡的开源软件项目

    LVS架构从逻辑上可分为调度层(Director)、server集群层(Real server)和共享存储层

LVS可分为三种工作模式:  ( dr模式参考这篇文章  http://os.51cto.com/art/201105/264303.htm    这篇介绍的还是挺详细的: http://www.it165.net/admin/html/201401/2248.html )

 

 

下面开始配置:

【NAT模式】

三台服务器一台作为director, 两台作为real server
Director 有一个外网ip (192.168.184.6) 

一个内网ip(192.168.1.6), 

两个real server上只有内网ip(192.168.1.3)

(192.168.1.4) 

并且需要把两个real server的内网网关设置为director的内网ip(192.168.21.166)
vmware网络设置: http://www.apelearn.com/bbs/thread-10536-1-1.html Director上安装ipvsadm  yum install -y  ipvsadm
两个real server 上都安装httpd: yum install -y nginx
Direcotr 上 vim /usr/local/sbin/lvs_nat.sh //增加:
#! /bin/bash
# director 服务器上开启路由转发功能: 
echo 1 > /proc/sys/net/ipv4/ip_forward 
# 关闭icmp的重定向
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

# director 设置nat防火墙
iptables -t nat -F
iptables -t nat -X
iptables -t nat -A POSTROUTING -s 192.168.1.0/24  -j MASQUERADE
# director设置ipvsadm
IPVSADM='/sbin/ipvsadm'
$IPVSADM -C
$IPVSADM -A -t 192.168.184.6:80 -s lc -p 300
$IPVSADM -a -t 192.168.184.6:80 -r 192.168.1.3:80 -m -w 1
$IPVSADM -a -t 192.168.184.6:80 -r 192.168.1.4:80 -m -w 1

 

解读:

#! /bin/bash
# director 服务器上开启路由转发功能: 
echo 1 > /proc/sys/net/ipv4/ip_forward 【打开路由转发】
# 关闭icmp的重定向
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

# director 设置nat防火墙
iptables -t nat -F
iptables -t nat -X
iptables -t nat -A POSTROUTING -s 192.168.21.0/24  -j MASQUERADE

【nat表, 中POSTROUTING链 来自192.168.21.0/24的包转发】
# director设置ipvsadm
IPVSADM='/sbin/ipvsadm'
$IPVSADM -C
$IPVSADM -A -t 192.168.31.166:80 -s lc -p 300   【-A -t 增加一个外网的ip 】[-s 表示算法]

【-p ,将一个请求一直转发到这个realserver机器上去】
$IPVSADM -a -t 192.168.31.166:80 -r 192.168.21.100:80 -m -w 1

【-a -t 增加一个内网的ip】
$IPVSADM -a -t 192.168.31.166:80 -r 192.168.21.101:80 -m -w 1

【-w 表示权重】

[-m :就是表示 MASQUERADE 伪装IP】
 

然后直接运行这个脚本就可以完成lvs/nat的配置了: 
/bin/bash /usr/local/sbin/lvs_nat.sh 【Directory】

运行脚本之后,执行命令:

    ipvsadm -l 

    或者ipvsadm -ln

    

由于是nat模式,所以,数据包【处理结果】还是要通过directory的网管ip进行转发出去

    所以,网管要配置directory的内网ip 

    GATEWAY=192.168.1.6

    
通过浏览器测试两台机器上的web内容,为了区分开,我们可以把nginx的默认页修改一下:
rs1上: echo "rs1rs1" >/usr/share/nginx/html/index.html
rs2上: echo "rs2rs2" >/usr/share/nginx/html/index.html