Linux教程

Linux 使用ipvsadm管理LVS

本文主要是介绍Linux 使用ipvsadm管理LVS,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
  • lvs是内核里面的功能,在内核中叫做ipvs

  • 用户空间使用ipvsadm这个工具包提供的工具来管理内核中的ipvs功能

ipvsadm 命令

ipvsadm核心功能:

  • 集群服务管理:增、删、改

  • 集群服务的RS管理:增、删、改

  • 查看

使用 ipvsadm 管理集群服务:增、改、删

增、修改:

ipvsadm -A|E -t|u|f service-address [-s scheduler] [-p [timeout]]

说明:

-A:表示新增
-E:表示修改

service-address:集群的地址(VIP:port)

-t|u|f:  # 指定这个vip端口使用的协议类型
 -t: TCP协议的端口,VIP:TCP_PORT 如: -t 10.0.0.100:80
    -u: UDP协议的端口,VIP:UDP_PORT 如:-u 10.0.0.100:80
    -f:firewall MARK,标记,一个数字

[-s scheduler]:指定集群的调度算法,默认为wlc

例如:表示创建了一个负载均衡集群,lvs的ip为10.0.0.100

ipvsadm -A -t 10.0.0.100:80 -s wrr

例如:修改lvs的调度算法为rr

[root@lvs ~]# ipvsadm -E -t 192.168.10.100:80 -s rr

[root@lvs ~]# ipvsadm -l
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
  -> RemoteAddress:Port           Forward Weight ActiveConn InActConn
TCP  lvs:http rr
  -> 10.0.0.7:http                Masq    1      0          0
  -> 10.0.0.17:http               Masq    1      0          0

删除:

ipvsadm -D -t|u|f service-address

说明:

-D:表示删除

使用 ipvsadm 管理集群上的RS:增、改、删

增、改:

ipvsadm -a|e -t|u|f service-address -r server-address [-g|i|m] [-w weight]

说明:

server-address: #在添加rs的时候,指定前面创建的集群地址
     rip[:port]  #如省略port,不作端口映射

-r: 后端服务器rs的RIP地址

选项:
lvs类型: #表示指定lvs使用的功能模式
    -g: gateway, dr类型,默认使用dr这种工作模式
    -i: ipip, tun类型
    -m: masquerade(伪装), nat类型

-w weight:权重 指定这个rs的权重

范例:新增rs到集群中

ipvsadm -a -t 10.0.0.100:80 -r 10.0.0.8:8080 -m -w 3

范例:修改rs的权重,默认为1

[root@lvs ~]# ipvsadm -e -t 192.168.10.100:80 -r 10.0.0.17 -m -w 3
[root@lvs ~]# ipvsadm -l
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
  -> RemoteAddress:Port           Forward Weight ActiveConn InActConn
TCP  lvs:http rr
  -> 10.0.0.7:http                Masq    1      0          0
  -> 10.0.0.17:http               Masq    3      0          0

删:

ipvsadm -d -t|u|f service-address -r server-address

清空定义的所有内容:

ipvsadm -C

信息查看:

ipvsadm -L|l [options]

-L:查看创建的集群信息

例如:查看集群的信息

[root@lvs ~]# ipvsadm -L
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
  -> RemoteAddress:Port           Forward Weight ActiveConn InActConn
TCP  lvs:http wrr
  -> 10.0.0.7:http                Masq    1      0          0
  -> 10.0.0.17:http               Masq    1      0          0
--numeric, -n:以数字形式输出地址和端口号

--exact:扩展信息,精确值

--connection,-c:当前IPVS连接输出,查看连接信息

--stats:统计信息

--rate :输出速率信息

ipvs规则:

/proc/net/ip_vs

例如:

#存放在内存中的 十六进制格式显示
[root@lvs ~]# cat /proc/net/ip_vs
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
  -> RemoteAddress:Port Forward Weight ActiveConn InActConn  #InActConn表示的是非活动的链接
TCP  C0A80A64:0050 wrr
  -> 0A000011:0050      Masq    1      0          0
  -> 0A000007:0050      Masq    1      0          0

ipvs连接:

/proc/net/ip_vs_conn

例如:

[root@lvs ~]# cat /proc/net/ip_vs_conn #存放的是pvs的连接信息 十六进制显示
Pro FromIP   FPrt ToIP     TPrt DestIP   DPrt State       Expires PEName PEData
TCP C0A80A06 A5B8 C0A80A64 0050 0A000011 0050 TIME_WAIT       115
TCP C0A80A06 A5B0 C0A80A64 0050 0A000011 0050 TIME_WAIT       113
TCP C0A80A06 A5C2 C0A80A64 0050 0A000007 0050 TIME_WAIT       117
TCP C0A80A06 A5C4 C0A80A64 0050 0A000011 0050 TIME_WAIT       117
TCP C0A80A06 A5BA C0A80A64 0050 0A000007 0050 TIME_WAIT       115
TCP C0A80A06 A5AC C0A80A64 0050 0A000011 0050 TIME_WAIT       112
TCP C0A80A06 A5AE C0A80A64 0050 0A000007 0050 TIME_WAIT       113
TCP C0A80A06 A5C0 C0A80A64 0050 0A000011 0050 TIME_WAIT       116
TCP C0A80A06 A5B6 C0A80A64 0050 0A000007 0050 TIME_WAIT       115
TCP C0A80A06 A5AA C0A80A64 0050 0A000007 0050 TIME_WAIT       106
TCP C0A80A06 A5C6 C0A80A64 0050 0A000007 0050 TIME_WAIT       118
TCP C0A80A06 A5B4 C0A80A64 0050 0A000011 0050 TIME_WAIT       114
TCP C0A80A06 A5BE C0A80A64 0050 0A000007 0050 TIME_WAIT       116
TCP C0A80A06 A5B2 C0A80A64 0050 0A000007 0050 TIME_WAIT       114
TCP C0A80A06 A5BC C0A80A64 0050 0A000011 0050 TIME_WAIT       116

lvs规则的保存:

规则默认是保存在内存中的。需要写入一个对应的文件,开启的时候重新加载他生效。

建议保存至/etc/sysconfig/ipvsadm
ipvsadm-save > /PATH/TO/IPVSADM_FILE

ipvsadm -S > /PATH/TO/IPVSADM_FILE

lvs的Uint服务:

[root@lvs ~]# cat /usr/lib/systemd/system/ipvsadm.service
[Unit]
Description=Initialise the Linux Virtual Server
After=syslog.target network.target

[Service]
Type=oneshot
ExecStart=/bin/bash -c "exec /sbin/ipvsadm-restore < /etc/sysconfig/ipvsadm"  #会自动保存规则至/etc/sysconfig/ipvsadm
ExecStop=/bin/bash -c "exec /sbin/ipvsadm-save -n > /etc/sysconfig/ipvsadm" #会自动加载/etc/sysconfig/ipvsadm中规则
ExecStop=/sbin/ipvsadm -C  #会自动清空内存中的规则
RemainAfterExit=yes

[Install]
WantedBy=multi-user.target
这篇关于Linux 使用ipvsadm管理LVS的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!