--------------------------------------
一、前言
二、原理
三、环境
四、配置
1.后端web服务器配置
2.前端LVS服务器配置
五、测试
六、ipvsadm常用命令
--------------------------------------
一、前言
LVS是Linux Virtual Server的简写,意即Linux虚拟服务器,是一个虚拟的服务器集群系统。本项目在1998年5月由章文嵩博士成立,是中国国内最早出现的自由软件项目之一。可伸缩网络服务的几种结构,它们都需要一个前端的负载调度器(或者多个进行主从备份)。我们先分析实现虚拟网络服务的主要技术,指出IP负载均衡技术是在负载调度器的实现技术中效率最高的。在已有的IP负载均衡技术中,主要有通过网络地址转换(Network Address Translation)将一组服务器构成一个高性能的、高可用的虚拟服务器,我们称之为VS/NAT技术(Virtual Server via Network Address Translation)。在分析VS/NAT的缺点和网络服务的非对称性的基础上,我们提出了通过IP隧道实现虚拟服务器的方法VS/TUN (Virtual Server via IP Tunneling),和通过直接路由实现虚拟服务器的方法VS/DR(Virtual Server via Direct Routing),它们可以极大地提高系统的伸缩性。VS/NAT、VS/TUN和VS/DR技术是LVS集群中实现的三种IP负载均衡技术。
二、LVS-NAT原理
三、环境
系统:CentOS6.4 32位
拓扑图
四、配置
1.后端web服务器配置(生产环境中web页面应该是一样的,为了测试,显示才不一致。)
1.1.web1配置
# setenforce 0 //关闭SELinux及防火墙 # service iptables stop # yum install httpd # echo "This is web1" >/var/www/html/index.html # service httpd start # ping 192.168.4.1 //需通
1.2.web2配置
# setenforce 0 //关闭SELinux及防火墙 # service iptables stop # yum install httpd # echo "This is web2" >/var/www/html/index.html # vim /etc/httpd/conf/httpd.conf Listen 800 //将80端口改为800端口 # service httpd start # ping 192.168.4.1 //需通
2.前端LVS服务器配置
2.1.使用轮询算法(rr)
# vim /etc/sysctl.conf 7 net.ipv4.ip_forward = 1 //开启路由转发功能 # route Destination Gateway Genmask Flags Metric Ref Use Iface 192.168.4.0 * 255.255.255.0 U 1 0 0 eth3 192.168.2.0 * 255.255.255.0 U 1 0 0 eth1 default 192.168.2.254 0.0.0.0 UG 0 0 0 eth1 # yum install ipvsadm //安装ipvs # ipvsadm -A -t 192.168.2.10:80 -s rr //指定算法为轮训 # ipvsadm -a -t 192.168.2.10:80 -r 192.168.4.100:80 -m //NAT 模式 # ipvsadm -a -t 192.168.2.10:80 -r 192.168.4.200:800 -m # ipvsadm -L -n IP Virtual Server version 1.2.1 (size=4096) Prot LocalAddress:Port Scheduler Flags -> RemoteAddress:Port Forward Weight ActiveConn InActConn TCP 192.168.2.10:80 rr -> 192.168.4.100:80 Masq 1 0 0 -> 192.168.4.200:800 Masq 1 0 0
测试结果(基本1:1)
# ipvsadm -L -n IP Virtual Server version 1.2.1 (size=4096) Prot LocalAddress:Port Scheduler Flags -> RemoteAddress:Port Forward Weight ActiveConn InActConn TCP 192.168.2.10:80 rr -> 192.168.4.100:80 Masq 1 0 12 -> 192.168.4.200:800 Masq 1 0 13
2.2.使用加权的轮询算法(wrr)
# ipvsadm -E -t 192.168.2.10:80 -s wrr //加权轮询算法 # ipvsadm -e -t 192.168.2.10:80 -r 192.168.4.200:800 -m -w 2 //权重设2 # ipvsadm -L -n IP Virtual Server version 1.2.1 (size=4096) Prot LocalAddress:Port Scheduler Flags -> RemoteAddress:Port Forward Weight ActiveConn InActConn TCP 192.168.2.10:80 wrr -> 192.168.4.100:80 Masq 1 0 0 -> 192.168.4.200:800 Masq 2 0 0
测试结果(基本1:2)
# ipvsadm -L -n IP Virtual Server version 1.2.1 (size=4096) Prot LocalAddress:Port Scheduler Flags -> RemoteAddress:Port Forward Weight ActiveConn InActConn TCP 192.168.2.10:80 wrr -> 192.168.4.100:80 Masq 1 0 7 -> 192.168.4.200:800 Masq 2 0 14
2.3.保存及应用
# service ipvsadm save //保存 ipvsadm: Saving IPVS table to /etc/sysconfig/ipvsadm: [ OK ] # vim /etc/sysconfig/ipvsadm //查看 1 -A -t 192.168.2.10:80 -s wrr 2 -a -t 192.168.2.10:80 -r 192.168.4.100:80 -m -w 1 3 -a -t 192.168.2.10:80 -r 192.168.4.200:800 -m -w 2 # ipvsadm -C //临时清除 # ipvsadm -L -n IP Virtual Server version 1.2.1 (size=4096) Prot LocalAddress:Port Scheduler Flags -> RemoteAddress:Port Forward Weight ActiveConn InActConn # service ipvsadm restart //重新应用 ipvsadm: Clearing the current IPVS table: [ OK ] ipvsadm: Unloading modules: [ OK ] ipvsadm: Clearing the current IPVS table: [ OK ] ipvsadm: Applying IPVS configuration: [ OK ] # ipvsadm -L -n IP Virtual Server version 1.2.1 (size=4096) Prot LocalAddress:Port Scheduler Flags -> RemoteAddress:Port Forward Weight ActiveConn InActConn TCP 192.168.2.10:80 wrr -> 192.168.4.100:80 Masq 1 0 0 -> 192.168.4.200:800 Masq 2 0 0
五、测试
客户机浏览器访问http://192.168.2.10即可。
六、ipvsadm常用命令
-A --add-service 在内核的虚拟服务器表中添加一条新的虚拟服务器记录。也就是增加一台新的虚拟服务器。
-E --edit-service 编辑内核虚拟服务器表中的一条虚拟服务器记录。
-D --delete-service 删除内核虚拟服务器表中的一条虚拟服务器记录。
-C --clear 清除内核虚拟服务器表中的所有记录。
-R --restore 恢复虚拟服务器规则
-S --save 保存虚拟服务器规则,输出为-R 选项可读的格式
-a --add-server 在内核虚拟服务器表的一条记录里添加一条新的真实服务器记录。也就是在一个虚拟服务器中增加一台新的真实服务器
-e --edit-server 编辑一条虚拟服务器记录中的某条真实服务器记录
-d --delete-server 删除一条虚拟服务器记录中的某条真实服务器记录
-L|-l --list 显示内核虚拟服务器表
-Z --zero 虚拟服务表计数器清零(清空当前的连接数量等)
-r --real-server server-address 真实的服务器[Real-Server:port]
-w --weight weight 真实服务器的权值
-m --masquerading 指定LVS 的工作模式为NAT模式
-g --gatewaying 指定LVS 的工作模式为直接路由模式(也是LVS 默认的模式)
-i --ipip 指定LVS 的工作模式为隧道模式
-t --tcp-service service-address 说明虚拟服务器提供的是tcp 的服务
[vip:port] or [real-server-ip:port]
-u --udp-service service-address 说明虚拟服务器提供的是udp 的服务
[vip:port] or [real-server-ip:port]
-f --fwmark-service fwmark 说明是经过iptables 标记过的服务类型。
-s --scheduler scheduler 使用的调度算法,有这样几个选项
rr|wrr|lc|wlc|lblc|lblcr|dh|sh|sed|nq
默认的调度算法是: wlc
-n --numeric 输出IP 地址和端口的数字形式
-h --help 显示帮助信息