(1)下载安装Keepalived源码包

Keepalived官网源码包下载地址

在服务器上解压

tar -xf keepalived-2.2.8.tar.gz

安装相关前置依赖

yum -y install gcc gcc-c++

使用configure工具进行安装

./configure --sysconfdir=/etc --prefix=/usr/local/keepalived --sbindir=/usr/sbin --bindir=/usr/bin

--sysconfdir=DIR #指定配置文件位置
--prefix=DIR #指定安装路径
--sbindir=DIR 指定命令位置,后面不需再配置环境变量

使用make make install进行安装

make && make install

(2)配置Keepalived在业务中的参数

本次操作为Keepalived单VIP抢占式配置,即两个虚拟机只有一台绑定VIP对外提供服务,且在一台主机失能时VIP将漂移到备机上接收流量,当主机恢复时VIP将再次切换

主机配置
global_defs {
router_id logincas1 ### router_id为全局定义当前节点的id,一般为唯一
enable_script_security
script_user root ##定义执行脚本的角色
vrrp_version 2
}
## 定义脚本
vrrp_script chk_nginx {
script "/usr/local/nginx-check.sh" ##脚本路径
interval 2 ##检测间隔
timeout 4 ##失败间隔,失败两次通信则失败
rise 4 ##成功四次则成功
fall 2 ##失败两次则切换
weight -50 ##脚本检测失败则扣减权重
}
vrrp_instance VI_1 { ##模块配置
version 2
state MASTER ##抢占式的情况下主机需设置为MASTER,备机为BACKUP
interface eth0 ##指定VIP流量的网卡
virtual_router_id 51 ##虚拟路由ID
priority 100 ##优先级,备机应比主机低一些
advert_int 1 ##VRRP心跳包发送间隔
authentication { ##权限认证
auth_type PASS ##类型:密码
auth_pass 2222
}
virtual_ipaddress {
172.29.184.220/24 ##VIP配置
}
track_script { ##脚本定义
chk_nginx
} }

接下来需要补充完善 nginx-check.sh

思路是通过去检测是否有Nginx进程,检测到没有nginx进程时先执行Nginx的重启操作,一秒之后再次检测,如果Nginx进程还是不存在则关闭Keepalived,使VIP漂移到另一个节点

#!/bin/bash
if [ `ps -C nginx --no-header | wc -l` -eq 0 ]; then
systemctl restart nginx
sleep 1
if [ `ps -C nginx --no-header | wc -l` -eq 0 ]; then
systemctl stop keepalived
fi
fi

遇到的一些问题

当在脚本里使用ps aux | grep nginx | grep -v grep | wc -l去检测Nginx进程时发现脚本一直未生效,合理怀疑是Keepalived运行用户在执行这条命令时存在权限问题(脚本不能配置权限为777,Keepalived会警告并失效)
本次使用的高可用架构为单VIP架构,后续也可以尝试双VIP架构,即互为主备机,配置两个VIP模块,可以选择使用一个VIP接收流量,也可以使用两个VIP来监听流量,看业务的需求。
在单VIP高可用架构中,如果想要主机恢复后VIP不漂移到主机上,可以将主机的state也设置为BACKUP,但优先级需要比备机高一些,以确保初始状态VIP是绑定在主机上的

Keepalived+Nginx高可用案例(抢占式与非抢占式)的更多相关文章

  1. Nginx(四):Keepalived+Nginx 高可用集群

    Keepalived+Nginx 高可用集群 (主从模式) 集群架构图 安装keepalived [root@localhost ~]# yum install -y keepalived 查看状态 ...

  2. Keepalived+Nginx高可用实例

    Keepalived+Nginx高可用实例 注意事项: 1.VIP不需要在服务器网络配置文件中配置. 2.nginx主不可用时,需要kill掉nginx主的keepalived服务,这样才可以实现VI ...

  3. Keepalived+nginx高可用

    这种方法会把Keepalived进程结束掉,在教育机构学习到的方法,我个人对这种方法不认可. 参考: https://www.cnblogs.com/gshelldon/p/14504236.html ...

  4. LVS+KeepAlived+Nginx高可用实现方案

    文章目录概念LVSKeepAlived为什么要使用准备软件安装KeepAlived 安装源码安装yum安装服务启动.重启.关闭安装ipvsadmnginx安装防火墙(iptables)防火墙配置(方式 ...

  5. centos安装与配置keepalived+nginx高可用

    一.安装启动keepalived 1.下载keepalived 在centos系统中,用wget下载最新版本: mkdir tool cd tool wget https://www.keepaliv ...

  6. Keepalived+Nginx高可用集群

    Keepalived简介 Keepalived的作用是检测服务器的状态,如果有一台web服务器宕机,或工作出现故障,Keepalived将检测到,并将有故障的服务器从系统中剔除,同时使用其他服务器代替 ...

  7. keepalived+nginx 高可用集群

    一.什么是高可用?   nginx做负载均衡,能达到分发请求的目的,但是不能很好的避免单点故障. 1.nginx集群单点问题 分发器宕机怎么处理? 假如nginx服务器挂掉了,那么所有的服务也会跟着瘫 ...

  8. keepalived+nginx高可用实现

    1.keepalived介绍 keepalived最初是专为LVS负载均衡软件设计的,用来管理并监控LVS集群系统中各个服务节点的状态,后来又加入了实现高可用的VRRP功能.keepalived除了能 ...

  9. linux下实现keepalived+nginx高可用

    1 nginx负载均衡高可用 1.1 什么是负载均衡高可用 nginx作为负载均衡器,所有请求都到了nginx,可见nginx处于非常重点的位置,如果nginx服务器宕机后端web服务将无法提供服务, ...

  10. keepalived+nginx高可用负载均衡环境搭建

    上篇说道keepalived的环境搭建,本来keepalived结合lvs更有优势,但是也可以结合nginx来使用.下面接着说下nginx的环境搭建 环境信息: nginx(master)  192. ...

随机推荐

  1. Django 组织json格式

    @api_view(['GET', 'POST']) def api_test(request): classes = Classes.objects.all() # classes_data = C ...

  2. [golang]使用mTLS双向加密认证http通信

    前言 假设一个场景,服务端部署在内网,客户端需要通过暴露在公网的nginx与服务端进行通信.为了避免在公网进行 http 明文通信造成的信息泄露,nginx与客户端之间的通信应当使用 https 协议 ...

  3. 2023-08-24:请用go语言编写。给定一个长度为n的数组arr, 现在你有一次机会, 将其中连续的K个数全修改成任意一个值, 请你计算如何修改可以使修改后的数 列的最长不下降子序列最长。 请输出

    2023-08-24:请用go语言编写.给定一个长度为n的数组arr, 现在你有一次机会, 将其中连续的K个数全修改成任意一个值, 请你计算如何修改可以使修改后的数 列的最长不下降子序列最长. 请输出 ...

  4. torch.nn基础学习教程 | PyTorch nn Basic Tutorial

    基于torch.nn搭建神经网络的基础教程大纲: 1. 引言 在我们开始深入探讨torch.nn之前,我们首先需要理解PyTorch及其神经网络库的基础知识.这一部分的内容将帮助你对PyTorch有一 ...

  5. Jmeter关联之正则表达式提取器

    正则表达式简介 摘自网上的说法,正则表达式是对字符串(包括普通字符(例如,a 到 z 之间的字母)和特殊字符(称为"元字符"))操作的一种 逻辑公式,就是用事先定义好的一些特定字符 ...

  6. MindSponge分子动力学模拟——计算单点能(2023.08)

    技术背景 在前面的几篇文章中,我们分别介绍了MindSponge的软件架构.MindSponge的安装与使用和如何在MindSponge中定义一个分子系统.那么就像深度学习中的损失函数,或者目标函数, ...

  7. 用 ChatGPT 做一个 Chrome 扩展 | 京东云技术团队

    用ChatGPT做了个Chrome Extension 最近科技圈儿最火的话题莫过于ChatGPT了. 最近又发布了GPT-4,发布会上的Demo着实吸睛. 笔记本上手画个网页原型,直接生成网页.网友 ...

  8. chatglm2-6b在P40上做LORA微调

    背景: 目前,大模型的技术应用已经遍地开花.最快的应用方式无非是利用自有垂直领域的数据进行模型微调.chatglm2-6b在国内开源的大模型上,效果比较突出.本文章分享的内容是用chatglm2-6b ...

  9. Solidity-变量和数据类型[基本类型]

    在solidity语言中,变量和数据类型分为三类:基本类型(bool.int.address等),复合类型(array.struct.mapping等)和特殊类型(enum.function.modi ...

  10. 关于Unity 如何与Blazor Server结合

    关于Unity 如何与Blazor Server结合 一.介绍 最近工作中有`Unity`与`Blazor Server`结合的需求,在网上找了一圈,发现这方面的资料比较少,特此写下这篇记录一下自己的 ...