当前位置: 首页 > news >正文

Nginx+Keepalived高可用部署

一、安装nginx

官方下载 https://nginx.org/download/nginx-1.20.2.tar.gz

1.关闭防火墙,将安装nginx所需软件包传到/opt目录下

systemctl stop firewalld systemctl disable firewalld

setenforce 0

nginx-1.20.2.tar.gz

2.安装依赖包

#nginx的配置及运行需要pcre、zlib等软件包的支持,因此需要安装这些软件的开发包,以便提供相应的库和头文件。

yum install -y gcc gcc-c++ make pcre pcre-devel zlib zlib-devel openssl openssl-devel

3.创建运行用户、组

(Nginx 服务程序默认以 nobody 身份运行,建议为其创建专门的用户账号,以便更准确地控制其访问权限)

useradd -M -s /sbin/nologin nginx

4.编译安装Nginx

cd /opt tar zxvf nginx-1.20.2.tar.gz -C /opt/

cd nginx-1.20.2/

./configure \

--prefix=/usr/local/nginx \ #指定nginx的安装路径

--user=nginx \ #指定用户名 --group=nginx \ #指定组名

--with-http_stub_status_module

--with-http_ssl_module #启用 http_stub_status_module 模块以支持状态统计 操作

cd nginx-1.20.2/

./configure \

--prefix=/usr/local/nginx \

--user=nginx \

--group=nginx \

--with-http_stub_status_module \

--with-http_ssl_module

make && make install

ln -s /usr/local/nginx/sbin/nginx /usr/local/sbin/ #让系统识别nginx的操作命令

5.检查、启动、重启、停止 nginx服务

nginx -t #检查配置文件是否配置正确

#启动

nginx

6.添加 Nginx 系统服务

vim /lib/systemd/system/nginx.service

[Unit]

Description=nginx

After=network.target

[Service]

Type=forking

PIDFile=/usr/local/nginx/logs/nginx.pid

ExecStart=/usr/local/nginx/sbin/nginx

ExecReload=/bin/kill -s HUP $MAINPID

ExecStop=/bin/kill -s QUIT $MAINPID

PrivateTmp=true

[Install]

二、安装 Keepalived

同样在两台服务器上执行:

bash

# 安装 Keepalived
yum install -y keepalived# 启动 Keepalived 并设置开机自启
systemctl start keepalived
systemctl enable keepalived

三、配置 Keepalived

1. 主服务器配置(192.168.1.100)

编辑 /etc/keepalived/keepalived.conf 文件:

conf

! Configuration File for keepalivedglobal_defs {router_id LVS_MASTER  # 标识本节点的字符串,主备不同
}# 检测 Nginx 服务是否存活的脚本
vrrp_script check_nginx {script "/etc/keepalived/check_nginx.sh"  # 脚本路径interval 2  # 检测间隔(秒)weight -20  # 检测失败时权重减少量
}vrrp_instance VI_1 {state MASTER  # 主服务器为 MASTER,备服务器为 BACKUPinterface eth0  # 绑定的网卡接口,根据实际情况修改virtual_router_id 51  # 虚拟路由 ID,主备必须相同priority 100  # 优先级,主服务器高于备服务器advert_int 1  # 心跳间隔(秒)# 认证信息,主备必须相同authentication {auth_type PASSauth_pass 1111}# 虚拟 IP 地址virtual_ipaddress {192.168.1.102}# 调用 Nginx 检测脚本track_script {check_nginx}
}
2. 备服务器配置(192.168.1.101)

编辑 /etc/keepalived/keepalived.conf 文件:

conf

! Configuration File for keepalivedglobal_defs {router_id LVS_BACKUP
}vrrp_script check_nginx {script "/etc/keepalived/check_nginx.sh"interval 2weight -20
}vrrp_instance VI_1 {state BACKUPinterface eth0virtual_router_id 51priority 90  # 优先级低于主服务器advert_int 1authentication {auth_type PASSauth_pass 1111}virtual_ipaddress {192.168.1.102}track_script {check_nginx}
}

四、创建 Nginx 检测脚本

在两台服务器上都创建 /etc/keepalived/check_nginx.sh 文件:

bash

#!/bin/bash
# 检查 Nginx 进程是否存在
if [ $(ps -C nginx --no-header | wc -l) -eq 0 ]; then# 如果 Nginx 未运行,则尝试启动systemctl start nginx# 等待 3 秒后再次检查sleep 3# 如果仍未启动,则停止 Keepalived,让备机接管if [ $(ps -C nginx --no-header | wc -l) -eq 0 ]; thensystemctl stop keepalivedfi
fi

添加执行权限:

chmod +x /etc/keepalived/check_nginx.sh

 五、重启服务

在两台服务器上重启 Keepalived 使配置生效:

bash

systemctl restart keepalived

六、验证高可用

  1. 查看虚拟 IP 绑定情况:

    bash

    ip addr show eth0  # 替换为实际网卡
    

    正常情况下,虚拟 IP 应绑定在主服务器上。

  2. 测试故障切换:

    • 停止主服务器的 Nginx 或 Keepalived
    • 在备服务器上检查虚拟 IP 是否自动绑定
    • 恢复主服务器服务,虚拟 IP 应自动切回

七、注意事项

  1. 确保两台服务器的时间同步
  2. 关闭或配置防火墙,允许 VRRP 协议(端口 112)
  3. 生产环境中建议对 Nginx 进行更完善的健康检查
  4. 可以通过 journalctl -u keepalived 查看 Keepalived 日志

通过以上配置,就实现了 Nginx 服务的高可用架构,当主服务器出现故障时,备服务器会自动接管虚拟 IP 提供服务,从而保证服务的连续性。

http://www.dtcms.com/a/453748.html

相关文章:

  • 网站建设费用表格做网站 用 显示器
  • 【学习K230-例程47】GT6700-视频播放实验
  • 如何运用好DeepSeek为自己服务:智能增强的范式革命 || 2.1 认知负荷的量化分析
  • 自学做网站多久有ip地址如何做网站
  • 慈溪市网站制作iis网站没有属性
  • 网站建设法语聊城设计网站
  • 做二手钢结构网站有哪些WordPress搜索优化工具
  • Reflexion对ReAct的改进
  • 公司网站建设计入科目如何做网站规划
  • 网站建设和维护要点wordpress app登陆
  • 算法设计与分析 作业 算法实现 1
  • 控制高血压的穴位按摩
  • 从零开始实现一个高并发内存池_DayThree:内存池整体框架与ThreadCache、TLS无锁访问
  • 网站维护费用计入什么科目怎么申请小程序
  • CCF编程能力等级认证GESP—C++5级—20250927
  • 电子商务网站建设规划说明书美食网站二级页面模板
  • 养殖舍建设网站网站建设哈尔滨app开发2
  • 在JavaScript / HTML中,词内断行
  • 做外汇有哪些正规的网站门户网站兴化建设局 金
  • SOLIDWORKS VBA 自学笔记017、根据指定模板创建新文档(代码示例)
  • Python set() 函数
  • 营销型网站套餐国家优质校建设网站
  • 外贸易贷朝阳区seo技术
  • TigerVNC 教程
  • 掌握GPIO基于GD32F407VE的天空星的输入输出控制
  • 九【Python新手入门指南】极速搭建Python开发环境s
  • 四川成都企业高端网站建设一站式的手机网站制作
  • 【LeetCode热题100(36/100)】二叉树的中序遍历
  • 企业建立网站的必要性画网页前端界面的软件
  • Docker 基础命令的 6 大核心模块