keepalived双机热备nginx

  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

yum install keepalived

  准备心跳角本

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

vi /etc/keepalived/keepalived.conf
#!/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为从节点,它们两个的配置文件差不太多

vi /etc/keepalived/keepalived.conf

  118机器keepalived的配置文件

! 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 #虚拟路由标识,MASTER和BACKUP必须是一致的
   priority 100 #定义优先级,数字越大,优先级越高
   advert_int 2 #设定MASTER与BACKUP负载均衡器之间同步检查的时间间隔,单位是秒
   authentication { #设置验证类型和密码。主从必须一样
       auth_type PASS #设置vrrp验证类型,主要有PASS和AH两种
       auth_pass 1111 #设置vrrp验证密码,在同一个vrrp_instance下,MASTER与BACKUP必须使用相同的密码才能正常通信
   }
   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。其他的地方保持不变,是不是很简单。

! 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

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

如果没有就安装

yum -y install gcc zlib zlib-devel openssl openssl-devel pcre-devel

下载并解压nginx

mkdir nginxsrc
cd nginxsrc/

wget http://nginx.org/download/nginx-1.13.9.tar.gz

tar zxvf nginx-1.13.9.tar.gz

cd nginx-1.13.9/

./configure --prefix=/usr/local/nginx   --with-http_ssl_module --with-http_stub_status_module --with-http_realip_module

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

make&&make install

执行成功后会显示leaving directory

启动

/usr/local/nginx/sbin/nginx

检查

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重新加载配置

/usr/local/nginx/sbin/nginx -s reload

好了,我们访问一下

curl 192.168.0.119:81

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

现在我们把118的nginx停止

 /usr/local/nginx/sbin/nginx -s stop

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

我们再访问一下119

 curl 192.168.0.119:81

在118上重新启动nginx和keepalived

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

原文地址:https://www.cnblogs.com/li-peng/p/8490928.html

时间: 2024-10-29 19:11:41

keepalived双机热备nginx的相关文章

Nginx+keepalived双机热备+负载均衡 ???待续

keepalived+nginx双机热备+负载均衡 最近因业务扩展,需要将当前的apache 转为nginx(web), 再在web前端放置nginx(负载均衡).同时结合keepalived 对前端nginx实现HA.nginx进程基于于Master+Slave(worker)多进程模型,自身具有非常稳定的子进程管理功能.在Master进程分配模式下,Master进程永远不进行业务处理,只是进行任务分发,从而达到Master进程的存活高可靠性,Slave(worker)进程所有的业务信号都 由

keepalive+双机热备+nginx

最近搭建keepalived双机热备, 在网上博采众之所长, 整理一下自己的笔记! 在新搭建的centos6.x下最好下载一下阿里云源: centos:http://mirrors.aliyun.com/help/centos 1.备份 mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup 2.下载新的CentOS-Base.repo 到/etc/yum.repos.d/ CentOS 5 wg

&#8203;Keepalived双机热备

Keepalived双机热备 Keepalived是专门针对LVS设计的一款强大的辅助工具,主要用来提供故障切换和健检查功能,如判断LVS负载调度器.节点服务器的可用性,及时隔离并替换为新的服务器,当故障主机恢复后将其重新加入群集.在非LVS群集环境中使用时Keepalived也可以作为热备软件使用. Keepalived采用VRRP(virtual  router  redundancy protocol,虚拟路由冗余协议)热备份协议,以软件的方式实现linux服务器的多机热备功能.VRRP是

Centos 7 keepalived双机热备

Centos 7 keepalived双机热备 操作环境:keepalived热备份(双机热备)Centos 7系统ip地址: 192.168.80.100 --主服务器Centos 7系统ip地址: 192.168.80.101 --从服务器windows系统ip地址: 192.168.80.20 --测试客户端 Centos 7系统ip地址: 192.168.80.100操作如下:1. keepalived软件安装yum install keepalived -y 2.修改配置文件vi /e

centos 7之keepalived双机热备理论+配置文件详解

一.keepalived工作原理及作用: keepalived最初是专门针对LVS设计的一款强大的辅助工具,主要用来提供故障切换和健康检 查功能--判断LVS负载调度器.节点服务器的可用性,及时隔离并替换为新的服务器,当故 障主机回复后将其重新加入群集.单独部署LVS环境的话,调度器发生宕机的话,整个群集就 失效了,某一个web节点宕机后,客户端在访问时,总会碰上访问不到网页的情况,所以,将 keepalived和LVS结合起来,才可形成一个真正的高可用群集,当然,后端的共享存储也必须 搭建一个

keepalived 双机热备配置文件详解

配置示例:https://blog.51cto.com/14227204/2438902一.keepalived工作原理及作用: keepalived最初是专门针对LVS设计的一款强大的辅助工具,主要用来提供故障切换和健康检查功能--判断LVS负载调度器.节点服务器的可用性,及时隔离并替换为新的服务器,当故障主机回复后将其重新加入群集.单独部署LVS环境的话,调度器发生宕机的话,整个群集就失效了,某一个web节点宕机后,客户端在访问时,总会碰上访问不到网页的情况,所以,将keepalived和L

浅谈Keepalived双机热备

一.Keepalived双机热备的基础知识 keepalived官方网站: www.keepalived.org/ 在非LVS环境中keepalived也可以作为热备软件使用. 1.Keepalived作用 keepalived最初是专门针对LVS设计的一款强大的辅助工具,主要用来提供故障切换和健康检查功能--判断LVS负载调度器.节点服务器的可用性,及时隔离并替换为新的服务器,当故障主机回复后将其重新加入群集.单独部署LVS环境的话,调度器发生宕机的话,整个群集就失效了,某一个web节点宕机后

nginx + keepalived 双机热备

序 双机热备是指两台机器都在运行,但并非两台机器同时在提供服务. 当提供服务的一台出现故障的时候,另外一台会马上自动接管并且提供服务,且切换的时间非常短. keepalived的工作原理是VRRP——虚拟路由冗余协议. 测试环境如下: ip vip master 192.168.174.135 192.168.174.140 backup 192.168.174.137 192.168.174.140 nginx 安装 sudo apt-get install nginx  查找配置文件位置 s

keepalived双机热备实现故障时发送邮件通知

眼下项目已经採用nginx来实现负载均衡,可是nginx调度器仅仅有一台,上次还意外的down机一次,导致整个服务应用所有瘫痪,这次准备再加一个调度器来实现网站高可用性,也就是常说的双机热备了. master: 192.168.1.241 backup: 192.168.1.242 漂移IP:192.168.1.243 1.主备调度器都安装keepalived软件 安装步骤例如以下: ./configure --prefix=/usr/local/keepalived && make &a