Consul集群搭建看这篇就够了(consul cluster configuration )

Consul 是一种用于服务发现、配置和分布式一致性的开源工具和平台。它由 HashiCorp 公司开发和维护,旨在简化构建和维护分布式系统的任务。

Consul 提供了许多功能,包括:

  1. 服务发现:Consul允许服务注册和发现。当服务启动时,它可以向Consul注册自己的位置和元数据。其他服务可以通过Consul查询来发现特定服务的位置,从而轻松实现服务之间的通信。

  2. 健康检查:Consul可以周期性地对服务进行健康检查,以确保它们正常工作。如果服务不再健康,则Consul可以自动将其标记为不可用,并将流量路由到其他健康的实例。

  3. KV存储:Consul包含一个分布式键/值存储系统,可以用于配置、功能标志和其他临时数据的存储。

  4. 多数据中心支持:Consul支持多数据中心集群,允许在不同地理位置部署多个Consul集群,并在它们之间进行通信和同步。

  5. 一致性保证:Consul使用Raft协议来确保数据的一致性和高可用性。它能够在节点故障或网络分区时继续正常运行。

  6. DNS接口:Consul提供了一个DNS接口,允许使用域名进行服务发现,而无需依赖专门的服务发现库。

总的来说,Consul是一个强大的工具,可以帮助开发人员和运维人员构建和管理可靠的分布式系统,简化了服务发现、配置管理和系统监控等任务。

下载安装Consul

Consulf官方下载链接

在这里插入图片描述
选择对应linux 安装consul

sudo yum install -y yum-utils
sudo yum-config-manager --add-repo https://rpm.releases.hashicorp.com/RHEL/hashicorp.repo
sudo yum -y install consul

国内加速阿里云Consul v1.18.0备份
验证


$ consul version
Consul v1.18.0
Revision 349cec17
Build Date 2024-02-26T22:05:50Z
Protocol 2 spoken by default, understands 2 to 3 (agent will automatically use protocol >2 when speaking to compatible agents)

单机启动

consul agent -dev  -client=0.0.0.0

在运行Consul代理时,你可以通过一些参数来优化命令。这些参数可以帮助你更好地配置Consul:

  1. 指定数据中心:使用 -datacenter 参数可以指定Consul代理所属的数据中心。例如,-datacenter=mydc

  2. 指定节点名称:使用 -node 参数可以指定Consul代理的节点名称。例如,-node=myagent

  3. 开启UI界面:使用 -ui 参数可以启动Consul的Web UI界面,方便可视化管理。例如,-ui

  4. 指定日志级别:使用 -log-level 参数可以指定Consul代理的日志级别。例如,-log-level=info

  5. 开启gRPC API:使用 -grpc 参数可以开启Consul的gRPC API,允许使用gRPC接口与Consul进行交互。例如,-grpc

  6. 指定绑定地址:使用 -bind 参数可以指定Consul代理绑定的地址。例如,-bind=192.168.1.100

  7. 禁用DNS缓存:使用 -disable-host-node-id 参数可以禁用Consul的DNS缓存。例如,-disable-host-node-id

综合使用这些参数,你可以优化你的Consul代理命令,使其更适合你的环境和需求。例如:

consul agent -dev -client=0.0.0.0 -datacenter=mydc -node=myagent -ui -log-level=info -grpc -bind=192.168.1.100 -disable-host-node-id

这个命令将启动一个绑定到所有接口的Consul代理,使用名为mydc的数据中心,节点名称为myagent,开启了Web UI界面、gRPC API,并设置了日志级别为info

集群部署

在这里插入图片描述

要列出 rpm 安装 Consul 后所产生的文件,可以使用以下命令

# 查看yum下载安装consul
rpm -ql consul
/etc/consul.d/consul.env
/etc/consul.d/consul.hcl
/usr/bin/consul
/usr/lib/systemd/system/consul.service

这些文件的功能介绍如下:

  1. /etc/consul.d/consul.env: 这个文件通常用于设置 Consul 运行时的环境变量。环境变量可以影响 Consul 的行为,例如设置日志级别、数据目录路径等。在这个文件中,你可以配置一些 Consul 运行时所需的环境变量。

  2. /etc/consul.d/consul.hcl: 这是 Consul 的主要配置文件。在这个文件中,你可以配置 Consul 的各种选项,包括集群配置、数据中心、节点名称、绑定地址、广告地址、加入集群的地址、监听端口、日志设置等。通过编辑这个文件,你可以定制 Consul 的行为和功能。

  3. /usr/bin/consul: 这是 Consul 的可执行文件。通过执行这个文件,你可以启动 Consul Agent,并根据配置文件中的设置来运行 Consul。

  4. /usr/lib/systemd/system/consul.service: 这是 Consul 的 Systemd 服务单元文件。它定义了 Consul 作为 Systemd 服务的配置,包括服务的启动方式、依赖关系等。通过 Systemd,你可以使用 systemctl 命令来管理 Consul 服务的启动、停止、重启等操作。

这些文件是安装 Consul 包后在系统上生成的关键文件,用于配置和管理 Consul 的运行。通过修改配置文件,你可以调整 Consul 的行为,使其适应特定的需求和环境。

编辑Consul配置文件

以下是根据配置内容的重要性和功能进行分组,并添加了注释和适当的配置选项的配置文件示例:

vim /etc/consul.d/consul.hcl

配置文件名为consul.hcl,而 JSON 是另一种格式,通常使用 .json 扩展名。如果你要使用 HCL(HashiCorp Configuration Language)格式,你可以像下面这样编辑:

# Consul 配置文件# 数据中心设置
datacenter = "dc1"# 节点名称设置(注意:不可重名)
node_name = "consul-36"# 数据目录设置
data_dir = "/opt/consul"# 日志级别设置(可选值:TRACE, DEBUG, INFO, WARN, ERR)
log_level = "ERR"# 绑定地址设置(监听所有 IPv6 地址和所有 IPv4 地址)
bind_addr = "[::]"
bind_addr = "0.0.0.0"# 广播自己地址给集群访问(用于集群内部通信)
advertise_addr = "192.168.3.36"# 加入集群的地址列表(需要提供至少一个已知的集群节点地址,:8301默认端口可省略)
retry_join = ["192.168.3.39:8301", "192.168.3.53", "192.168.3.54"]
# 用于指定 Consul Agent 在启动时尝试通过加入集群节点。
start_join = ["192.168.3.39", "192.168.3.53", "192.168.3.54"]# 服务节点设置(是否为服务器节点)
server = true
# 这会告诉Consul在引导期间等待2个服务器节点就绪,然后再引导整个集群。
bootstrap_expect = 2# 加密设置(consul keygen 生成的用于集群网络通信的加密)
encrypt = "KUZZ6X4oQhUvXeu+aN1EHL4DVgep8jk4ltflcLQ2DvQ="# 客户端地址设置(用于监听客户端请求的地址)
client_addr = "0.0.0.0"# UI 配置(用于启用内置的 Web UI)
ui_config {enabled = truecontent_path = "/ui/" #可自定义路径
}# 默认端口设置
ports {# HTTP API 端口(默认值:8500)与 Consul 进行交互,包括服务注册、UI、健康检查等http = 8500# DNS 端口(默认值:8600)用于提供 DNS 查询服务,允许客户端通过 DNS 协议来查询服务实例的地址dns = 8600# Serf LAN 端口(默认值:8301)局域网内进行集群节点间的通信serf_lan = 8301# Serf WAN 端口(默认值:8302) 广域网(WAN)内进行集群节点间的通信,用于跨数据中心的通信serf_wan = 8302# 服务器 RPC 端口(默认值:8300)服务器节点之间进行 RPC 通信server = 8300
}

这个配置文件根据不同的功能进行了分组,并添加了注释以说明各个配置项的作用和用法。

# 启动
consul agent -config-file=/etc/consul.d

Consul 会在这个目录中寻找配置文件并加载。

常用命令

以下是一些常用的 Consul 集群管理命令:

  1. 启动 Consul Agent:

    consul agent -config-file=<config_file>
    

    这个命令用于启动 Consul Agent,并指定配置文件。

  2. 加入集群:

    consul join <address>
    

    这个命令用于将当前节点加入到 Consul 集群中,<address> 是一个已存在的集群节点的地址。

  3. 离开集群:

    consul leave
    

    这个命令用于将当前节点从 Consul 集群中移除。

  4. 查看集群节点:

    consul members
    

    这个命令用于查看当前 Consul 集群中的成员节点列表。

  5. 查看 Leader:

    consul operator raft list-peers
    

    这个命令用于列出当前的 Consul 集群中的领导者节点。

  6. 手动推选 Leader:

    consul operator raft promote <node_id>
    

    这个命令用于手动推选指定节点为 Consul 集群的领导者。

  7. 重启集群节点:

    consul reload
    

    这个命令用于重新加载 Consul 配置文件并重启 Consul Agent。

  8. 查看服务列表:

    consul catalog services
    

    这个命令用于列出所有在 Consul 中注册的服务。

  9. 注册服务:

    consul services register <service.json>
    

    这个命令用于注册一个新的服务到 Consul 中,<service.json> 是包含服务定义的 JSON 文件。

  10. 移除服务:

    consul services deregister <service_id>
    

    这个命令用于从 Consul 中移除一个已注册的服务,<service_id> 是服务的唯一标识符。

这些命令可以帮助你管理和维护 Consul 集群,确保其正常运行并满足你的需求。

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

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

相关文章

JAVA-----

标识符 标识符可以简单的理解为一个名字&#xff0c;在Java中&#xff0c;我们需要给代码中的很多元素起名字&#xff0c;包括类名、方法名、字段名、变量名等等。我们给对应元素起的名称就被叫做是标识符。一个正确的标识符需要遵循以下规则&#xff1a; 1.标识符可以由字母、…

PYTHON初级笔记1

0、python&#xff1f; 简单的编程语言 python环境搭建&#xff1a; ①、开发环境&#xff1a;vscode、sublime、pycharm...... ②、运行环境&#xff1a;cpython解释器 python如何写代码&#xff1f; ①、在终端上的命令行上写&#xff0c;可以是我们cmd的中终端&#xff0c;…

MATLAB 公共区域的点云合并(46)

MATLAB 公共区域的点云合并(46) 一、算法介绍二、算法实现1.代码2.效果一、算法介绍 点云配准后,或者公共区域存在多片点云对场景进行冗余过量表达时,我们需要将点云进行合并,Matlab点云工具中提供了这样的合并函数,通过指定网格步长,对初始点云进行过滤。 函数主要实…

分治——快速排序算法

例题一 解法&#xff08;快排思想 - 三指针法使数组分三块&#xff09;&#xff1a; 算法思路&#xff1a; 类⽐数组分两块的算法思想&#xff0c;这⾥是将数组分成三块&#xff0c;那么我们可以再添加⼀个指针&#xff0c;实现数组分 三块。 设数组⼤⼩为 n &#xff0c…

数据分析web可视化神器---streamlit框架,无需懂前端也能搭建出精美的web网站页面

✨✨ 欢迎大家来到景天科技苑✨✨ &#x1f388;&#x1f388; 养成好习惯&#xff0c;先赞后看哦~&#x1f388;&#x1f388; 所属的专栏&#xff1a;数据分析系统化教学&#xff0c;零基础到进阶实战 景天的主页&#xff1a;景天科技苑 文章目录 Streamlit什么是streamli…

Godot 学习笔记(5):国际化多语言翻译,包含常用10种语言机翻!

文章目录 前言国际化翻译Api选择小牛测试 语言选择代码逻辑实体对象翻译帮助类导出模板读取文件翻译测试多语言测试 综合翻译文件准备测试代码测试结果 完整代码实体类翻译帮助类网络帮助类 最终效果翻译前翻译中翻译后 总结 前言 为了面向更大的市场&#xff0c;国际化是肯定…

毫米波雷达简介

毫米波雷达简介 附赠自动驾驶学习资料和量产经验&#xff1a;链接 1. 概述 1.1 发展历史 RADAR是RAdio Detection And Ranging的缩写。 1936年1月&#xff0c;英国架起了第一个雷达站&#xff0c;用于监测德国战机。从此之后&#xff0c;雷达技术开始蓬勃发展。 雷达的频段很…

软件测试基础(1)

软件测试的生命周期 软件测试的生命周期: 需求分析 -> 测试计划 -> 测试设计, 测试开发 -> 测试执行 -> 测试评估. 软件测试 & 软件开发的生命周期 1.需求阶段 测试人员了解需求, 对需求进行分解, 得出测试需求. 2.计划阶段 根据需求编写测试计划/测试方案 3…

Web核心

目录 Web核心HTTP概念&#xff1a;协议特点&#xff1a;请求数据格式响应数据格式 Tomcat简介基本使用配置部署项目IDEA中创建 Maven Web 项目 IDEA使用Tomcat Servlet简介快速入门执行流程生命周期体系结构Servlet urlPattern配置一个Servlet&#xff0c;可以配置多个 urlPatt…

java-springboot实现图片的上传

我们在resources目录下创建image目录来存放上传的图片 service层懒的写&#xff0c;就都写controller层了。 RestController RequestMapping("/upload") public class upload {PostMapping("/pic")public String upLoad(RequestParam("multipartFile…

PTA金字塔游戏

幼儿园里真热闹&#xff0c;老师带着孩子们做一个名叫金字塔的游戏&#xff0c;游戏规则如下&#xff1a; 首先&#xff0c;老师把孩子们按身高从高到矮排列&#xff0c;选出最高的做队长&#xff0c;当金字塔的塔顶&#xff0c;之后在其余小朋友里选出两个最高的&#xff0c;…

12个好玩又实用的Python迭代器和生成器实例

大家好&#xff01;今天我们要来一场编程奇趣之旅&#xff0c;一起揭秘那些既让代码变得更简洁高效&#xff0c;又能带你领略Python魅力的12个迭代器和生成器实例。别担心&#xff0c;我会用轻松易懂的语言帮你掌握这些小技巧&#xff0c;准备好你的笔记本&#xff0c;咱们这就…

MySQL 练习三

select sname,sex,class from student;select distinct depart from teacher;select * from student;select * from score where degree between 60 and 80;select * from score where degree in(85,86,88);select * from student where class’95031’ or sex’女’;select * …

transductive transfer learning

如图所示&#xff0c;传统的机器学习方法尝试去学习每一种任务&#xff0c;而迁移学习则根据已经学习处理过的任务推广到有较少训练数据的新任务上。在传统的机器学习中&#xff0c; transductive learning指所有测试数据在训练时被要求看到的情况&#xff0c;并且对于新的数据…

谈谈计算机科学与技术这门专业

原文地址&#xff1a;谈谈计算机科学与技术这门专业 - Pleasure的博客 下面是正文内容&#xff1a; 前言 这是一篇个人性质的笔记。 专业代码080901 或许也可以理解为计算机科学与技术专业大致都要经历的学习路线&#xff08;主要还是根据本校&#xff09;。 正文 主要专业课程…

Redis中的事件(二)

文件事件 文件事件的处理器 Redis为文件事件编写了多个处理器&#xff0c;这些事件处理器分别用于实现不同的网络通信需求&#xff0c;比如说: 1.为了对连接服务器的各个客户端进行应答&#xff0c;服务器要为监听套接字关联连接应答处理器2.为了接收客户端传来的命令请求&a…

数据结构与算法分析引论1

1.解决问题的算法有很多&#xff0c;但是在输入不同的情况下&#xff0c;不同算法之间的差异也很大&#xff0c;我们总是追求一个更快、更有效的方法。比如说普通的依次查找和二分查找&#xff0c;两者的差异就很大。我们使用大O表示法来表示算法的速度。依次查找就是O(n)&…

Fiddler抓包工具之Fiddler界面主菜单功能介绍

Fiddler界面主菜单功能介绍 File菜单 File菜单中的命令主要支持完成通过Fiddler来启动和停止web流量的捕获&#xff08;capture&#xff09;,也可以加载或存储捕获的流量 &#xff08;1&#xff09;Capture Traffic&#xff1a;默认勾选&#xff0c;勾选此项才可抓包&#xff…

USB HOST移植

一、USB简介 USB有USB1.0/1.1/2.0/3.0多个版本&#xff0c;标准USB由4根线组成,VCC&#xff0c;GND&#xff0c;D&#xff0c;D-&#xff0c;其中D和D-是数据线&#xff0c;采用差分传输。 在USB主机上,D-和D都是接了15K的电阻到地,所以在没有设备接入的时候,D、D-均是低电平。…

Scala环境搭建

目录 前言 Scala的概述 Scala环境的搭建 一、配置Windows的JAVA环境 二、配置Windows的Scala环境 编写一个Scala程序 前言 学习Scala最好先掌握Java基础及高级部分知识&#xff0c;文章正文中会提到Scala与Java的联系&#xff0c;简单来讲Scala好比是Java的加强版&#x…