开发者学堂课程【LVS负载均衡实战:LVS的DR模型实战应用】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/553
LVS的DR模型实战应用
内容介绍:
一、ipvsadm 命令
二、LVS
三、实验:多个集群服务在一个 VLAN 上调度
四、实验:实现单网络的 DR 的 LVS
五、总结
六、RS 和 VS 的配置脚本
一、 ipvsadm 命令
定义的调度算法 DH ,总往一个服务器调度,因为底层原理不同,ipvs 基于四成,内核级的识别不了 http 协议,而 url 是基于应用成的。
所以目标哈希基于访问目标地址,并不关心访问的是那个 url 路径,实际上 hash 时hash的是 vip 路径,并不是期望 hash 的 url 路径,像希望实现为hash(http://vip/test1.html),而实际hash(vip)要想实现 hash(url) 功能。
要实现应用层代理功能,指的是lvs,则此处lvs功能未实现,lvs 实现的是传输层以下的反向代理,调度功能,所以要使用nginx或则 haproxy 应用级高级反向代理服务器实现,可识别应用层协议及以下。
如集群LVS基于传输层(通用),而应用层(专用)是针对特定协议,自定义的请求模型分类,ipvs工具的使用,http包含nginx,httpd,haproxy没有提到LVS,因为LVS属于传输层以下,nginx,haproxy也属于传输层以下,但功能更强大,可以做到识别应用层协议。
工具的使用:
◆清空定义的所有内容: ipvsadm -C,清除策略,如:
[root@centos7 ~]#ipvsadm -C
[ root@centos7 ~] #ipvsadm -Ln
IP Virtual Server version 1.2.1 (size=4096 )
Prot LocalAddress:Port Scheduler Flags
-> RemoteAddress:Port Forward Weight ActiveConn InActConn
◆清空计数器: ipvsadm -Z [-t|u|f service-address],清空计数器重新0开始,如:
[ root@centos7 ~]#ipvsadm -Ln --stats
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Conns InPkts OutPkts InBytes OutBytes
-> RemoteAddress:Port
TCP 172.20.0.200:80 11770 70652 47106 4822599 5525034
-> 192.168.30.17 : 8080 0 0 0 0 0
-> 192.168.30.27: 80 11770 70652 47106 4822599 5525034
[ root@centos7 ~ ] #ipvsadm -Z
[ root@centos7 ~]#ipvsadm -Ln --stats
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Conns InPkts 0utPkts InBytes OutBytes
-> RemoteAddress:Port
TCP 172.20.0.200: 80 0 0 0 0 0
-> 192.168.30.17 : 8080 0 0 0 0 0
-> 192.168.30.27 :80 0 0 0 0 0
◆查看: ipvsadm -L[|I [options]
-- numeric, -n :以数字形式不解析输出地址和端口号,如下8080端口解析成webcache, 认为应该webcache用逗号。
遇到这种情况最好不要解析,解析出名字可能不正确:
[ root@centos7 ~ ] #ipvsadm -L
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
-> RemoteAddress:Port Forward Weight ActiveConn InActConn
TCP centos7. localdomain:http dh
-> 192. 168.30.17 :webcache Masq 1 0 0
-> 192.168.30.27:http Masq 1 0 0
[ root@centos7 ~] #ipvsadm -Ln
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
-> RemoteAddress:Port Forward Weight ActiveConn InActConn
TCP 172.20.0.200:80 dh
-> 192. 168.30.17 : 8080 Masq 1 0 0
-> 192. 168.30.27: 80 Masq 1 0 0
--exact :扩展信息,精确值,当达到一定量后会以兆,k显示
--connection , -c:当前IPVS连接输出情况,客户端地址,VIP,被调度到那个服务器上,如,
[ root@centos7 -]#ipvsadm -Ln --stats
IP Virtual Server version 1.2.1 (size=4096 )
Prot LocalAddress :Port Conns InPkts 0utPkts InBytes OutBytes
-> RemoteAddress:Port
TCP 172.20.0.200: 80 11764 70594 47075 4812063 5520344
-> 192. 168.30.17 :8080 0 0 0 0 0
-> 192.168.30.27:80 11764 70594 47075 4812063 5520344
--stats :统计信息,连接数Conns,传入数据包InPkts,输出数据报文OutPkts以包的个数为单位,以字节为单位输入输出InBytes 、outBytes,如:
[ root@centos7 ~]#ipvsadm -Ln --stats
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Conns InPkts OutPkts InBytes outBytes
-> RemoteAddress:Port
TCP 172.20.0.200:80 11764 70594 47075 4812063 5520344
-> 192.168.30.17 : 8080 0 0 0 0 0
-> 192.168.30.27 :80 11764 70594 47075 4812063 5520344
--rate : 输出速率信息。
每秒传入,传出数据包文个数InPPS OutPPS ,每秒传入,传出字节个数InBPS、OutBPS,如:
[ root@centos7 -]#ipvsadm -Ln -- rate
IP Virtual Server version 1.2.1 (size=4096 )
Prot LocalAddress:Port CPS InPPS OutPPS InBPS OutBPS
-> RemoteAddress: Port
TCP 172.20.0.200: 80 0 2 1 432 186
-> 192.168.30.17: 8080 0 0 0 0 0
-> 192.168.30.27:80 0 2 1 432 186
◆ipvs规则:
/proc/net/ip_vs,也是存放在内存中的,C0A81E1B:0050为十六进制地址,为用户看起更方便统一以十六进制显示,
如
[ root@centos7 -]#cat /proc/net/1p_vs
IP Virtual Server version 1.2.1 (Size=4096)
Prot LocalAddress:Port Scheduler Flags
> RemoteAddress:Port Forward Weight ActiveConn InActConn
TCP AC1400C8 :0050 dh
-> C0A81E1B:0050 Masq 1 0 211
-> C0A81E11: 1F90 Masq 1 0 0
◆ipvs连接: /proc/net/ip_ vs_conn
◆保存:
建议保存至/etc/sysconfig/ipvsadm,首先通过wlc变相定义http协议80端口,默认就是wlc,可以不写,带权重的最小连接。
[ root@centos7 ~]#ipvsadm -A -t 172.20.0.200:80
[root@centos7~]#ipvsadm -a -t 172.20.0.200:80 -r 192.168.30.17:8080 -m -w 3
[root@centos7~]#ipvsadm -a -t 172.20.0.200:80 -r 192.168.30.27 -m
[root@centos7 ~]#ipvsadm -Ln
IP Virtual Server version 1.2.1 (size= =4096 )
Prot LocalAddress:Port Scheduler Flags
->RemoteAddress:Port Forward Weight ActiveConn InActConn
TCP 172.20.0.206:80 wlc
-> 192. 168. 30.17 : 8080 Masq 3 0 0
-> 192.168.30.27:80 Masq 1 0 0
要想存住上面的策略,可以用ipvsadm-save,实际上命令本身只是显示出策略,并不是真正的保存,
如:
[ root@centos7 ~]#ipvsadm-save > /etc/sysconfig/ipvsadm
因为S后没加n阻止反向解析会报错,所以要加上n阻止反向解析,
如:
[ root@centos7 ~]#ipvsadm -C
[root@centos7 ~] #ipvsadm -A -t 172.20.0.200:80
[root@centos7~]#ipvsadm -a -t 172.20.0.200:80 -r 192.168.30.17 :8080 -m -w 3
[root@centos7~]#ipvsadm -a -t 172.20.0.200:80 -r 192.168.30.27 -m
[ root@centos7 ~ ]#ipvsadm - Sn
-A -t 172.20.0.200:80 -s wlc
-a -t 172.20.0.200:80 -r 192.168.30.17:8080 -m -w 3
-a -t 172.20.0.200:80 -r 192.168.30.27:80 -m -w 1
[ root@centos7 ~ ]#ipvsadm -Sn > /etc/sysconfig/ipvsadm
当这一步执行#systemct stop ipvsadm.service服务停止后文件才开始自动保存到路径
systemct| enable ipvsadm //重启机器后开机自动加载策略
◆重载:
ipvsadm-restore < /PATH/FROM/IPVSADM_FILE
ipvsadm -R < /PATH/FROM/IPVSADM_ FILE
systemct| restart ipvsadm.service