负载均衡 ---- lvs-DR模式配置实例

添加虚拟 IP

[root@lvs-server ~]# yum -y install ipvsadm
[root@lvs-server ~]# ip addr add dev ens32 192.168.234.120/32
[root@lvs-server ~]# ip a
1: lo:  mtu 65536 qdisc noqueue state UNKNOWN qlen 1
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: ens32:  mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 00:0c:29:59:d0:61 brd ff:ff:ff:ff:ff:ff
    inet 192.168.234.101/24 brd 192.168.234.255 scope global ens32
       valid_lft forever preferred_lft forever
    inet 192.168.234.120/32 scope global ens32
       valid_lft forever preferred_lft forever
    inet6 fe80::20c:29ff:fe59:d061/64 scope link 
       valid_lft forever preferred_lft forever

ipvsadm参数的介绍

# -A --add-service #在服务器列表中新添加一条新的虚拟服务器记录
# -t #表示为tcp服务
-u #表示为udp服务
# -s --scheduler #使用的调度算法, rr | wrr | lc | wlc | lblb | lblcr | dh | sh | sed | nq 默认调度算法是 wlc
例:ipvsadm -A -t 192.168.1.2:80 -s wrr

# -a --add-server  #在服务器表中添加一条新的真实主机记录
# -t --tcp-service #说明虚拟服务器提供tcp服务
-u --udp-service #说明虚拟服务器提供udp服务
-r --real-server #真实服务器地址
-m --masquerading #指定LVS工作模式为NAT模式
-w --weight #真实服务器的权值
-g --gatewaying #指定LVS工作模式为直接路由器模式(也是LVS默认的模式)
-i --ip #指定LVS的工作模式为隧道模式
-p #会话保持时间,定义流量呗转到同一个realserver的会话存留时间
例:ipvsadm -a -t 192.168.1.2:80 -r 192.168.2.10:80 -m -w 1

-E -edit-service #编辑内核虚拟服务器表中的一条虚拟服务器记录。
# -D -delete-service #删除内核虚拟服务器表中的一条虚拟服务器记录。
-C -clear #清除内核虚拟服务器表中的所有记录。
-R -restore #恢复虚拟服务器规则
-S -save #保存虚拟服务器规则到标准输出,输出为-R 选项可读的格式
-e -edit-server #编辑一条虚拟服务器记录中的某条真实服务器记录
-d -delete-server #删除一条虚拟服务器记录中的某条真实服务器记录
-L|-l –list #显示内核虚拟服务器表

--numeric, -n:#以数字形式输出地址和端口号
--exact: #扩展信息,精确值 
--connection,-c: #当前IPVS连接输出
--stats: #统计信息
--rate : #输出速率信息

参数也可以从/proc/net/ip_vs*映射文件中查看
-Z –zero #虚拟服务表计数器清零(清空当前的连接数量等)

配置lvs

[root@lvs-server ~]# service ipvsadm start 
Redirecting to /bin/systemctl start ipvsadm.service
Job for ipvsadm.service failed because the control process exited with error code. See "systemctl status ipvsadm.service" and "journalctl -xe" for details.
[root@lvs-server ~]# ipvsadm -S > /etc/sysconfig/ipvsadm   # 保存虚拟服务的记录
[root@lvs-server ~]# service ipvsadm start     开启ipvsadm
Redirecting to /bin/systemctl start ipvsadm.service
[root@lvs-server ~]# ipvsadm -C    # 清空虚拟服务的记录
[root@lvs-server ~]# ipvsadm -A -t 192.168.234.120:80 -s rr    # 采用轮询的方式
[root@lvs-server ~]# ipvsadm -a -t 192.168.234.120:80 -r 192.168.234.102 -g   # -g  DR模式
[root@lvs-server ~]# ipvsadm -a -t 192.168.234.120:80 -r 192.168.234.103 -g 
[root@lvs-server ~]# ipvsadm -S >/etc/sysconfig/ipvsadm
[root@lvs-server ~]# 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.234.120:80 rr
  -> 192.168.234.102:80           Route   1      0          0         
  -> 192.168.234.103:80           Route   1      0          0

web1服务器的配置

[root@nginx-server1 ~]# ip addr add dev lo 192.168.234.120/32
[root@nginx-server1 ~]# ip a
1: lo:  mtu 65536 qdisc noqueue state UNKNOWN qlen 1
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet 192.168.234.120/32 scope global lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: ens32:  mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 00:0c:29:bd:a8:fb brd ff:ff:ff:ff:ff:ff
    inet 192.168.234.102/24 brd 192.168.234.255 scope global ens32
       valid_lft forever preferred_lft forever
    inet6 fe80::20c:29ff:febd:a8fb/64 scope link 
       valid_lft forever preferred_lft forever
[root@nginx-server1 ~]# echo 1 >/proc/sys/net/ipv4/conf/all/arp_ignore   #忽略arp广播
[root@nginx-server1 ~]# echo 2 >/proc/sys/net/ipv4/conf/all/arp_announce   # 匹配精确ip地址回包
[root@nginx-server1 ~]# systemctl restart nginx 
[root@nginx-server1 html]# wget www.taobao.com 

web2配置

[root@nginx-server2 html]# ip addr add dev lo 192.168.234.120/32 
[root@nginx-server2 html]# ip a
1: lo:  mtu 65536 qdisc noqueue state UNKNOWN qlen 1
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet 192.168.234.120/32 scope global lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: ens32:  mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 00:0c:29:88:c7:5d brd ff:ff:ff:ff:ff:ff
    inet 192.168.234.103/24 brd 192.168.234.255 scope global ens32
       valid_lft forever preferred_lft forever
    inet6 fe80::20c:29ff:fe88:c75d/64 scope link 
       valid_lft forever preferred_lft forever
[root@nginx-server2 ~]# echo 1 >/proc/sys/net/ipv4/conf/all/arp_ignore 
[root@nginx-server2 ~]# echo 2 >/proc/sys/net/ipv4/conf/all/arp_announce 
[root@nginx-server2 ~]# systemctl restart nginx 
[root@nginx-server1 html]# wget www.baidu.com

你可能感兴趣的:(负载均衡)