Linux + Nginx + Keepalived 高可用配置教程
off999 2025-01-14 16:23 23 浏览 0 评论
众所周知,NGINX 是一个广受好评的 web 服务器,也可以用作反向代理,负载均衡器和 HTTP 缓存。keepalive 工作在虚拟路由器冗余协议 VRRP (Virtual Router Redundancy Protocol) 上,它允许一个静态 IP 在两个 Linux 系统之间进行故障转移。
在本文中,我们将演示如何在 Linux 中使用 keepalive 设置高可用 (HA) NGINX web 服务器。
实验准备
- Node 1 – 192.168.1.130 – nginx1.example.com – minimal CentOS 8 / RHEL 8
- Node 2 – 192.168.1.140 – nginx2.example.com – minimal CentOS 8 / RHEL 8
- Virtual IP (VIP) – 192.168.1.150
- sudo user pkumar
- Firewalld enbled
- SELinux Running
废话不多说,让我们直接进入安装和配置步骤。
1) 安装 NGINX Web Server
For CentOS 8 / RHEL 8
NGINX 软件包在 CentOS 8 / RHEL 8 存储库默认可用,在两个节点上运行如下命令
$ sudo dnf install -y nginxFor CentOS 7 / RHEL 7
NGINX 软件包在 CentOS 7 / RHEL 7 存储库中默认不可用,我们必须启用 epel 存储库,在两个节点上运行以下命令
$ sudo yum install epel-release -y
$ sudo yum install -y nginxFor Ubuntu / Debian
基于 Debian 的发行版,NGINX 软件包在存储库中默认可用,在两个节点上运行如下命令
$ sudo apt update
$ sudo apt install -y nginx2) 为两个节点自定义 index.html
让我们为这两个节点创建自定义 index.html,这样我们就可以很容易地识别哪个服务器在通过虚拟 IP 访问网站。
在 node 1 上,执行如下命令
[pkumar@nginx1 ~]$ echo "<h1>This is NGINX Web Server from Node 1</h1>" | sudo tee /usr/share/nginx/html/index.html在 node 2 上,执行如下命令
[pkumar@nginx2 ~]$ echo "<h1>This is NGINX Web Server from Node 2</h1>" | sudo tee /usr/share/nginx/html/index.html3) 放行 NGINX 端口并启动其服务
如果防火墙已启用,通过以下命令放行 80 端口
For CentOS / RHEL System
$ sudo firewall-cmd --permanent --add-service=http
$ sudo firewall-cmd –reloadFor Ubuntu / Debian System
$ sudo ufw allow 'Nginx HTTP'启动并启用 nginx 服务
$ sudo systemctl start nginx
$ sudo systemctl enable nginx在外部运行 curl 命令测试两个节点的 NGINX 服务器
$ curl http://192.168.1.130
<h1>This is NGINX Web Server from Node 1</h1>
$ curl http://192.168.1.140
<h1>This is NGINX Web Server from Node 2</h1>以上输出确认 NGINX 正在运行,并且可以从外部通过系统的 IP 地址访问。
4) 安装配置 Keepalived
在两个节点上安装配置 Keepalived
For CentOS / RHEL systems
$ sudo dnf install -y keepalived // CentOS 8/ RHEL 8
$ sudo yum install -y keepalived // CentOS 7 / RHEL 7For Ubuntu / Debian System
$ apt install -y keepalived本文中,Node 1 作为主节点,Node 2 作为从节点。
备份配置文件
[pkumar@nginx1 ~]$ sudo cp /etc/keepalived/keepalived.conf /etc/keepalived/keepalived.conf-org编辑配置文件
[pkumar@nginx1 ~]$ echo -n | sudo tee /etc/keepalived/keepalived.conf
[pkumar@nginx1 ~]$ sudo vi /etc/keepalived/keepalived.conf复制如下内容:
global_defs {
# Keepalived process identifier
router_id nginx
}
# Script to check whether Nginx is running or not
vrrp_script check_nginx {
script "/bin/check_nginx.sh"
interval 2
weight 50
}
# Virtual interface - The priority specifies the order in which the assigned interface to take over in a failover
vrrp_instance VI_01 {
state MASTER
interface enp0s3
virtual_router_id 151
priority 110
# The virtual ip address shared between the two NGINX Web Server which will float
virtual_ipaddress {
192.168.1.150/24
}
track_script {
check_nginx
}
authentication {
auth_type AH
auth_pass secret
}
}现在创建一个带有以下内容的脚本,它将检查 nginx 服务是否正在运行。keepalive 将始终检查 check_nginx.sh 脚本的输出,如果它发现 nginx 服务停止或没有响应,那么它将虚拟 ip 地址指向备份节点。
[pkumar@nginx1 ~]$ sudo vi /bin/check_nginx.sh
#!/bin/sh
if [ -z "`pidof nginx`" ]; then
exit 1
fi保存并关闭文件,设置所需权限
[pkumar@nginx1 ~]$ sudo chmod 755 /bin/check_nginx.sh使用 scp 命令把 keepalive .conf 和 check_nginx.sh 文件从 Node 1 复制到 Node 2
[pkumar@nginx1 ~]$ scp /etc/keepalived/keepalived.conf root@192.168.1.140:/etc/keepalived/
[pkumar@nginx1 ~]$ scp /bin/check_nginx.sh root@192.168.1.140:/bin/复制完成后,登录到 Node 2,并在 keepalive .conf 文件中做一些更改。将 state 从 MASTER 更改为 BACKUP,并将 priority 设置为 100 降低优先级。
如果开启防火墙,执行以下命令放行 VRRP(两个节点都要执行)
For CentOS / RHEL Systems
$ sudo firewall-cmd --add-rich-rule='rule protocol value="vrrp" accept' --permanent
$ sudo firewall-cmd --reloadFor Ubuntu / Debian Systems
在主节点 (Node 1) 上执行
$ sudo ufw allow to 224.0.0.18 comment 'VRRP Broadcast'
$ sudo ufw allow from 192.168.1.140 comment 'VRRP Router'在从节点 (Node 2) 上执行
$ sudo ufw allow to 224.0.0.18 comment 'VRRP Broadcast'
$ sudo ufw allow from 192.168.1.130 comment 'VRRP Router'启动和开启 keepalived 服务
$ sudo systemctl start keepalived
$ sudo systemctl enable keepalived验证 keepalived 服务状态
$ sudo systemctl status keepalived验证主节点上的 VIP (虚拟 ip 地址) 状态,本例中 VIP 是 192.168.1.130
$ ip add show以上输出确认在主节点的 enp0s3 接口上配置了 VIP
5) Keepalive 和 NGINX 测试
使用虚拟 IP (192.168.1.150) 访问 nginx 服务器,目前它应该会显示 Node 1 页面。
停止 Node 1 上的 NGINX 服务,看看虚拟 IP 是否从 Node 1 切换到 Node 2,这次它应该会显示 Node 1 页面。
[pkumar@nginx1 ~]$ sudo systemctl stop nginx
[pkumar@nginx1 ~]$ ip add show登录到 Node 2,查看虚拟 IP 是否正确
[pkumar@nginx2 ~]$ ip add show使用虚拟 IP (192.168.1.150) 访问 nginx 服务器
漂亮,以上证实我们已经成功地设置了高可用的 NGINX Web 服务器。
我的开源项目
- course-tencent-cloud(酷瓜云课堂 - gitee 仓库)
- course-tencent-cloud(酷瓜云课堂 - github 仓库)
相关推荐
- win732下载装机版(win732 下载)
-
32位系统安装方法如下1.下载win732位系统iso镜像到本地,不要放桌面或C盘,右键使用WinRAR等工具2.将win7.gho文件和Onekeyghost工具放到同一目录,比如D盘,不要放C...
- 惠普平板笔记本二合一(惠普平板笔记本二合一开不了机怎么办)
-
首先单击Office按钮,在下拉菜单中单击选择“打印”;2.在“打印”对话框中单击勾选“手动双面打印”复选项,再单击打印按钮进行打印;3.Word会先把1、3、5……等单页的内容发送到打印机打印;4....
- 台式机显卡天梯(笔记本显卡排行天梯图)
-
丽台显卡性能排行第一的是:丽台QuadroRTX8000第二是:丽台QuadroP620第三的是:丽台QuadroP2000第四是:丽台Quadrop4000第五是:丽台Quadrop1...
- win7更换壁纸(win7更换壁纸显示黑色)
-
1、首先点开桌面左下角的开始按钮然后在弹出的界面中找到控制面板并打开。2、在控制面板界面的个性化专栏中找到在找到屏幕保护程序并打开。3、在打开的新界面中找到屏幕保护程序并将选项更改为“无”保存后就完成...
- 如何获取windows7正版(如何获得正版win7)
-
关于这个问题,获得Windows7激活密钥的方法有几种:1.在购买Windows7时,通常会附带一张带有激活密钥的正版产品密钥卡。您可以查看产品盒内的卡片或说明书,以获取此密钥。2.如果您购买...
- 重装系统win7旗舰版62位(如何用重装系统win7旗舰版)
-
要重装Windows7系统,可以按照以下步骤进行操作:1.准备计算机:确保计算机已经安装了Windows11操作系统,因为Windows7的兼容性问题可能会影响安装过程。如果计算机上没有安装W...
- tp link app(TP LINKapp下载)
-
tplink手机app官方版是一款专为TP-LINK路由器手机设置应用,能够更好的管理TP-LINK路由器。tplink手机客户端特色1.实时获取路由器状态消息2.本地管理局域网内的TP-LINK路由...
- 如何彻底关掉windows更新(如果关闭windows更新)
-
方法一:Windows设置 要想关闭Win10自动更新,比较简单的一种方法就是进入到Windows设置中,将Windows更新直接关闭。步骤如下: 1、按“Windows+I”键,打开Wind...
- pe怎么制作u盘启动盘(pe制作u盘启动工具)
-
制作U盘启动PE的方法:1、准备一个8G或以上容量的U盘,接入电脑,u盘启动PE制作工具会自动识别u盘,2、接着,设置模式和格式,一般默认选择USB—HDD以及NTFS,点击一键制作成U盘启动PE...
- iso镜像系统下载(下载iso镜像文件)
-
vmwareiso镜像文件可以从VMware官网下载。具体的下载步骤如下:1.打开VMware官网,进入产品下载页面。2.在产品下载页面,选择需要下载的VMware产品,比如VMwareWork...
- 电脑分区工具哪个好用(电脑分区工具下载)
-
电脑分区助手使用方法1.首先先打开我们的分区助手。2.我们把鼠标放上去然后点击鼠标右键选择合并并分区。3.然后勾选上我们未分配的空间。4.然后就扩展完成了。1、《CrystalDiskMark》是一款...
- 字体大小怎么调(win10字体大小怎么调)
-
在大多数文字处理软件和编辑器中,设置字体大小通常是通过以下方法之一完成的:1.使用快捷键:常见的快捷键是使用Ctrl(或Command键)+"+"或"-...
- 联想电脑重装系统下载(联想系统重装软件)
-
联想电脑重装系统步骤:1、制作好U盘启动盘,然后把下载的联想win7系统iso文件直接复制到U盘的GHO目录下:2、在联想电脑上插入U盘,重启后不停按F12或Fn+F12快捷键打开启动菜单,选择U盘项...
-
- qq靓号注册入口(qq靓号注册免费申请网址)
-
目前是没有qq靓号申请器的,因为qq靓号都是由腾讯qq直售代理的,想要申请只能在会员界面支付若干个月会员便可以获得,不同的靓号价格可能不一样,使用期限必须要有qq超级会员。QQ靓号是腾讯公司推出的一种增值QQ号码,是腾讯QQ新推出的一款邮箱...
-
2026-01-11 01:03 off999
- 电脑显示已连接上但是无法上网
-
排查处理:一、若使用的是公共网络:1.尝试在人流量较少的地方使用,并确认热点可正常使用。2.请确认是否需通过浏览器登录网站注册后才能上网。二、若使用的是家庭网络,建议连接其他wifi或手机个人热点进行...
欢迎 你 发表评论:
- 一周热门
-
-
抖音上好看的小姐姐,Python给你都下载了
-
全网最简单易懂!495页Python漫画教程,高清PDF版免费下载
-
Python 3.14 的 UUIDv6/v7/v8 上新,别再用 uuid4 () 啦!
-
飞牛NAS部署TVGate Docker项目,实现内网一键转发、代理、jx
-
python入门到脱坑 输入与输出—str()函数
-
宝塔面板如何添加免费waf防火墙?(宝塔面板开启https)
-
Python三目运算基础与进阶_python三目运算符判断三个变量
-
(新版)Python 分布式爬虫与 JS 逆向进阶实战吾爱分享
-
失业程序员复习python笔记——条件与循环
-
系统u盘安装(win11系统u盘安装)
-
- 最近发表
- 标签列表
-
- python计时 (73)
- python安装路径 (56)
- python类型转换 (93)
- python进度条 (67)
- python吧 (67)
- python的for循环 (65)
- python格式化字符串 (61)
- python静态方法 (57)
- python列表切片 (59)
- python面向对象编程 (60)
- python 代码加密 (65)
- python串口编程 (77)
- python封装 (57)
- python写入txt (66)
- python读取文件夹下所有文件 (59)
- python操作mysql数据库 (66)
- python获取列表的长度 (64)
- python接口 (63)
- python调用函数 (57)
- python多态 (60)
- python匿名函数 (59)
- python打印九九乘法表 (65)
- python赋值 (62)
- python异常 (69)
- python元祖 (57)
