Keepalived 配置 Nginx 高可用
前言
通过Keepalived服务vip漂移的方式配置Nginx的高可用;当vip所在节点的Nginx服务宕掉后,会将vip漂移到另外一个节点。而在配置Nginx的配置时,分别在两个节点配置Nginx服务,然后两个Nginx服务配置相同的负载均衡等配置;在配置连接时不使用两个Nginx节点的ip,而是使用vip; 以这样的方式实现Nginx的高可用
Nginx 安装
在两个节点同时安装Nginx, 此处展示一个节点
默认情况Centos7中无Nginx的源,yum 安装方式参考自宋兴柱-Sindrol 的[CentOS7中使用yum安装Nginx的方法
Nginx官网提供了Centos的源地址。因此可以如下执行命令添加源
1 | rpm -Uvh http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm |
安装Nginx
通过yum search nginx
看看是否已经添加源成功。如果成功则执行yum -y install nginx
命令安装 Nginx
此处修改端口为8089,默认端口为80、配置文件默认在/etc/nginx/conf.d/default.conf
为什么是修改default.conf
文件呢?从/etc/nginx/nginx.conf
看到是指向了``/etc/nginx/conf.d`目录下
启动Nginx并设置开机自动运行
1 | systemctl start nginx |
启动成功
安装 Keepalived
两个节点都安装 yum -y install keepalived
添加到开机自启动
1 | systemctl enable keepalived |
配置 HA
两个节点同时配置
编辑脚本/etc/keepalived/nginx_check.sh,脚本内容如下(nginx _check.sh)
1 | #!/bin/bash |
增加执行权限
1 | chmod +x /etc/keepalived/nginx_check.sh |
修改配置文件/etc/keepalived/keepalived.conf
master 配置
1 | ! Configuration File for keepalived |
slave 配置
1 | ! Configuration File for keepalived |
启动Keepalived服务 systemctl start keepalived
vip已绑定成功
验证高可用
不管是keepalived宕机还是nginx宕机
都会切换到BACKUP节点上
非抢占模式
keepalived的HA分为抢占模式和非抢占模式,抢占模式即MASTER从故障中恢复后,会将VIP从BACKUP节点中抢占过来。非抢占模式即MASTER恢复后不抢占BACKUP升级为MASTER后的VIP。
之前的配置都是抢占模式的,如果想配置非抢占模式只改了两个地方:
1> 在vrrp_instance块下两个节点各增加了nopreempt指令,表示不争抢vip
2> 节点的state都为BACKUP
两个keepalived节点都启动后,默认都是BACKUP状态,双方在发送组播信息后,会根据优先级来选举一个MASTER出来。由于两者都配置了nopreempt,所以MASTER从故障中恢复后,不会抢占vip。这样会避免VIP切换可能造成的服务延迟。
参考链接