lvs
lvs NAT&DR模式实现http负载均衡
NAt模式实现http负载均衡
配置ip
[root@localhost network-scripts]# cat ifcfg-ens160
TYPE="Ethernet"
PROXY_METHOD="none"
BROWSER_ONLY="no"
BOOTPROTO="static"
DEFROUTE="yes"
IPV4_FAILURE_FATAL="no"
IPV6INIT="yes"
IPV6_AUTOCONF="yes"
IPV6_DEFROUTE="yes"
IPV6_FAILURE_FATAL="no"
IPV6_ADDR_GEN_MODE="stable-privacy"
NAME="ens160"
UUID="06596efa-e862-4d5a-964b-b7b81934c619"
DEVICE="ens160"
ONBOOT="yes"
IPADDR=192.168.145.169
IPADDR1=192.168.145.250
NETMASK=255.255.255.0
GATEWAY=192.168.145.2
DNS1=114.114.114.114
DNS2=8.8.8.8
[root@localhost network-scripts]# ifup ens160
开启转发功能
[root@DR ~]# vim /etc/sysctl.conf
net.ipv4.ip_forward = 1 添加此行
[root@DR ~]# sysctl -p
net.ipv4.ip_forward = 1
[root@web1 ~]# yum -y install httpd
[root@web1 ~]# echo "hello 192.168.145.170" > /usr/share/httpd/noindex/index.html
[root@web1 ~]# systemctl restart httpd
[root@web2 ~]# yum -y install httpd
[root@web2 ~]# echo "hello 192.168.145.171" > /usr/share/httpd/noindex/index.html
[root@web2 ~]# systemctl restart httpd
添加规则调度器
[root@DR ~]# yum -y install ipvsadm
[root@DR ~]# vim /etc/sysctl.conf
[root@DR ~]# sysctl -p
net.ipv4.ip_forward = 1
[root@DR ~]# ipvsadm -At 192.168.145.250:80 -s rr
[root@DR ~]# 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.145.250:80 rr
[root@DR ~]# ipvsadm -at 192.168.145.250:80 -r 192.168.145.170:80 -m
[root@DR ~]# ipvsadm -at 192.168.145.250:80 -r 192.168.145.171:80 -m
[root@DR ~]# curl 192.168.145.250
hello 192.168.145.171
[root@DR ~]# curl 192.168.145.250
hello 192.168.145.170
DR模式实现http负载均衡
DR
[root@DR ~]# ip addr add 192.168.145.250/24 dev ens160
[root@DR ~]# ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
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: ens160: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
link/ether 00:0c:29:8f:c6:65 brd ff:ff:ff:ff:ff:ff
inet 192.168.145.169/24 brd 192.168.145.255 scope global noprefixroute ens160
valid_lft forever preferred_lft forever
inet 192.168.136.250/24 scope global ens160
valid_lft forever preferred_lft forever
inet 192.168.145.250/24 scope global secondary ens160
valid_lft forever preferred_lft forever
inet6 fe80::ab8d:5119:40b9:63c2/64 scope link noprefixroute
valid_lft forever preferred_lft forever
3: virbr0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN group default qlen 1000
link/ether 52:54:00:b1:66:de brd ff:ff:ff:ff:ff:ff
inet 192.168.122.1/24 brd 192.168.122.255 scope global virbr0
valid_lft forever preferred_lft forever
4: virbr0-nic: <BROADCAST,MULTICAST> mtu 1500 qdisc fq_codel master virbr0 state DOWN group default qlen 1000
link/ether 52:54:00:b1:66:de brd ff:ff:ff:ff:ff:ff
web1
[root@web1 ~]# yum -y install httpd
[root@web1 ~]# echo "hello 192.168.145.170" > /usr/share/httpd/noindex/index.html
[root@web1 ~]# systemctl restart httpd
[root@web1 ~]# vim /etc/sysctl.conf
[root@web1 ~]# sysctl -p
net.ipv4.conf.all.arp_ignore = 1
net.ipv4.conf.all.arp_announce = 2
web2
[root@web2 ~]# yum -y install httpd
[root@web2 ~]# echo "hello 192.168.145.171" > /usr/share/httpd/noindex/index.html
[root@web2 ~]# systemctl restart httpd
[root@web2 ~]# vim /etc/sysctl.conf
[root@web2 ~]# sysctl -p
net.ipv4.conf.all.arp_ignore = 1
net.ipv4.conf.all.arp_announce = 2
web1
[root@web1 ~]# ip addr add 192.168.145.250/24 dev ens160
[root@web1 ~]# ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
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: ens160: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
link/ether 00:0c:29:db:25:c6 brd ff:ff:ff:ff:ff:ff
inet 192.168.145.170/24 brd 192.168.145.255 scope global noprefixroute ens160
valid_lft forever preferred_lft forever
inet 192.168.145.250/24 scope global secondary ens160
valid_lft forever preferred_lft forever
inet6 fe80::e585:e1ff:ce77:71b9/64 scope link dadfailed tentative noprefixroute
valid_lft forever preferred_lft forever
inet6 fe80::ab8d:5119:40b9:63c2/64 scope link dadfailed tentative noprefixroute
valid_lft forever preferred_lft forever
inet6 fe80::432b:5445:1770:9e38/64 scope link dadfailed tentative noprefixroute
valid_lft forever preferred_lft forever
3: virbr0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN group default qlen 1000
link/ether 52:54:00:b1:66:de brd ff:ff:ff:ff:ff:ff
inet 192.168.122.1/24 brd 192.168.122.255 scope global virbr0
valid_lft forever preferred_lft forever
4: virbr0-nic: <BROADCAST,MULTICAST> mtu 1500 qdisc fq_codel master virbr0 state DOWN group default qlen 1000
link/ether 52:54:00:b1:66:de brd ff:ff:ff:ff:ff:ff
web2
[root@web2 ~]# ip addr add 192.168.145.250/24 dev ens160
[root@web2 ~]# ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
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: ens160: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
link/ether 00:0c:29:32:c1:b3 brd ff:ff:ff:ff:ff:ff
inet 192.168.145.171/24 brd 192.168.145.255 scope global noprefixroute ens160
valid_lft forever preferred_lft forever
inet 192.168.145.250/24 scope global secondary ens160
valid_lft forever preferred_lft forever
inet6 fe80::ab8d:5119:40b9:63c2/64 scope link noprefixroute
valid_lft forever preferred_lft forever
3: virbr0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN group default qlen 1000
link/ether 52:54:00:b1:66:de brd ff:ff:ff:ff:ff:ff
inet 192.168.122.1/24 brd 192.168.122.255 scope global virbr0
valid_lft forever preferred_lft forever
4: virbr0-nic: <BROADCAST,MULTICAST> mtu 1500 qdisc fq_codel master virbr0 state DOWN group default qlen 1000
link/ether 52:54:00:b1:66:de brd ff:ff:ff:ff:ff:ff
DR
[root@DR ~]# yum -y install ipvsadm
[root@DR ~]# ipvsadm -at 192.168.145.250:80 -r 192.168.145.170:80 -g
[root@DR ~]# ipvsadm -at 192.168.145.250:80 -r 192.168.145.171:80 -g
[root@DR ~]# ipvsadm -Sn
-A -t 192.168.145.250:80 -s rr
-a -t 192.168.145.250:80 -r 192.168.145.170:80 -g -w 1
-a -t 192.168.145.250:80 -r 192.168.145.171:80 -g -w 1