nginx

关注公众号 jb51net

关闭
首页 > 网站技巧 > 服务器 > nginx > keepalived nginx网站高可用

keepalived+nginx实现网站高可用性

作者:hmb↑

本文主要介绍了keepalived+nginx实现网站高可用性,包含配置Keepalived实现双主热备集群架构,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

一、keepalive简介

keepalived + nginx 实现双机主备高可用:

在这里插入图片描述

在使用 Nginx 实现双机主备高可用(HA)架构时,结合 Keepalive,可以有效地提高系统的可靠性和可用性。以下是实现这一架构的基本步骤和要点:

架构概述

二、实现步骤

1. 环境准备

确保两台 Nginx 服务器已经安装并配置好,并且网络可以互通。

2. 安装 Keepalived

在两台服务器上安装 Keepalived,Keepalived 是一种用于实现高可用性的工具,能够通过 VRRP 协议管理主备节点的 IP 地址。

1、下载链接: https://www.keepalived.org/download.html

在这里插入图片描述

2、上传后,进行解压

tar -zxvf keepalived-2.0.20.tar.gz

3、先进入Keepalived目录,然后输入配置命令进行配置(--prefix:指明Keepalived的安装位置,--sysconf:指明Keepalived配置文件存放位置,必须放在/etc下面,为了后续Keepalived启动关闭不报错)

cd keepalived-2.0.20
./configure --prefix=/usr/local/keepalived --sysconf=/etc

如果出现了下面的错误,运行

yum -y install libnl libnl-devel
yum -y install openssl-devel

在这里插入图片描述

4、编译和安装

make && make install

3. 配置 Keepalived 双机主备集群架构

在主节点和备节点上配置 Keepalived。

1、建立check_nginx脚本(/etc/keepalived/check_nginx.sh)如上配置还需要建立check_nginx脚本,用于检查本地Nginx是否存活,如果不存活,则kill keepalived实现切换。其中check_nginx.sh脚本内容如下

#!/bin/bash
killall -0 /usr/local/nginx/sbin/nginx
if [[ $? -ne 0 ]]; then
    service keepalived stop
    exit 1
else
    exit 0
fi

添加可操作权限

chmod +x check_nginx.sh

2、主节点配置(/etc/keepalived/keepalived.conf):

global_defs {
   #路由id:当前安装keepalived节点主机的标识符,全局唯一
   router_id keep_129
}

vrrp_script check_nginx_alive {
   script "/etc/keepalived/check_nginx.sh"
   #每隔2秒运行上一行的脚本
   interval 2
   #权重
   weight 2
}

vrrp_instance VI_1 {
    # 表示的状态,当前的129服务器为nginx的主节点,MASTER/BACKUP
    state MASTER
    # 当前实例绑定的网卡
    interface ens33
    # 保证主备节点一致
    virtual_router_id 51
    # 优先级/权重,谁的优先级高,在MASTER挂掉以后,就能成为MASTER
    priority 100
    # 主备之间同步检查的时间间隔,默认1s
    advert_int 1
    # 认证授权的密码,防止非法节点的进入
    authentication {
        auth_type PASS
        auth_pass 123456
    }
    track_script {
      # 追踪 nginx脚本
      check_nginx_alive
    }
    virtual_ipaddress {
        192.168.121.120
    }
}

3、备节点配置(/etc/keepalived/keepalived.conf):

global_defs {
   #路由id:当前安装keepalived节点主机的标识符,全局唯一
   router_id keep_128
}

vrrp_instance VI_1 {
    # 表示的状态,当前的128服务器为nginx的主节点,MASTER/BACKUP
    state BACKUP
    # 当前实例绑定的网卡
    interface ens33
    # 保证主备节点一致
    virtual_router_id 51
    # 优先级/权重,谁的优先级高,在MASTER挂掉以后,就能成为MASTER
    priority 80
    # 主备之间同步检查的时间间隔,默认1s
    advert_int 1
    # 认证授权的密码,防止非法节点的进入
    authentication {
        auth_type PASS
        auth_pass 123456
    }
    virtual_ipaddress {
        192.168.121.120
    }
}

4. 配置 Nginx

在两台 Nginx 上配置相同的站点,以确保在主节点故障时备节点可以无缝接管。

示例 Nginx 配置(/etc/nginx/nginx.conf):

http {
    upstream backend {
        server 127.0.0.1:8080;  # 假设应用运行在本地的8080端口
    }

    server {
        listen 80;
        server_name example.com;

        location / {
            proxy_pass http://backend;
        }
    }
}

访问原ip

在这里插入图片描述

在这里插入图片描述

5. 启动Keepalived

cd /usr/local/keepalived/sbin/
# 启动命令
./keepalived

systemctl start keepalived.service
systemctl status keepalived.service   # 查看状态,可查看是否有问题

6. 测试高可用性

访问虚拟ip 192.168.121.120

在这里插入图片描述

7. 配置keepalived 双主热备集群架构

Nginx+keepalived主备模式,始终存在一台服务器处于空闲状态,如何更好的把两台服务器利用起来呢,可以借助Nginx+keepalived双主架构来实现,如图23-2所示,将架构改成双主架构,也即同时两台对外两个VIP地址,同时接收用户的请求。

在这里插入图片描述

1、192.168.2.128的keepalived.conf配置文件代码:

global_defs {
   #路由id:当前安装keepalived节点主机的标识符,全局唯一
   router_id keep_128
}

vrrp_instance VI_1 {
    # 表示的状态,当前的128服务器为nginx的主节点,MASTER/BACKUP
    state MASTER
    # 当前实例绑定的网卡
    interface ens33
    # 保证主备节点一致
    virtual_router_id 51
    # 优先级/权重,谁的优先级高,在MASTER挂掉以后,就能成为MASTER
    priority 100
    # 主备之间同步检查的时间间隔,默认1s
    advert_int 1
    # 认证授权的密码,防止非法节点的进入
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        192.168.2.120
    }
}

vrrp_instance VI_2 {
    # 表示的状态,当前的128服务器为nginx的主节点,MASTER/BACKUP
    state BACKUP
    # 当前实例绑定的网卡
    interface ens33
    # 保证主备节点一致
    virtual_router_id 52
    # 优先级/权重,谁的优先级高,在MASTER挂掉以后,就能成为MASTER
    priority 80
    # 主备之间同步检查的时间间隔,默认1s
    advert_int 1
    # 认证授权的密码,防止非法节点的进入
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        192.168.2.121
    }
}

2、192.168.2.129的keepalived.conf配置文件代码:

! Configuration File for keepalived

global_defs {
   #路由id:当前安装keepalived节点主机的标识符,全局唯一
   router_id keep_129
}

vrrp_instance VI_1 {
    # 表示的状态,当前的129服务器为nginx的主节点,MASTER/BACKUP
    state BACKUP
    # 当前实例绑定的网卡
    interface ens33
    # 保证主备节点一致
    virtual_router_id 51
    # 优先级/权重,谁的优先级高,在MASTER挂掉以后,就能成为MASTER
    priority 80
    # 主备之间同步检查的时间间隔,默认1s
    advert_int 1
    # 认证授权的密码,防止非法节点的进入
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        192.168.2.120
    }
}

vrrp_instance VI_2 {
    # 表示的状态,当前的129服务器为nginx的主节点,MASTER/BACKUP
    state MASTER
    # 当前实例绑定的网卡
    interface ens33
    # 保证主备节点一致
    virtual_router_id 52
    # 优先级/权重,谁的优先级高,在MASTER挂掉以后,就能成为MASTER
    priority 100
    # 主备之间同步检查的时间间隔,默认1s
    advert_int 1
    # 认证授权的密码,防止非法节点的进入
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        192.168.2.121
    }
}

注意点:

三、虚拟ip

虚拟 IP 和真实 IP 之间的区别主要在于它们的用途和管理方式:

真实 IP

虚拟 IP

应用场景

总结真实 IP 是指设备的实际地址,而虚拟 IP 是用于在多个设备之间实现共享和故障转移的逻辑地址。

虚拟 IP 地址并不是可以随便设定的,设定虚拟 IP 时需要遵循一些原则和规定:

结论

虽然技术上可以在网络中设置虚拟 IP,但实际操作时需要遵循上述原则,以确保网络的正常运行和稳定性。如果不小心设置了不合适的虚拟 IP,可能会导致网络问题。

到此这篇关于keepalived+nginx实现网站高可用性的文章就介绍到这了,更多相关keepalived nginx网站高可用性内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

您可能感兴趣的文章:
阅读全文