内容简介:ipvsadm是用来配置、维护或者查看Linux内核当中virtual server table的一个工具, LVS(Linux virtual server)能基于一个集群当中的两个或者多个节点来创建弹性网络服务, 集群中的处于激活状态的节点能将服务请求重定向到一组实际提供服务的主机当中, 提供包括TCP和UDP两种协议, 三种数据包转发模式(NAT / tunneling / direct routing), 和八种负载均衡算法(round robin, weighted round robin, le
ipvsadm是用来配置、维护或者查看 Linux 内核当中virtual server table的一个工具, LVS(Linux virtual server)能基于一个集群当中的两个或者多个节点来创建弹性网络服务, 集群中的处于激活状态的节点能将服务请求重定向到一组实际提供服务的主机当中, 提供包括TCP和UDP两种协议, 三种数据包转发模式(NAT / tunneling / direct routing), 和八种负载均衡算法(round robin, weighted round robin, least-connection, weighted least-connection, locality-based least-connection, locality-based least-connection with replication, destination-hashing, and source-hashing).
使用方式
ipvsadm提供两种基本的使用格式, 中括号表示可选, 两种命令格式分别对应virtual server和real server
ipvsadm COMMOND [protocol] service-address [scheduling-method] [persistence options] 复制代码
或者
ipvsadm command [protocol] service-address server-address [packet-forwarding-method] [weight options] 复制代码
第一种命令格式用于配置虚拟服务(virtual service)和用于分配服务请求到真实服务器的算法, 另外一个可选项为用于持久化服务的持久化超时时间和网络掩码.
第二种命令格式用于配置与一个已经存在的虚拟服务器相关联的真实服务器, 当指定一个真实服务器时, 数据包转发方式和该真实服务器相对于该虚拟服务器下面的其他真实服务器的权重需要指定, 否则会采用默认值.
- 安装ipvsadm
[root@10-10-40-96 ~]# yum instal -y ipvsadm 复制代码
命令参数说明
惯例是大写表示用于virtual server, 小写表示用于real server
-A, --add-service 添加virtual server, virtual server必须唯一(IP+端口+协议用于区分一个唯一的虚拟服务) -E, --edit-service 编辑虚拟服务 -D, --delete-service 删除一个虚拟服务, 包括与之关联的真实服务器 -C, --clear 清空虚拟服务表 -R, --restore 通过标准输入恢复虚拟服务表(IPVS table) -S, --save 以可以通过-R参数恢复的格式导出虚拟服务表到标准输出 -a, --add-server 添加一个真实服务器到一个虚拟服务 -e, --edit-server 在一个虚拟服务当中编辑一个真实服务器 -d, --delete-server 从一个虚拟服务当中移除一个真实服务器 -L, -l, --list 列出虚拟服务表, 默认是列出所有虚拟服务表, 若需要列出某服务表, 后面指定服务地址即可 -Z, --zero 清零一个所有服务的数据包 / 字节 / 速率计数器 复制代码
示例
- 查看IPVS
[root@10-10-88-192 ~]# ipvsadm -L -n IP Virtual Server version 1.2.1 (size=4096) Prot LocalAddress:Port Scheduler Flags -> RemoteAddress:Port Forward Weight ActiveConn InActConn TCP 10.10.88.188:7480 wlc persistent 1800 -> 172.16.130.20:7480 Masq 1 0 0 [root@10-10-88-192 ~]# 复制代码
- 保存IPVS
默认是输出到标准输出, 可以重定向到文本保存, 方便后期再导入
[root@10-10-88-192 ~]# ipvsadm -S -n -A -t 10.10.88.188:7480 -s wlc -p 1800 -a -t 10.10.88.188:7480 -r 172.16.130.20:7480 -m -w 1 [root@10-10-88-192 ~]# ipvsadm -S -n > ipvs_info [root@10-10-88-192 ~]# 复制代码
- 清空IPVS
[root@10-10-88-192 ~]# ipvsadm -C [root@10-10-88-192 ~]# ipvsadm -L -n IP Virtual Server version 1.2.1 (size=4096) Prot LocalAddress:Port Scheduler Flags -> RemoteAddress:Port Forward Weight ActiveConn InActConn [root@10-10-88-192 ~]# 复制代码
- 恢复(restore)IPVS
注意: 默认是从标准输入进行恢复
[root@10-10-88-192 ~]# cat ipvs_info | ipvsadm -R [root@10-10-88-192 ~]# ipvsadm -L -n IP Virtual Server version 1.2.1 (size=4096) Prot LocalAddress:Port Scheduler Flags -> RemoteAddress:Port Forward Weight ActiveConn InActConn TCP 10.10.88.188:7480 wlc persistent 1800 -> 172.16.130.20:7480 Masq 1 0 0 [root@10-10-88-192 ~]# 复制代码
- 移除一个real server
[root@10-10-88-192 ~]# ipvsadm -d -t 10.10.88.188:7480 -r 172.16.130.20:7480 [root@10-10-88-192 ~]# ipvsadm -L -n IP Virtual Server version 1.2.1 (size=4096) Prot LocalAddress:Port Scheduler Flags -> RemoteAddress:Port Forward Weight ActiveConn InActConn TCP 10.10.88.188:7480 wlc persistent 1800 [root@10-10-88-192 ~]# 复制代码
注: 移除real server之后会先将destination(endpoint)移到trash(暂存垃圾桶), 过一段时间再删除, 若这个期间这个real server又可以访问了则会从trash中拿回来继续用, 具体说明见IPVS源码注释 https://elixir.bootlin.com/linux/v3.0/source/net/netfilter/ipvs/ip_vs_ctl.c
, 下面为打开IPVS debug模式(debug_level=8)后 dmesg -Hew
的输出
[Sep26 11:08] IPVS: Enter: ip_vs_del_dest, net/netfilter/ipvs/ip_vs_ctl.c line 1079 [ +0.000007] IPVS: Moving dest 172.16.130.20:7480 into trash, dest->refcnt=1 [ +0.000002] IPVS: Leave: ip_vs_del_dest, net/netfilter/ipvs/ip_vs_ctl.c line 1101 [ +11.076403] IPVS: Removing destination 0/172.16.130.20:7480 from trash 复制代码
- 添加一个real server
[root@10-10-88-192 ~]# ipvsadm -a -t 10.10.88.188:7480 -r 172.16.130.22:7480 -m [root@10-10-88-192 ~]# ipvsadm -L -n IP Virtual Server version 1.2.1 (size=4096) Prot LocalAddress:Port Scheduler Flags -> RemoteAddress:Port Forward Weight ActiveConn InActConn TCP 10.10.88.188:7480 wlc persistent 1800 -> 172.16.130.22:7480 Masq 1 0 0 [root@10-10-88-192 ~]# 复制代码
- 添加一个virtual server
[root@10-10-88-192 ~]# ipvsadm -A -t 10.10.88.189:7480 -s wlc -p 1800 [root@10-10-88-192 ~]# ipvsadm -L -n IP Virtual Server version 1.2.1 (size=4096) Prot LocalAddress:Port Scheduler Flags -> RemoteAddress:Port Forward Weight ActiveConn InActConn TCP 10.10.88.188:7480 wlc persistent 1800 -> 172.16.130.22:7480 Masq 1 0 0 TCP 10.10.88.189:7480 wlc persistent 1800 [root@10-10-88-192 ~]# 复制代码
- 移除一个virtual server
[root@10-10-88-192 ~]# ipvsadm -D -t 10.10.88.189:7480 [root@10-10-88-192 ~]# ipvsadm -L -n IP Virtual Server version 1.2.1 (size=4096) Prot LocalAddress:Port Scheduler Flags -> RemoteAddress:Port Forward Weight ActiveConn InActConn TCP 10.10.88.188:7480 wlc persistent 1800 -> 172.16.130.22:7480 Masq 1 0 0 复制代码
如果直接移除virtual server的话, 若有real server, real server也会一并移除掉
[root@10-10-88-192 ~]# ipvsadm -D -t 10.10.88.188:7480 [root@10-10-88-192 ~]# ipvsadm -L -n IP Virtual Server version 1.2.1 (size=4096) Prot LocalAddress:Port Scheduler Flags -> RemoteAddress:Port Forward Weight ActiveConn InActConn [root@10-10-88-192 ~]# 复制代码
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网
猜你喜欢:- redis-cluster(4)管理工具redis-trib.rb详解
- 版本管理工具及 Ruby 工具链环境
- 密码管理工具(命令行)
- 进程管理工具 Supervisor
- 进程管理工具 Supervisor
- api 接口管理工具
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。