原理
- LVS1和LVS2 一个主一个备
- LVS1和LVS2和web的网关都是192.168.41.101
- LVS1和LVS2 会公用一个虚拟ip 比如192.168.41.111
- RS1和RS2 会添加一个IP到lo 添加方法 ip add addr 192.168.41.111 dev lo
- 还需要添加一个sorry_server那个直接添加就好。道理跟web一样。
- 客户的网关设置成路由的ip
文章目录
Client [172.16.41.175]
选用桥接模式
vim ifcfg-ens33
TYPE="Ethernet"
NAME="ens33"
BOOTPROTO=static
DEVICE="ens33"
IPADDR=172.16.41.175
PREFIX=16
ONBOOT="yes"
#GATEWAY="172.16.0.1"
GATEWAY=172.16.41.101
route [192.168.41.101/172.16.41.101]
两个网卡 一个是nat一个是桥接
vim ifcfg-ens33
TYPE="Ethernet"
NAME="ens33"
BOOTPROTO=static
DEVICE="ens33"
IPADDR=192.168.41.101
PREFIX=24
ONBOOT="yes"
GATEWAY="192.168.41.2"
DNS1=114.114.114.114
DNS2=8.8.8.8
vim ifcfg-ens37
TYPE="Ethernet"
NAME="ens37"
BOOTPROTO=static
DEVICE="ens37"
ONBOOT="yes"
IPADDR=172.16.41.101
NETMASK=255.255.0.0
GATEWAY=172.16.0.1
开启转发功能
[root@director ~]# vim /etc/sysctl.conf
net.ipv4.ip_forward=1
[root@director ~]# sysctl -p
net.ipv4.ip_forward = 1
LVS1 [192.168.41.102]
yum install keepalived -y
yum install ipvsadm -y
[root@Centos7 ~]#vim /etc/keepalived/keepalived.conf
! Configuration File for keepalived
global_defs {
notification_email {
root@localhost
}
notification_email_from root@localhost
smtp_server 127.0.0.1
smtp_connect_timeout 30
router_id LVS_102
vrrp_skip_check_adv_addr
#vrrp_strict
vrrp_iptables
vrrp_garp_interval 0
vrrp_gna_interval 0
}
vrrp_instance VI_1 {
state MASTER
interface ens33
virtual_router_id 41
priority 100
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
}
unicast_src_ip 192.168.41.102
unicast_peer {
192.168.41.103
}
virtual_ipaddress {
192.168.41.111 dev ens33 label ens33:1
}
}
virtual_server 192.168.41.111 80 {
delay_loop 3
lb_algo wrr
lb_kind DR
# persistence_timeout 50
protocol TCP
sorry_server 192.168.41.106 80
real_server 192.168.41.104 80 {
weight 1
HTTP_GET {
url {
path /
ststus_code 200
}
delay_before_retry 3
connect_timeout 3
nb_get_retry 3
}
}
real_server 192.168.41.105 80 {
weight 1
HTTP_GET {
url {
path /
ststus_code 200
}
delay_before_retry 3
connect_timeout 3
nb_get_retry 3
}
}
}
[root@Centos7 ~]#systemctl start keepalived
LVS2 [192.168.41.103]
yum install keepalived -y
yum install ipvsadm -y
[root@Centos7 ~]#vim /etc/keepalived/keepalived.conf
! Configuration File for keepalived
global_defs {
notification_email {
root@localhost
}
notification_email_from root@localhost
smtp_server 127.0.0.1
smtp_connect_timeout 30
router_id LVS_103
vrrp_skip_check_adv_addr
#vrrp_strict
vrrp_garp_interval 0
vrrp_gna_interval 0
}
vrrp_instance VI_1 {
state BACKUP
interface ens33
virtual_router_id 41
priority 80
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
unicast_src_ip 192.168.41.103
unicast_peer {
192.168.41.102
}
virtual_ipaddress {
192.168.41.111 dev ens33 label ens33:1
}
}
virtual_server 192.168.41.111 80 {
delay_loop 6
lb_algo wrr
lb_kind DR
# persistence_timeout 50
protocol TCP
sorry_server 192.168.41.106 80
real_server 192.168.41.104 80 {
weight 1
HTTP_GET {
url {
path /
status_code 200
}
delay_before_retry 3
connect_timeout 3
nb_get_retry 3
}
}
real_server 192.168.41.105 80 {
weight 1
HTTP_GET {
url {
path /
status_code 200
}
delay_before_retry 3
connect_timeout 3
nb_get_retry 3
}
}
}
[root@Centos7 ~]#systemctl start keepalived
web1 [192.168.41.104]
按下面的执行或者是运行脚本,重启后lo失效。
[root@Centos7 ~]#yum install httpd -y
[root@Centos7 ~]#echo web1 > /var/www/html/index.html
[root@Centos7 ~]#echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore
[root@Centos7 ~]#echo 1 > /proc/sys/net/ipv4/conf/lo/arp_ignore
[root@Centos7 ~]#echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce
[root@Centos7 ~]#echo 2 > /proc/sys/net/ipv4/conf/lo/arp_announce
[root@Centos7 ~]#ip a a 192.168.0.111 dev lo
web2 [192.168.41.105]
按下面的执行或者是运行脚本
[root@Centos7 ~]#yum install httpd -y
[root@Centos7 ~]#echo web2 > /var/www/html/index.html
[root@Centos7 ~]#echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore
[root@Centos7 ~]#echo 1 > /proc/sys/net/ipv4/conf/lo/arp_ignore
[root@Centos7 ~]#echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce
[root@Centos7 ~]#echo 2 > /proc/sys/net/ipv4/conf/lo/arp_announce
[root@Centos7 ~]#ip a a 192.168.0.111 dev lo
web3 [192.168.41.106]
按下面的执行或者是运行脚本
[root@Centos7 ~]#yum install httpd -y
[root@Centos7 ~]#echo sorry server > /var/www/html/index.html
[root@Centos7 ~]#echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore
[root@Centos7 ~]#echo 1 > /proc/sys/net/ipv4/conf/lo/arp_ignore
[root@Centos7 ~]#echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce
[root@Centos7 ~]#echo 2 > /proc/sys/net/ipv4/conf/lo/arp_announce
[root@Centos7 ~]#ip a a 192.168.0.111 dev lo
测试
正常
两个都down机
RS脚本
开机有效加入到 /etc/rc,d/rc.local 里面
#!/bin/bash
vip=192.168.41.111
mask='255.255.255.255'
dev=lo:1
case $1 in
start)
echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore
echo 1 > /proc/sys/net/ipv4/conf/lo/arp_ignore
echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce
echo 2 > /proc/sys/net/ipv4/conf/lo/arp_announce
ifconfig $dev $vip netmask $mask #broadcast $vip up
#route add -host $vip dev $dev
;;
stop)
ifconfig $dev down
echo 0 > /proc/sys/net/ipv4/conf/all/arp_ignore
echo 0 > /proc/sys/net/ipv4/conf/lo/arp_ignore
echo 0 > /proc/sys/net/ipv4/conf/all/arp_announce
echo 0 > /proc/sys/net/ipv4/conf/lo/arp_announce
;;
*)
echo "Usage: $(basename $0) start|stop"
exit 1
;;
esac