一、LVS安装
1、查看内核是否支持ipvs
[root@localhost ~]# grep -i ‘ipvs‘ /boot/config-2.6.32-573.el6.x86_64 # IPVS transport protocol load balancing support # IPVS scheduler # IPVS application helper [root@localhost ~]# grep -i ‘ipvs‘ -A 10 /boot/config-2.6.32-573.el6.x86_64 # IPVS transport protocol load balancing support # CONFIG_IP_VS_PROTO_TCP=y CONFIG_IP_VS_PROTO_UDP=y CONFIG_IP_VS_PROTO_AH_ESP=y CONFIG_IP_VS_PROTO_ESP=y CONFIG_IP_VS_PROTO_AH=y CONFIG_IP_VS_PROTO_SCTP=y # # IPVS scheduler # CONFIG_IP_VS_RR=m CONFIG_IP_VS_WRR=m CONFIG_IP_VS_LC=m CONFIG_IP_VS_WLC=m CONFIG_IP_VS_LBLC=m CONFIG_IP_VS_LBLCR=m CONFIG_IP_VS_DH=m CONFIG_IP_VS_SH=m CONFIG_IP_VS_SED=m -- # IPVS application helper # CONFIG_IP_VS_FTP=m CONFIG_IP_VS_PE_SIP=m # # IP: Netfilter Configuration # CONFIG_NF_DEFRAG_IPV4=m CONFIG_NF_CONNTRACK_IPV4=m # CONFIG_NF_CONNTRACK_PROC_COMPAT is not set [root@localhost ~]# uname -a Linux localhost.localdomain 2.6.32-573.el6.x86_64 #1 SMP Thu Jul 23 15:44:03 UTC 2015 x86_64 x86_64 x86_64 GNU/Linux
注意:2.5版本后的内核已经默认支持IPVS
2、安装ipvsadm
[root@localhost ~]# yum install -y ipvsadm [root@localhost ~]# rpm -ql ipvsadm /etc/rc.d/init.d/ipvsadm /etc/sysconfig/ipvsadm-config /sbin/ipvsadm /sbin/ipvsadm-restore /sbin/ipvsadm-save /usr/share/doc/ipvsadm-1.26 /usr/share/doc/ipvsadm-1.26/README /usr/share/man/man8/ipvsadm-restore.8.gz /usr/share/man/man8/ipvsadm-save.8.gz /usr/share/man/man8/ipvsadm.8.gz
3、ipvsadm命令的用法
管理集群服务:创建、修改、删除
管理集群服务的RS:添加、修改、移除
查看:统计数据、速率
1)管理集群服务
创建或修改:ipvsadm -A|E -t|u|f service-address [-s scheduler]
-A:添加
-E:修改
-t: 承载的应用层协议为基于TCP协议提供服务的协议;其server-address的格式为“VIP:PORT”例如:“192.168.100.30:80”
-f: 承载的应用层协议为基于TCP或UDP协议提供服务的协议,但此类报文经过iptables/netfilter打标记,即防火墙标记:其server-address的格式为“FWM”;例如:“10”
-s: scheduler 指明调度算法;默认为WLC
[root@localhost ~]# ipvsadm -A -t 172.16.100.30:80 [root@localhost ~]# ipvsadm -l IP Virtual Server version 1.2.1 (size=4096) Prot LocalAddress:Port Scheduler Flags -> RemoteAddress:Port Forward Weight ActiveConn InActConn TCP 172.16.100.30:http wlc [root@localhost ~]#
删除:ipvsadm -D -t|u|f service-address
查看:ipvsadm -l|L
[root@localhost ~]# ipvsadm -D -t 172.16.100.30:80 [root@localhost ~]# ipvsadm -l IP Virtual Server version 1.2.1 (size=4096) Prot LocalAddress:Port Scheduler Flags -> RemoteAddress:Port Forward Weight ActiveConn InActConn [root@localhost ~]#
2)管理集群上的RS
添加或修改:ipvsadm -a|e -t|u|f service-address -r server-address [-g|i|m] [-w weight]
-r server-address: 指明RS,server-address格式一般为“IP[:PORT]”;注意:只有支持端口映射的LVS类型才应该此处显式定义端口;例如:-r 192.168.100.10:8080
[-g|i|m]: 指明lvs类型;省略时默认为dr类型
-g: gateway,意为dr类型
-i:ipip,意为tun类型
-m: masquerade,意为nat类型
[-w weight]:当前RS的权重
注意:仅对于支持加权调度的scheduler才有意义
[root@localhost ~]# ipvsadm -a -t 192.168.100.30:80 -r 172.16.100.10 -m -w 2 [root@localhost ~]# ipvsadm -a -t 192.168.100.30:80 -r 192.168.100.20 -m -w 5 [root@localhost ~]# ipvsadm -l IP Virtual Server version 1.2.1 (size=4096) Prot LocalAddress:Port Scheduler Flags -> RemoteAddress:Port Forward Weight ActiveConn InActConn TCP 192.168.100.30:http wlc -> 172.16.100.10:http Masq 2 0 0 -> 192.168.100.10:http Masq 2 0 0 -> 192.168.100.20:http Masq 5 0 0 [root@localhost ~]#
删除:ipvsadm -d -t|u|f service-address -r server-address
清空所有集群服务的定义:ipvsadm -C
保存集群服务及RS的定义:
ipvsadm -S > /etc/sysconfig/ipvsadm
ipvsadm-save > /etc/sysconfig/ipvsadm
service ipvsadm save
[root@localhost ~]# cat /etc/sysconfig/ipvsadm cat: /etc/sysconfig/ipvsadm: No such file or directory [root@localhost ~]# ipvsadm -S -A -t 192.168.100.30:http -s wlc -a -t 192.168.100.30:http -r 172.16.100.10:http -m -w 2 -a -t 192.168.100.30:http -r 192.168.100.10:http -m -w 2 -a -t 192.168.100.30:http -r 192.168.100.20:http -m -w 5 [root@localhost ~]# cat /etc/sysconfig/ipvsadm cat: /etc/sysconfig/ipvsadm: No such file or directory [root@localhost ~]# service ipvsadm save ipvsadm: Saving IPVS table to /etc/sysconfig/ipvsadm: [ OK ] [root@localhost ~]# cat /etc/sysconfig/ipvsadm -A -t 192.168.100.30:80 -s wlc -a -t 192.168.100.30:80 -r 172.16.100.10:80 -m -w 2 -a -t 192.168.100.30:80 -r 192.168.100.10:80 -m -w 2 -a -t 192.168.100.30:80 -r 192.168.100.20:80 -m -w 5 [root@localhost ~]#
恢复集群服务及RS的定义:
ipvsadm -R < /etc/sysconfig/ipvsadm
ipvsadm-restore < /etc/sysconfig/ipvsadm
service ipvsadm restart
[root@localhost ~]# ipvsadm -C [root@localhost ~]# ipvsadm -l IP Virtual Server version 1.2.1 (size=4096) Prot LocalAddress:Port Scheduler Flags -> RemoteAddress:Port Forward Weight ActiveConn InActConn [root@localhost ~]# cat /etc/sysconfig/ipvsadm -A -t 192.168.100.30:80 -s wlc -a -t 192.168.100.30:80 -r 172.16.100.10:80 -m -w 2 -a -t 192.168.100.30:80 -r 192.168.100.10:80 -m -w 2 -a -t 192.168.100.30:80 -r 192.168.100.20:80 -m -w 5 [root@localhost ~]# ipvsadm -R < /etc/sysconfig/ipvsadm [root@localhost ~]# ipvsadm -l IP Virtual Server version 1.2.1 (size=4096) Prot LocalAddress:Port Scheduler Flags -> RemoteAddress:Port Forward Weight ActiveConn InActConn TCP 192.168.100.30:http wlc -> 172.16.100.10:http Masq 2 0 0 -> 192.168.100.10:http Masq 2 0 0 -> 192.168.100.20:http Masq 5 0 0 [root@localhost ~]#
3)查看规则
ipvsadm -l|L [options]
-c: 列出当前所有connection
--stats: 列出统计数据
--rates: 列出速率
-n|--numeric: 数字格式显示IP及端口,不作反解
--exact:精确值
[root@localhost ~]# ipvsadm -l -c IPVS connection entries pro expire state source virtual destination [root@localhost ~]# curl http://192.168.100.30 curl: (7) couldn‘t connect to host [root@localhost ~]# curl http://192.168.100.30 curl: (7) couldn‘t connect to host [root@localhost ~]# ipvsadm -l -c IPVS connection entries pro expire state source virtual destination TCP 00:08 CLOSE 192.168.100.30:50227 192.168.100.30:http 192.168.100.10:http TCP 00:07 CLOSE 192.168.100.30:50226 192.168.100.30:http 192.168.100.20:http [root@localhost ~]# ipvsadm -l --stats IP Virtual Server version 1.2.1 (size=4096) Prot LocalAddress:Port Conns InPkts OutPkts InBytes OutBytes -> RemoteAddress:Port TCP 192.168.100.30:http 3 3 3 180 120 -> 172.16.100.10:http 0 0 0 0 0 -> 192.168.100.10:http 1 1 1 60 40 -> 192.168.100.20:http 2 2 2 120 80 [root@localhost ~]# ipvsadm -l --rate IP Virtual Server version 1.2.1 (size=4096) Prot LocalAddress:Port CPS InPPS OutPPS InBPS OutBPS -> RemoteAddress:Port TCP 192.168.100.30:http 0 0 0 0 0 -> 172.16.100.10:http 0 0 0 0 0 -> 192.168.100.10:http 0 0 0 0 0 -> 192.168.100.20:http 0 0 0 0 0
4)清空计数器
ipvsadm -Z [-t|u|f service-address]
二、实战案例
1、LVS-nat类型Direcor实现
1)实验环境:
OS:CentOS6.7
VIP:192.168.100.30
CIP:192.168.100.8 (windows)
DIP:192.168.200.10
R1IP:192.168.200.20
R2IP:192.168.200.30
原文:http://xiexiaojun.blog.51cto.com/2305291/1703611