lvs环境搭建
lvs是linux virtual server的缩写,顾名思义:linux虚拟服务器,是一个虚拟的服务器集群系统。
作用:负载均衡。当多个客户端同时并发请求服务器的时候,将请求按一定规则分发给不同的真实服务器。
lvs有3种模式:nat模式、ip隧道模式、dr模式。 ip隧道模式基本已经被dr模式取代,所以只需要了解nat模式和dr模式即可。
nat模式和dr模式的优缺点
nat模式优点:只需要一个外网ip,供lvs使用,lvs与真实服务器通过内网连接(tcp/ip)
nat模式缺点:请求和响应都需要通过lvs服务器,如果真实服务器超过20个或更多时,lvs服务器将成为系统瓶颈。(对中小型企业无影响)
dr模式优点:lvs服务器只负责分发请求、不负责响应(响应是通过真实服务器直接返回给客户端),部署再多的真实服务器,lvs服务器也不会成为瓶颈。
缺点:要求负载均衡器的网卡必须与物理网卡在一个物理段上。
本文以nat模式为例配置lvs环境。
NAT(Network Address Translation)是一种外网和内网地址映射的技术。
NAT模式下,网络报的进出都要经过LVS的处理。LVS需要作为RS的网关。
RS处理完,返回响应时,源IP是RS IP,目标IP是客户端的IP。
这时RS的包通过网关(LVS)中转,LVS会做源地址转换(SNAT),将包的源地址改为VIP,这样,这个包对客户端看起来就仿佛是LVS直接返回给它的。客户端无法感知到后端RS的存在。
虚拟机搭建
我使用了一台linux client、一台lvs服务器、两台linux web服务器作为本次测试的环境。
虚拟机VirtualBox 4.3.24 linux系统 centos 6.3
首先将lvs服务器桥接连通网络,然后使用yum命令安装lvs相关软件
1 |
yum install -y ipvsadm* |
然后分别设置4台虚拟机的网卡
linux client
lvs服务器需要配置2个网卡,网卡1供外网访问,网卡2内网连接web服务器
web1服务器
web2服务器
接着,分别配置4台虚拟机
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 |
//配置lvs服务器 //开启lvs服务器的路由功能 echo 1 > /proc/sys/net/ipv4/ip_forward //设置两块网卡的ip及子网掩码 ifconfig eth1 8.8.8.8 netmask 255.255.255.0 ifconfig eth2 192.168.10.1 netmask 255.255.255.0 //编写lvs配置的shell脚本放在任意目录 #!/bin/bash #ipvs.sh //清理转换表 ipvsadm -C //增加带调度算法的转换表 t表示tcp s表示算法 rr是轮询模式 ipvsadm -At 8.8.8.8:80 -s rr //r表示真实服务器 m表示nat模式 ipvsadm -at 8.8.8.8:80 -r 192.168.10.2:80 -m ipvsadm -at 8.8.8.8:80 -r 192.168.10.3:80 -m ipvsadm -L -n //执行shell sh ipvs.sh //配置客户端 ifconfig eth1 8.8.8.2 netmask 255.255.255.0 //配置web1服务器 ifconfig eth1 192.168.10.2 netmask 255.255.255.0 //配置web2服务器 ifconfig eth1 192.168.10.3 netmask 255.255.255.0 //两台web服务器的lnmp环境都已配置完成 //分别在web目录放置index.php //分别输出 I am web1 和 I am web2 |
这里需要注意的是客户端ip与lvs服务器的外网ip必须在同一网段
两台web服务器的ip与lvs服务器的内网ip必须在同一网段
lvs服务器的外网ip与内网ip必须为不同网段
如何区分是否为同一网段:ip地址和子网掩码与运算,如果相同则为同一网段,反之则为不同网段
1 2 3 4 |
//为了测试能顺利进行,我把LVS服务器和2台web服务器的防火墙、selinux都关闭了并设置了网关 service iptables stop setenforce 0 route add default gw 192.168.10.1 |
至此,配置已全部完成
通过客户端浏览器访问8.8.8.8每强刷一次就会在两台web服务器中切换。
lvs理论请参考:
http://www.topthink.com/topic/4049.html#rd?sukey=39297060d6d3d5575308953957823c18f5a73e49de75d9efc8ac91c891ddaa173459806f0abbf4d44e676489280f52c6