LVS两段式介绍
ipvs:工作在内核空间,TCP/IP协议栈INPUT钩子函数上的框架(Linux2.5内核之后内置ipvs代码,LVS跟netfilter不能同时使用)。
ipvsadm:工作在用户空间,负责管理集群服务编写规则的命令行工具,需要手动安装。
1 |
$ yum install ipvsadm |
ipvsadm管理命令
一、管理集群服务
1)添加集群
1 |
ipvsadm -A -t|u|f service-address [-s scheduler] |
2)修改集群
1 |
ipvsadm -E -t|u|f service-address [-s scheduler] |
3)删除集群
1 |
ipvsadm -D -t|u|f service-address |
参数解释:
1 2 3 4 |
-t #TCP协议集群,如[IP:PORT] -u #UDP协议集群,如[IP:PORT] -f #FWM防火墙标记,如[MARK NUMBER] -s #调度算法,如[rr|wrr|sh|dh|lc|wlc|lblc|lblcr] |
使用示例:
1 2 3 4 5 6 7 8 |
# 添加一个VIP为172.29.32.205:80的集群,调度算法为wrr加权轮询; $ ipvsadm -A -t 172.29.32.205:80 -s wrr # 修改VIP的端口为8080; $ ipvsadm -E -t 172.29.32.205:8080 -s wrr # 删除集群; $ ipvsadm -D -t 172.29.32.205:80 |
二、管理集群中的RealServer
1)添加RealServer
1 |
ipvsadm -a -t|u|f service-address -r service-address [-g|-i|-m] [-w weight] |
2)修改RealServer
1 |
ipvsadm -e -t|u|f service-address -r service-address [-g|-i|-m] [-w weight] |
3)删除RealServer
1 |
ipvsadm -d -t|u|f service-address -r service-address |
参数解释:
1 2 3 4 5 6 7 8 |
-t|u|f service-address #这个地址是前面创建好的集群服务; -r service-address #定义RealServer地址,在NAT模式中可使用端口映射; -g #表示使用DR模型; -i #表示使用TUN模型; -m #表示使用NAT模型; -w #定义权重值,如果使用加权轮询,LVS会根据权限比例分配客户端连接请求; -p #定义tcp超时时间,默认为120秒; --set 900 120 300 #定义tcp/tcpfin/udp的超时时间,默认为900/120/300秒; |
使用示例:
1 2 3 4 5 6 7 8 |
# 添加一条RealServer,地址为172.29.32.201:80,调度模式为DR,权重为5; $ ipvsadm -a -t 172.29.32.205:80 -r 172.29.32.201:80 -g -w 5 # 修改RealServer条目的端口为8080; $ ipvsadm -e -t 172.29.32.205:80 -r 172.29.32.201:8080 -g -w 5 # 删除RealServer条目; $ ipvsadm -d -t 172.29.32.205:80 -r 172.29.32.201:80 |
三、查看集群状态
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
# 查看集群状态,包含RealServer条目; $ ipvsadm -L # 显示为数字格式,但必须配合-L一块使用且-L必须在-n前面,也可以合并使用,如-Ln; $ ipvsadm -Ln # 显示当前连接数; $ ipvsadm -Lnc # 显示统计数据 $ ipvsadm -Ln --stats # 显示速率; $ ipvsadm -Ln --rate # 显示tcp/tcpfin/udp的会话超时时长,默认是900、120/300; $ ipvsadm -Ln --timeout # 显示进程状态; $ ipvsadm -Ln --daemon # 对集群服务做排序默认升序; $ ipvsadm -Ln --sort |
四、清空所有集群服务
1 |
$ ipvsadm -C |
五、导入导出ipvs规则
1 2 3 4 5 |
# 导出ipvs规则; $ ipvsadm -S > /PATH # 导入ipvs规则; $ ipvsadm -R < /PATH |
六、查看ipvsadm版本号
1 |
$ ipvsadm --version |