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

docker安装Consul笔记

安装过程

详细步骤如下:

首先拉取ConsulDocker镜像:

docker pull hashicorp/consul:1.18.1

创建Consul的配置文件和数据目录:

mkdir -p /srv/docker/consul/data
mkdir -p /srv/docker/consul/config

config目录下创建一个config.json配置文件:

vim /srv/docker/consul/config/config.json

在该文件中写入以下内容:

{"datacenter": "dc1","node_name": "consul-node","server": true,"bootstrap_expect": 1,"data_dir": "/consul/data","log_level": "INFO","client_addr": "0.0.0.0","bind_addr": "0.0.0.0","ui": true
}

上面JSON中的字段内容含义详解:

  • datacenter:定义当前节点的数据中心名称,用于隔离服务发现和分布式操作。名称可自定义,如dc1us-west等。
  • node_name:指定节点名称,用于标识当前节点,必须在整个集群中唯一。如果未设置,Consul会生成一个随机名称。
  • server:指示当前节点是否为Consul服务器节点。Consul服务器节点负责存储集群状态和数据,并参与选举。
  • bootstrap_expect:定义服务器节点的预期数量,用于初始化集群。例如,设置为3时,至少需要3个服务器节点完成启动。
  • data_dir:指定数据存储目录。用于持久化存储Consul的数据,如状态信息、快照和事务日志。
  • log_level:设置日志级别。可选值:DEBUGINFOWARNERR等。
  • client_addr:定义客户端可访问的监听地址。0.0.0.0表示监听所有网络接口地址。可以根据需求改为特定的IP
  • bind_addr:设置Consul节点的绑定地址。单机部署(如开发测试)可使用环回地址或绑定到所有接口。
  • ui:启用Consul的内置Web UI。设为true后,Consul会开放Web UI界面,默认在8500端口提供访问。

接下来,使用下面命令启动Consul容器:

docker run -d \--name=consul \--restart=always \-p 8500:8500 \-p 8600:8600/udp \-v /srv/docker/consul/data:/consul/data \-v /srv/docker/consul/config:/consul/config \hashicorp/consul:1.18.1 \agent -config-dir=/consul/config

这里开启了85008600端口:8500映射ConsulWeb UIAPI,支持用户通过浏览器访问控制台或调用API8600映射DNS接口,提供服务发现的DNS查询功能。使用8600/udp进行端口暴露,是因为默认情况下DNS查询使用UDP协议,如果不显式声明UDP协议,Docker默认会只暴露TCP,导致应用无法通过UDP协议进行DNS查询。

agent -config-dir=/consul/config这一句指明使用容器内的配置文件启动Consul代理。

容器启动完成后,使用下面的地址访问ConsulWeb UI页面:

http://<ip_address>:8500

出现如下页面,代表容器启动成功:

在这里插入图片描述

上述配置为单节点Consul,如需部署多节点集群,可根据需要进行配置。具体步骤将在使用时整理。


The end.

http://www.dtcms.com/a/275029.html

相关文章:

  • Java(7.11 设计模式学习)
  • PLC框架-1.3- 汇川PN伺服(3号报文)
  • 多种人脸处理方案——人脸裁剪
  • Webview 中可用的 VS Code 方法
  • G1 垃圾回收算法详解
  • 【TCP/IP】16. 简单网络管理协议
  • 天晟科技携手万表平台,共同推动RWA项目发展
  • 从「小公司人事」到「HRBP」:选对工具,比转岗更能解决成长焦虑
  • Java大厂面试故事:谢飞机的互联网音视频场景技术面试全纪录(Spring Boot、MyBatis、Kafka、Redis、AI等)
  • kubernetes单机部署踩坑笔记
  • DIDCTF-蓝帽杯
  • 谷歌云代理商:谷歌云TPU/GPU如何加速您的AI模型训练和推理
  • 【数据结构与算法】206.反转链表(LeetCode)
  • C++:非类型模板参数,模板特化以及模板的分离编译
  • 实现将文本数据(input_text)转换为input_embeddings的操作
  • 《从依赖纠缠到接口协作:ASP.NET Core注入式开发指南》
  • Vue 表单开发优化实践:如何优雅地合并 `data()` 与 `resetForm()` 中的重复对象
  • Sigma-Aldrich 细胞培养实验方案 | 通过Hoechst DNA染色检测细胞的支原体污染
  • 拔高原理篇
  • 奇哥面试记:SpringBoot整合RabbitMQ与高级特性,一不小心吊打面试官
  • java底层的native和沙箱安全机制
  • Lecture #19 : Multi-Version Concurrency Control
  • 深入理解JVM的垃圾收集(GC)机制
  • Next知识框架、SSR、SSG和ISR知识框架梳理
  • c++——运算符的重载
  • 鸿蒙开发之ArkTS常量与变量的命名规则
  • 面向对象编程
  • [面试] 手写题-选择排序
  • 持有对象-泛型和类型安全的容器
  • 深度学习中的归一化技术详解:BN、LN、IN、GN