《Linux运维总结:基于X86_64+ARM64架构CPU使用docker-compose一键离线部署consul 1.18.1容器版分布式ACL集群》
总结:整理不易,如果对你有帮助,可否点赞关注一下?
更多详细内容请参考:《Linux运维篇:Linux系统运维指南》
一、部署背景
由于业务系统的特殊性,我们需要面向不通的客户安装我们的业务系统,而作为基础组件中的consul 针对不同的客户环境需要多次部署集群,作为一个运维工程师,提升工作效率也是工作中的重要一环。所以我觉得有必要针对 x86_64 + ARM64 CPU架构consul v1.18.1容器版集群编写自动化部署工具。
CPU架构 | docker版本 | docker-compose版本 |
---|---|---|
X86_64 | 26.1.3 | v2.29.0 |
ARM64 | 26.1.3 | v2.29.0 |
二、工具介绍
一键部署工具实现功能如下:
1、支持ARM64、X86_64架构CPU
2、支持单实例部署
3、支持单机伪集群部署(3 server + 1 client)
4、支持多机分布式集群部署(3 server + 1 client)
5、支持数据目录、日志目录、端口、ACL令牌token、Gossip Encryption Key参数灵活配置
6、支持创建、启动、停止、卸载等操作
如下图所示:
说明:工具使用非常简单,只需要修改变量文件,一分钟就可以快速帮你部署consul集群。
三、工具下载
基于X86_64+ARM64架构CPU使用docker-compose一键离线部署consul v1.18.1容器版ACL集群工具
四、部署步骤
说明:单机伪集群是指在单主机部署consul集群,分布式集群是指在多个不同主机上部署consul集群,这里部署的是多机分布式集群。
1、查看帮助命令
2、准备一键部署工具包
说明:将一键部署工具包分别上传到consul集群server1节点上。
3、编辑变量文件
说明:以下操作分别在consul集群节点的部署工具包中修改cluster.conf文件,四个节点上cluster.conf文件内容一致。
[root@consul-server1 consul]# cp cluster.conf.tpl cluster.conf
[root@consul-server1 consul]# vim cluster.conf
# 多机分布式集群<3 server + 1 client + 单数据中心>
# 建议填写为当前磁盘最大存储空间目录,如果系统盘空间最大,建议填写为/data,如果挂在盘空间最大,建议填写为挂载目录
export BASE_DIR="/data"# cpu架构,可选值为x86_64和aarch64,根据实际情况修改
export CPU_PLATFROM="aarch64"# consul服务版本,默认不修改
export CONSUL_VERSION="v1.18.1"# consul数据存储根目录,默认不修改
export CONSUL_DATA_DIR="${BASE_DIR}/basic-data/consul-cluster"# 1、如果部署的是<单机伪集群>,请修改所有端口,确保<端口不重复>
# 2、如果部署的是<多机分布式集群>,端口不冲突情况下,可<使用如下默认端口>
export CONSUL_SERVER1_HOST="192.168.1.111" # consul server1节点主机ip地址,根据实际情况修改
export CONSUL_SERVER1_NODE_NAME="consul-server1" # consul server1节点名称,根据实际情况修改
export CONSUL_SERVER1_PORT="8300" # consul server1节点rpc端口,端口不冲突情况下,建议不修改
export CONSUL_SERVER1_SERF_LAN_PORT="8301" # consul server1节点serf_lan端口,端口不冲突情况下,建议不修改
export CONSUL_SERVER1_DNS_PORT="8600" # consul server1节点DNS服务端口,端口不冲突情况下,建议不修改
export CONSUL_SERVER1_HTTPS_API_PORT="8501" # consul server1节点HTTPS API端口,端口不冲突情况下,建议不修改export CONSUL_SERVER2_HOST="192.168.1.112" # consul server2节点主机ip地址,根据实际情况修改
export CONSUL_SERVER2_NODE_NAME="consul-server2" # consul server2节点名称,根据实际情况修改
export CONSUL_SERVER2_PORT="8300" # consul server2节点rpc端口,端口不冲突情况下,建议不修改
export CONSUL_SERVER2_SERF_LAN_PORT="8301" # consul server2节点serf_lan端口,端口不冲突情况下,建议不修改
export CONSUL_SERVER2_DNS_PORT="8600" # consul server2节点DNS服务端口,端口不冲突情况下,建议不修改
export CONSUL_SERVER2_HTTPS_API_PORT="8501" # consul server2节点HTTPS API端口,端口不冲突情况下,建议不修改export CONSUL_SERVER3_HOST="192.168.1.113" # consul server3节点主机ip地址,根据实际情况修改
export CONSUL_SERVER3_NODE_NAME="consul-server3" # consul server3节点名称,根据实际情况修改
export CONSUL_SERVER3_PORT="8300" # consul server3节点rpc端口,端口不冲突情况下,建议不修改
export CONSUL_SERVER3_SERF_LAN_PORT="8301" # consul server3节点serf_lan端口,端口不冲突情况下,建议不修改
export CONSUL_SERVER3_DNS_PORT="8600" # consul server3节点DNS服务端口,端口不冲突情况下,建议不修改
export CONSUL_SERVER3_HTTPS_API_PORT="8501" # consul server3节点HTTPS API端口,端口不冲突情况下,建议不修改export CONSUL_CLIENT_HOST="192.168.1.114" # consul cilent节点主机ip地址,根据实际情况修改
export CONSUL_CLIENT_NODE_NAME="consul-client" # consul clinet节点名称,根据实际情况修改
export CONSUL_CLIENT_SERF_LAN_PORT="8301" # consul client节点serf_lan端口,端口不冲突情况下,建议不修改
export CONSUL_CLIENT_DNS_PORT="8600" # consul client节点DNS服务端口,端口不冲突情况下,建议不修改
export CONSUL_CLIENT_HTTPS_API_PORT="8501" # consul client节点HTTPS API端口,端口不冲突情况下,建议不修改# 配置Gossip Encryption Key,对集群Agent之间的Gossip进行加密传输,可使用consul keygen随机生成该密钥
export CONSUL_ENCRYPT_KEY="8iGS01OkGRfJ58DMXYxut9btcBhXQWY9Ee3n3Bf4218="# 配置ACL令牌,用于登录Consul Web页面,可使用uuidgen命令随机生成该令牌token
export CONSUL_ACL_TOKEN="566a1196-f311-418c-9dd1-59bcf9250a1a"
4、分发安装包
[root@consul-server1 pkgs]# scp -r consul_tools root@192.168.1.112:/data/pkgs
[root@consul-server1 pkgs]# scp -r consul_tools root@192.168.1.113:/data/pkgs
[root@consul-server1 pkgs]# scp -r consul_tools root@192.168.1.114:/data/pkgs
5、执行部署
说明:根据cluster.conf规划,分别在consul集群节点上执行部署。
# 1、在server1节点
[root@consul-server1 consul]# ./op.sh build server1# 2、在server2节点
[root@consul-server2 consul]# ./op.sh build server2# 3、在server3节点
[root@consul-server3 consul]# ./op.sh build server3# 4、在client节点
[root@consul-client consul]# ./op.sh build client
5、检查集群状态
五、其它操作
5.1、启动
说明:分别在对应主机节点上执行。
[root@consul-server1 consul-tools]# ./op.sh start server1
[root@consul-server2 consul-tools]# ./op.sh start server2
[root@consul-server3 consul-tools]# ./op.sh start server3
[root@consul-client consul-tools]# ./op.sh start client
5.2、停止
说明:分别在对应主机节点上执行。
[root@consul-server1 consul-tools]# ./op.sh stop server1
[root@consul-server2 consul-tools]# ./op.sh stop server2
[root@consul-server3 consul-tools]# ./op.sh stop server3
[root@consul-client consul-tools]# ./op.sh stop client
5.3、检查
说明:分别在对应主机节点上执行。
[root@consul-server1 consul-tools]# ./op.sh check server1
[root@consul-server2 consul-tools]# ./op.sh check server2
[root@consul-server3 consul-tools]# ./op.sh check server3
[root@consul-client consul-tools]# ./op.sh check client
5.4、卸载
说明:分别在对应主机节点上执行。
[root@consul-server1 consul-tools]# ./op.sh clear server1
[root@consul-server2 consul-tools]# ./op.sh clear server2
[root@consul-server3 consul-tools]# ./op.sh clear server3
[root@consul-client consul-tools]# ./op.sh clear client
总结:整理不易,如果对你有帮助,可否点赞关注一下?
更多详细内容请参考:《Linux运维篇:Linux系统运维指南》
相关文章:

《Linux运维总结:基于X86_64+ARM64架构CPU使用docker-compose一键离线部署consul 1.18.1容器版分布式ACL集群》
总结:整理不易,如果对你有帮助,可否点赞关注一下? 更多详细内容请参考:《Linux运维篇:Linux系统运维指南》 一、部署背景 由于业务系统的特殊性,我们需要面向不通的客户安装我们的业务系统&…...

深入剖析嵌套调用和链式访问,以及函数的声明和定义(超全面覆盖)
1. 前情提要 在上一篇博客中,我们大致了解了函数的种类,以及自定义函数中形参和实参的具体区别 我们知道实参是需要传递给形参的,但其实形参和实参占据的是完全独立的内存空间 x,y在执行过程中会得到a和b的值,但是x…...

浏览器百科:网页存储篇-IndexedDB介绍(十)
1.引言 在现代网页开发中,数据存储需求日益增多和复杂,传统的客户端存储技术如localStorage和sessionStorage已难以满足大型数据的存储和管理需求。为了解决这一问题,HTML5 引入了 IndexedDB,在本篇《浏览器百科:网页…...
Java语言程序设计基础篇_编程练习题*18.22 (将十进制數转换为十六进制数)
题目:*18.22 (将十进制數转换为十六进制数) 编写一个递归方法,将一个十进制数转换为一个十六进制数的字符串。方法头如下: public static String dec2Hex(int value)编写一个测试程序,提示用户输入一个十进制数,然后显示等价的十…...
蓝桥杯3. 压缩字符串
题目描述 实现一个算法来压缩一个字符串。压缩的要求如下: 需要判断压缩能不能节省空间,仅在压缩后字符串比原字符串长度更短时进行压缩。 压缩的格式是将连续相同字符替换为字符 数字形式,例如 "AAABCCDDDD" 变为 "A3BC2D…...

Java设计模式之责任链模式详细讲解和案例示范
在本文中,我们将详细讲解Java设计模式中的责任链模式,探讨其基本概念、使用场景、常见问题和解决方式。同时,我们还会介绍责任链模式与策略模式的区别,并结合电商交易系统的示例进行说明。此外,我们还会探讨责任链模式…...
ubuntu_如何解决apt install时报错:Waiting for cache lock: Could not get lock
当你在 Ubuntu 上运行 apt 时,遇到类似 Waiting for cache lock: Could not get lock 错误,通常是因为另一个进程正在使用 apt 或者类似的包管理器工具。你可以按照以下步骤来查找并解决这个问题: 1. 查询哪个进程正在使用锁 系统中的锁文件…...

软件测试(D5)
步骤: 设计测试-->发现缺陷-->测试报告 Day1 target 1.复述软件测试的定义 2.7种软件测试分类的区别 3.质量模型的重点5项 4.测试流程的6个步骤 5.测试模板的8个要素 认识软件及测试 软件: 控制硬件的工具 应用软件系统软件࿰…...

CSS 圆角渐变边框
<div class"contact-box"><div class"contact-item">联系我们</div> </div>.contact-item{width: 194px;height: 48px;border-radius: 20px 20px 20px 20px;background-color: #000000;color: #BDBDBD;font-weight: 500;font-size…...
骑砍2霸主MOD开发(26)-使用TrfExporterBlender制作TRF文件
一.Blender导入TRF文件 import bpytrf_meshes = []trf_contents = []trf_import_path = D:\pt_ladder.trftrf_export_path = D:\pt_ladder_morph_keys.trfclass TrfMesh:def __init__(self):self.mesh_name = self.mesh_materials = []self.vertex_cnt = 0self.vertex_fvf_cnt…...

Leetcode 最大子数组和
使用“Kadane’s Algorithm”来解决。 Kadane’s Algorithm 在每个步骤中都保持着一个局部最优解,即以当前元素为结尾的最大子数组和(也就是局部最优解),并通过比较这些局部最优解和当前的全局最优解来找到最终的全局最优解。 Kadane’s Algorithm的核…...
目标检测-YOLOv2
YOLOv2介绍 YOLOv2(You Only Look Once version 2)是一种用于目标检测的深度学习模型,由Joseph Redmon等人于2016年提出,并详细论述在其论文《YOLO9000: Better, Faster, Stronger》中。YOLOv2在保持高速检测的同时,显…...

大数据 - OLAP与OLTP的区别
前言 联机事务处理OLTP(on-line transaction processing)和 联机分析处理OLAP(On-Line Analytical Processing)。 OLTP,主要是面向传统的“增删改查”事务系统,数据大都是以实体对象模型来存储数据&#…...

win10+eclipse+ESP8266_RTOS_SDK开发环境构建
官网教程 https://docs.espressif.com/projects/esp8266-rtos-sdk/en/latest/get-started/eclipse-setup.html 1. 导入工程 Build and Flash with Eclipse IDE — ESP8266 RTOS SDK Programming Guide documentation (espressif.com) 导入整个SDK,便于查看所有代…...

树形弹窗选择框/vue2/Element/弹框选择
前言 此类选择器根据vueelementUI实现,使用vue3的可以根据此案例稍作改动即可实现,主要功能有弹出选择、搜索过滤、搜索结果高亮等,此选择器只支持单选,如需多选可在此基础进行改造。 效果图 代码实现 使用时,props-…...
Python精选200Tips:121-125
Spend your time on self-improvement 121 Requests - 简化的 HTTP 请求处理发送 GET 请求发送 POST 请求发送 PUT 请求发送 DELETE 请求会话管理处理超时文件上传122 Beautiful Soup - 网页解析和抓取解析 HTML 和 XML 文档查找单个标签查找多个标签使用 CSS 选择器查找标签提…...

对接后端download接口报未知异常错误
你一定遇到过这种情况,在一个项目中下载功能明明好好的,下载接口调用方法与前端调用方法封装的好好的,可是换了一个接口,竟然搞罢工了,类似下面这样的,你会不会无从下手,不知道该怎么办呢&#…...

vue3 指定元素全屏 screenfull(可直接粘贴使用)
业务需求 由于输入的文字较多,需要将输入框进行全屏展示,方便输入和查看! 效果图 实现方式 下载插件"screenfull": “^6.0.2” yarn add screenfull -S项目中使用 import screenfull from "screenfull"templte中代码…...
【规范】Git Commit 约定式提交规范
文章目录 前言介绍使用约定式提交规范的好处提交信息格式信息头部(Header)正文(Body)脚注(Footer)撤销(Revert) 提交类型表格官网 前言介绍 约定式提交规范它是一种基于提交信息的轻…...
GDB的基本使用方法(之一)
1.编译程序 如果要让GDB调试程序,则编译生成程序时,要添加-g编译选项: $gcc -Wall -O2 -g 源文件 编译器含有针对源代码中的各种各样的错误输出信息的功能,称为警告选项。这些信息并不一定是错误,但却指出了容易引发bug的编码方式。-Werror选项可以在警告发生时,将其当…...
谷歌浏览器插件
项目中有时候会用到插件 sync-cookie-extension1.0.0:开发环境同步测试 cookie 至 localhost,便于本地请求服务携带 cookie 参考地址:https://juejin.cn/post/7139354571712757767 里面有源码下载下来,加在到扩展即可使用FeHelp…...
【ROS】Nav2源码之nav2_behavior_tree-行为树节点列表
1、行为树节点分类 在 Nav2(Navigation2)的行为树框架中,行为树节点插件按照功能分为 Action(动作节点)、Condition(条件节点)、Control(控制节点) 和 Decorator(装饰节点) 四类。 1.1 动作节点 Action 执行具体的机器人操作或任务,直接与硬件、传感器或外部系统…...

跨链模式:多链互操作架构与性能扩展方案
跨链模式:多链互操作架构与性能扩展方案 ——构建下一代区块链互联网的技术基石 一、跨链架构的核心范式演进 1. 分层协议栈:模块化解耦设计 现代跨链系统采用分层协议栈实现灵活扩展(H2Cross架构): 适配层…...

WordPress插件:AI多语言写作与智能配图、免费AI模型、SEO文章生成
厌倦手动写WordPress文章?AI自动生成,效率提升10倍! 支持多语言、自动配图、定时发布,让内容创作更轻松! AI内容生成 → 不想每天写文章?AI一键生成高质量内容!多语言支持 → 跨境电商必备&am…...

零基础设计模式——行为型模式 - 责任链模式
第四部分:行为型模式 - 责任链模式 (Chain of Responsibility Pattern) 欢迎来到行为型模式的学习!行为型模式关注对象之间的职责分配、算法封装和对象间的交互。我们将学习的第一个行为型模式是责任链模式。 核心思想:使多个对象都有机会处…...

【OSG学习笔记】Day 16: 骨骼动画与蒙皮(osgAnimation)
骨骼动画基础 骨骼动画是 3D 计算机图形中常用的技术,它通过以下两个主要组件实现角色动画。 骨骼系统 (Skeleton):由层级结构的骨头组成,类似于人体骨骼蒙皮 (Mesh Skinning):将模型网格顶点绑定到骨骼上,使骨骼移动…...
OpenLayers 分屏对比(地图联动)
注:当前使用的是 ol 5.3.0 版本,天地图使用的key请到天地图官网申请,并替换为自己的key 地图分屏对比在WebGIS开发中是很常见的功能,和卷帘图层不一样的是,分屏对比是在各个地图中添加相同或者不同的图层进行对比查看。…...

GC1808高性能24位立体声音频ADC芯片解析
1. 芯片概述 GC1808是一款24位立体声音频模数转换器(ADC),支持8kHz~96kHz采样率,集成Δ-Σ调制器、数字抗混叠滤波器和高通滤波器,适用于高保真音频采集场景。 2. 核心特性 高精度:24位分辨率,…...

用机器学习破解新能源领域的“弃风”难题
音乐发烧友深有体会,玩音乐的本质就是玩电网。火电声音偏暖,水电偏冷,风电偏空旷。至于太阳能发的电,则略显朦胧和单薄。 不知你是否有感觉,近两年家里的音响声音越来越冷,听起来越来越单薄? —…...

视频行为标注工具BehaviLabel(源码+使用介绍+Windows.Exe版本)
前言: 最近在做行为检测相关的模型,用的是时空图卷积网络(STGCN),但原有kinetic-400数据集数据质量较低,需要进行细粒度的标注,同时粗略搜了下已有开源工具基本都集中于图像分割这块,…...