博客
关于我
Nginx keepalived一主一从高可用,手把手带你一步一步配置!
阅读量:790 次
发布时间:2023-02-15

本文共 3327 字,大约阅读时间需要 11 分钟。

Nginx 和 Keepalived 高可用性部署指南

一、实验环境

在本次实验中,我们准备了三台服务器:

  • Nginx-40.14:IPADDR=192.168.40.14
  • Nginx-40.15:IPADDR=192.168.40.15
  • Tomcat-40.16:IPADDR=192.168.40.16,运行两个Tomcat容器分别在8081和8082端口

二、配置环境

Nginx-40.14 配置

  • IPADDR:192.168.40.14
  • Keepalived.conf
    vrrp_instance VI_1 {    state MASTER    interface ens33    virtual_router_id 17    priority 150    virtual_ipaddress 192.168.40.17}

Nginx-40.15 配置

  • IPADDR:192.168.40.15
  • Keepalived.conf
    vrrp_instance VI_1 {    state BACKUP    interface ens33    virtual_router_id 17    priority 99    virtual_ipaddress 192.168.40.17}

Tomcat-40.16 配置

  • 使用Docker部署两个Tomcat容器:
    Tomcat8081: 192.168.40.16:8081Tomcat8082: 192.168.40.16:8082

三、Keepalived 安装部署

1. 安装依赖环境

yum -y install curl gcc openssl-devel libnl3-devel net-snmp-devel libnfnetlink-devel

2. 创建存放目录

mkdir /software

3.上传安装包到 /software

(此步骤省略具体上传命令)

4. 解压安装包

tar -zxvf keepalived-2.1.5.tar.gz

5. 进入keepalived-2.1.5目录并配置

cd keepalived-2.1.5./configure --prefix=/data/keepalived --sysconf=/etc

6. 编译安装

make && make install

7. 创建软连接

ln -s sbin/keepalived /sbin/ln -snf sbin/keepalived /sbin

8. 复制并添加服务

cp /software/keepalived-2.1.5/keepalived/etc/init.d/keepalived /etc/init.d/chkconfig --add keepalived

9. 启动服务

chkconfig keepalived onservice keepalived start

四、Keepalived 配置修改

Master 配置

vim /etc/keepalived/
global_defs {    router_id NGINX}vrrp_instance VI_1 {    state MASTER    interface ens33    virtual_router_id 17    priority 150    advert_int 1    authentication {        auth_type PASS        auth_pass 1111    }    virtual_ipaddress {        192.168.40.17    }}

Backup 配置

vim /etc/keepalived/
global_defs {    router_id NGINX}vrrp_instance VI_1 {    state BACKUP    interface ens33    virtual_router_id 17    priority 99    advert_int 1    authentication {        auth_type PASS        auth_pass 1111    }    virtual_ipaddress {        192.168.40.17    }}

五、启动 Nginx 并验证

/usr/local/nginx/sbin/nginx
service keepalived start

验证虚拟 IP 是否正常:

ip a

六、验证故障转移

停止 Nginx 服务

/usr/local/nginx/sbin/nginx -s stop

验证网络状态:

netstat -nnetstat -nult

验证网页状态:

curl http://192.168.40.17

手动停止 Keepalived 服务

service keepalived stop

验证网页是否恢复正常:

curl http://192.168.40.17

七、脚本自动切换实现

检测 Nginx 运行状态的脚本

#!/bin/bashA=$(ps -C nginx --no-header | wc -l)if [ $A -eq 0 ]; then    sleep 2    if [ `ps -C nginx --no-header | wc -l` -eq 0 ]; then        killall keepalived    fifi

修改 Keepalived.conf 配置

Master 配置

vim /etc/keepalived/
global_defs {    router_id NGINX}vrrp_script chk_nginx {    script "/root/chk_nginx.sh"    interval 2    weight -5}vrrp_instance VI_1 {    state MASTER    interface ens33    virtual_router_id 17    priority 100    advert_int 1    authentication {        auth_type PASS        auth_pass 1111    }    virtual_ipaddress {        192.168.40.17/24    }    track script {        chk_nginx    }}

Backup 配置

vim /etc/keepalived/
global_defs {    router_id NGINX}vrrp_instance VI_1 {    state BACKUP    interface ens33    virtual_router_id 17    priority 99    advert_int 1    authentication {        auth_type PASS        auth_pass 1111    }    virtual_ipaddress {        192.168.40.17/24    }}

八、测试 Keepalived 自动切换

停止 Nginx 服务

/usr/local/nginx/sbin/nginx -s stop

验证网络接口信息:

ip a

验证网页状态:

curl http://192.168.40.17

恢复 Nginx 服务

usr/local/nginx/sbin/nginx

验证 Keepalived 是否自动切换:

service keepalived status

通过以上步骤,可以实现 Nginx 和 Keepalived 的高可用性部署,确保服务的稳定性和可靠性。

转载地址:http://vocfk.baihongyu.com/

你可能感兴趣的文章
Netty工作笔记0007---NIO的三大核心组件关系
查看>>
Netty工作笔记0008---NIO的Buffer的机制及子类
查看>>
Netty工作笔记0009---Channel基本介绍
查看>>
Netty工作笔记0010---Channel应用案例1
查看>>
Netty工作笔记0011---Channel应用案例2
查看>>
Netty工作笔记0012---Channel应用案例3
查看>>
Netty工作笔记0013---Channel应用案例4Copy图片
查看>>
Netty工作笔记0014---Buffer类型化和只读
查看>>
Netty工作笔记0015---MappedByteBuffer使用
查看>>
Netty工作笔记0016---Buffer的分散和聚合
查看>>
Netty工作笔记0017---Channel和Buffer梳理
查看>>
Netty工作笔记0018---Selector介绍和原理
查看>>
Netty工作笔记0019---Selector API介绍
查看>>
Netty工作笔记0020---Selectionkey在NIO体系
查看>>
Netty工作笔记0021---NIO编写,快速入门---编写服务器
查看>>
Netty工作笔记0022---NIO快速入门--编写客户端
查看>>
Vue踩坑笔记 - 关于vue静态资源引入的问题
查看>>
Netty工作笔记0024---SelectionKey API
查看>>
Netty工作笔记0025---SocketChannel API
查看>>
Netty工作笔记0026---NIO 网络编程应用--群聊系统1---编写服务器1
查看>>