Loading [MathJax]/jax/input/TeX/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >keepalived双机热备nginx

keepalived双机热备nginx

原创
作者头像
lpxxn
发布于 2018-03-07 09:15:39
发布于 2018-03-07 09:15:39
2.2K00
代码可运行
举报
文章被收录于专栏:技术之路技术之路
运行总次数:0
代码可运行

nginx目前是我最常用的反向代理服务,线上环境为了能更好的应对突发情况,一般会使用keepalived双机热备nginx或者使用docker跑nginx集群,keepalived是比较传统的方式,虽然用docker跑nginx集群更方便,但传统的方式总是有他的可取之处,并且多学一些东西也很好。以后也会写如何使用docker跑nginx集群。

环境准备:

  2台centos: 192.168.0.105 和192.168.0.118, 虚拟IP(VIP)为192.168.0.119

配置keepavlived

  分别在105和118上安装keepalived

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
yum install keepalived

准备心跳角本

  keepalived的配置相当灵活,可以定时执行角本命令,用于心跳检查,比如,我们访问nginx发现nginx不可访问时,就关闭keepalived,从而切换到从nginx来实现不间断的服务支持

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
vi /etc/keepalived/keepalived.conf
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
#!/bin/bash

count=0
for (( k=0; k<2; k++ ))
do
   check_code=$( curl --connect-timeout 3 -sL -w "%{http_code}\\n" http://localhost:81 -o /dev/null )
   if [ "$check_code" != "200" ]; then
       count=count +1
       continue
   else
       count = 0
       break
   fi
done
if [ "$count" != "0" ]; then
   killall keepalived
   exit 1
else
   exit 0
fi

  这段角本的意思就是说每次的心跳检查会执行一个for循环,访问http://localhost:81,在for的2次循环中如果返回的状态都不是200就会关闭keepalived。这个角本在105和118两台机器上都要准备好。

  设置118机器上的keepalived为主节点,105机器上的keepalived为从节点,它们两个的配置文件差不太多

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
vi /etc/keepalived/keepalived.conf

  118机器keepalived的配置文件

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
! Configuration File for keepalived
vrrp_script chk_nginx {
   script "/etc/keepalived/check_nginx.sh" # 心跳检测角本
   interval 2 #脚本执行间隔,每2s检测一次
   weight -5 #脚本结果导致的优先级变更,检测失败(脚本返回非0)则优先级 -5
   fall 3 #检测连续2次失败才算确定是真失败。会用weight减少优先级(1-255之间)
   rise 2 #检测1次成功就算成功。但不修改优先级
}

vrrp_instance VI_1 {
   state MASTER #指定keepalived的角色,MASTER表示此主机是主服务器,BACKUP表示此主机是备用服务器
   interface eth0 #指定监测网络的接口。实例绑定的网卡,因为在配置虚拟IP的时候必须是在已有的网卡上添加的
   mcast_src_ip  192.168.0.118 ## 发送多播数据包时的源IP地址
   virtual_router_id 51 #虚拟路由标识,MASTERBACKUP必须是一致的
   priority 100 #定义优先级,数字越大,优先级越高
   advert_int 2 #设定MASTERBACKUP负载均衡器之间同步检查的时间间隔,单位是秒
   authentication { #设置验证类型和密码。主从必须一样
       auth_type PASS #设置vrrp验证类型,主要有PASSAH两种
       auth_pass 1111 #设置vrrp验证密码,在同一个vrrp_instance下,MASTERBACKUP必须使用相同的密码才能正常通信
   }
   virtual_ipaddress {
       192.168.0.119 #VRRP 虚拟地址 如果有多个VIP,换行填写
   }
   track_script {
      chk_nginx # 心跳脚本,即在 vrrp_script 部分指定的名字
   }
}

115机器上的角本对上面的角本稍做变动即可

改变 state MASTER -> state BACKUP,priority 100 -> priority 90,mcast_src_ip 192.168.0.118 -> mcast_src_ip 192.168.0.105。其他的地方保持不变,是不是很简单。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
! Configuration File for keepalived
vrrp_script chk_nginx {
   script "/etc/keepalived/check_nginx.sh"
   interval 2
   weight -5
}

vrrp_instance VI_1 {
   state BACKUP # 修改
   interface eth0
   mcast_src_ip  192.168.0.105 # 修改 为本机IP
   virtual_router_id 51
   priority 90  #数字变小
   advert_int 2
   authentication {
       auth_type PASS
       auth_pass 1111
   }
   virtual_ipaddress {
       192.168.0.119
   }
   track_script {
      chk_nginx
   }
}

到这里keepalived的简单配置就完成了下面就启动keepalived

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
service keepalived start

安装Nginx

查看nginx的依赖库是否完整

rpm -qa zlib

rpm -qa zlib-devel

rpm -qa openssl

rpm -qa openssl-devel

rpm -qa pcre

rpm -qa pcre-devel

rpm -qa gcc

如果没有就安装

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
yum -y install gcc zlib zlib-devel openssl openssl-devel pcre-devel

下载并解压nginx

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
mkdir nginxsrc
cd nginxsrc/
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
wget http://nginx.org/download/nginx-1.13.9.tar.gz
 
tar zxvf nginx-1.13.9.tar.gz
 
cd nginx-1.13.9/
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
./configure --prefix=/usr/local/nginx   --with-http_ssl_module --with-http_stub_status_module --with-http_realip_module

安装在/usr/local/nginx/sbin/nginx 目录下

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
make&&make install

执行成功后会显示leaving directory 

启动

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
/usr/local/nginx/sbin/nginx

检查

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
ps aux|grep nginx

开机启动

vi /etc/rc.local

添加一行

/usr/local/nginx/sbin/nginx

 因为我的机器上80端口被别的应用占用了,所以就修改105和118的 nginx.conf 把端口80 修改为81

vi /usr/local/nginx/conf/nginx.conf

 分别个性105 和119上的index.html 加上一个ip以便们们识别打开的是哪个ip上的index.html

vi /usr/local/nginx/html/index.html 

nginx重新加载配置

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
/usr/local/nginx/sbin/nginx -s reload

好了,我们访问一下

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
curl 192.168.0.119:81

返回的html是 118机器上的index.html

 现在我们把118的nginx停止

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
 /usr/local/nginx/sbin/nginx -s stop

这时118上的keepalived的心跳检查角本发现nginx无法访问会把keepalived关闭,然后转向从节点

我们再访问一下119

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
 curl 192.168.0.119:81

在118上重新启动nginx和keepalived

再访问119 返回的网址是118上的index.html

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
Nginx+keepalived双机热备(主主模式)
之前已经介绍了Nginx+Keepalived双机热备的主从模式,今天在此基础上说下主主模式的配置。 由之前的配置信息可知: master机器(master-node):103.110.98.14/192.168.1.14      VIP1:103.110.98.20 slave机器(slave-node):103.110.98.24/192.168.1.24       VIP2:103.110.98.21 主主模式需要两个负载均衡的VIP, 之前设置了VIP(103.110.98.20) 所以还需要设
洗尽了浮华
2018/01/23
1.5K0
Nginx+keepalived双机热备(主主模式)
Nginx+Keepalived 保障HA高可用
高可用性(high availability)通常用来描述一个系统经过专门的设计,从而减少停工的时间,而保持其服务的高度可用性
Parker
2020/07/21
7180
Nginx+keepalived双机热备(主从模式)
负载均衡技术对于一个网站尤其是大型网站的web服务器集群来说是至关重要的!做好负载均衡架构,可以实现故障转移和高可用环境,避免单点故障,保证网站健康持续运行。 关于负载均衡介绍,可以参考:linux负载均衡总结性说明(四层负载/七层负载) 由于业务扩展,网站的访问量不断加大,负载越来越高。现需要在web前端放置nginx负载均衡,同时结合keepalived对前端nginx实现HA高可用。 1)nginx进程基于Master+Slave(worker)多进程模型,自身具有非常稳定的子进程管理功能。在Mast
洗尽了浮华
2018/01/23
3.6K0
Nginx+keepalived双机热备(主从模式)
Nginx+Keepalived实现服务的高可用
Keepalived软件起初是专为LVS负载均衡软件设计的,用来管理并监控LVS集群系统中各个服务节点的状态,后来又加入了可以实现高可用的VRRP功能。因此,keepalived除了能够管理LVS软件外,还可以作为其他服务的高可用解决方案软件。
胡齐
2019/09/25
8680
Nginx+Keepalived实现服务的高可用
【详解】Nginx+keepalived双机热备
在互联网的高可用性服务中,单一的服务节点往往无法满足业务对稳定性和可用性的要求。双机热备是一种常见的高可用性解决方案,它通过两台服务器同时运行相同的服务,并使用 Keepalived 来实现故障转移,确保在主服务器发生故障时,备服务器能够立即接管服务,从而保证服务的连续性。本文将详细介绍如何在 Nginx 环境中部署双机热备方案。
大盘鸡拌面
2025/01/01
2030
FastDFS蛋疼的集群和负载均衡(六)之Nginx高可用集群
diary_report.jpg Interesting things 接着上一篇。 What did you do today Keepalived是一个高性能的服务器高可用解决方案,Keepalived主要防止服务器单点故障的发生问题,可以通过Nginx的配合实现web服务端的高可用。 还记得我们空出来的192.168.12.77和192.168.12.88吗?这2台设备就是用来配置nginx的集群和高可用。我们可以虚拟出来一个192.168.12.XX,外界请求访问虚拟ip而不是真正的N
用户2032165
2018/06/05
4530
nginx+keepalived 双机热备
当提供服务的一台出现故障的时候,另外一台会马上自动接管并且提供服务,且切换的时间非常短。
随心助手
2019/10/15
1.6K0
nginx+keepalived 双机热备
Nginx + Keepalived使用文档
下载keepalived地址:http://www.keepalived.org/download.html
HUC思梦
2020/09/03
6750
安装部署keepalived的HA环境
每一台配置下keepalived #master01 配置: cat >/etc/keepalived/keepalived.conf<<"EOF" ! Configuration File for keepalived global_defs { router_id LVS_DEVEL script_user root enable_script_security } vrrp_script chk_apiserver { script "/etc/keepalived/check
小陈运维
2022/08/19
5210
Nginx+Keepalived实现高可用Web负载均衡
通过之前的一篇文章Nginx+Tomcat实现负载均衡我们已经能通过Nginx来实现Tomcat应用的负载均衡,但是单个的Nginx会存在单点隐患,如果Nginx挂掉,那么全部的Tomcat应用都将变得不可用,所以实现Nginx的高可用是必不可少的一步。
会跳舞的机器人
2018/09/03
2.3K0
Nginx+Keepalived实现高可用Web负载均衡
生产环境之Nginx高可用方案(keepalived+双机热备)
高可用HA(High Availability)是分布式系统架构设计中必须考虑的因素之一,它通常是指,通过设计减少系统不能提供服务的时间。如果一个系统能够一直提供服务,那么这个可用性则是百分之百,但是天有不测风云。所以我们只能尽可能的去减少服务的故障。
浅醉樱花雨
2020/04/29
1.2K0
Nginx+Keepalived(双机热备)搭建高可用负载均衡环境(HA)
基于 Nginx+Tomcat+Redis负载均衡Session共享来实现后续的功能 个人微信小程序。是关于人工智能的。应用是百度大脑 和 腾讯优图的人脸识别 有问题加QQ:783021975 验证问
小帅丶
2018/03/12
1.3K0
Nginx+Keepalived(双机热备)搭建高可用负载均衡环境(HA)
使用Keepalived做双机热备
http://www.keepalived.org/software/keepalived-1.2.7.tar.gz
星哥玩云
2022/06/29
9660
Centos7 安装 Keepalived+Nginx 双机热备HA 的正确姿势 并开机自启 实践笔记
我使用centos7X64最小化安装 CentOS-7-x86_64-Minimal-1708
cookily
2020/09/11
2.1K0
Nginx+Keepalived实现简单的服务高可用
但是,作为互联网项目,纯2C的话必然需要做高可用,不仅后端的Server有N个,Nginx同样需要有N个,一主N备,当有一个服务器挂掉的时候,服务能瞬间切换到其他服务器,大概是这样的
小尘哥
2019/01/02
1.1K0
nginx和keepalived实现nginx高可用_weblogic负载均衡
转载请注明出处:http://blog.csdn.net/l1028386804/article/details/72801492
全栈程序员站长
2022/11/03
3100
搭建Keepalived+Nginx高可用服务架构
这里有3个角色: 一主、一备、监控程序。其中的监控程序或者软件我们可以采用Keepalived。
青山师
2023/05/05
4240
搭建Keepalived+Nginx高可用服务架构
Centos7 keepalived安装并监控mysql实现自动切换
安装 下载(https://www.keepalived.org/download.html) wget https://www.keepalived.org/software/keepalived-2.1.5.tar.gz tar -xvf keepalived-2.1.5.tar.gz -C /usr/local/src cd /usr/local/src/keepalived-2.1.5 ./configure --prefix=/ #安装一般不能一帆风顺,一般会缺少OpenSSL #1.在线安装
肖哥哥
2020/08/06
9930
构建高可用服务器之四 Keepalive冗余Nginx
如上拓扑图所示,master与slave是mysql主从,且有discuz论坛,且已经做高可用。(可参加《构建高可用服务器之三Keepalive冗余Mysql》)。现在是刚搭建两台Nginx,均已安装keepalive,IP地址分别为192.168.1.2和192.168.1.5(可参加《构建Nginx服务器之一安装及虚拟主机配置》和《构建高可用服务器之一Keepalive介绍及安装》)。
子润先生
2021/06/17
7460
Keepalived + Nginx 实现高可用 Web 负载均衡
Keepalived 是一种高性能的服务器高可用或热备解决方案, Keepalived 可以用来防止服务器单点故障的发生,通过配合 Nginx 可以实现 web 前端服务的高可用。 Keepalived 以 VRRP 协议为实现基础,用 VRRP 协议来实现高可用性(HA)。 VRRP(Virtual RouterRedundancy Protocol)协议是用于实现路由器冗余的协议, VRRP 协议将两台或多台路由器设备虚拟成一个设备,对外提供虚拟路由器 IP(一个或多个),而在路由器组内部,如果实际拥有这个对外 IP 的路由器如果工作正常的话就是 MASTER,或者是通过算法选举产生, MASTER 实现针对虚拟路由器 IP 的各种网络功能,如 ARP 请求, ICMP,以及数据的转发等;其他设备不拥有该虚拟 IP,状态是 BACKUP,除了接收 MASTER 的VRRP 状态通告信息外,不执行对外的网络功能。当主机失效时, BACKUP 将接管原先 MASTER 的网络功能。VRRP 协议使用多播数据来传输 VRRP 数据, VRRP 数据使用特殊的虚拟源 MAC 地址发送数据而不是自身网卡的 MAC 地址, VRRP 运行时只有 MASTER 路由器定时发送 VRRP 通告信息,表示 MASTER 工作正常以及虚拟路由器 IP(组), BACKUP 只接收 VRRP 数据,不发送数据,如果一定时间内没有接收到 MASTER 的通告信息,各 BACKUP 将宣告自己成为 MASTER,发送通告信息,重新进行 MASTER 选举状态。
jwangkun
2021/12/23
2.2K1
Keepalived + Nginx 实现高可用 Web 负载均衡
相关推荐
Nginx+keepalived双机热备(主主模式)
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验