一.ipvsadm命令使用:

ipvsadm 的用法和格式如下:ipvsadm -A|E|D|S -t|u|f virutal-service-addressport [-s scheduler] [-p [timeout]] [-M netmask]

ipvsadm -a|e -t|u|f service-addressport -r real-server-addressport -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 ——scheduler scheduler 使用的调度算法,有这样几个选项rr|wrr|lc|wlc|lblc|lblcr|dh|sh|sed|nq,默认的调度算法是: wlc.

-p ——persistent [timeout] 持久稳固的服务。这个选项的意思是来自同一个客户的多次请求,将被同一台真实的服务器处理。timeout 的默认值为300 秒。
-M
——netmask netmask persistent granularity mask

-r 真实的服务器[Real-Serverport]

-g  指定LVS 的工作模式为直接路由模式(也是LVS 默认的模式)
-i 
指定LVS 的工作模式为隧道模式

-m 指定LVS 的工作模式为NAT 模式

-w  真实服务器的权值

-c 显示LVS 目前的连接

 

二.IPVS实现虚拟服务,以Web服务为例:

1.通过NAT实现虚拟服务器(LVS/NAT实验环境:

实验环境:

Client: CIP10.0.0.5/24

Director:VIP10.0.0.1/24

DIP:192.168.0.1/24

Realserver1: RIP192.168.0.10/24

Realserver2: RIP192.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

realserver1realserver2配置一样:

yum install httpd –y

service httpd restart

测试:

在浏览器中输入http://10.0.0.1进行实验效果的测试.

 

2.通过直接路由实现虚拟服务器(LVS/DR

实验环境:

Client: CIP192.168.0.100/24

Director:VIP192.168.0.210/32

DIP:192.168.0.1/24

Realserver1: RIP192.168.0.222/24 VIP192.168.0.210/32

Realserver2: RIP192.168.0.223/24 VIP192.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

在realserver1realserver2配置两者一样:

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