【大数据HA】keepalived结合haproxy实现高可用的HMS

背景

上一篇实现了haproxy代理后端HMS服务实现高可用。但是对于haproxy还是单点故障,所以需要对haproxy进一步做HA,实现真正的后端服务的HA。

要实现haproxy的HA,需要使用到keepalived,使用keepalived是VIP虚拟IP服务,实现故障转移。

一:环境介绍

虚机一:wuxdihadl03b,IP 10.40.8.44,部署了HMS服务

虚机二:wuxdihadl04b,IP 10.40.8.45,部署了HMS服务

二:大体流程:

1.两台机器分别部署HMS服务

2.两台机器分别部署HAProxy,并配置指向两个HMS服务

3.两台机器分别部署Keepalived,设置统一虚拟IP

4.trino配置虚拟IP的HAProxy地址,指向后端的HMS服务

5.测试HA功能

HMS和HAProxy的安装配置不再介绍,参考上一篇。

三:安装keepalived

两台机器分别安装

yum install keepalived -y

四:配置keepalived

找到/etc/keepalived/keepalived.conf,主节点如下配置

! Configuration File for keepalived

global_defs {
   notification_email {
     # 发送通知邮件的地址,可选
     acassen@firewall.loc
     failover@firewall.loc
     sysadmin@firewall.loc
   }
   notification_email_from Alexandre.Cassen@firewall.loc  # 发送通知邮件的发件人地址,可选
   smtp_server 127.0.0.1 # 发送邮件所使用的SMTP服务器,可选
   smtp_connect_timeout 30 # 发送邮件的连接超时时间,可选
   router_id 10.40.8.44     #每个keepalived主机唯一标识,建议使用当前主机名或IP
   vrrp_skip_check_adv_addr 
   vrrp_strict 
   vrrp_garp_interval 0 
   vrrp_gna_interval 0
}

#检测haproxy服务是否正常,如果不正常或未运行,则keepalived会进行漂移,放弃当前节点为主节点,降为备用节点
vrrp_script haproxy-check {
    script "killall -0 haproxy"  #这个命令是用来检查是否有名为 "haproxy" 的进程在运行
    interval 2 #两秒检查一次
    weight 20 #如果检查失败每次扣除优先级20分
}

vrrp_instance VI_1 {
    state MASTER #当前节点在此虚拟路由器上的初始状态,状态为MASTER或者BACKUP
    interface ens192 #绑定为当前虚拟路由器使用的物理接口,网卡名称
    virtual_router_id 51 #每个虚拟路由器惟一标识,范围:0-255,每个虚拟路由器此值必须唯一,否则服务无法启动,同属一个虚拟路由器的多个keepalived节点必须相同,务必要确认在同一网络中此值必须唯一
    priority 100 #当前物理节点在此虚拟路由器的优先级,范围:1-254,值越大优先级越高
    advert_int 1
    authentication { ##认证机制
        auth_type PASS
        auth_pass 1111
    }

    #重点!!!虚拟IP,可以指定多个,建议指定当前网段未被使用的IP
    virtual_ipaddress {
        10.40.8.200
    }

    #配置监控脚本,一旦出现故障,根据脚本结果决定是否实行故障转移
    track_script {
        haproxy-check weight 20
    }
}

备用节点配置,只需要改三处

! Configuration File for keepalived

global_defs {
   notification_email {
     acassen@firewall.loc
     failover@firewall.loc
     sysadmin@firewall.loc
   }
   notification_email_from Alexandre.Cassen@firewall.loc 
   smtp_server 127.0.0.1 
   smtp_connect_timeout 30 
   router_id 10.40.8.45 #修改标志     
   vrrp_skip_check_adv_addr 
   vrrp_strict 
   vrrp_garp_interval 0 
   vrrp_gna_interval 0
}


vrrp_script haproxy-check {
    script "killall -0 haproxy"  
    interval 2 
    weight 20 
}

vrrp_instance VI_1 {
    state BACKUP #改为BACKUP
    interface ens192 
    virtual_router_id 51 
    priority 99 #优先级降低
    advert_int 1
    authentication { 
        auth_type PASS
        auth_pass 1111
    }

    virtual_ipaddress {
        10.40.8.200
    }

    track_script {
        haproxy-check weight 20
    }
}

五.启动keepalived

使用systemctl status keepalived 命令可以查看keepalived状态,在备用节点可以发现如下标识,主节点没有该信息。

六.测试

修改trino的catalog的HMS地址为 10.40.8.200:5000, 重启trino,访问数据,测试场景

1.停掉两个HMS服务,trino无法访问数据

2.启动任意一个HMS服务,trino成功访问数据

3.启动另一个HMS服务,trino成功访问数据

4.停掉两个HAProxy服务,trino无法访问数据

5.启动任意一个HAProxy服务,trino成功访问数据

6.启动另一个HAProxy服务,trino成功访问数据

七:keepalived实现故障转移的理解

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

process.cwd() 与 __dirname 的区别

Node.js 中的 __dirname 和 process.cwd() 都是用于获取文件系统路径的全局变量和方法,但它们有不同的含义和用途。 一、process.cwd() process.cwd() 是一个方法,用于获取 Node.js 进程的当前工作目录。它返回的是 Node.js 进程启动时所在的工作目录的…

什么是JavaScript

文章目录 一、❄️什么是JavaScript?二、❄️JavaScript的特点三、❄️JavaScript的组成🧫1、核心(ECMAScript)🧿2、文档对象模型(DOM)🥏3、浏览器对象模型(BOM&#xff…

金和OA UserWebControl.UserSelect.ashx 信息泄露漏洞

产品简介 金和网络是专业信息化服务商,为城市监管部门提供了互联网监管解决方案,为企事业单位提供组织协同OA系统升开发平台,电子政务一体化平台智慧电商平合等服务 漏洞概述 金和OA UserWebControl.UserSelect.AjaxServiceMethod,UserWeb…

动态表单设计器推荐

动态表单设计器分享: 表单设计器:根据需求定制,拖拽生成表单。以下是网站上查找到一些相关案例及demo,有兴趣可以访问看看,若有其他类似功能表单,也希望大家可以在评论区推荐下。 1.form-generator基于vu…

数据库-MySQL 启动方式

以管理员身份运行命令行 或者Shell net start //查看所有服务 net start MYSQL80 //启动服务 net stop MYSQL80 //停止服务完整安装MySQL社区版本的 会有这个 启动服务 停止服务 重启服务

Pikachu--字符型注入(get)

Pikachu--字符型注入(get) 提交方式是get提交,直接在浏览器地址栏里输入注入语句得出结果 判断注入类型 我们要输入数据库里面有的名字 比如vince 输入1 and 12 错误结果 输入 1 and 11 正确结果 判断为字符型注入 判断字段数 输…

软件测试/测试开发丨Python 模块与包

python 模块与包 python 模块 项目目录结构 组成 package包module模块function方法 模块定义 定义 包含python定义和语句的文件.py文件作为脚本运行 导入模块 import 模块名from <模块名> import <方法 | 变量 | 类>from <模块名> import * 注意&a…

Java 第23章 反射 本章作业

文章目录 反射修改私有成员变量反射和File 反射修改私有成员变量 public class Homework01 {public static void main(String[] args) throws IllegalAccessException, InstantiationException, NoSuchFieldException, NoSuchMethodException, InvocationTargetException {/***…

【电商项目实战】实现订单超时支付取消

&#x1f389;&#x1f389;欢迎来到我的CSDN主页&#xff01;&#x1f389;&#x1f389; &#x1f3c5;我是Java方文山&#xff0c;一个在CSDN分享笔记的博主。&#x1f4da;&#x1f4da; &#x1f31f;推荐给大家我的专栏《电商项目实战》。&#x1f3af;&#x1f3af; &am…

Git(2):Git环境的安装

本教程里的git命令例子都是在Git Bash中演示的&#xff0c;会用到一些基本的linux命令&#xff0c;在此为大家提前列举&#xff1a; ls/ll 查看当前目录cat 查看文件内容touch 创建文件vi vi编辑器&#xff08;使用vi编辑器是为了方便展示效果&#xff0c;学员可以记事本、edi…

Spring之 国际化:i18n

1、i18n概述 国际化也称作i18n&#xff0c;其来源是英文单词 internationalization的首末字符i和n&#xff0c;18为中间的字符数。由于软件发行可能面向多个国家&#xff0c;对于不同国家的用户&#xff0c;软件显示不同语言的过程就是国际化。通常来讲&#xff0c;软件中的国…

微服务注册到Zookeeper注册中心

jar包&#xff1a; <dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-zookeeper-discovery</artifactId></dependency>启动类上面加入&#xff1a;EnableDiscoveryClient注解 application.ym…

使用 Docker 部署 SSCMS 内容管理系统

1&#xff09;SSCMS 介绍 官网&#xff1a;https://sscms.com/ GitHub&#xff1a;https://github.com/siteserver/cms SSCMS 基于 .NET Core&#xff0c;能够以最低的成本、最少的人力投入在最短的时间内架设一个功能齐全、性能优异、规模庞大并易于维护的网站平台。 2&#…

2024 年度 AAAI Fellows 揭晓!清华大学朱军教授入选!

今日&#xff0c;国际人工智能领域最权威的学术组织 AAAI 揭晓 2024 年度 Fellows 评选结果&#xff0c;新增 12 位 Fellow。 其中&#xff0c;清华大学计算机系教授朱军因「在机器学习理论与实践方面做出的重大贡献」而成功入选&#xff0c;成为本年度入选的唯一华人学者&…

LabVIEW开发滚筒洗衣机动态监测系统

LabVIEW软件在滚筒洗衣机的动态监测和分析中扮演着关键角色。本案例展示了如何利用LabVIEW开发的系统来优化洗衣机的性能和可靠性。 首先&#xff0c;在建立洗衣机的动力学模型基础上&#xff0c;利用LabVIEW进行了关键零部件的动态优化设计。通过LabVIEW的高级计算和模拟功能…

【计算机毕业设计】SSM健身房俱乐部管理系统

项目介绍 本项目包含前后台&#xff0c;分为普通用户与管理员两种角色&#xff0c;前台为普通用户登录&#xff0c;后台为管理员登录&#xff1b; 管理员角色包含以下功能&#xff1a; 登录,会员管理-增删改查,员工管理-增删改查,课程管理,网站新闻管理,新闻添加编辑,留言管…

解决 Postman 报错问题:一份综合指南

Postman 是一个流行的 API 测试工具&#xff0c;它可以帮助开发者和测试人员快速地创建和发送各种 HTTP 请求&#xff0c;并查看响应结果。但是&#xff0c;在使用 Postman 的过程中&#xff0c;有时候会遇到一些报错或异常情况&#xff0c;影响了正常的测试流程。本文将介绍一…

Groovy操作JSON和XML及对文件的处理

文章目录 1Groovy对Json的操作1.1 Groovy自带工具处理Json1.2 使用java第三方类库gson处理json 2 Groovy对xml的操作2.1 对象转换成xml2.2 xml转换成对象 3 Groovy操作文件3.1 文本文件操作3.2 对象写入文件和从文件中读出 1Groovy对Json的操作 1.1 Groovy自带工具处理Json ​…

word中设置上标后括号和数字没有上下对齐,解决

问题 word中设置上标后括号和数字没有上下对齐&#xff0c;如下图 原因 因为数字的括号是中文状态下输入的&#xff0c;数字是英文状态。用户需要将其改变成用英文状态下输入 解决办法 统一成英文状态&#xff1a;选中&#xff0c;设置字体为“半角” 如果上标来自参考文献…

计算机网络期末复习——计算大题(一)

个人名片&#xff1a; &#x1f981;作者简介&#xff1a;一名喜欢分享和记录学习的在校大学生 &#x1f42f;个人主页&#xff1a;妄北y &#x1f427;个人QQ&#xff1a;2061314755 &#x1f43b;个人邮箱&#xff1a;2061314755qq.com &#x1f989;个人WeChat&#xff1a;V…
最新文章