TDengine高可用架构之TDengine+Keepalived

之前在《TDengine高可用探讨》提到过,TDengine通过多副本和多节点能够保证数据库集群的高可用。单对于应用端来说,如果使用原生连接方式(taosc)还好,当一个节点下线,应用不会受到影响;但如果使用了Restful/Websocket连接方式,而前端又没有部署负载均衡,那么必须调整应用程序,才能继续访问数据库。

对此我们可以采用TDengine+Keepalived 架构,使用VIP保证在没有负载均衡的情况下数据库集群可用性。
在这里插入图片描述
相较于部署负载均衡,该方案不需要再单独部署负载均衡服务器,架构更简单,避免了负载均衡的单点故障。但因不具备负载均衡的能力,访问压力会集中在一个节点上。

因此以上方案适用于负载不好的业务场景。

keepalived 安装配置

安装

yum install -y keepalived

配置 keepalived

/etc/keepalived/keepalived.conf

! Configuration File for keepalivedglobal_defs {router_id c3-60 ##节点标识,使用主机名即可
}vrrp_script chk_adapter {script "/etc/taos/adapter_check.sh"  ##检查脚本interval 2weight -50
}vrrp_instance VI_1 {state BACKUP ##由于采用了nopreempt,所有节点配置为BACKUPinterface ens192  ## 网卡virtual_router_id 51priority 100  ## 优先级nopreempt ##非抢占模式,防止故障节点恢复后VIP迁移advert_int 1  ##通告时间authentication {auth_type PASSauth_pass 1111}track_script {chk_adapter}virtual_ipaddress {192.168.3.59}
}

检测脚本

/etc/taos/adapter_check.sh

#!/bin/sh
acheck() 
{curl http://127.0.0.1:6041/-/pingif [ $? -ne 0 ]thensystemctl stop keepalivedreturn 1elsereturn 0fi
}acheck

以上脚本会检查taosadapter组件的可用性,当taosadapter不可用时,会停止keepalived服务,从而引发VIP的漂移。

测试

  1. 使用客户端连续查询
  2. 停止主节点taosadapter服务
  3. 检查客户端连接状态
  4. 检查主节点keepalived 服务状态

在这里插入图片描述
在这里插入图片描述
keepalived服务被停止。因为我的服务器没有启用ntp,因此时间存在差异。

优化

以上方案存在一个问题,即一个节点taosadapter出现故障后,keepalived服务会被中止。等故障恢复后,需要手动启动keepalived服务进行恢复。
为了keepalived能做到自动恢复,需要做如下优化:

  1. 修改检查脚本
    systemctl stop keepalived 修改为 pkill keepalived,即用杀掉进程替换中止服务。

  2. 修改keepalived服务脚本
    添加如下内容,让服务异常中止后,每隔30s自动重试启动。
    keepalived.service

Restart=always
StartLimitInterval=0
RestartSec=30
  1. 如果keepalived启动时taosadapter未启动,则keepalived可能会启动失败,因此需要设置启动顺序
    keepalived.service
After=taosadapter.service

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

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

相关文章

探索AI作画算法的原理:从深度学习到创造性艺术

引言 介绍AI在不同领域的应用,以及AI作画算法对于创造性艺术的影响。概述将在本文中讨论的主要内容。 第一部分:深度学习与计算机视觉 深度学习的基本原理:神经网络的结构和训练过程。计算机视觉的重要性:图像识别、生成和处理…

Python爬虫--Scrapy框架安装

Scrapy框架安装 , Scrapy 是 Python 领域专业的爬虫开发框架,已经完成爬虫程序的大部分通用工具 它使用了 Twisted 异步网络库来处理网络通讯。整体架构大致如下 第一步:挂小灰机或者将要安装的文件下载到本地 Scrapy 框架安装踩坑中 为什…

Blender曲线操作

1.几种常见建模方式 -多边形建模:Blender,C4D,3DsMax,MaYa -曲线: -曲面:Rhino(Nurbs) -雕刻:Blender,ZBrush -蜡笔:Blender 1)新…

【办公类-22-14】周计划系列(5-6)“周计划-06 19周的周计划教案合并打印PDF(最终打印版))

背景需求: 花了十周,终于把周计划教案的文字都写满、加粗、节日替换了。为了便于打印,我把19周的周计划教案全部合并在一起PDF。制作打印用PDF 思路 1、周计划是单独打印一张,因此要在第2页插入空白页, 2、教案有3页…

鸿蒙launcher浅析

鸿蒙launcher浅析 鸿蒙launcher源码下载鸿蒙launcher模块launcher和普通的应用ui展示的区别 鸿蒙launcher源码下载 下载地址如下: https://gitee.com/openharmony/applications_launcher 鸿蒙launcher模块 下载页面已经有相关文件结构的介绍了 使用鸿蒙编辑器D…

CMDB系统的目标

CMDB即配置管理数据库(Configuration Management Database, CMDB)系统被广泛应用于实现IT资产管理和IT服务管理。CMDB系统的目标是建立一个全面的、精确的信息数据库,用于追踪、管理和记录IT基础设施的配置信息及其相关关系,从而提…

Spring Cloud Gateway直接管理Vue.js的静态资源

1. 构建Vue.js应用 像之前一样,构建你的Vue.js应用,并将生成的静态资源(位于dist目录)复制到Spring Boot项目的某个目录,比如src/main/resources/static。 2. 配置Spring Boot静态资源处理 Spring Boot默认会处理sr…

linux文件夹映射到本地win系统

在Linux上安装和配置Samba服务器相对简单,以下是基本的步骤: 1. **安装Samba软件包**:使用你的Linux发行版的包管理器来安装Samba软件包。例如,在基于Debian的发行版(如Ubuntu)上,你可以使用以…

OpenHarmony开发实例:【电话簿联系人Contacts】

样例简介 Contacts应用是基于OpenHarmony SDK开发的安装在润和HiSpark Taurus AI Camera(Hi3516d)开发板标准系统上的应用;应用主要功能是展示联系人列表,并点击某一列弹出联系人详细信息; 运行效果 样例原理 样例主要有一个list组件和dia…

Docker本地部署overleaf后,挖掘用户加密逻辑

overleaf的用户信息,保存在mongo数据库的users集合中。 用户密码则存在hashedPassword字段中 从开源的代码services\web\app\src\Features\Authentication\AuthenticationManager.js第303行可以找到密码加密逻辑。 本地可以通过下面的代码生成overleaf用户密码信息…

如何在每天特定的时间打开指定的网页?教你设置每天自动打开指定网页

在现代社会,互联网已成为我们日常生活和工作中不可或缺的一部分。随着科技的 发展,我们可以利用各种工具和技术来提高我们的工作效率和生活品质。其中,定 时自动打开指定的网址便是一个实用的功能,它可以帮助我们节省时间&#xf…

从零开始搭建SpringCloud

从零开始搭建Spring Cloud涉及到多个步骤和组件的配置。以下是一个大致的指南,帮助你逐步搭建Spring Cloud环境: 安装Java开发环境: 安装JDK(Java开发工具包)并确保环境变量配置正确。选择一个合适的IDE(集…

【element-ui】el-table横向滚动后,通过is-scrolling-left获取滚动高度失效的问题

el-table横向滚动后,通过is-scrolling-left获取滚动高度失效的问题 需求 现在有一个需求,需要监听el-table的纵向滚动,当滚动高度达到特定值时进行一些操作。 代码如下: methods:{throttledHandleScroll() {// 如果已经有定时器…

百万人都在求的网络安全学习路线,渗透漏洞防御总结(附图)

前言 不折腾的网络安全,和咸鱼有什么区别 目录 二、 前言三 、同源策略 3.1 什么是同源策略 3.2 为什么需要同源策略四 、XSS 4.1 概览 4.2 介绍 4.3 防御五 、CSRF 5.1 概览 5.2 介绍 5.3 防御六、 SQL 注入七 、流量劫持 7.1 DNS 劫持 7.2 HTTP 劫持…

【Canvas与艺术】 绘制五星红旗

【注意】 该图中五星定位和大小都是按 https://www.douyin.com/note/7149362345016380710 精确绘制的。 【成图】 【代码】 <!DOCTYPE html> <html lang"utf-8"> <meta http-equiv"Content-Type" content"text/html; charsetutf-8&q…

秋招后端开发面试题 - Java IO

目录 Java IO前言面试题Java IO 流&#xff1f;字节流 vs 字符流区别&#xff1f;字节缓冲流 vs 字符缓冲流&#xff1f;打印流&#xff1f;System.out.println() 是什么&#xff1f;随机访问流&#xff1f;管道流&#xff1f;讲讲 Filter 流&#xff1f;常见的 IO 模型&#x…

【前端】6. JavaScript(WebAPI)

WebAPI 背景知识 什么是 WebAPI 前面学习的 JS 分成三个大的部分 ECMAScript: 基础语法部分DOM API: 操作页面结构BOM API: 操作浏览器 WebAPI 就包含了 DOM BOM. 这个是 W3C 组织规定的. (和制定 ECMAScript 标准的大佬们不是一伙人). 前面学的 JS 基础语法主要学的是 EC…

【多维动态规划】Leetcode 64. 最小路径和【中等】

最小路径和 给定一个包含非负整数的 m x n 网格 grid &#xff0c;请找出一条从左上角到右下角的路径&#xff0c;使得路径上的数字总和为最小。 说明&#xff1a;每次只能向下或者向右移动一步。 示例 1&#xff1a; 输入&#xff1a;grid [[1,3,1],[1,5,1],[4,2,1]] 输出…

手动在Ubuntu22.04上部署LAMP环境

简介 LAMP环境是常用的Web开发环境之一&#xff0c;其中LAMP分别代表Linux、Apache、MySQL和PHP。本文介绍如何在Ubuntu操作系统的ECS实例内部署LAMP环境。 准备工作 该实例必须满足以下条件&#xff1a; 实例已分配公网IP地址或绑定弹性公网IP&#xff08;EIP&#xff09;。…

关于Dockerfile镜像实例

文章目录 Dockerfile镜像实例一、构建SSH镜像1、建立工作目录2、生成镜像3、启动容器并修改root密码 二、构建systemd镜像1、建立工作目录2、生成镜像3、运行镜像容器4、测试容器systemd 三、构建Nginx镜像1、建立工作目录2、编写Dockerfile脚本3、编写run.sh启动脚本4、生成镜…