Keepalived实践

keepalived集群高可用部署参考

需求描述:某服务A(后面都用A来表示该服务)需要高可用服务需求。当主服务故障时,需要切换到备服务上。目前为一主一备,后续为一主多备

需求提炼:

  1. 部署keepalived服务进行健康检查、故障切换
  2. 多备情况下,根据vrrp选举特性,备机权重值、state均设置为一致
  3. 编写脚本对进行服务进行定时检查,并动态调整keepalived服务启停。
  4. 考虑到频繁启停可能影响正常服务,设置keepalived集群节点均为非抢占模式

安装keepalived服务

  1. 下载keepalived源码安装包

    wget https://www.keepalived.org/software/keepalived-2.0.10.tar.gz
    
  2. 解压安装

    tar zxvf keepalived-2.0.10.tar.gz
    cd keepalived-2.0.10
    make && make install
    #make的时候可能会遇到依赖问题,需要先解决依赖包问题再进行编译
    #检查是否安装成功
    keepalived --version
    
  3. 修改配置

    ! Configuration File for keepalivedglobal_defs {notification_email {acassen@firewall.locfailover@firewall.locsysadmin@firewall.loc}notification_email_from Alexandre.Cassen@firewall.locsmtp_server 192.168.200.1smtp_connect_timeout 30#路由id,需要保证集群内id唯一router_id LVS_DEVEL_2}vrrp_instance VI_1 {#初始状态state BACKUP#vip关联接口interface eth0#虚拟路由局域网id,需要保证为局域网内唯一virtual_router_id 131#选举权重值priority 100#非抢占模式nopreempt#心跳周期advert_int 1#集群鉴权信息authentication {auth_type PASSauth_pass 1993}#vip配置,可以设置多个virtual_ipaddress {10.25.74.124}}
    
  4. 启停与状态检查

    #启停
    systemctl start|stop|restart keepalived
    #状态检查:1.查看ip地址
    ip addr | grep eth0
    #状态检查:2.查看日志
    tail -n 200 /var/log/message | grep Keepalived
    

检查脚本

把下面脚本分别部署到keepalived各节点上

vim /etc/keepalived/check_port.sh
#!/bin/bash
#shell script for check service alive
#author: joe
#um:xianweijian323while true;docount_9999=`netstat -lnpt | grep 9999| wc -l`count_kpa=`ps -ef | grep keepalived| grep -v grep | wc -l`if [ $count_9999 -gt 0 -a $count_kpa -eq 0 ];thensystemctl start keepalivedecho "`date +'%Y-%m-%d %H:%M:%S'` [WARN] 9999’s service is alive,but Keepalived service is dead.startup Keepalived serivice"elif [ $count_9999 -eq 0 -a $count_kpa -gt 0 ];thensystemctl stop keepalivedecho "`date +'%Y-%m-%d %H:%M:%S'` [WARN] 9999’s service is dead,but Keepalived service is active.shutdown Keepalived serivice"
#    else
#        echo "`date +'%Y-%m-%d %H:%M:%S'` [INFO] all serivce is actived.Nothing to do"fisleep 1
donenohup bash check_port.sh > ./check_port.log 2>&1 &

测试

场景一:master节点A服务不存在、异常,keepalived服务正常

现象:检查脚本触发systemctl stop keepalived命令,master节点上keepalived服务停止,vip漂移到vrrp优先级更高的节点上

场景二:节点A服务重新正常启动,keepalived服务不存在、或者机器故障

现象:检查脚本触发systemctl start keepalived命令,节点上keepalived服务启动,加入集群并参与master选举。无论节点权重优先级是否为最高,都不会抢占正常服务的keepalived节点

附加

keepalived集群没有解决网络故障导致的脑裂问题。

解决方案:

  1. 可以利用第三方仲裁来防止脑裂
  2. 可以使用vrrp_script、track_script来解决脑裂的处理问题,编写脚本定时ping上层网关地址,如果连续N个包不通,则关闭keepalived服务

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/864402.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

docker 部署jitsi meet

1. 部署环境: 1.1 vm 虚拟机 安装的 centos 7 1.2 centos7安装docker 和 docker-compose 2.docker命令 官网部署文档地址:(文档地址有可能失效) Self-Hosting Guide - Docker | Jitsi Meet 2.1Download and extract the late…

1-3.文本数据建模流程范例

文章最前: 我是Octopus,这个名字来源于我的中文名–章鱼;我热爱编程、热爱算法、热爱开源。所有源码在我的个人github ;这博客是记录我学习的点点滴滴,如果您对 Python、Java、AI、算法有兴趣,可以关注我的…

基于隐马尔可夫模型的股票预测【HMM】

基于机器学习方法的股票预测系列文章目录 一、基于强化学习DQN的股票预测【股票交易】 二、基于CNN的股票预测方法【卷积神经网络】 三、基于隐马尔可夫模型的股票预测【HMM】 文章目录 基于机器学习方法的股票预测系列文章目录一、HMM模型简介(1)前向后…

复杂系统失效原理

原文How Complex System Fail原文作者Richard I. Cook 1. 复杂系统本质上是危险的 所有重要系统(如交通、医疗、电力等),出于自身性质的原因,必然是危险的。虽然系统发生故障的频率不断变化,系统内部处理流程在本质上…

监控易监测对象及指标之:全面监测IBM Domino邮件服务器的关键指标

在现代企业通信中,IBM Domino邮件服务器以其稳定性和丰富的功能而备受青睐。为了确保邮件服务器的顺畅运行,对其各项性能指标进行全面监测至关重要。监控易作为一款高效的监控工具,为IBM Domino邮件服务器提供了一系列精细的监测指标。 首先&…

使用 BroadcastChannel 实现浏览器标签页之间的通信

在现代的 Web 应用程序中,有时需要在不同的浏览器标签页或窗口之间进行通信。为了实现这种通信,我们可以使用 BroadcastChannel 接口。BroadcastChannel 允许我们在同一浏览器上的不同上下文之间发送消息,包括不同的标签页、窗口或同一页面中…

华为:坚持实事求是的进行产品及技术创新

作为国内自主创新,尤其是产品和技术创新的标志性企业,华为值得国内企业借鉴的经验是多方面的,但如果一定要总结为一条的话,那就是——实事求是的自主创新。最近,华为任正非总裁的一个讲话以“实事求是的科研方向和二十…

全球首款搭载Google Gemini和GPT-4o的智能眼镜发布

智能眼镜仍然是一个尚未完全成熟的未来概念,但生成式人工智能的到来显著提升了这些设备的能力。Meta 的 Ray-Ban 智能眼镜被许多人视为当今最好的选择之一,而现在 Solos AirGo Vision 正在为其带来竞争,这款眼镜还集成了 Google Gemini 支持。…

生命在于学习——Python人工智能原理(3.1.1)

Python部分结束了,开始概率论部分 一、概率基本知识 1.1 事件与概率 1.1.1 事件的运算与关系 (一)基本概念 定义1 随机试验 如果一个试验满足如下条件: 在试验前不能断定其将发生什么结果,但可明确指出或说明试验…

浅聊JavaScript中的栈(stack)

前言 这篇文章结合leetcode题目讲解一下栈这种结构 第20题:20. 有效的括号 - 力扣(LeetCode) 第LCR-147题LCR 147. 最小栈 - 力扣(LeetCode) 栈(stack) 在讲解题目之前,我们先来…

HTTPS是什么?原理是什么?用公钥加密为什么不能用公钥解密?

HTTPS(HyperText Transfer Protocol Secure)是HTTP的安全版本,它通过在HTTP协议之上加入SSL/TLS协议来实现数据加密传输,确保数据在客户端和服务器之间的传输过程中不会被窃取或篡改。 HTTPS 的工作原理 客户端发起HTTPS请求&…

primetime中cell和net的OCV

文章目录 前言一、Cell OCV1. POCV coefficient file2. POCV Slew-Load Table in Liberty Variation Format(LVF lib) 二、Net OCV三、如何check OCV是否已加上?总结 前言 在生产中,外界环境的各种变化,比如PVT&#…

4、DDD、中台和微服务的关系

DDD、中台和微服务的关系 1 DDD和中台的本质 领域驱动设计(DDD)和中台在企业架构中有着密切的关系。DDD的本质在于通过对业务领域的深入分析和建模,构建高内聚、低耦合的系统。而中台则是对企业核心业务能力的抽象和封装,以实现…

中英双语介绍美国常春藤联盟( Ivy League):八所高校

中文版 常春藤联盟简介 常春藤联盟(Ivy League)是美国东北部八所私立大学组成的高校联盟。虽然最初是因体育联盟而得名,但这些学校以其学术卓越、历史悠久、校友杰出而闻名于世。以下是对常春藤联盟的详细介绍,包括其由来、成员…

统一 REST 接口规范:提升低代码平台研发效率

1.背景 在一个低代码研发团队的办公室里,大家正忙碌着。小张在调试组件,小李在优化性能,小王则在制定新项目的技术方案。 这时,团队负责人小刘走进来,对大家说:“我们需要聊聊 REST 接口规范的问题。”他指…

C语言之线程的学习

线程属于某一个进程 共同点:都能并发 线程共享变量,进程不共享。 多线程任务中,其中某一个线程调用了exit了,其他线程会跟着一起退出 如果是特定的线程就调用pthread_exit 失败返回的是错误号 下面也是

企业为何要进行互联网收口

互联网收口又被称为网络出口收敛或网络出口整合,顾名思义,是通过技术手段将多个网络出口合并为一个或少数几个出口的过程,以优化网络性能、提高安全性和降低运营成本。在本文中,我们将深入探讨企业互联网收口的重要性,…

代码随想录-Day44

322. 零钱兑换 给你一个整数数组 coins ,表示不同面额的硬币;以及一个整数 amount ,表示总金额。 计算并返回可以凑成总金额所需的 最少的硬币个数 。如果没有任何一种硬币组合能组成总金额,返回 -1 。 你可以认为每种硬币的数…

科普文:一文搞懂jvm原理(三)执行引擎

概叙 科普文:一文搞懂jvm(一)jvm概叙-CSDN博客 科普文:一文搞懂jvm原理(二)类加载器-CSDN博客 前面我们介绍了jvm,jvm主要包括两个子系统和两个组件: Class loader(类装载器) 子系统,Execution engine(执行引擎) 子系…

16_C语言编程基础

目录 C语言入门 程序段和代码段 C语言入门实例 英文分号(;) 注释 标识符 保留字 C中的空格 C数据类型 基本类型 sizeof获取存储字节 void类型 变量 C数组 C枚举 C中的左值(lvalue)和右值(rvalue) C常量 变量存储类型 C常用关键字(保留字) 宏定义#define co…