参考文档: http://www.linuxvirtualserver.org/Documents.html
LVS:linux virture server
常见的模式:
DR:(个人理解是当做负载均衡器)
-lvs 将 vip 解析成 RS 的物理地址
-RS 直接将信息发送给 cip(client ip)
NAT:(个人理解是当做反向代理)
- 进入的时候, 将 vip 解释成 rip(real ip)
- 出去的时候, 将 rip 解释成 vip
说明: 因为真正实现反向代理或者负载均衡是 ip_vs, 但是 ip_vs 是加载在 linux 的内核中, 不能直接操作, 所以需要 ipvsadm 进行管理,
ipvsadm 的命令和 iptables 很相似, 可以对照
测试结果: lvs 配置的端口必须与后端的服务的端口一致, 不能随便更改端口
查看 ipvsadm 帮助文档
man ipvsadm
1, 安装
- yum install ipvsadm.x86_64 -y
- rpm -ql ipvsadm
2, 将 ip_vs 加载到内核
- /sbin/ipvsadm
- lsmod |grep ip_vs
- ip_vs 141092 0
- nf_conntrack 133387 1 ip_vs
- libcrc32c 12644 3 sctp,ip_vs,nf_conntrack
- ln -s /usr/src/kernels/$(uname -r) /usr/src/linux
3, 在 lvs 机器添加一个 vip
ifconfig ens33:0 192.168.124.199/24 up
4, 在 lvs 机器创建一个负载均衡器:
ipvsadm -A -t 192.168.124.199:80 -s wrr -p 20
添加 RS 服务器:
- ipvsadm -a -t 192.168.124.199:80 -r 192.168.124.201:80 -g -w 1
- ipvsadm -a -t 192.168.124.199:80 -r 192.168.124.200:80 -g -w 1
查看配置情况:
- 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.124.199:81 wrr persistent 20
- -> 192.168.124.200:81 Route 1 0 0
- -> 192.168.124.201:81 Route 1 0 0
用 ipvsadm-save 的好处是可以保存到文件, 然后用 ipvsadm-restore 直接恢复
- ipvsadm-save -n
- -A -t 192.168.124.199:81 -s wrr -p 20
- -a -t 192.168.124.199:81 -r 192.168.124.200:81 -g -w 1
- -a -t 192.168.124.199:81 -r 192.168.124.201:81 -g -w 1
5, 在 RS 机器上添加 vip:
ip addr add 192.168.124.199/32 dev lo label lo:0
6, 手工在 RS 机器端抑制 ARP 响应
- cat>>/etc/sysctl.conf<<EOF
- net.ipv4.conf.all.arp_ignore = 1
- net.ipv4.conf.all.arp_announce = 2
- net.ipv4.conf.lo.arp_ignore = 1
- net.ipv4.conf.lo.arp_announce = 2
- EOF
- sysctl -p
来源: http://www.bubuko.com/infodetail-2717563.html