Nginx双机主备(Keepalived实现)
off999 2025-01-06 14:49 23 浏览 0 评论
前言
首先介绍一下Keepalived,它是一个高性能的服务器高可用或热备解决方案,起初是专为LVS负载均衡软件设计的,Keepalived主要来防止服务器单点故障的发生问题,可以通过其与Nginx的配合实现web服务端的高可用。
Keepalived以VRRP协议为实现基础,VRRP是Virtual Router Redundancy Protocol(虚拟路由冗余协议)的缩写,VRRP协议将两台或多台路由器设备虚拟成一个设备,对外提供虚拟路由器IP(一个或多个)。
VRRP出现的目的就是为了解决静态路由的单点故障问题的,它能保证当个别节点宕机时,整个网络可以不间断地运行。
下面我们介绍一下nginx keepalived高可用方案的部署安装。
环境准备
在两台主机上准备如下压缩文件:
- keepalived-2.0.20.tar.gz
- nginx-1.16.1.tar.gz
虚拟IP真实IPnginx端口主从192.168.124.20192.168.124.1380MASTER192.168.124.20192.168.124.1480BACKUP
安装nginx
新建一个用户:
useradd tianyan
确定安装目录,我这里的安装目录是:/home/tianyan/tianyan_soft/nginx.install。
在这个目录下分别新建两个目录用于安装nginx和keepalived,解压两个压缩包。
执行安装命令:
./configure --prefix=/home/tianyan/tianyan_soft/nginx.install \
--sbin-path=/home/tianyan/tianyan_soft/nginx.install/sbin/nginx --conf-path=/home/tianyan/tianyan_soft/nginx.install/conf/nginx.conf \
--error-log-path=/home/tianyan/tianyan_soft/nginx.install/error.log \
--http-log-path=/home/tianyan/tianyan_soft/nginx.install/access.log \
--pid-path=/home/tianyan/tianyan_soft/nginx.install/nginx.pid \
--lock-path=/home/tianyan/tianyan_soft/nginx.install/nginx.lock \
--user=tianyan --group=tianyan \
--with-http_stub_status_module \
--with-http_gzip_static_module \
--with-http_ssl_module \
--with-http_realip_module \
--with-threads \
--with-pcre \
--http-client-body-temp-path=/home/tianyan/tianyan_soft/nginx.install/client/ \
--http-proxy-temp-path=/home/tianyan/tianyan_soft/nginx.install/proxy/ \
--http-fastcgi-temp-path=/home/tianyan/tianyan_soft/nginx.install/fcgi/ \
--http-uwsgi-temp-path=/home/tianyan/tianyan_soft/nginx.install/uwsgi \
--http-scgi-temp-path=/home/tianyan/tianyan_soft/nginx.install/scgi
如果报错,记得安装相关依赖:
yum install gcc gcc-c++
nginx: [emerg] bind() to 0.0.0.0:80 failed (13: Permission denied)。
注:以非root权限启动时,会出现 nginx: [emerg] bind() to 0.0.0.0:80 failed (13: Permission denied) 错误。
原因:Linux只有root用户可以使用1024一下的端口
解决办法:
- 1.按照root权限启动
- 2.将 /usr/local/nginx/conf/nginx.conf 文件中的80端口改为1024以上。
安装keepalived
./configure --prefix=/usr/local/keepalived
上述命令执行完毕后继续执行:
make && make install
安装完毕后,目录是这个样子:
将配置文件拷贝到系统对应的目录下
mkdir /etc/keepalived
cp /usr/local/keepalived/etc/keepalived/keepalived.conf /etc/keepalived/keepalived.conf
cp /usr/local/keepalived/etc/sysconfig/keepalived /etc/sysconfig/keepalived
编辑 master 节点的 keepalived.conf
vim /etc/keepalived/keepalived.conf
内容参考如下:
! Configuration File for keepalived
global_defs {
#一个没重复的名字即可
router_id hyq_slave
}
#ng是否运行
vrrp_script chk_nginx {
script "/etc/keepalived/nginx_check.sh"
interval 2
weight -20
}
vrrp_instance VI_1 {
state BACKUP # 必填,可以是MASTER或BACKUP
interface ens33
virtual_router_id 101
priority 90
advert_int 1
# 如果两节点的上联交换机禁用了组播,则采用vrrp单播通告的方式
# 本机ip
unicast_src_ip 192.168.124.14
unicast_peer {
# 其他机器ip
192.168.124.13
}
# 设置nopreempt防止抢占资源
nopreempt
authentication {
auth_type PASS
auth_pass 1111
}
# 与上方nginx运行状况检测呼应
track_script {
chk_nginx
}
virtual_ipaddress {
192.168.124.20
}
}
编辑 slave 节点的 keepalived.conf
vim /etc/keepalived/keepalived.conf
! Configuration File for keepalived
global_defs {
#一个没重复的名字即可
router_id hyq_slave
}
#ng是否运行
vrrp_script chk_nginx {
script "/etc/keepalived/nginx_check.sh"
interval 2
weight -20
}
vrrp_instance VI_1 {
state BACKUP # 必填,可以是MASTER或BACKUP
interface ens33
virtual_router_id 101
priority 90
advert_int 1
# 如果两节点的上联交换机禁用了组播,则采用vrrp单播通告的方式
# 本机ip
unicast_src_ip 192.168.124.14
unicast_peer {
# 其他机器ip
192.168.124.13
}
# 设置nopreempt防止抢占资源
nopreempt
authentication {
auth_type PASS
auth_pass 1111
}
# 与上方nginx运行状况检测呼应
track_script {
chk_nginx
}
virtual_ipaddress {
192.168.124.20
}
}
编写nginx_check.sh脚本
在/etc/keepalived目录下新建nginx_check.sh脚本
touch nginx_check.sh
编辑其内容为:
#!/bin/sh
A=`ps -C nginx --no-header |wc -l`
if [ $A -eq 0 ]
then
/usr/sbin/nginx
sleep 1
A2=`ps -C nginx --no-header |wc -l`
if [ $A2 -eq 0 ]
then
systemctl stop keepalived
fi
fi
含义是:如果 nginx 停止运行,尝试启动,但是如果无法启动,则杀死本机的 keepalived 进程, keepalied将会把虚拟 ip 绑定到 BACKUP 机器上。 注意: /usr/sbin/nginx是nginx的启动命令,如果你安装到其他目录,则相应的替换。
Keepalived的日志
Keepalived日志默认位置是在/var/log/messages目录下。我们将其修改一下。
由于系统是centos7,修改位置为:/lib/systemd/system/keepalived.service
原内容:
EnvironmentFile=-/usr/local/keepalived/etc/sysconfig/keepalived
ExecStart=/usr/local/keepalived/sbin/keepalived $KEEPALIVED_OPTIONS
修改为:
修改完毕后重新加载service
systemctl daemon-reload
创建命令软连接:
ln -s /usr/local/keepalived/sbin/keepalived /usr/sbin/keepalived
执行:
keepalived -D -f /etc/keepalived/keepalived.conf
-D 将日志输出到message日志,默认日志也在message
-f 是指定配置文件
修改/etc/sysconfig/keepalived
把KEEPALIVED_OPTIONS="-D" 修改为:KEEPALIVED_OPTIONS="-D -d -S 0"
在/etc/rsyslog.conf 末尾添加
local0.* /var/log/keepalived.log
最后执行命令:
service rsyslog restart
重启keepalived后就可以看到日志在/var/log/keepalived.log下了。
测试验证VIP
当keepalived和nginx都启动后,我们来测试一下。
首先在浏览器里面访问三个地址
- http://192.168.124.20 (vip)
- http://192.168.124.13 (master)
- http://192.168.124.14 (slave)
我修改了一下nginx的index.html,可以看到当前vip指向是13的master节点:
然后,我们手动停止13上的nginx,再次访问http://192.168.124.20。
说明安装成功。
其中通过ip address命令可以观察到网卡的变化
实验到这里,我们就完成了keepalived + nginx 主从配置的安装部署了。
思考:如何开启双主模式
什么是双主模式?
分别介绍一下两种配置
1、Nginx+keepalived 主从配置
这种方案就是上文介绍过的,使用一个vip地址,前端使用2台机器,一台做主,一台做备,但同时只有一台机器工作,另一台备份机器在主机器不出现故障的时候,永远处于浪费状态,仅仅用于灾备,平时都是空闲着的。
2、Nginx+keepalived 双主配置
这种方案,使用两个vip地址,前端使用2台机器,互为主备,同时有两台机器工作,当其中一台机器出现故障,两台机器的请求转移到一台机器负担,如下图:
推荐阅读:
【实战】 elasticsearch 写入速度提升的案例分享
https://sourl.cn/ZHcLLB
用java做一个能赚钱的微信群聊机器人(PC协议)
https://sourl.cn/ghaHjj
Mysql百万量级数据高效导入Redis
https://sourl.cn/BKw2vS
相关推荐
- win7激活在哪里输入激活码(win7系统激活在哪输入激活码)
-
1、右键桌面上的计算机选择“属性”打开。 2、在打开窗口最下方显示需要立即激活Windows,点开激活链接。 3、在弹出的激活窗口中,输入win7激活密钥。 4、激活过程将需要一些时间,请稍候...
- pp助手ios安装官网(pp助手ios版官网网址)
-
为了安装苹果手机pp助手,您需要按照以下步骤进行:1.在您的苹果手机上打开Safari浏览器。2.在浏览器中搜索“pp助手”并打开官方网站。3.下载并安装pp助手。4.一旦下载完成,您需要在“设置”中...
- 笔记本电脑cpu温度高(笔记本电脑CPU温度高怎么设置自动降温)
-
1、小心拆开背盖,清理风扇和排风口,肯定风扇叶片都积满灰尘了,排风口都堵死了。2、清理干净后给本子配个空调,外置风扇就可以,35左右,尤其长时间用一定要加装。3、彻底杀毒。有些病毒也会引起高温。估计到...
-
- 关闭windows更新(组策略关闭windows更新)
-
1、点击左下角开始菜单2、接着点击设置3、点击Windows更新,接着点击高级选项4、点击WindowsUpdate,接着在启动类型中选择禁用,最后点击确定即可1.按Win+R打开运行,输入”services.msc“打开服务。2.找到/...
-
2025-12-08 06:03 off999
- 电脑装linux系统教程(电脑如何装linux系统)
-
1.选择“中文(简体)”,然后点击“安装Ubuntu”。2.点击“继续”。3.然后点击“现在安装”。4.选择地址的时区,然后点击“继续”。5.选择“汉语”,然后点击“继续”。6.输入用户的名字。7.设...
- 文件恢复助手免费(文件恢复助手破解版)
-
文件传输助手删除的信息是不能再进行找回的。查看文件传输助手信息记录的具体操作步骤如下1、首先在手机上点击打开微信应用程序,然后在此应用程序的页面上点击右上角的放大镜图案。2、接着在此页面的搜索栏内输入...
-
- 智能拼音输入法打字(使用智能拼音输入法)
-
要想拼音快速打字,首先你得下载一个适合自己的输入法软件,比如讯飞输入法。每一个输入法软件都带有自动“存储记忆”功能,当你频道输入三次以上,下一次直接就打拼音首字母就可以了。比如:wochifanla。下次打首字母:wcfl。这样就可以...
-
2025-12-08 04:51 off999
- windows系统xp下载(windows系统xp下载官网)
-
下载地方很多的哦,可以安装大番茄一键重装系统,大白菜一键重装系统等重装软件,还可以到系统之家官网下载。也可以买U盘,用U盘进行安装。附:系统之家链接:http://www.xitongzhi...
-
- sd卡怎样格式化(sd卡怎么格式化为内部存储)
-
打开手机设置,点击运存与存储空间。点击格式化SD卡。点击底部的格式化SD卡,等待格式化完成。内存卡怎么格式化1、首先需要将内存卡插在读卡器上,然后插在电脑的USB接口。、2、在电脑上打开此电脑,可以看到读取了内存卡。3、右键点击内存卡,选择...
-
2025-12-08 03:03 off999
- 手机网速太慢了(手机怎么显示网速)
-
1、首先查看手机当前网络情况,在上方信号烂边上的显示,是否为4G,若是3G或者2G(E),根据手机制式设置开启4G网络,同时需要SIM卡也支持哦。开启4G后,上网速度明显提升。2、APN设置:有些网站...
- 电脑摄像头驱动异常怎么办(电脑摄像头驱动异常怎么办啊)
-
1.开始菜单打开或者双击桌面图标打开360驱动大师2.点击全面诊断。3.等待诊断完成,找到需要修复的,点击修复即可。4.点击驱动安装,可以找到可更新的驱动,点击升级即可。 4、接着我们点击主界面上面...
- 不是有效的win32应用程序简单解决办法
-
该错误通常发生在Windows操作系统上运行APK文件或未正确安装软件的情况下。要解决这个问题,可以尝试下载并安装适用于操作系统的相关软件,或者尝试通过安装或更新相关驱动程序来修复。同时,确保从可信的...
- 什么平板好(什么平板好用性价比高又便宜)
-
性价比高的平板电脑推荐:iPad8、联想小新Pad、华为MatePadPro、荣耀平板V6、Apple苹果ipadmini52019款。1、iPad8性能方面,它搭载的是苹果A1的处理器,...
欢迎 你 发表评论:
- 一周热门
-
-
抖音上好看的小姐姐,Python给你都下载了
-
全网最简单易懂!495页Python漫画教程,高清PDF版免费下载
-
Python 3.14 的 UUIDv6/v7/v8 上新,别再用 uuid4 () 啦!
-
飞牛NAS部署TVGate Docker项目,实现内网一键转发、代理、jx
-
python入门到脱坑 输入与输出—str()函数
-
宝塔面板如何添加免费waf防火墙?(宝塔面板开启https)
-
Python三目运算基础与进阶_python三目运算符判断三个变量
-
(新版)Python 分布式爬虫与 JS 逆向进阶实战吾爱分享
-
失业程序员复习python笔记——条件与循环
-
使用 python-fire 快速构建 CLI_如何搭建python项目架构
-
- 最近发表
- 标签列表
-
- 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)
