Nginx+Keepalived实现服务高可用

这篇具有很好参考价值的文章主要介绍了Nginx+Keepalived实现服务高可用。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

Nginx 和 Keepalived 是常用于构建高可用性(High Availability)架构的工具。Nginx 是一款高性能的Web服务器和反向代理服务器,而Keepalived则提供了对Nginx服务的健康状态监测和故障切换功能。

下载Nginx

在服务器1和服务器2分别下载nginx

yum install nginx

配置Nginx

在服务器1配置,vim /usr/share/nginx/html/index.html 

Nginx+Keepalived实现服务高可用,运维,nginx,服务器,运维

在服务器2配置, vim /usr/share/nginx/html/index.html 

Nginx+Keepalived实现服务高可用,运维,nginx,服务器,运维

启动Nginx

启动服务器1和服务器2的nginx 

nginx # 启动nginx
nginx -s reload # 重启nginx
nginx -t # 检查nginx配置

 访问服务

访问服务1

Nginx+Keepalived实现服务高可用,运维,nginx,服务器,运维

访问服务2

Nginx+Keepalived实现服务高可用,运维,nginx,服务器,运维

 Keepalived架构

Nginx+Keepalived实现服务高可用,运维,nginx,服务器,运维

环境搭建

VIP IP 主机名 主/从
192.168.2.3 keepalived 1 Master
192.168.2.200
192.168.2.4 keepalived 2 Backup

keepalived的安装

前置下载,keepalived需要gcc

yum install gcc
yum install openssl openssl-devel

通过链接wget获取 

wget https://www.keepalived.org/software/keepalived-2.0.20.tar.gz --no-check-certificate

创建keepalived目录,方便管理资源

mkdir keepalived

将压缩文件进行解压缩,解压缩到指定的目录

tar -zxf keepalived-2.0.20.tar.gz -C keepalived/

对keepalived进行配置,编译和安装

cd keepalived/keepalived-2.0.20
	./configure --sysconf=/etc --prefix=/usr/local
	make && make install

以上服务器2同理 

安装完成后,有两个文件需要我们认识下,一个是 /etc/keepalived/keepalived.conf(keepalived的系统配置文件,我们主要操作的就是该文件),一个是/usr/local/sbin目录下的keepalived,是系统配置脚本,用来启动和关闭keepalived

Keepalived配置

服务器1 ,vim /etc/keepalived/keepalived.conf 

! Configuration File for keepalived

global_defs {
   #通知邮件,当keepalived发送切换时需要发email给具体的邮箱地址
   notification_email {
     acassen@firewall.loc
     failover@firewall.loc
     sysadmin@firewall.loc
   }
   #设置发件人的邮箱信息
   notification_email_from Alexandre.Cassen@firewall.loc
   #指定smpt服务地址
   smtp_server 192.168.2.1
   #指定smpt服务连接超时时间
   smtp_connect_timeout 30
   #运行keepalived服务器的一个标识,可以用作发送邮件的主题信息
   router_id keepalived1
   vrrp_skip_check_adv_addr
   vrrp_strict
   vrrp_garp_interval 0
   vrrp_gna_interval 0
}
vrrp_instance VI_1 {
    state MASTER #有两个值可选MASTER主 BACKUP备
    interface ens33 #vrrp实例绑定的接口,用于发送VRRP包[当前服务器使用的网卡名称]
    virtual_router_id 51 #指定VRRP实例ID,范围是0-255
    priority 100 #指定优先级,优先级高的将成为MASTER
    advert_int 1 #指定发送VRRP通告的间隔,单位是秒
    authentication { #vrrp之间通信的认证信息
        auth_type PASS #指定认证方式。PASS简单密码认证(推荐)
        auth_pass 1111 #指定认证使用的密码,最多8位
    }
    virtual_ipaddress {  #虚拟IP地址设置虚拟IP地址,供用户访问使用,可设置多个,一行一个
        192.168.2.200
    }
}

服务器2,vim /etc/keepalived/keepalived.conf 

! Configuration File for keepalived

global_defs {
   #通知邮件,当keepalived发送切换时需要发email给具体的邮箱地址
   notification_email {
     acassen@firewall.loc
     failover@firewall.loc
     sysadmin@firewall.loc
   }
   #设置发件人的邮箱信息
   notification_email_from Alexandre.Cassen@firewall.loc
   #指定smpt服务地址
   smtp_server 192.168.2.1
   #指定smpt服务连接超时时间
   smtp_connect_timeout 30
   #运行keepalived服务器的一个标识,可以用作发送邮件的主题信息
   router_id keepalived2
   vrrp_skip_check_adv_addr
   vrrp_strict
   vrrp_garp_interval 0
   vrrp_gna_interval 0
}
vrrp_instance VI_1 {
    state BACKUP#有两个值可选MASTER主 BACKUP备
    interface ens33 #vrrp实例绑定的接口,用于发送VRRP包[当前服务器使用的网卡名称]
    virtual_router_id 51 #指定VRRP实例ID,范围是0-255
    priority 90 #指定优先级,优先级高的将成为MASTER
    advert_int 1 #指定发送VRRP通告的间隔,单位是秒
    authentication { #vrrp之间通信的认证信息
        auth_type PASS #指定认证方式。PASS简单密码认证(推荐)
        auth_pass 1111 #指定认证使用的密码,最多8位
    }
    virtual_ipaddress {  #虚拟IP地址设置虚拟IP地址,供用户访问使用,可设置多个,一行一个
        192.168.2.200
    }
}

Keepalived启动

在服务器1、2启动服务

cd /usr/local/sbin
./keepalived

测试

查看服务器1

Nginx+Keepalived实现服务高可用,运维,nginx,服务器,运维

查看服务器2,虚拟IP没有存在在服务器2

Nginx+Keepalived实现服务高可用,运维,nginx,服务器,运维 当把192.168.2.3服务器上的keepalived关闭后,再次查看ip

systemctl disable keepalived
systemctl stop keepalived

查看服务器1,虚拟IP没有存在在服务器1

Nginx+Keepalived实现服务高可用,运维,nginx,服务器,运维

查看服务器2

Nginx+Keepalived实现服务高可用,运维,nginx,服务器,运维

虚拟IP(VIP)会在MASTER节点上,当MASTER节点上的keepalived出问题以后,因为BACKUP无法收到MASTER发出的VRRP状态通过信息,就会直接升为MASTER。VIP也会"漂移"到新的MASTER。

测试Nginx

systemctl start keepalived # 启动
 

我们把192.168.2.3服务器的keepalived再次启动下,由于它的优先级高于服务器192.168.2.4的,所有它会再次成为MASTER,VIP也会"漂移"过去,然后我们再次通过浏览器访问nginx:

Nginx+Keepalived实现服务高可用,运维,nginx,服务器,运维

如果把192.168.2.3服务器的keepalived关闭掉,再次访问相同的地址  Nginx+Keepalived实现服务高可用,运维,nginx,服务器,运维

Nginx状态检测脚本

效果实现了以后, 我们会发现要想让vip进行切换,就必须要把服务器上的keepalived进行关闭,而什么时候关闭keepalived呢?应该是在keepalived所在服务器的nginx出现问题后,把keepalived关闭掉,就可以让VIP执行另外一台服务器,但是现在这所有的操作都是通过手动来完成的,我们如何能让系统自动判断当前服务器的nginx是否正确启动,如果没有,要能让VIP自动进行"漂移" 。

vrrp_script

keepalived只能做到对网络故障和keepalived本身的监控,即当出现网络故障或者keepalived本身出现问题时,进行切换。但是这些还不够,我们还需要监控keepalived所在服务器上的其他业务,比如Nginx,如果Nginx出现异常了,仅仅keepalived保持正常,是无法完成系统的正常工作的,因此需要根据业务进程的运行状态决定是否需要进行主备切换,这个时候,我们可以通过编写脚本对业务进程进行检测监控。

编写脚本 

vim /root/keepalived/ck_nginx.sh ,这是一个 Bash 脚本,用于检查 Nginx 服务是否正在运行,并在 Nginx 未启动时启动它,并在启动失败后关闭 Keepalived 服务

#!/bin/bash
num=`ps -C nginx --no-header | wc -l`
if [ $num -eq 0 ];then
 /usr/sbin/nginx  #使用 which nginx 可查找到nginx的启动目录
 sleep 2
 if [ `ps -C nginx --no-header | wc -l` -eq 0 ]; then
  killall keepalived
 fi
fi

设置权限

为脚本文件设置权限

chmod 755 ck_nginx.sh

Keepalived添加配置

vim /etc/keepalived/keepalived.conf ,将脚本添加到Keepalived配置

global_defs {
    ...
}
vrrp_script ck_nginx {
   script "/root/keepalived/ck_nginx.sh" #执行脚本的位置
   interval 2           #执行脚本的周期,秒为单位
   weight -20           #权重的计算方式
}

以上服务器2同理 

测试

服务器1,停止nginx服务

systemctl stop nginx

查看服务器1,虚拟IP不在此服务器

Nginx+Keepalived实现服务高可用,运维,nginx,服务器,运维

查看服务器2 ,虚拟IP转移到此服务器

Nginx+Keepalived实现服务高可用,运维,nginx,服务器,运维

如果master服务死掉后backup会变成master,但是当master服务又好了的时候 master此时会抢占VIP,这样就会发生两次切换对业务繁忙的网站来说是不好的。所以我们要在配置文件加入 nopreempt 非抢占,但是这个参数只能用于state 为backup,故我们在用HA的时候最好master 和backup的state都设置成backup 让其通过priority来竞争。  文章来源地址https://www.toymoban.com/news/detail-728265.html

到了这里,关于Nginx+Keepalived实现服务高可用的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • nginx+keepalived实现负载均衡和高可用

    环境准备 IP VIP 环境 客户端 192.168.134.174 Master 192.168.134.170 192.168.134.100 需要配置nginx负载均衡 Backup 192.168.134.172 192.168.134.100 需要配置nginx负载均衡 web1服务器 192.168.134.171 web2服务器 192.168.134.173 1、首先安装nginx服务器(此处采用yum安装) 2、修改nginx的配置文件(配置负载均衡)

    2024年02月13日
    浏览(42)
  • CentOS 7 下 Keepalived + Nginx 实现双机高可用

    服务器准备 服务信息 主机名 IP 角色 其他 my-web01 192.168.157.31 nginx keepalived master my-web02 192.168.157.32 nginx keepalived backup VIP 192.168.157.30 服务架构 服务安装 nginx Keepalived 服务配置 nginx web01 web02 Keepalived web01 web02 启动服务 nginx keepalived 服务验证 查看 VIP 状态 CURL 命令访问 浏览器访问

    2024年02月13日
    浏览(50)
  • web集群学习:nginx+keepalived实现负载均衡高可用性

    目录 项目架构 一,环境介绍 二,项目部署 在Web服务器上配置Web测试页面 nginx负载均衡配置 配置Nginx_Master 通过vrrp_script实现对集群资源的监控(1通过killall命令探测服务运行状态) 通过vrrp_script实现对集群资源的监控(2、开发检测nginx存活的shell脚本) 三,项目测试 四,实

    2024年02月13日
    浏览(54)
  • 通过keepalived+nginx实现 k8s apiserver节点高可用

    K8s 主机配置: 配置: 4Gib 内存/4vCPU/60G 硬盘 网络:机器相互可以通信 k8s 实验环境网络规划: podSubnet(pod 网段) 10.244.0.0/16 serviceSubnet(service 网段): 10.96.0.0/12 物理机网段:192.168.1.0/24 2个控制节点2个工作节点 K8S集群角色 IP地址 主机名 安装的组件 控制节点 192.168.1.63 xueg

    2024年02月03日
    浏览(41)
  • 虚拟机中使用Nginx + Keepalived 实现高可用 Web 负载均衡笔记

    物理操作系统:Windows10 虚拟机软件:VMWare Workstation 16 Pro 虚拟操作系统统:CentOS7 Nginx:1.24.0 Keepalived:2.2.8 在VMWare Worksattion中安装了2台CentOS7的虚拟机,桥接方式下IP地址分别为:192.168.0.35、192.168.0.36 VIP IP 主机名 Nginx端口 默认主从 192.168.0.100 192.168.0.35 wongoing01 88 MASTER 192.168

    2024年02月11日
    浏览(62)
  • LVS-DR模式+keepalived+nginx+tomcat实现动静分离、负载均衡、高可用实验

    实验条件: test2——20.0.0.20——主服务器——ipvsadm、keepalived服务 test3——20.0.0.30——备服务器——ipvsadm、keepalived服务 nginx5——20.0.0.51——后端真实服务器1(tomcat的代理服务器)——nginx服务 nginx6——20.0.0.61——后端真实服务器2(tomcat的代理服务器)——nginx服务 tomcat——

    2024年02月08日
    浏览(68)
  • keepalived高可用学习 keepalived+nginx高可用负载均衡配置

    1、概述 keepalived是为lvs设计的,用于管理和监控lvs集群系统中各个服务节点的状态,后面又加入了VRRP虚拟路由冗余协议,可以实现路由器高可用,原理是多台提供路由功能的服务器组成一个路由组,一个master和多个backup,master有vip,可以发组播,当backup收不到就认为master挂了

    2024年02月07日
    浏览(46)
  • keepalived检测Nginx高可用

    node1 192.168.136.55 node2 192.168.136.56 两台机器都安装dnf install keepalived nginx 主的配置 从的配置 测试  访问虚拟IP   访问的是master 访问的是backup 目前 Keepalived 仅能通过主机是否宕机来进行业务切换,如果仅 Nginx 业务出现故障是无法 切换的,需在 Keepalive 中添加健康检查来达到检

    2024年04月27日
    浏览(35)
  • 高可用解决方案 Keepalived 案例(keepalived + nginx)

    使用 Nginx + Keepalived 实现一个 web 服务高可用方案 架构图如下: Nginx 的安装与配置 安装软件 Nginx 配置 web 站点 启动 Nginx Keepalived 的安装与配置 安装 Keepalived 配置 Keepalived (不同角色有些选项不一样:state 和 priority 配置项) web1:master web2:slave 编写相关脚本 编写 Keepalived 日志

    2024年02月03日
    浏览(43)
  • nginx-2-讲解与使用 Keepalived+LVS+nginx搭建nginx高可用集群

    1:配置文件优化,达到nginx最大性能。 2:日志文件 /usr/local/nginx/logs/access.log 会一直增大,所有日志都会记录在这。磁盘满了会出现各种问题。定时器脚本清除各种日志。 3:整个访问流程,负载均衡,主从搭建(keepalived)组合 , 单机+(keepalived)组合,邮件发送,静态资源访问

    2024年02月06日
    浏览(53)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包