《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选项可以在警告发生时,将其当…...
未来机器人的大脑:如何用神经网络模拟器实现更智能的决策?
编辑:陈萍萍的公主一点人工一点智能 未来机器人的大脑:如何用神经网络模拟器实现更智能的决策?RWM通过双自回归机制有效解决了复合误差、部分可观测性和随机动力学等关键挑战,在不依赖领域特定归纳偏见的条件下实现了卓越的预测准…...
Lombok 的 @Data 注解失效,未生成 getter/setter 方法引发的HTTP 406 错误
HTTP 状态码 406 (Not Acceptable) 和 500 (Internal Server Error) 是两类完全不同的错误,它们的含义、原因和解决方法都有显著区别。以下是详细对比: 1. HTTP 406 (Not Acceptable) 含义: 客户端请求的内容类型与服务器支持的内容类型不匹…...
Vue2 第一节_Vue2上手_插值表达式{{}}_访问数据和修改数据_Vue开发者工具
文章目录 1.Vue2上手-如何创建一个Vue实例,进行初始化渲染2. 插值表达式{{}}3. 访问数据和修改数据4. vue响应式5. Vue开发者工具--方便调试 1.Vue2上手-如何创建一个Vue实例,进行初始化渲染 准备容器引包创建Vue实例 new Vue()指定配置项 ->渲染数据 准备一个容器,例如: …...
什么?连接服务器也能可视化显示界面?:基于X11 Forwarding + CentOS + MobaXterm实战指南
文章目录 什么是X11?环境准备实战步骤1️⃣ 服务器端配置(CentOS)2️⃣ 客户端配置(MobaXterm)3️⃣ 验证X11 Forwarding4️⃣ 运行自定义GUI程序(Python示例)5️⃣ 成功效果,可同时显示主类&#x…...
tree 树组件大数据卡顿问题优化
问题背景 项目中有用到树组件用来做文件目录,但是由于这个树组件的节点越来越多,导致页面在滚动这个树组件的时候浏览器就很容易卡死。这种问题基本上都是因为dom节点太多,导致的浏览器卡顿,这里很明显就需要用到虚拟列表的技术&…...
【Java学习笔记】BigInteger 和 BigDecimal 类
BigInteger 和 BigDecimal 类 二者共有的常见方法 方法功能add加subtract减multiply乘divide除 注意点:传参类型必须是类对象 一、BigInteger 1. 作用:适合保存比较大的整型数 2. 使用说明 创建BigInteger对象 传入字符串 3. 代码示例 import j…...
浪潮交换机配置track检测实现高速公路收费网络主备切换NQA
浪潮交换机track配置 项目背景高速网络拓扑网络情况分析通信线路收费网络路由 收费汇聚交换机相应配置收费汇聚track配置 项目背景 在实施省内一条高速公路时遇到的需求,本次涉及的主要是收费汇聚交换机的配置,浪潮网络设备在高速项目很少,通…...
Go 语言并发编程基础:无缓冲与有缓冲通道
在上一章节中,我们了解了 Channel 的基本用法。本章将重点分析 Go 中通道的两种类型 —— 无缓冲通道与有缓冲通道,它们在并发编程中各具特点和应用场景。 一、通道的基本分类 类型定义形式特点无缓冲通道make(chan T)发送和接收都必须准备好࿰…...
