阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

基于Keepalived高可用集群网站架构实现的多种方法

177次阅读
没有评论

共计 14812 个字符,预计需要花费 38 分钟才能阅读完成。

实现基于 Keepalived 高可用集群网站架构

基于 Keepalived 高可用集群网站架构实现的多种方法
随着业务的发展,网站的访问量越来越大,网站访问量已经从原来的 1000QPS,变为 3000QPS,目前业务已经通过集群 LVS 架构可做到随时拓展,后端节点已经通过集群技术保障了可用性,但对于前端负载均衡器来说,是个比较大的安全隐患,因为当前端负载均衡器出现故障时,整个集群就处于瘫痪状态,因此,负载均衡器的可用性也显得至关重要,那么怎么来解决负载均衡器的可用性问题呢?

实验一:实现 keepalived 主从方式高可用基于 LVS-DR 模式的应用实战:

 

实验原理

主从:一主一从,主的在工作,从的在休息;主的宕机了,VIP 漂移到从上,由从提供服务

 

1、环境准备:

两台 CentOS 系统做 DR、一主一从,两台实现过基于 LNMP 的电子商务网站

机器名称 IP 配置 服务角色 备注
lvs-server-master VIP:172.17.100.100 DIP:172.17.66.66 负载均衡器 主服务器 开启路由功能 配置 keepalived
lvs-server-backup VIP:172.17.100.100 DIP:172.17.251.66 后端服务器 从服务器 开启路由功能 配置 keepalived
rs01 RIP:172.17.77.77 后端服务器 网关指向 DIP(桥接)
rs02 RIP:172.17.251.111 后端服务器 网关指向 DIP(桥接)

 

2、配置 lvs-server-master(主服务器)

修改 keepalived 主 (lvs-server-master) 配置文件实现 virtual_instance 实例

2.1 配置文件中修改三段

配置文件为 /etc/keepalived/keepalived.conf
全局段,故障通知邮件配置

global_defs {
   notification_email {root@localhost}
   notification_email_from root@keer.com
   smtp_server 127.0.0.1
   smtp_connect_timeout 30
   router_id keepalived_lvs
}

② 配置 虚拟路由器的实例段,VI_1 是自定义的实例名称,可以有多个实例段

vrrp_instance VI_1 {
    state MASTER
    interface eth1
    virtual_router_id 51
    priority 100
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass keer
    }
    virtual_ipaddress {172.17.100.100
    }
}

③ 设置一个virtual server 段

virtual_server 172.17.100.100 80 {delay_loop 6
    lb_algo wrr
    lb_kind DR
    nat_mask 255.255.255.255
    persistence_timeout 600
    protocol TCP

④ 配置real server 段

    real_server 172.17.1.7 80 {weight 1
        HTTP_GET {url {path /
            }
            connect_timeout 3
            nb_get_retry 3
            delay_before_retry 3
        }
    }
    real_server 172.17.22.22 80 {weight 2
        HTTP_GET {url {path /
            }
            connect_timeout 3
            nb_get_retry 3
            delay_before_retry 3
        }
    }
}

一定要注意 大小写

2.2 开启 keepalived 服务

  service keepalived start

能看到网卡别名 和 负载均衡策略已经设置好了
基于 Keepalived 高可用集群网站架构实现的多种方法
我们来使用 ipvsadm -Ln 来查看一下:
 基于 Keepalived 高可用集群网站架构实现的多种方法

2.3 后续

因为是主从方式,所以从上的配置和主只有一点差别;所以可以把这个配置文件拷贝到从服务器上在进行修改即可:

    scp /etc/keepalived/keepalived.conf @172.17.11.11:

 

3、配置 lvs-server-backup(从服务器)

3.1 修改配置文件

因为这个配置文件是从主服务器上拷贝过来的,所以只需要修改②实例段,其他都不要变,保证一模一样

vrrp_instance VI_1 {state BACKUP
    interface eth1
    virtual_router_id 51
    priority 99
    advert_int 1
    authentication {auth_type PASS
        auth_pass keer
    }

3.2 开启 keepalived 服务

service keepalived start

负载均衡策略已经设置好了,注意:主 director 没有宕机,从上就不会有 VIP
可以用 ipvsadm -Ln 来查看,可能过一会才会显示
基于 Keepalived 高可用集群网站架构实现的多种方法

 

4、配置 real server

4.1 开启事前准备好的 web 服务

    systemctl start nginx
    systemctl start mariadb
    systemctl start php-fpm

4.2 因为是 DR 模式,需在 rs 上进行设置

4.2.1 配置路由

配置 VIP 到本地回环网卡 lo 上,并只广播自己

    ifconfig lo:0 172.17.100.100 broadcast 172.17.100.100 netmask 255.255.255.255 up

配置本地回环网卡路由

    route add -host 172.17.100.100 lo:0
4.2.2 使 RS“闭嘴”
    echo "1" > /proc/sys/net/ipv4/conf/lo/arp_ignore
    echo "2" > /proc/sys/net/ipv4/conf/lo/arp_announce

忽略 ARP 广播

    echo "1" > /proc/sys/net/ipv4/conf/all/arp_ignore
    echo "2" > /proc/sys/net/ipv4/conf/all/arp_announce

注意:关闭 arp 应答
1:仅在请求的目标 IP 配置在本地主机的接收到请求报文的接口上时,才给予响应
2:必须避免将接口信息向非本网络进行通告

4.2.3 想永久生效,可以写到配置文件中
vim /etc/sysctl.conf
    net.ipv4.conf.lo.arp_ignore = 1
    net.ipv4.conf.lo.arp_announce = 2
    net.ipv4.conf.all.arp_ignore = 1
    net.ipv4.conf.all.arp_announce = 2

 

5、测试

5.1 lvs 负载均衡作用是否开启

客户端访问 http://172.17.100.100/
基于 Keepalived 高可用集群网站架构实现的多种方法

也可以详细测试
① 在 rs1 上设置一个测试一面
vim /data/web/test.html
real server 1

② 在 rs2 上设置一个测试一面
vim /data/web/test.html
real server 2

③ 网页访问 http://172.17.100.100/test.html 发现有 real server 1 也有 real server 2
基于 Keepalived 高可用集群网站架构实现的多种方法

5.2 测试 keepalived 的主从方式

① 使 keepalive 的主宕机

    service keepalived stop

会发现服务能照常访问,但是 VIP 漂移到了从上
从多了网卡别名,且地址是 VIP

[root@server-backup ~]# ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN 
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 00:0c:29:22:8d:75 brd ff:ff:ff:ff:ff:ff
    inet 172.17.251.66/16 brd 172.17.255.255 scope global eth0
    inet 172.17.100.100/32 scope global eth1
    inet6 fe80::20c:29ff:fe22:8d75/64 scope link 
       valid_lft forever preferred_lft forever
3: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 00:0c:29:22:8d:7f brd ff:ff:ff:ff:ff:ff
    inet 192.168.37.128/24 brd 192.168.37.255 scope global eth1
    inet6 fe80::20c:29ff:fe22:8d7f/64 scope link 
       valid_lft forever preferred_lft forever
4: pan0: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN 
    link/ether ba:21:04:5b:66:60 brd ff:ff:ff:ff:ff:ff

② 使 keepalive 的主重新开启服务,因为主的优先级高,所以 VIP 又重新漂移到了主上
基于 Keepalived 高可用集群网站架构实现的多种方法

更多详情见请继续阅读下一页的精彩内容:http://www.linuxidc.com/Linux/2017-11/148571p2.htm

实验二:实现 keepalived 双主方式高可用基于 LVS-DR 模式的应用实战:

 

实验原理

互为主从:主从都在工作;其中一个宕机了,VIP 漂移到另一个上,提供服务

 

1、实验环境,基本同上

机器名称 IP 配置 服务角色 备注
lvs-server-1 VIP:172.17.120.120 DIP:172.17.66.66 负载均衡器 主服务器 开启路由功能 配置 keepalived
lvs-server2 VIP:172.17.120.121 DIP:172.17.251.66 后端服务器 从服务器 开启路由功能 配置 keepalived
rs01 RIP:172.17.77.77 后端服务器 网关指向 DIP(桥接)
rs02 RIP:172.17.252.111 后端服务器 网关指向 DIP(桥接)

 

2、配置 lvs-server-master1(第一个主服务器)

配置基本同上,就是加了一个实例段
修改 keepalived 主(lvs-server-master) 配置文件实现 virtual_instance 实例

2.1 主的设置 VI_1

vim /etc/keepalived/keepalived.conf  
vrrp_instance VI_1 {
    state MASTER
    interface eth1
    virtual_router_id 51
    priority 100
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass keer
    }
    virtual_ipaddress {172.17.120.120
    }
}

virtual_server 172.17.120.120 80 {delay_loop 6
    lb_algo wrr
    lb_kind DR
    nat_mask 255.255.255.255
    persistence_timeout 600
    protocol TCP

    real_server 172.17.1.7 80 {weight 1
        HTTP_GET {url {path /}
            connect_timeout 3
            nb_get_retry 3
            delay_before_retry 3
        }
    }
    real_server 172.17.22.22 80 {weight 1
        HTTP_GET {url {path /}
            connect_timeout 3
            nb_get_retry 3
            delay_before_retry 3
        }
    }
}

2.2 从的设置 VI_2

vrrp_instance VI_2 {
    state BACKUP
    interface eth1
    virtual_router_id 52
    priority 98
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass along
    }
    virtual_ipaddress {172.17.120.121
    }
}

virtual_server 172.17.120.121 443 {delay_loop 6
    lb_algo wrr
    lb_kind DR
    nat_mask 255.255.255.255
    persistence_timeout 600
    protocol TCP

    real_server 172.17.77.77 443 {weight 1
        HTTP_GET {url {path /}
            connect_timeout 3
            nb_get_retry 3
            delay_before_retry 3
        }
    }
    real_server 172.17.252.111 443 {weight 2
        HTTP_GET {url {path /}
            connect_timeout 3
            nb_get_retry 3
            delay_before_retry 3
        }
    }
}

2.3 开启 keepalived 服务

    service keepalived start

能看到网卡别名 和 负载均衡策略已经设置好了

2.4 后续

因为是主从方式,所以从上的配置和主只有一点差别;所以可以把这个配置文件拷过去

    scp /etc/keepalived/keepalived.conf @172.17.11.11:

 

3、配置 lvs-server-master2(第二个主服务器)

在 lvs-server2 上,基本同 1,就是把实例的主从调换一下

3.1 从的设置 VI_1

vim /etc/keepalived/keepalived.conf   
vrrp_instance VI_1 {
    state BACKUP
    interface eth1
    virtual_router_id 51
    priority 98
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass keer
    }
    virtual_ipaddress {172.17.120.120
    }
}

3.2 主的设置 VI_2

vrrp_instance VI_2 {
    state MASTER
    interface eth1
    virtual_router_id 52
    priority 100
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass keer
    }
    virtual_ipaddress {172.17.120.121
    }
}

3.3 开启 keepalived 服务

    service keepalived start

能看到网卡别名 和 负载均衡策略已经设置好了,显示结果会等段时间再显示

 

4、配置 real server

4.1 开启事前准备好的 web 服务

        systemctl start nginx
        systemctl start mariadb
        systemctl start php-fpm

4.2 因为是 DR 模式,需在 rs 上进行设置

4.2.1 配置路由

配置 VIP 到本地回环网卡 lo 上,并只广播自己

    ifconfig lo:0 172.17.100.100 broadcast 172.17.100.100 netmask 255.255.255.255 up

配置本地回环网卡路由

    route add -host 172.17.100.100 lo:0
4.2.2 使 RS“闭嘴”
    echo "1" > /proc/sys/net/ipv4/conf/lo/arp_ignore
    echo "2" > /proc/sys/net/ipv4/conf/lo/arp_announce

忽略 ARP 广播

    echo "1" > /proc/sys/net/ipv4/conf/all/arp_ignore
    echo "2" > /proc/sys/net/ipv4/conf/all/arp_announce

注意:关闭 arp 应答
1:仅在请求的目标 IP 配置在本地主机的接收到请求报文的接口上时,才给予响应
2:必须避免将接口信息向非本网络进行通告

4.2.3 想永久生效,可以写到配置文件中
vim /etc/sysctl.conf
    net.ipv4.conf.lo.arp_ignore = 1
    net.ipv4.conf.lo.arp_announce = 2
    net.ipv4.conf.all.arp_ignore = 1
    net.ipv4.conf.all.arp_announce = 2

 

5、测试

5.1 lvs 负载均衡作用是否开启

客户端访问 http://172.17.100.100/ 公网 172.17.100.100 只能访问 80
https://172.17.100.101/ 公网 172.17.100.101 只能访问 443
基于 Keepalived 高可用集群网站架构实现的多种方法
 基于 Keepalived 高可用集群网站架构实现的多种方法
基于 Keepalived 高可用集群网站架构实现的多种方法
 基于 Keepalived 高可用集群网站架构实现的多种方法

也可以详细测试:
① 在 rs1 上设置一个测试一面

    vim /data/web/test.html
    real server 1

② 在 rs2 上设置一个测试一面

    vim /data/web/test.html
    real server 2

③ 网页访问 http://172.17.100.100/test.html 或 https://172.17.100.101/test.html 发现有 real server 1 也有 real server 2
基于 Keepalived 高可用集群网站架构实现的多种方法

5.2 测试 keepalived 的双主方式

使 keepalive 的任意一个宕机

    service keepalived stop

基于 Keepalived 高可用集群网站架构实现的多种方法

会发现服务能照常访问,另一个机器 80、443 都能访问,且宕机的 VIP 漂移到了另一个服务器上
基于 Keepalived 高可用集群网站架构实现的多种方法

更多详情见请继续阅读下一页的精彩内容:http://www.linuxidc.com/Linux/2017-11/148571p3.htm

实现基于 Keepalived 高可用集群网站架构

基于 Keepalived 高可用集群网站架构实现的多种方法
随着业务的发展,网站的访问量越来越大,网站访问量已经从原来的 1000QPS,变为 3000QPS,目前业务已经通过集群 LVS 架构可做到随时拓展,后端节点已经通过集群技术保障了可用性,但对于前端负载均衡器来说,是个比较大的安全隐患,因为当前端负载均衡器出现故障时,整个集群就处于瘫痪状态,因此,负载均衡器的可用性也显得至关重要,那么怎么来解决负载均衡器的可用性问题呢?

实验一:实现 keepalived 主从方式高可用基于 LVS-DR 模式的应用实战:

 

实验原理

主从:一主一从,主的在工作,从的在休息;主的宕机了,VIP 漂移到从上,由从提供服务

 

1、环境准备:

两台 CentOS 系统做 DR、一主一从,两台实现过基于 LNMP 的电子商务网站

机器名称 IP 配置 服务角色 备注
lvs-server-master VIP:172.17.100.100 DIP:172.17.66.66 负载均衡器 主服务器 开启路由功能 配置 keepalived
lvs-server-backup VIP:172.17.100.100 DIP:172.17.251.66 后端服务器 从服务器 开启路由功能 配置 keepalived
rs01 RIP:172.17.77.77 后端服务器 网关指向 DIP(桥接)
rs02 RIP:172.17.251.111 后端服务器 网关指向 DIP(桥接)

 

2、配置 lvs-server-master(主服务器)

修改 keepalived 主 (lvs-server-master) 配置文件实现 virtual_instance 实例

2.1 配置文件中修改三段

配置文件为 /etc/keepalived/keepalived.conf
全局段,故障通知邮件配置

global_defs {
   notification_email {root@localhost}
   notification_email_from root@keer.com
   smtp_server 127.0.0.1
   smtp_connect_timeout 30
   router_id keepalived_lvs
}

② 配置 虚拟路由器的实例段,VI_1 是自定义的实例名称,可以有多个实例段

vrrp_instance VI_1 {
    state MASTER
    interface eth1
    virtual_router_id 51
    priority 100
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass keer
    }
    virtual_ipaddress {172.17.100.100
    }
}

③ 设置一个virtual server 段

virtual_server 172.17.100.100 80 {delay_loop 6
    lb_algo wrr
    lb_kind DR
    nat_mask 255.255.255.255
    persistence_timeout 600
    protocol TCP

④ 配置real server 段

    real_server 172.17.1.7 80 {weight 1
        HTTP_GET {url {path /
            }
            connect_timeout 3
            nb_get_retry 3
            delay_before_retry 3
        }
    }
    real_server 172.17.22.22 80 {weight 2
        HTTP_GET {url {path /
            }
            connect_timeout 3
            nb_get_retry 3
            delay_before_retry 3
        }
    }
}

一定要注意 大小写

2.2 开启 keepalived 服务

  service keepalived start

能看到网卡别名 和 负载均衡策略已经设置好了
基于 Keepalived 高可用集群网站架构实现的多种方法
我们来使用 ipvsadm -Ln 来查看一下:
 基于 Keepalived 高可用集群网站架构实现的多种方法

2.3 后续

因为是主从方式,所以从上的配置和主只有一点差别;所以可以把这个配置文件拷贝到从服务器上在进行修改即可:

    scp /etc/keepalived/keepalived.conf @172.17.11.11:

 

3、配置 lvs-server-backup(从服务器)

3.1 修改配置文件

因为这个配置文件是从主服务器上拷贝过来的,所以只需要修改②实例段,其他都不要变,保证一模一样

vrrp_instance VI_1 {state BACKUP
    interface eth1
    virtual_router_id 51
    priority 99
    advert_int 1
    authentication {auth_type PASS
        auth_pass keer
    }

3.2 开启 keepalived 服务

service keepalived start

负载均衡策略已经设置好了,注意:主 director 没有宕机,从上就不会有 VIP
可以用 ipvsadm -Ln 来查看,可能过一会才会显示
基于 Keepalived 高可用集群网站架构实现的多种方法

 

4、配置 real server

4.1 开启事前准备好的 web 服务

    systemctl start nginx
    systemctl start mariadb
    systemctl start php-fpm

4.2 因为是 DR 模式,需在 rs 上进行设置

4.2.1 配置路由

配置 VIP 到本地回环网卡 lo 上,并只广播自己

    ifconfig lo:0 172.17.100.100 broadcast 172.17.100.100 netmask 255.255.255.255 up

配置本地回环网卡路由

    route add -host 172.17.100.100 lo:0
4.2.2 使 RS“闭嘴”
    echo "1" > /proc/sys/net/ipv4/conf/lo/arp_ignore
    echo "2" > /proc/sys/net/ipv4/conf/lo/arp_announce

忽略 ARP 广播

    echo "1" > /proc/sys/net/ipv4/conf/all/arp_ignore
    echo "2" > /proc/sys/net/ipv4/conf/all/arp_announce

注意:关闭 arp 应答
1:仅在请求的目标 IP 配置在本地主机的接收到请求报文的接口上时,才给予响应
2:必须避免将接口信息向非本网络进行通告

4.2.3 想永久生效,可以写到配置文件中
vim /etc/sysctl.conf
    net.ipv4.conf.lo.arp_ignore = 1
    net.ipv4.conf.lo.arp_announce = 2
    net.ipv4.conf.all.arp_ignore = 1
    net.ipv4.conf.all.arp_announce = 2

 

5、测试

5.1 lvs 负载均衡作用是否开启

客户端访问 http://172.17.100.100/
基于 Keepalived 高可用集群网站架构实现的多种方法

也可以详细测试
① 在 rs1 上设置一个测试一面
vim /data/web/test.html
real server 1

② 在 rs2 上设置一个测试一面
vim /data/web/test.html
real server 2

③ 网页访问 http://172.17.100.100/test.html 发现有 real server 1 也有 real server 2
基于 Keepalived 高可用集群网站架构实现的多种方法

5.2 测试 keepalived 的主从方式

① 使 keepalive 的主宕机

    service keepalived stop

会发现服务能照常访问,但是 VIP 漂移到了从上
从多了网卡别名,且地址是 VIP

[root@server-backup ~]# ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN 
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 00:0c:29:22:8d:75 brd ff:ff:ff:ff:ff:ff
    inet 172.17.251.66/16 brd 172.17.255.255 scope global eth0
    inet 172.17.100.100/32 scope global eth1
    inet6 fe80::20c:29ff:fe22:8d75/64 scope link 
       valid_lft forever preferred_lft forever
3: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 00:0c:29:22:8d:7f brd ff:ff:ff:ff:ff:ff
    inet 192.168.37.128/24 brd 192.168.37.255 scope global eth1
    inet6 fe80::20c:29ff:fe22:8d7f/64 scope link 
       valid_lft forever preferred_lft forever
4: pan0: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN 
    link/ether ba:21:04:5b:66:60 brd ff:ff:ff:ff:ff:ff

② 使 keepalive 的主重新开启服务,因为主的优先级高,所以 VIP 又重新漂移到了主上
基于 Keepalived 高可用集群网站架构实现的多种方法

更多详情见请继续阅读下一页的精彩内容:http://www.linuxidc.com/Linux/2017-11/148571p2.htm

 

实验三:实现 keepalived 主从方式高可用基于 LVS-NAT 模式的应用实战:

 

实验原理

主从:一主一从,主的在工作,从的在休息;主的宕机了,VIP 漂移到从上,由从提供服务

 

1、环境准备

机器名称 IP 配置 服务角色 备注
lvs-server-1 VIP:172.17.120.120 DIP:192.168.37.120 负载均衡器 主服务器 开启路由功能 配置 keepalived
lvs-server-2 VIP:172.17.120.120 DIP:192.168.37.120 后端服务器 从服务器 开启路由功能 配置 keepalived
rs01 RIP:192.168.37.222 后端服务器 网关指向 DIP
rs02 RIP:192.168.37.111 后端服务器 网关指向 DIP

注意:要确保 rs 和 DIP 在一个网段,且不和 VIP 在一个网段

 

2、配置 lvs-server-master(主服务器)

2.1 配置文件中修改三段

配置文件为 /etc/keepalived/keepalived.conf
① 全局段,故障通知邮件配置

global_defs {
   notification_email {root@localhost}
   notification_email_from root@keer.com
   smtp_server 127.0.0.1
   smtp_connect_timeout 30
   router_id keepalived_lvs
}

② 配置虚拟路由器的实例段,VI_1 是自定义的实例名称,可以有多个实例段

vrrp_instance VI_1 {
    state MASTER
    interface eth0
    virtual_router_id 190
    priority 100
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass keer
    }
    virtual_ipaddress {172.17.120.120
        192168.37.120
    }
}

③ 设置一个 virtual server 段

virtual_server 172.17.120.120 80 {delay_loop 6
    lb_algo wrr
    lb_kind NAT
    nat_mask 255.255.255.255
    persistence_timeout 120
    protocol TCP

④ 配置 real server 段

    real_server 192.168.37.222 80 {weight 1
        HTTP_GET {url {path /
            }
            connect_timeout 3
            nb_get_retry 3
            delay_before_retry 3
        }
    }

    real_server 192.168.37.111 80 {weight 2
        HTTP_GET {url {path /
            }
            connect_timeout 3
            nb_get_retry 3
            delay_before_retry 3
        }
    }
}

2.2 因为是 NAT 模式,所以需开启路由转发功能

vim /etc/sysctl.conf
    net.ipv4.ip_forward = 1

接着使用sysctl -p 读一下,使参数生效

2.3 开启 keepalived 服务

    service keepalived start

能看到网卡别名 和 负载均衡策略已经设置好了
基于 Keepalived 高可用集群网站架构实现的多种方法
 基于 Keepalived 高可用集群网站架构实现的多种方法

2.4 后续

因为是主从方式,所以从上的配置和主只有一点差别;所以可以把这个配置文件拷过去

scp /etc/keepalived/keepalived.conf @172.17.251.66:

 

3、配置 lvs-server-backup(从服务器)

3.1 修改配置文件

因为这个配置文件是从主服务器上拷贝过来的,所以只需要修改②实例段,其他都不要变,保证一模一样:

vrrp_instance VI_1 {
    state BACKUP
    interface eth1
    virtual_router_id 190
    priority 98
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass keer
    }
    virtual_ipaddress {172.17.120.120
        192.168.37.120
    }
}

3.2 因为是 NAT 模式,所以需开启路由转发功能

vim /etc/sysctl.conf
    net.ipv4.ip_forward = 1

接着使用 sysctl -p 读一下,使参数生效

3.3 开启 keepalived 服务

    service keepalived start

负载均衡策略已经设置好了,注意:主 director 没有宕机,从上就不会有 VIP
基于 Keepalived 高可用集群网站架构实现的多种方法

 

4、配置 real server

4.1 开启事前准备好的 web 服务

systemctl start nginx
systemctl start mariadb
systemctl start php-fpm

4.2 因为是 NAT 模式,需在 rs 上设置

只需把网关指向 DIP

route add default gw 192.168.37.123

此时,我们可以查看一下网关:

[root@rs01 ~]# route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         192.168.37.123  0.0.0.0         UG    0      0        0 ens34
0.0.0.0         172.17.0.1      0.0.0.0         UG    100    0        0 ens33
172.17.0.0      0.0.0.0         255.255.0.0     U     100    0        0 ens33
192.168.37.0    0.0.0.0         255.255.255.0   U     100    0        0 ens34
192.168.122.0   0.0.0.0         255.255.255.0   U     0      0        0 virbr0

我们发现,还有一个 172 的网关在生效,所以我们把它 down 掉:

[root@rs01 ~]# ifconfig ens33 down

一定要注意这一点,不然多个网关会让数据不知道从哪走~

 

5、测试

5.1 lvs 负载均衡作用是否开启

客户端访问 http://172.17.120.120/
基于 Keepalived 高可用集群网站架构实现的多种方法

也可以进行详细测试:
① 在 rs1 上设置一个测试页面

vim /data/web/test.html
    real server 1

② 在 rs2 上设置一个测试页面

vim /data/web/test.html
    real server 2

③ 网页访问 http://172.17.120.120/test.html 发现有 real server 1 也有 real server 2
基于 Keepalived 高可用集群网站架构实现的多种方法

5.2 测试 keepalived 的主从方式

① 使 keepalive 的主宕机

    service keepalived stop

会发现服务能照常访问,但是 VIP 漂移到了从上
从多了网卡别名,且地址是 VIP
基于 Keepalived 高可用集群网站架构实现的多种方法

③ 使 keepalive 的主重新开启服务,因为主的优先级高,所以 VIP 又重新漂移到了主上

    service keepalived start

基于 Keepalived 高可用集群网站架构实现的多种方法


以上~ 如果有不足之处还请大家多多指教喏٩(๑>◡<๑)۶

本文永久更新链接地址:http://www.linuxidc.com/Linux/2017-11/148571.htm

正文完
星哥说事-微信公众号
post-qrcode
 
星锅
版权声明:本站原创文章,由 星锅 2022-01-21发表,共计14812字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中