生产环境部署Nginx服务器双机热备部署-keepalived(多种模式教程)
前言:今天演示下生产环境keepalived的部署方式,安装模式有很多,比如说主备模型和双主模型,主备分:抢占模式 和 非抢占模式。这里我会一一展开说具体怎么配置
一、双节点均部署Nginx:
第一步:上传安装包到/usr/local/
第二步:安装编译依赖(使用普通用户需要家sudo)
yum install gcc gcc-c++
yum install zlib zlib-devel
yum install pcre pcre-devel
yum install openssl libssl-dev
第三步:解压,编译安装:
解压命令: sudo tar -zxvf nginx-1.24.0.tar.gz
进入nginx路径:cd nginx-1.24.0
编译安装:
命令:
sudo ./configure --prefix=/etc/nginx --sbin-path=/usr/bin/nginx --conf-path=/etc/nginx/nginx.conf --error-log-path=/var/log/nginx/error.log --http-log-path=/var/log/nginx/access.log --pid-path=/var/run/nginx.pid --lock-path=/var/run/nginx.lock --with-http_ssl_module
# --with-http_ssl_module这个参数为了启用 SSL 支持。
命令:sudo make install
第四步:启动nginx
命令:sudo nginx
第五步:停止nginx
命令:sudo nginx -s stop
第六步:配置nginx开机启动
sudo vim /etc/rc.d/rc.local
添加执行语句/usr/bin/nginx
退出保存
开机启动文件授权
sudo chmod +x /etc/rc.d/rc.local
第六步:重载nginx
nginx -s reload
Nginx安全加固配置:在nginx.conf配置文件里加上TLSv1.2 TLSv1.3; 和隐藏版本号的部分。
# 在server { }块里配置启用TLSv1.2和TLSv1.3的参数
ssl_protocols TLSv1.2 TLSv1.3;
# 在http { }块里配置隐藏Nginx服务器版本信息的参数
server_tokens off;
二、双节点部署keepalived主备模式
第一步:上传安装包到/mpjava/
第二步:安装gcc等编译需要的软件库。(要求网络能连接外网进行更新,如果已安装,可跳过此步骤)
命令:yum -y install libnl libnl-devel
命令:yum -y install gcc gcc-c++
命令:yum -y install openssl
命令:yum -y install openssl-devel
命令:yum -y install libnl3-devel
第三步:解压,并编译安装
命令:tar -zxf keepalived-2.2.4.tar.gz
命令:cd keepalived-2.2.4
命令:./configure --prefix=/usr/local/keepalived
命令:make && make install
第四步:复制配置文件
命令:mkdir -p /etc/keepalived
命令:cp /usr/local/keepalived/etc/keepalived/keepalived.conf /etc/keepalived/ #主配置文件
命令:cp /usr/local/keepalived/etc/sysconfig/keepalived /etc/sysconfig/
命令:ln -s /usr/local/keepalived/sbin/keepalived /sbin/
第五步:设置开机启动
命令:chkconfig keepalived on
第六步:启动keepalived
命令:systemctl start keepalived
命令:ps -ef | grep keepalived
问题:发现未能正常启动
查看日志命令:
systemctl status keepalived.service -l:查看 keepalived 服务的状态及相关日志信息
journalctl -u keepalived.service -f:实时查看 keepalived 服务的日志输出
tail -22f /var/log/messages | grep Keepalived:通过查看系统日志/var/log/messages中与 Keepalived 相关的内容来获取日志信息
原因:通过查询系统日志发现keepalived配置文件默认网卡名和当前服务器网卡名不一致。
解决:需要修改/etc/keepalived/keepalived.conf的网卡名,与服务器同步即可。
重启keepalived:systemctl start keepalived
第七步:新建nginx检测脚本nginxcheck.sh,并存放在指定目录,本例使用:/mpjava/nginxcheck.sh
命令:vim /mpjava/nginxcheck.sh
添加以下内容:
#/bin/sh
nginxPidNum=`ps -C nginx --no-header |wc -l`
if [[ $nginxPidNum -eq 0 ]];
then
killall keepalived
fi
注:需要设置nginxcheck.sh有执行权限,chmod 777 /mpjava/nginxcheck.sh
第八步:按下例分别修改主、备服务器/etc/keepalived/keepalived.conf
声明:这里的ip为虚假ip,只是举例说明
主节点:
! Configuration File for keepalived
global_defs {
notification_email {
acassen@firewall.loc
failover@firewall.loc
sysadmin@firewall.loc
}
notification_email_from Alexandre.Cassen@firewall.loc
smtp_server 10.0.0.1 #配置当前网关
smtp_connect_timeout 30
router_id LVS_DEVEL
vrrp_skip_check_adv_addr
vrrp_strict
vrrp_garp_interval 0
vrrp_gna_interval 0
}
vrrp_script chk_nginx {
script "/mpjava/nginxcheck.sh" #脚本位置
interval 2 #检测时间间隔
weight 2 #权重2
}
vrrp_instance VI_1 {
state BACKUP #主节点如果写BACKUP,和配置下面的nopreempt参数就为 非抢占模式;如果写MASTER,删除nopreempt参数,则为 抢占模式
nopreempt #非抢占模式参数
interface enp4s3
virtual_router_id 69 #不能使用同网段已使用的ip地址;同一个VRRP实例中每个节点的虚拟路由ID必须相同
priority 100 #不管是否开启抢占模式,主节点的优先级必须高于 从节点
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
track_script { #以脚本为监控chk_http_port是前面填写的
chk_nginx
}
virtual_ipaddress {
10.0.0.10 #vip
}
}
从节点:
! Configuration File for keepalived
global_defs {
notification_email {
acassen@firewall.loc
failover@firewall.loc
sysadmin@firewall.loc
}
notification_email_from Alexandre.Cassen@firewall.loc
smtp_server 10.0.0.1 #配置当前网关
smtp_connect_timeout 30
router_id LVS_DEVEL
vrrp_skip_check_adv_addr
vrrp_strict
vrrp_garp_interval 0
vrrp_gna_interval 0
}
vrrp_script chk_nginx {
script "/mpjava/nginxcheck.sh" #脚本位置
interval 2 #检测时间间隔
weight 2 #权重2
}
vrrp_instance VI_1 {
state BACKUP #不管是抢占模式否,从节点设置为backup
nopreempt #非抢占模式参数,如果不开启该模式,需要删除
interface eth0
virtual_router_id 69 #不能使用同网段已使用的ip地址;同一个VRRP实例中每个节点的虚拟路由ID必须相同
priority 99
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
track_script { #以脚本为监控chk_http_port是前面填写的
chk_nginx
}
virtual_ipaddress {
10.0.0.10 #VIP
}
}`
第九步:验证
由于涉及公司内网ip,验证结果不方便展示,我这里口述方法:
抢占模式:启动两个节点的nginx和keepalived,当主节点的keepalived关了后,VIP会漂移到从节点上,当主节点启动后,此时VIP会漂移回主节点;
非抢占模式:启动两个节点的nginx和keepalived,当主节点的keepalived关了后,VIP会漂移到从节点上,此时再将主节点启动后,VIP不会漂移回主节点;
(以上验证方法用命令ip a实时查看网卡的VIP地址的漂移节奏)
高可用集群中的不抢占功能。在一个HA集群中,如果主节点死机了,备用节点会进行接管,主节点再次正常启动后一般会自动接管服务。对于实时性和稳定性要求不高的业务系统来说,这种来回切换的操作还是可以接受的。而对于稳定性和实时性要求很高的业务系统来说,不建议来回切换,毕竟服务的切换存在一定的风险和不稳定性
三、Keepalived主主模式
第一步:按下例分别修改主、主服务器/etc/keepalived/keepalived.conf
声明:这里的ip为虚假ip,只是举例说明
主节点1:
! Configuration File for keepalived
global_defs {
notification_email {
acassen@firewall.loc
failover@firewall.loc
sysadmin@firewall.loc
}
notification_email_from Alexandre.Cassen@firewall.loc
smtp_server 10.0.0.1 #配置当前网关
smtp_connect_timeout 30
router_id LVS_DEVEL
vrrp_skip_check_adv_addr
vrrp_strict
vrrp_garp_interval 0
vrrp_gna_interval 0
}
vrrp_script chk_nginx {
script "/mpjava/nginxcheck.sh" #脚本位置
interval 2 #检测时间间隔
weight 2 #权重2
}
vrrp_instance VI_1 {
state MASTER #主节点为MASTER
interface enp4s3
virtual_router_id 69 #不能使用同网段已使用的ip地址;同一个VRRP实例中每个节点的虚拟路由ID必须相同
priority 100 #MASTER节点必须高于BACKUP节点
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
track_script { #以脚本为监控chk_http_port是前面填写的
chk_nginx
}
virtual_ipaddress {
10.0.0.8 #vip1
}
}
vrrp_instance VI_2 {
state BACKUP #该节点设置为backup
interface eth0
virtual_router_id 70 # 同一个VRRP实例中每个节点的虚拟路由ID必须相同
priority 90 # MASTER节点必须高于BACKUP节点
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
10.0.0.9 #vip2
}
}
主节点2:
! Configuration File for keepalived
global_defs {
notification_email {
acassen@firewall.loc
failover@firewall.loc
sysadmin@firewall.loc
}
notification_email_from Alexandre.Cassen@firewall.loc
smtp_server 10.0.0.1 #配置当前网关
smtp_connect_timeout 30
router_id LVS_DEVEL
vrrp_skip_check_adv_addr
vrrp_strict
vrrp_garp_interval 0
vrrp_gna_interval 0
}
vrrp_script chk_nginx {
script "/mpjava/nginxcheck.sh" #脚本位置
interval 2 #检测时间间隔
weight 2 #权重2
}
vrrp_instance VI_1 {
state BACKUP #不管是抢占模式否,从节点设置为backup
nopreempt #非抢占模式参数,如果不开启该模式,需要删除
interface eth0
virtual_router_id 69 #不能使用同网段已使用的ip地址;同一个VRRP实例中每个节点的虚拟路由ID必须相同
priority 99 #MASTER节点必须高于BACKUP节点
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
track_script { #以脚本为监控chk_http_port是前面填写的
chk_nginx
}
virtual_ipaddress {
10.0.0.8 #vip1
}
}`
vrrp_instance VI_2 {
state MASTER #该节点设置为MASTER
interface eth0
virtual_router_id 70 #同一个VRRP实例中每个节点的虚拟路由ID必须相同
priority 100 #MASTER节点的优先级必须高于BACKUP节点
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
10.0.0.9 #vip2
}
}
第二步:验证
由于涉及公司内网ip,验证结果不方便展示,我这里口述方法:
启动两个主节点的nginx和keepalived,将nginx中配置的域名解析到这两个VIP地址上,浏览器访问正常。此时关闭其中一个主节点的keepalived,VIP会漂移到另外一台主节点服务器上。
(以上验证方法用命令ip a实时查看网卡的VIP地址的漂移节奏)
在keepalived的主备模式中,当主节点正常的时候,备节点永远处于闲置状态,不会接受web请求,这样就会浪费一半的资源。根据自身业务和资源等综合来选择模式。
生产环境部署Nginx服务器双机热备部署-keepalived(多种模式教程)的更多相关文章
- Nginx+Keeplived双机热备(主从模式)
Nginx+Keeplived双机热备(主从模式) 参考资料: http://www.cnblogs.com/kevingrace/p/6138185.html 双机高可用一般是通过虚拟IP(漂移IP ...
- nginx简单双机热备:backup参数的使用
nginx简单双机热备:backup参数的使用 nginx简单双机热备:backup参数的使用
- 第十节: 利用SQLServer实现Quartz的持久化和双机热备的集群模式 :
背景: 默认情况下,Quartz.Net作业是持久化在内存中的,即 quartz.jobStore.type = "Quartz.Simpl.RAMJobStore, Quartz" ...
- ansible自动部署Keepalived实现Nginx服务双机热备
脚本实现通过ansible-playbook自动化安装Keepalived和配置,主要解决问题如下: Keepalived自动化安装: keepalived_vrid配置,自动根据vip获取最后一段作 ...
- keepalived+nginx实现双机热备
keepalived是一个类似于layer3, 4, 5 交换机制的软件,也就是我们平时说的第3层.第4层和第5层交换.Keepalived的作用是检测web服务器的状态,如果有一台web服务器死机, ...
- ArcSDE Redhat Linux下双机热备部署文档
http://www.gisall.com/html/47/122747-3867.html ArcSDE系统环境: 操作系统:Red Hat Enterprise Linux AS/ES 5.5 ( ...
- Nginx+keepalived双机热备(主主模式)
之前已经介绍了Nginx+Keepalived双机热备的主从模式,今天在此基础上说下主主模式的配置. 由之前的配置信息可知:master机器(master-node):103.110.98.14/19 ...
- Nginx+keepalived 双机热备(主主模式)
之前已经介绍了Nginx+Keepalived双机热备的主从模式,今天在此基础上说下主主模式的配置. 由之前的配置信息可知:master机器(master-node):103.110.98.14/19 ...
- 【Nginx】(主从热备)LVS+Keepalived+Nginx实现高性能负载均衡集群
一.LVS 1.1 概述 1.2 Nginx与LVS区别什么 二.Keepalived 2.1 概述 2.2 keepalived和其工作原理 三.LVS+Keepalived+Nginx 搭建双机主 ...
- keepalived + nginx 实现双机热备
# docker run -itd --name centos_m1 centos # 进入容器 # docker exec -it centos_m1 /bin/bash # 安装nginx # r ...
随机推荐
- 新闻网页Python爬虫(jieba分词+关键词搜索排序)
前言 最近做了一个python3作业题目,涉及到: 网页爬虫 网页中文文字提取 建立文字索引 关键词搜索 涉及到的库有: 爬虫库:requests 解析库:xpath 正则:re 分词库:jieba ...
- Photoshop AI 令人惊叹的生成式填充
原文地址:Adobe Photoshop's Amazing New Generative Fill | by Paul DelSignore | The Generat | May, 2023 | ...
- vue3早已具备抛弃虚拟DOM的能力了
前言 jquery时代更新视图是直接对DOM进行操作,缺点是频繁操作真实 DOM,性能差.react和vue时代引入了虚拟DOM,更新视图是对新旧虚拟DOM树进行一层层的遍历比较,然后找出需要更新的D ...
- 一键关闭 Win11 系统广告「GitHub 热点速览」
不知道读者中有多少人早已对 Windows 11 系统自带的广告感到厌烦,却又不知道如何关闭它们? 虽然网上有详细的关闭教程,但是都需要逐一手动操作,不是很方便.所以,今天「GitHub 热点速览」给 ...
- fastposter发布1.5.0 跨语言的海报生成器
fastposter发布1.5.0 跨语言的海报生成器 v1.5.0 增加右键复制.粘贴操作 fastposter低代码海报生成器,一分钟完成海报开发.支持Java,Python,PHP,Go,Jav ...
- 海康iSC综合安防平台-视频web插件调试
综合安防管理平台 视频WEB插件 1.demo_window_simple_playback.html.demo_window_simple_preview.html为简化版demo,可在此基础上开发 ...
- IPv6 — 移动性
目录 文章目录 目录 前文列表 IPv6 的移动性 移动操作 路由优化 前文列表 <IPv6 - 网际协议第 6 版> <IPv6 - 地址格式与寻址模式> <IPv6 ...
- Ceph存储池管理
目录 Ceph存储池 1. Ceph的存储流程 1. 数据写入 2. 数据读取 2. 资源池的配置 2.1 资源池创建 pgp是什么 (Placement Group for Placement pu ...
- js实现 StringBuilder
function StringBuilder() { this._stringArray = new Array(); } StringBuilder.prototype.append = funct ...
- linux 自定义程序开机自启
实现开机自启常见的有两种方法: /etc/init.d/下编写脚本命令(有些机子会有问题,比较麻烦) 利用定时任务crontab 本文介绍crontab现实程序开机自启 编写执行脚本run.sh #! ...