一.ipvsadm命令使用:
ipvsadm的用法和格式如下:ipvsadm -A|E|D|S-t|u|f virutal-service-address:port [-s scheduler] [-p [timeout]] [-M netmask]
ipvsadm -a|e -t|u|f service-address:port -r real-server-address:port -m -w [weight]
-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虚拟服务表计数器清零(清空当前的连接数量等)
-s——schedulerscheduler使用的调度算法,有这样几个选项rr|wrr|lc|wlc|lblc|lblcr|dh|sh|sed|nq,默认的调度算法是:wlc.
-p——persistent [timeout]持久稳固的服务。这个选项的意思是来自同一个客户的多次请求,将被同一台真实的服务器处理。timeout的默认值为300秒。-M——netmask netmask persistent granularity mask
-r真实的服务器[Real-Server:port]
-g指定LVS的工作模式为直接路由模式(也是LVS默认的模式)-i指定LVS的工作模式为隧道模式
-m指定LVS的工作模式为NAT模式
-w真实服务器的权值
-c显示LVS目前的连接
二.IPVS实现虚拟服务,以Web服务为例:
1.通过NAT实现虚拟服务器(LVS/NAT)实验环境:
实验环境:
Client:CIP:10.0.0.5/24
Director:VIP:10.0.0.1/24
DIP:192.168.0.1/24
Realserver1:RIP:192.168.0.10/24
Realserver2:RIP:192.168.0.20/24
实验过程:
Director上配置过程:
yum install ipvsadm -y (安装)
ipvsadm -L -n (查看)
echo 1 > /proc/sys/net/ipv4/ip_forward (打开路由转发功能)
cat /proc/sys/net/ipv4/ip_forward
service iptables stop
ipvsadm -A -t 10.0.0.1:80 -s rr
ipvsadm -a -t 10.0.0.1:80 -r 192.168.0.10:80 -m -w 2
ipvsadm -a -t 10.0.0.1:80 -r 192.168.0.20:80 -m -w 5
ipvsadm -L -n
realserver1和realserver2配置一样:
yum install httpd –y
service httpd restart
测试:
在浏览器中输入http://10.0.0.1进行实验效果的测试.
2.通过直接路由实现虚拟服务器(LVS/DR)
实验环境:
Client:CIP:192.168.0.100/24
Director:VIP:192.168.0.210/32
DIP:192.168.0.1/24
Realserver1:RIP:192.168.0.222/24 VIP:192.168.0.210/32
Realserver2:RIP:192.168.0.223/24 VIP:192.168.0.210/32
实验过程:
IPVS配置:
Director上配置过程:
echo 1 > /proc/sys/net/ipv4/ip_forward
cat /proc/sys/net/ipv4/ip_forward
ipvsadm -C
ipvsadm -A -t 192.168.0.210:80 -s wlc
ipvsadm -a -t 192.168.0.210:80 -r 192.168.0.222 -w 1 -g
ipvsadm -a -t 192.168.0.210:80 -r 192.168.0.223 -w 3 -g
ipvsadm -L -n
在realserver1和realserver2配置两者一样:
echo 1 > /proc/sys/net/ipv4/conf/lo/arp_ignore
echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore
echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce
echo 2 > /proc/sys/net/ipv4/conf/lo/arp_announce
(或者直接将net.ipv4.conf.lo.arp_ignore = 1
net.ipv4.conf.all.arp_ignore = 1
net.ipv4.conf.lo.arp_announce = 2
net.ipv4.conf.all.arp_announce = 2
写入/etc/sysctl.conf中 )
ifconfig lo: 192.168.0.210 broadcast 192.168.0.210 netmask 255.255.255.255 up
route add -host 192.168.0.210 dev eth0
测试:在浏览器中输入http://192.168.0.210进行实验效果的测试.
PS:由于这些配置开机重启后会自动消失,为方便下次实验,可以直接写个脚本,执行脚本即可:
#!/bin/bash
VIP=192.168.0.210
cat >> /etc/sysctl.conf << EOF
net.ipv4.conf.lo.arp_ignore = 1
net.ipv4.conf.all.arp_ignore = 1
net.ipv4.conf.lo.arp_announce = 2
net.ipv4.conf.all.arp_announce = 2
EOF
ifconfig lo:0 $VIP broadcast $VIP netmask 255.255.255.255 up
route add -host $VIP dev lo:0