首页 > 系统相关 >nginx+keepalived实现nginx服务的高可用

nginx+keepalived实现nginx服务的高可用

时间:2023-10-29 16:35:04浏览次数:37  
标签:脚本 可用 script keepalived nginx 节点 路由器


本章教程,简单介绍如何利用keepalived实现nginx服务高可用。

keepalived是一个开源的高可用性解决方案,它可以在Linux系统上实现负载均衡和故障转移。它主要用于确保在服务器集群中的主服务器出现故障时,能够快速切换到备用服务器,从而保证系统的可用性。

keepalived通过VRRP(Virtual Router Redundancy Protocol)协议实现故障转移。VRRP协议允许多个路由器组成一个虚拟路由器,其中一个路由器作为主路由器,负责转发数据流量,其他路由器作为备用路由器,当主路由器故障时接管数据流量。

除了故障转移功能,keepalived还提供了负载均衡功能。它可以根据不同的负载均衡算法将流量分发到多个服务器上,从而提高系统的性能和可扩展性。

目录

一、前置条件

1、安装keepalived

2、安装nginx

3、查看网卡名称

 二、修改配置

1、状态检查脚本

2、修改keepalived(主)配置文件

3、修改keepalived(从)配置文件

三、故障模拟

 1、访问虚拟VIP地址

2、将主节点的nginx服务停止

3、将主节点的nginx服务重新开启


一、前置条件

准备两台虚拟机服务(CentOS7):192.168.101.3(主) 和192.168.101.5(从)

规划虚拟virtual_ipaddress:192.168.101.10(VIP)

分别两台虚拟机服务上安装keeplived和nginx

 

nginx+keepalived实现nginx服务的高可用_配置文件

1、安装keepalived

# 安装
yum -y install keepalived

# 启动
systemctl start keepalived

# 重启
systemctl restart keepalived

# 停止
systemctl stop keepalived

# 查看状态
systemctl status keepalived

2、安装nginx

参考以往教程:Linux 安装 nginx 服务教程_putty 安装nginx

3、查看网卡名称

echo `ip ad|awk '/state UP/ {gsub(":", "");print $2}'`

 

nginx+keepalived实现nginx服务的高可用_服务器_02

 二、修改配置

1、状态检查脚本

vim /etc/keepalived/check_nginx.sh
#!/bin/bash

A=`ps -C nginx --no-header |wc -l`

if [ $A -eq 0 ];then
	/usr/bin/kill -15 `cat /var/run/keepalived.pid`
fi

赋予脚本执行权限:chmod +x nginx_check.sh

2、修改keepalived(主)配置文件

配置文件位置:/etc/keepalived/keepalived.conf

! Configuration File for keepalived

global_defs {
   router_id LVS_DEVEL
}

#状态检查脚本
vrrp_script chk_nginx {
  script "/etc/keepalived/check_nginx.sh" # 状态检查脚本位置
  interval 1 # (检测脚本执行的间隔)1s
  weight -10 # 权重
}

vrrp_instance VI_1 {
    state MASTER #备份节点
    interface enp0s3  #网卡名称
    virtual_router_id 51
    priority 100  # 优先级
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
     track_script {
    chk_nginx #执行脚本
  }
    virtual_ipaddress {
        192.168.101.10 # 虚拟VIP
    }
}

3、修改keepalived(从)配置文件

! Configuration File for keepalived

global_defs {
   router_id LVS_DEVEL
}

#状态检查脚本
vrrp_script chk_nginx {
  script "/etc/keepalived/check_nginx.sh" # 状态检查脚本位置
  interval 1 # (检测脚本执行的间隔)1s
  weight 2 # 权重
}

vrrp_instance VI_1 {
    state BACKUP #备份节点
    interface enp0s3  #网卡名称
    virtual_router_id 51
    priority 100  # 优先级
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
     track_script {
    chk_nginx #执行脚本
  }
    virtual_ipaddress {
        192.168.101.10 # 虚拟VIP
    }
}

 配置完成之后,需要重启一下keepalived服务,才会有效。

三、故障模拟

请先确保两台虚拟机的keepalived和nginx都处于运行状态。 

nginx+keepalived实现nginx服务的高可用_nginx_03

 1、访问虚拟VIP地址

nginx+keepalived实现nginx服务的高可用_配置文件_04

 可以看到,默认情况下,优先访问主节点服务器。

2、将主节点的nginx服务停止

systemctl stop nginx

然后,再次访问虚拟VIP地址。 

nginx+keepalived实现nginx服务的高可用_nginx_05

 此时,你就会发现,我的配置已经生效了,自动切换到从节点服务器。

3、将主节点的nginx服务重新开启

systemctl start nginx

nginx+keepalived实现nginx服务的高可用_运维_06

到此,本章教程就结束了,如果你也感兴趣的话,最好自己动手试试,效果会更好。

标签:脚本,可用,script,keepalived,nginx,节点,路由器
From: https://blog.51cto.com/YangPC/8080513

相关文章

  • Failed to start The nginx HTTP and reverse proxy server.
    本章教程主要分享一下,当nginx启动时,遇到报这个错误时的一个解决思路。 目录 1、观察报错信息 2、尝试性解决 1、观察报错信息根据日志的信息,我们至少可以知道2个比较关键的信息。1、操作用户执行命令是在非root权限下进行操作的。2、Addressalreadyinuse这个很明显:意思就......
  • Ansible部署mariadb高可用集群
    节点规划主机名IP地址master192.168.238.10node1192.168.238.11node2192.168.238.12node3192.168.238.13准备四台虚拟机,使用CentOS-7-x86_64-DVD-2009.iso镜像基础准备1,安装ansible[root@masterroot]# yuminstallepel-release-y  #......
  • 1、Keepalived原理使用
    keepalived是一个类似于layer3,4&5交换机制的软件,也就是我们平时说的第3层、第4层和第5层交换。Keepalived的作用是检测web服务器的状态,如果有一台web服务器死机,或工作出现故障,Keepalived将检测到,并将有故障的web服务器从系统中剔除,当web服务器工作正常后Keepalived自动将web......
  • 系统集成易混淆知识点汇总-稳定性、可靠性、可用性、健壮性
    概念:(1)稳定性:系统的稳定性是指:受规则的约束,系统的内部结构和秩序应是可以预见的;系统的状态以及演化路径有限并能被预测;系统的功能发生作用导致的后果也是可以预估的。稳定性强的系统使得系统在受到外部作用的同时,内部结构和秩序仍然能够保持。(2)可靠性:可靠性是指从系统开始运行到......
  • 5. 从零开始编写一个类nginx工具, 通讯协议建立, 为内网穿透做准备
    wmproxywmproxy是由Rust编写,已实现http/https代理,socks5代理,反向代理,静态文件服务器,内网穿透,配置热更新等,后续将实现websocket代理等,同时会将实现过程分享出来,感兴趣的可以一起造个轮子法项目++wmproxy++gite:https://gitee.com/tickbh/wmproxygithub:https://github.com/tic......
  • LVS、Nginx、HAproxy区别与选择
    LVS:是LinuxVirtualServer的缩写,是一种基于Linux内核实现的高可用性、高性能的负载均衡技术 ;是基于四层的转发;Nginx:既是WEB服务器,缓存服务器,又是反向代理服务器,可以做七层的转发HAproxy:是基于四层和七层的转发,是专业的代理服务器;区别:LVS由于是基于四层的转发所以只能做端口......
  • Nginx安装
    Nginx安装安装必须依赖yum-yinstallmakezlibzlib-develgcc-c++libtoolopensslopenssl-develPCRE安装下载依赖文件下载PCRE安装包,下载地址:http://downloads.sourceforge.net/project/pcre/pcre/8.45/pcre-8.45.tar.gz解压文件[root@ebs-135816opt]#tar-zxvfpcre-8.......
  • shell 脚本一键部署 k8s 高可用集群
    github地址:https://github.com/Johnny-Demo/deploy/tree/k8s-cluster有不理解的地方可以私信我......
  • CentOS7安装Nginx并添加成服务【转】
    当我们使用Nginx作为Web服务器时,将其添加为系统服务可以更方便地管理它的启动和停止。下面是CentOS7将Nginx添加系统服务的方法步骤:创建nginx服务配置文件首先,创建一个nginx服务配置文件,并将以下内容复制到文件中:[Unit]Description=TheNGINXHTTPandreverseprox......
  • harbor登陆提示:核心服务不可用
    1、检查日志,错误明细redis组件应该出问题了tail-f/var/log/harbor/core.logdockerps2、排查redis日志,就重启过一次这个文件权限也不知道为什么就不对了,.查看harbor对应的docker-compose.yaml文件,该目录对应的本地的/data/redistail-f/var/log/harbor/redis.log解......