• Nginx-高可用及 KeepAlived 配置


    目录

    一、高可用场景及解决方案

    二、配置 KeepAlived

    1.yum 安装 KeepAlived

    2.修改配置文件

    3.启动 KeepAlived

    4.测试


    一、高可用场景及解决方案

           高可用(High Avaliability,简称HA)就是主机的冗余和接管。Keepalived 是一个基于VRRP协议来实现的LVS服务高可用方案,可以利用其来避免单点故障。

            Keepalive起初是为LVS(Linux Virtual Server 虚拟的服务器集群负载均衡系统)设计的,一个LVS服务会有2台服务器运行Keepalived,一台为主服务器(MASTER),一台为备份服务器(BACKUP),但是对外表现为一个虚拟IP,主服务器会发送特定的消息给备份服务器,当备份服务器收不到这个消息的时候,即主服务器宕机的时候, 备份服务器就会接管虚拟IP,继续提供服务,从而保证了高可用性。专门用来监控集群系统中各个服务节点的状态,它根据TCP/IP参考模型的第三、第四层、第五层交换机制检测每个服务节点的状态,如果某个服务器节点出现异常,或者工作出现故障,Keepalived将检测到,并将出现的故障的服务器节点从集群系统中剔除,这些工作全部是自动完成的,不需要人工干涉,需要人工完成的只是修复出现故障的服务节点。

            后来Keepalived又加入了VRRP的功能,VRRP(Vritrual Router Redundancy Protocol,虚拟路由冗余协议)出现的目的是解决静态路由出现的单点故障问题,它能够保证当个别节点宕机时,通过VRRP可以实现网络不间断稳定运行,因此Keepalived 一方面具有配置管理LVS的功能,同时还具有对LVS下面节点进行健康检查的功能,另一方面也可实现系统网络服务的高可用功能。

    KeepAlive 官网

    二、配置 KeepAlived

    1.yum 安装 KeepAlived

    准备两台虚机,nginx01为主服务器,nginx02为备用机(backup),两台虚机都需要安装 KeepAlived

    [root@nginx01 ~]# yum install -y keepalived

    2.修改配置文件

    对默认配置文件一些不必要的内容进行了修改,最终的内容如下:

    主服务:

    1. [root@nginx01 ~]# vim /etc/keepalived/keepalived.conf
    2. ! Configuration File for keepalived
    3. global_defs {
    4. # 路由id可自定义,可以是ip好辨认
    5. router_id 101
    6. }
    7. # 虚拟ip的配置
    8. vrrp_instance test { # vrrp 内网通讯协议 test:实例名称,可自定义
    9. state MASTER # 主服务器为 MASTER,备份服务器则为 BACKUP
    10. interface ens32 # ens32: 网卡名称(根据实际情况,ifconfig可查)
    11. virtual_router_id 51 # 主、备机的 id需要相同
    12. priority 100 # 主、备机竞选机制的优先级,值越高越优先
    13. advert_int 1 # 间隔检测时间
    14. authentication { # 同一组 KeepAlived 的认证配置
    15. auth_type PASS
    16. auth_pass 1111
    17. }
    18. virtual_ipaddress { # 虚拟出来的ip地址,可填多个
    19. 192.168.78.200
    20. }
    21. }

    备用机:

    1. [root@nginx02 ~]# vim /etc/keepalived/keepalived.conf
    2. ! Configuration File for keepalived
    3. global_defs {
    4. # 路由id可自定义,可以是ip好辨认
    5. router_id 100
    6. }
    7. # 虚拟ip的配置
    8. vrrp_instance test { # vrrp 内网通讯协议 test:实例名称,可自定义
    9. state BACKUP # 主服务器为 MASTER,备份服务器则为 BACKUP
    10. interface ens32 # ens32: 网卡名称(根据实际情况,ifconfig可查)
    11. virtual_router_id 51 # 主、备机的 id需要相同
    12. priority 50 # 主、备机竞选机制的优先级,值越高越优先
    13. advert_int 1 # 间隔检测时间
    14. authentication { # 同一组 KeepAlived 的认证配置
    15. auth_type PASS
    16. auth_pass 1111
    17. }
    18. virtual_ipaddress { # 虚拟出来的ip地址,可填多个
    19. 192.168.78.200
    20. }
    21. }

    3.启动 KeepAlived

    主、备机都需要启动服务:

    1. [root@nginx01 ~]# systemctl start keepalived.service
    2. [root@nginx01 ~]# systemctl enable keepalived.service
    3. [root@nginx01 ~]# systemctl status keepalived.service
    4. [root@nginx01 ~]# ip a # 查看ip,发现主服务器多出个虚拟ip,而备用机没有,因为主服务器优先级高

    4.测试

    在 cmd 里 先ping 虚拟ip 200(此时虚拟ip在 nginx01),可以通,然后把 nginx01 关机,出现一个“请求超时”,后面继续可以ping通

    此时虚拟ip来到 nginx02:

    在浏览器访问200虚拟ip也是来到nginx02这台服务器:

     

  • 相关阅读:
    【Java】建筑工地智慧管理系统源码
    c++11 多线程支持 条件变量(condition_variable)(一)
    Prometheus-Prometheus安装及其配置
    发了3000个短视频作品才总结出的9点快速破播放的技巧
    Spring Security(8)
    MCE | 衰老“走过”的信号途径
    opencv之并行计算多线程parallel_for_
    CSDN竞赛4期题解
    钢铁与不锈钢区别
    elasticsearch 8.5.3问题记录
  • 原文地址:https://blog.csdn.net/weixin_46560589/article/details/126429141