前言:今天演示下生产环境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(多种模式教程)的更多相关文章

  1. Nginx+Keeplived双机热备(主从模式)

    Nginx+Keeplived双机热备(主从模式) 参考资料: http://www.cnblogs.com/kevingrace/p/6138185.html 双机高可用一般是通过虚拟IP(漂移IP ...

  2. nginx简单双机热备:backup参数的使用

    nginx简单双机热备:backup参数的使用 nginx简单双机热备:backup参数的使用

  3. 第十节: 利用SQLServer实现Quartz的持久化和双机热备的集群模式 :

    背景: 默认情况下,Quartz.Net作业是持久化在内存中的,即 quartz.jobStore.type = "Quartz.Simpl.RAMJobStore, Quartz" ...

  4. ansible自动部署Keepalived实现Nginx服务双机热备

    脚本实现通过ansible-playbook自动化安装Keepalived和配置,主要解决问题如下: Keepalived自动化安装: keepalived_vrid配置,自动根据vip获取最后一段作 ...

  5. keepalived+nginx实现双机热备

    keepalived是一个类似于layer3, 4, 5 交换机制的软件,也就是我们平时说的第3层.第4层和第5层交换.Keepalived的作用是检测web服务器的状态,如果有一台web服务器死机, ...

  6. ArcSDE Redhat Linux下双机热备部署文档

    http://www.gisall.com/html/47/122747-3867.html ArcSDE系统环境: 操作系统:Red Hat Enterprise Linux AS/ES 5.5 ( ...

  7. Nginx+keepalived双机热备(主主模式)

    之前已经介绍了Nginx+Keepalived双机热备的主从模式,今天在此基础上说下主主模式的配置. 由之前的配置信息可知:master机器(master-node):103.110.98.14/19 ...

  8. Nginx+keepalived 双机热备(主主模式)

    之前已经介绍了Nginx+Keepalived双机热备的主从模式,今天在此基础上说下主主模式的配置. 由之前的配置信息可知:master机器(master-node):103.110.98.14/19 ...

  9. 【Nginx】(主从热备)LVS+Keepalived+Nginx实现高性能负载均衡集群

    一.LVS 1.1 概述 1.2 Nginx与LVS区别什么 二.Keepalived 2.1 概述 2.2 keepalived和其工作原理 三.LVS+Keepalived+Nginx 搭建双机主 ...

  10. keepalived + nginx 实现双机热备

    # docker run -itd --name centos_m1 centos # 进入容器 # docker exec -it centos_m1 /bin/bash # 安装nginx # r ...

随机推荐

  1. vue实现左右两列竖直分别滑动,且双向关联的选项卡(二)

    查了诸如vant,mint组件上并没有找到期望的这种效果(cube组件上有,但项目中实在不想再引入一个第三方的组件库了),但实际上在移动端app开发中很常见的一个效果.于是按照自己的思路将这个效果做了 ...

  2. SAP集成技术(十一)SAP混合集成平台

    愿景 SAP产品之间实现无缝集成还需要一些时间,目前可能还存在一些技术挑战或者需要进一步的开发工作,以便在未来能够轻松地把所有SAP产品整合在一起.让SAP产品能够顺利地与非SAP的解决方案连接,这也 ...

  3. surging版本有哪些?

    surging 一直在升级开发各个版本,以下是各个版本的费用,有需要可以联系或者可以聘请我为架构师,技术顾问,后期会升级多语言版本,推广至海外. 基于surging 的物联网技术架构 平台版本:

  4. Masscan入门手册

    相关文章 https://www.cnblogs.com/huim/p/12116004.html https://4hou.win/wordpress/?cat=3080 Nmap vs Massc ...

  5. 启动docker某个image(镜像)的已经关闭的container(容器)

    1.创建一个后台运行 ubuntu 容器 root@haima-PC:/home/haima/Desktop# docker run -d --name ubuntu-lnmp ubuntu bf24 ...

  6. fastposter v2.8.4 发布 电商海报生成器

    fastposter v2.8.4 发布 电商海报生成器 fastposter海报生成器,电商海报编辑器,电商海报设计器,fast快速生成海报 海报制作 海报开发.贰维海报,图片海报,分享海报贰维码推 ...

  7. 远程桌面使用Pr剪视频

    要远程访问高性能计算机并使用 Pr(Adobe Premiere Pro)进行视频编辑,您可以考虑使用流畅且响应迅速的远程桌面软件.您可以考虑以下选项. Splashtop Business Acce ...

  8. 7月 Splashtop上线了这些新功能 快来看鸭

    经过我们的攻城狮天天努力,我们的软件又得到了升级和完善,上线了一些有用的新功能和增强功能,快来看看吧. Splashtop已为Splashtop Business Access,Splashtop远程 ...

  9. 扩展Unity编辑器顶部Toolbar,增加自定义按钮

    游戏需要增加几种启动模式,要在编辑器顶部Toolbar处增加几个按钮:进行下扩展. 这部分Unity没有直接提供接口,需通过反射实现.看了下有一个开源库: https://github.com/mar ...

  10. 密码学—重合指数法Python程序

    重合指数(Ic) 计算重合指数就是用来验证在Kasiski测试法中猜测出来的各种密钥长度哪一个才是最接近真实密钥长度的. 计算重合指数步骤 按照Kasiski测试法猜测的密钥长度分组 ↓ 分好组之后将 ...