LVS安装和ipvsadm命令集
LVS 由2部分程序组成,包括 ipvs 和 ipvsadm。
1.ipvs(ip virtual server):一段代码工作在内核空间netfilter的PREROUTING后面,INPUT前面的框架,叫ipvs,是真正生效实现调度的代码。
2. ipvsadm:另外一段是工作在用户空间,叫ipvsadm,负责为ipvs内核框架编写规则,定义谁是集群服务,而谁是后端真实的服务器(Real Server)
【基本描述】
ipvsadm是linux下的LVS虚拟服务器的管理工具,LVS工作于内核空间,而ipvsadm则提供了用户空间的接口; 可使用yum安装或者从官网下载安装包源码安装,两种方式皆可 先检查是否已经安装ipvsadm [root@v_machine1 ~]# yum list installed | grep ipvsadm 若没有安装,则使用以下命令安装ipvsadm [root@v_machine1 ~]# yum -y install ipvsadm 规则保存工具:/usr/sbin/ipvsadm-save 规则重载工具:/usr/sbin/ipvsadm-restore 配置文件:/etc/sysconfig/ipvsadm-config
系统内核是否支持LVS grep -i -A 10 "IPVS" /boot/config-3.10.0-327.el7.x86_64
# IPVS transport protocol load balancing support IPVS传输协议负载平衡支持
CONFIG_IP_VS_PROTO_TCP=y #开启tcp
CONFIG_IP_VS_PROTO_UDP=y #开启udp
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
find /proc -name "arp_ignore"
【用法】
基本用法如下,分别用于设置虚拟服务算法和后端真实服务器 ipvsadm 选项 服务器地址 -s 算法 ipvsadm 选项 服务器地址 -r 真实服务器地址 [工作模式][权重]... 管理集群服务:ipvsadm -A|E|D -t|u|f service-address [-s scheduler] [-p [timeout]] 管理集群上的RS: ipvsadm -a|e|d -t|u|f service-address -r server-address [-g|i|m] [-w weight] 【命令选项】 -A 添加一个虚拟服务,使用ip地址、端口号、协议来唯一定义一个虚拟服务 -E 编辑一个虚拟服务 -D 删除一个虚拟服务 -C 清除所有的虚拟服务规则 -R 从标准输入中还原虚拟服务列表 -S 保存虚拟服务规则至标准输出,输出规则可使用-R选项还原 -L 显示虚拟服务列表 (Forward 四种模式 、 Weight 权重 、 ActiveConn 当前活跃的连接数 、 InActConn 当前不活跃的连接数) -Z 虚拟服务器列表计数器清零(清空当前连接数) -a 添加一台真实服务器 -e 编辑一台真实服务器 -d 减少一台真实服务器 -t 使用TCP服务,该参数后需加VIP主机与端口信息 -u 使用UDP服务,该参数后需加VIP主机与端口信息 -f firewall MARK,标记,一个数字 -s 指定lvs的调度算法(8种算法) -w 指定真实服务器权重 -r 设置真实服务器IP与端口 -g 设置lvs工作模式为DR直连路由(默认) -i 设置lvs工作模式为TUN隧道 -m 设置lvs工作模式为NAT地址转换模式 -c 连接状态,配和-L使用 -n 以数字形式显示IP端口 -p --persistent [timeout] 持久稳固的服务。这个选项的意思是来自同一个客户的多次请求,将被同一台真实的服务器处理。timeout 的默认值为300 秒 --stats 显示历史转发消息统计(累加值)ipvsadm -Ln --stats 1. Conns (connections scheduled) 已经转发过的连接数 2. InPkts (incoming packets) 入包个数 3. OutPkts (outgoing packets) 出包个数 4. InBytes (incoming bytes) 入流量(字节) 5. OutBytes (outgoing bytes) 出流量(字节) --rate 显示转发速率信息(瞬时值) ipvsadm -Ln --rate 1. CPS (current connection rate) 每秒连接数 2. InPPS (current in packet rate) 每秒的入包个数 3. OutPPS (current out packet rate) 每秒的出包个数 4. InBPS (current in byte rate) 每秒入流量(字节) 5. OutBPS (current out byte rate) 每秒入流量(字节) --sort 对虚拟服务器和真实服务器排序输出 --set tcp tcpfin udp 设置ipvs连接超时值,三个参数分别代表tcp会话超时时间、收到FIN包后tcp会话超时时间、udp超时时间 --timeout 显示tcp tcpfin udp的timeout值 --start-daemon 启动同步守护进程 --stop-daemon 停止同步守护进程 ipvs规则:/proc/net/ip_vs ipvsadm -Ln --stats ipvs连接:/proc/net/ip_vs_conn netstat -antlp
【示例】 添加虚拟服务,设置调度算法为轮询: [root@v_machine1 ~]# ipvsadm -A -t 192.168.237.131:80 -s rr [root@v_machine1 ~]# ipvsadm -Ln IP Virtual Server version 1.2.1 (size=4096) Prot LocalAddress:Port Scheduler Flags -> RemoteAddress:Port Forward Weight ActiveConn InActConn TCP 192.168.237.131:80 rr 让80端口请求通过NAT模式转发给两个后端真实服务器: [root@v_machine1 ~]# ipvsadm -a -t 192.168.237.131:80 -r 192.168.237.171:80 -m [root@v_machine1 ~]# ipvsadm -a -t 192.168.237.131:80 -r 192.168.237.172:80 -m [root@v_machine1 ~]# ipvsadm -Ln IP Virtual Server version 1.2.1 (size=4096) Prot LocalAddress:Port Scheduler Flags -> RemoteAddress:Port Forward Weight ActiveConn InActConn TCP 192.168.237.131:80 rr -> 192.168.237.171:80 Masq 1 0 0 -> 192.168.237.172:80 Masq 1 0 0 修改调度算法为加权轮询: [root@v_machine1 ~]# ipvsadm -E -t 192.168.237.131:80 -s wrr 规则表(保存)备份与还原: 默认添加的配置是没有保存。 [root@v_machine1 ~]#ipvsadm -S >/etc/sysconfig/ipvsadm # ipvsadm -Sn 建议使用这个,以数字形式显示IP端口 [root@v_machine1 ~]# cat /etc/sysconfig/ipvsadm #配置文件在这个路径是说明systemd/system/ipvsadm.service(rpm -ql ipvsadm查看)这个文件中有调用的路径。 -A -t v_machine1:http -s rr -a -t v_machine1:http -r 192.168.237.171:http -m -w 1 -a -t v_machine1:http -r 192.168.237.172:http -m -w 1 [root@v_machine1 ~]# ipvsadm -C [root@v_machine1 ~]# ipvsadm -L IP Virtual Server version 1.2.1 (size=4096) Prot LocalAddress:Port Scheduler Flags -> RemoteAddress:Port Forward Weight ActiveConn InActConn [root@v_machine1 ~]# ipvsadm -R < /etc/sysconfig/ipvsadm [root@v_machine1 ~]# ipvsadm -Ln IP Virtual Server version 1.2.1 (size=4096) Prot LocalAddress:Port Scheduler Flags -> RemoteAddress:Port Forward Weight ActiveConn InActConn TCP 192.168.237.131:80 rr -> 192.168.237.171:80 Masq 1 0 0 -> 192.168.237.172:80 Masq 1 0 0