当前位置: 首页 > news >正文

《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集群》

总结&#xff1a;整理不易&#xff0c;如果对你有帮助&#xff0c;可否点赞关注一下&#xff1f; 更多详细内容请参考&#xff1a;《Linux运维篇&#xff1a;Linux系统运维指南》 一、部署背景 由于业务系统的特殊性&#xff0c;我们需要面向不通的客户安装我们的业务系统&…...

深入剖析嵌套调用和链式访问,以及函数的声明和定义(超全面覆盖)

1. 前情提要 在上一篇博客中&#xff0c;我们大致了解了函数的种类&#xff0c;以及自定义函数中形参和实参的具体区别 我们知道实参是需要传递给形参的&#xff0c;但其实形参和实参占据的是完全独立的内存空间 x&#xff0c;y在执行过程中会得到a和b的值&#xff0c;但是x…...

浏览器百科:网页存储篇-IndexedDB介绍(十)

1.引言 在现代网页开发中&#xff0c;数据存储需求日益增多和复杂&#xff0c;传统的客户端存储技术如localStorage和sessionStorage已难以满足大型数据的存储和管理需求。为了解决这一问题&#xff0c;HTML5 引入了 IndexedDB&#xff0c;在本篇《浏览器百科&#xff1a;网页…...

Java语言程序设计基础篇_编程练习题*18.22 (将十进制數转换为十六进制数)

题目&#xff1a;*18.22 (将十进制數转换为十六进制数) 编写一个递归方法&#xff0c;将一个十进制数转换为一个十六进制数的字符串。方法头如下: public static String dec2Hex(int value)编写一个测试程序&#xff0c;提示用户输入一个十进制数&#xff0c;然后显示等价的十…...

蓝桥杯3. 压缩字符串

题目描述 实现一个算法来压缩一个字符串。压缩的要求如下&#xff1a; 需要判断压缩能不能节省空间&#xff0c;仅在压缩后字符串比原字符串长度更短时进行压缩。 压缩的格式是将连续相同字符替换为字符 数字形式&#xff0c;例如 "AAABCCDDDD" 变为 "A3BC2D…...

Java设计模式之责任链模式详细讲解和案例示范

在本文中&#xff0c;我们将详细讲解Java设计模式中的责任链模式&#xff0c;探讨其基本概念、使用场景、常见问题和解决方式。同时&#xff0c;我们还会介绍责任链模式与策略模式的区别&#xff0c;并结合电商交易系统的示例进行说明。此外&#xff0c;我们还会探讨责任链模式…...

ubuntu_如何解决apt install时报错:Waiting for cache lock: Could not get lock

当你在 Ubuntu 上运行 apt 时&#xff0c;遇到类似 Waiting for cache lock: Could not get lock 错误&#xff0c;通常是因为另一个进程正在使用 apt 或者类似的包管理器工具。你可以按照以下步骤来查找并解决这个问题&#xff1a; 1. 查询哪个进程正在使用锁 系统中的锁文件…...

软件测试(D5)

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

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 在每个步骤中都保持着一个局部最优解&#xff0c;即以当前元素为结尾的最大子数组和(也就是局部最优解)&#xff0c;并通过比较这些局部最优解和当前的全局最优解来找到最终的全局最优解。 Kadane’s Algorithm的核…...

目标检测-YOLOv2

YOLOv2介绍 YOLOv2&#xff08;You Only Look Once version 2&#xff09;是一种用于目标检测的深度学习模型&#xff0c;由Joseph Redmon等人于2016年提出&#xff0c;并详细论述在其论文《YOLO9000: Better, Faster, Stronger》中。YOLOv2在保持高速检测的同时&#xff0c;显…...

大数据 - OLAP与OLTP的区别

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

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&#xff0c;便于查看所有代…...

树形弹窗选择框/vue2/Element/弹框选择

前言 此类选择器根据vueelementUI实现&#xff0c;使用vue3的可以根据此案例稍作改动即可实现&#xff0c;主要功能有弹出选择、搜索过滤、搜索结果高亮等&#xff0c;此选择器只支持单选&#xff0c;如需多选可在此基础进行改造。 效果图 代码实现 使用时&#xff0c;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接口报未知异常错误

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

vue3 指定元素全屏 screenfull(可直接粘贴使用)

业务需求 由于输入的文字较多&#xff0c;需要将输入框进行全屏展示&#xff0c;方便输入和查看&#xff01; 效果图 实现方式 下载插件"screenfull": “^6.0.2” yarn add screenfull -S项目中使用 import screenfull from "screenfull"templte中代码…...

【规范】Git Commit 约定式提交规范

文章目录 前言介绍使用约定式提交规范的好处提交信息格式信息头部&#xff08;Header&#xff09;正文&#xff08;Body&#xff09;脚注&#xff08;Footer&#xff09;撤销&#xff08;Revert&#xff09; 提交类型表格官网 前言介绍 约定式提交规范它是一种基于提交信息的轻…...

GDB的基本使用方法(之一)

1.编译程序 如果要让GDB调试程序,则编译生成程序时,要添加-g编译选项: $gcc -Wall -O2 -g 源文件 编译器含有针对源代码中的各种各样的错误输出信息的功能,称为警告选项。这些信息并不一定是错误,但却指出了容易引发bug的编码方式。-Werror选项可以在警告发生时,将其当…...

《从零掌握MIPI CSI-2: 协议精解与FPGA摄像头开发实战》-- CSI-2 协议详细解析 (一)

CSI-2 协议详细解析 (一&#xff09; 1. CSI-2层定义&#xff08;CSI-2 Layer Definitions&#xff09; 分层结构 &#xff1a;CSI-2协议分为6层&#xff1a; 物理层&#xff08;PHY Layer&#xff09; &#xff1a; 定义电气特性、时钟机制和传输介质&#xff08;导线&#…...

系统设计 --- MongoDB亿级数据查询优化策略

系统设计 --- MongoDB亿级数据查询分表策略 背景Solution --- 分表 背景 使用audit log实现Audi Trail功能 Audit Trail范围: 六个月数据量: 每秒5-7条audi log&#xff0c;共计7千万 – 1亿条数据需要实现全文检索按照时间倒序因为license问题&#xff0c;不能使用ELK只能使用…...

Keil 中设置 STM32 Flash 和 RAM 地址详解

文章目录 Keil 中设置 STM32 Flash 和 RAM 地址详解一、Flash 和 RAM 配置界面(Target 选项卡)1. IROM1(用于配置 Flash)2. IRAM1(用于配置 RAM)二、链接器设置界面(Linker 选项卡)1. 勾选“Use Memory Layout from Target Dialog”2. 查看链接器参数(如果没有勾选上面…...

BCS 2025|百度副总裁陈洋:智能体在安全领域的应用实践

6月5日&#xff0c;2025全球数字经济大会数字安全主论坛暨北京网络安全大会在国家会议中心隆重开幕。百度副总裁陈洋受邀出席&#xff0c;并作《智能体在安全领域的应用实践》主题演讲&#xff0c;分享了在智能体在安全领域的突破性实践。他指出&#xff0c;百度通过将安全能力…...

AI编程--插件对比分析:CodeRider、GitHub Copilot及其他

AI编程插件对比分析&#xff1a;CodeRider、GitHub Copilot及其他 随着人工智能技术的快速发展&#xff0c;AI编程插件已成为提升开发者生产力的重要工具。CodeRider和GitHub Copilot作为市场上的领先者&#xff0c;分别以其独特的特性和生态系统吸引了大量开发者。本文将从功…...

【开发技术】.Net使用FFmpeg视频特定帧上绘制内容

目录 一、目的 二、解决方案 2.1 什么是FFmpeg 2.2 FFmpeg主要功能 2.3 使用Xabe.FFmpeg调用FFmpeg功能 2.4 使用 FFmpeg 的 drawbox 滤镜来绘制 ROI 三、总结 一、目的 当前市场上有很多目标检测智能识别的相关算法&#xff0c;当前调用一个医疗行业的AI识别算法后返回…...

OPenCV CUDA模块图像处理-----对图像执行 均值漂移滤波(Mean Shift Filtering)函数meanShiftFiltering()

操作系统&#xff1a;ubuntu22.04 OpenCV版本&#xff1a;OpenCV4.9 IDE:Visual Studio Code 编程语言&#xff1a;C11 算法描述 在 GPU 上对图像执行 均值漂移滤波&#xff08;Mean Shift Filtering&#xff09;&#xff0c;用于图像分割或平滑处理。 该函数将输入图像中的…...

C/C++ 中附加包含目录、附加库目录与附加依赖项详解

在 C/C 编程的编译和链接过程中&#xff0c;附加包含目录、附加库目录和附加依赖项是三个至关重要的设置&#xff0c;它们相互配合&#xff0c;确保程序能够正确引用外部资源并顺利构建。虽然在学习过程中&#xff0c;这些概念容易让人混淆&#xff0c;但深入理解它们的作用和联…...

Python 高效图像帧提取与视频编码:实战指南

Python 高效图像帧提取与视频编码:实战指南 在音视频处理领域,图像帧提取与视频编码是基础但极具挑战性的任务。Python 结合强大的第三方库(如 OpenCV、FFmpeg、PyAV),可以高效处理视频流,实现快速帧提取、压缩编码等关键功能。本文将深入介绍如何优化这些流程,提高处理…...

消防一体化安全管控平台:构建消防“一张图”和APP统一管理

在城市的某个角落&#xff0c;一场突如其来的火灾打破了平静。熊熊烈火迅速蔓延&#xff0c;滚滚浓烟弥漫开来&#xff0c;周围群众的生命财产安全受到严重威胁。就在这千钧一发之际&#xff0c;消防救援队伍迅速行动&#xff0c;而豪越科技消防一体化安全管控平台构建的消防“…...