0
点赞
收藏
分享

微信扫一扫

nginx+keepalived实现nginx服务的高可用


本章教程,简单介绍如何利用keepalived实现nginx服务高可用。

keepalived是一个开源的高可用性解决方案,它可以在Linux系统上实现负载均衡和故障转移。它主要用于确保在服务器集群中的主服务器出现故障时,能够快速切换到备用服务器,从而保证系统的可用性。

keepalived通过VRRP(Virtual Router Redundancy Protocol)协议实现故障转移。VRRP协议允许多个路由器组成一个虚拟路由器,其中一个路由器作为主路由器,负责转发数据流量,其他路由器作为备用路由器,当主路由器故障时接管数据流量。

除了故障转移功能,keepalived还提供了负载均衡功能。它可以根据不同的负载均衡算法将流量分发到多个服务器上,从而提高系统的性能和可扩展性。

目录

一、前置条件

1、安装keepalived

2、安装nginx

3、查看网卡名称

 二、修改配置

1、状态检查脚本

2、修改keepalived(主)配置文件

3、修改keepalived(从)配置文件

三、故障模拟

 1、访问虚拟VIP地址

2、将主节点的nginx服务停止

3、将主节点的nginx服务重新开启

一、前置条件

准备两台虚拟机服务(CentOS7):192.168.101.3(主) 和192.168.101.5(从)

规划虚拟virtual_ipaddress:192.168.101.10(VIP)

分别两台虚拟机服务上安装keeplived和nginx

 

nginx+keepalived实现nginx服务的高可用_配置文件

1、安装keepalived

# 安装
yum -y install keepalived

# 启动
systemctl start keepalived

# 重启
systemctl restart keepalived

# 停止
systemctl stop keepalived

# 查看状态
systemctl status keepalived

2、安装nginx

参考以往教程:Linux 安装 nginx 服务教程_putty 安装nginx

3、查看网卡名称

echo `ip ad|awk '/state UP/ {gsub(":", "");print $2}'`

 

nginx+keepalived实现nginx服务的高可用_运维_02

 二、修改配置

1、状态检查脚本

vim /etc/keepalived/check_nginx.sh

#!/bin/bash

A=`ps -C nginx --no-header |wc -l`

if [ $A -eq 0 ];then
	/usr/bin/kill -15 `cat /var/run/keepalived.pid`
fi

赋予脚本执行权限:chmod +x nginx_check.sh

2、修改keepalived(主)配置文件

配置文件位置:/etc/keepalived/keepalived.conf

! Configuration File for keepalived

global_defs {
   router_id LVS_DEVEL
}

#状态检查脚本
vrrp_script chk_nginx {
  script "/etc/keepalived/check_nginx.sh" # 状态检查脚本位置
  interval 1 # (检测脚本执行的间隔)1s
  weight -10 # 权重
}

vrrp_instance VI_1 {
    state MASTER #备份节点
    interface enp0s3  #网卡名称
    virtual_router_id 51
    priority 100  # 优先级
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
     track_script {
    chk_nginx #执行脚本
  }
    virtual_ipaddress {
        192.168.101.10 # 虚拟VIP
    }
}

3、修改keepalived(从)配置文件

! Configuration File for keepalived

global_defs {
   router_id LVS_DEVEL
}

#状态检查脚本
vrrp_script chk_nginx {
  script "/etc/keepalived/check_nginx.sh" # 状态检查脚本位置
  interval 1 # (检测脚本执行的间隔)1s
  weight 2 # 权重
}

vrrp_instance VI_1 {
    state BACKUP #备份节点
    interface enp0s3  #网卡名称
    virtual_router_id 51
    priority 100  # 优先级
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
     track_script {
    chk_nginx #执行脚本
  }
    virtual_ipaddress {
        192.168.101.10 # 虚拟VIP
    }
}

 配置完成之后,需要重启一下keepalived服务,才会有效。

三、故障模拟

请先确保两台虚拟机的keepalived和nginx都处于运行状态。 

nginx+keepalived实现nginx服务的高可用_nginx_03

 1、访问虚拟VIP地址

nginx+keepalived实现nginx服务的高可用_配置文件_04

 可以看到,默认情况下,优先访问主节点服务器。

2、将主节点的nginx服务停止

systemctl stop nginx

然后,再次访问虚拟VIP地址。 

nginx+keepalived实现nginx服务的高可用_nginx_05

 此时,你就会发现,我的配置已经生效了,自动切换到从节点服务器。

3、将主节点的nginx服务重新开启

systemctl start nginx

nginx+keepalived实现nginx服务的高可用_nginx_06

到此,本章教程就结束了,如果你也感兴趣的话,最好自己动手试试,效果会更好。

举报

相关推荐

0 条评论