准备工作:
准备最少三台机器:
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