Nginx学习(4)—— 高可用配置(keepalived实现Nginx的高可用)

高可用场景及解决方案

  • 一般高可用的服务端会都有备用服务,当某一个服务节点挂掉的时候就会有备用机顶上。这往往需要反向代理(Nginx)来将连接切换到可用的服务机器上。如下图:
    在这里插入图片描述
  • 那么,当反向代理服务Nginx挂掉之后,就没办法再对外提供服务了。所以,要想Nginx也高可用就需要有备用Nginx,每个Nginx服务上都有负责检测的keepalived:
    在这里插入图片描述
  • 那么问题来了,这里有两个Nginx服务用户接入的时候怎么知道应该接入哪个。这里就需要有一个公用IP,用户请求都打到这个公用IP上,然后两台Nginx去竞争这个公共IP,谁拿到就谁来转发请求。对于用户而言我只请求了这个公用IP,对于Nginx主备之间的竞争机制是无感知的。
    在这里插入图片描述

keepalived的安装

  • 直接安装
sudo apt install -y keepalived
  • 安装完成后默认在 /etc/下回创建 keepalived/ 文件夹,里面是空的。在这里创建keepalived.conf配置文件。
# keepalived.conf文件内容如下:

global_defs {
    
    
        router_id lb_111
}
vrrp_script chk_http_port {
    
     # 这个配置不是必须的,当有vrrp_script的时候,keepalived检测机制就是脚本的逻辑(可以通过它来检测Nginx的进程有没有挂掉),没有vrrp_script的时候,keepalived检测的是keepalived进程有没有挂掉。
    script "/etc/keepalived/a.sh"
    interval 2 #(检测脚本执行的间隔)
    weight 2
}
vrrp_instance VI_1 {
    
     # VI_1代表的是实例名称,主备机的必须相同
    state BACKUP # 表示当前机器是 MASTER 还是 BACKUP
    interface ens33 # 网卡名称,可以通过ifconfig查看
    virtual_router_id 51 # 主、备机的 virtual_router_id 必须相同
    priority 90 # 优先级,一般主机值较大,备份机值较小。用作主备竞选的时候
    advert_int 1	# 间隔检测的时间
    authentication {
    
    	# 分组,一个局域网络中可能有多个keepalived程序,对同一组中的keepalived的authentication配置要一样
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
    
     
        192.168.44.200 # 公用虚拟地址
    }
}
  • 通过优先级来选举主备机。也就是priority字段。

猜你喜欢

转载自blog.csdn.net/Stars____/article/details/129404330