我的 docker 镜像是否需要自己的 consul 客户端实例?

2024-01-02

我有一个 dockerized 应用程序,分为几个容器(一些前端和后端服务器、负载均衡器、mysql、elasticsearch 等)。负载均衡器的配置需要知道哪些容器已启动,因此我使用 Consul 服务发现来注册服务。

但我不太确定在每个 docker 容器上运行 consul 代理而不是使用 docker 主机来监督所有正在运行的 docker 容器并通过 Consul 的 HTTP-API 注册它们是否是一个好主意。

有什么我可以遵循的最佳实践吗?


你不需要在每个 docker 容器上运行 consul 代理,你可以通过将 consul 的 DNS 暴露到本地来简单地利用 consul。以下内容不是来自容器,但无论如何您都会了解我在做什么。

以下是我用来运行代理的命令

consul agent -data-dir /var/lib/consul/ -config-dir /etc/consul.d/ -bind 10.X.X.X -dns-port 53 -join consul-master

注意:我已经为 consul-master 添加了一个 /etc/hosts 条目及其 IP,并且还在 /etc/resolv.conf 文件中添加了 127.0.0.1 的名称服务器。

目录 /etc/consul.d/ 保存我的服务配置文件。下面是一个例子:

{
  "service": {
    "name": "stackoverflow",
    "tags": [
      "example"
    ],
    "port": 5000
  }
}

现在,一旦我的 consul 代理运行,我就可以通过 dig 命令或 http api 请求检查具有 consul 代理(服务器/客户端)的任何主机的服务,如下所示:

curl http://stackoverflow.service.consul:80/api/v1/ping
{"success":true,"message":"pong"}

For DNS:

dig @127.0.0.1 -p 53 stackoverflow.service.consul

; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.62.rc1.55.amzn1 <<>> @127.0.0.1 -p 53 tracker.service.consul
; (1 server found)
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 57167
;; flags: qr aa rd; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 0
;; WARNING: recursion requested but not available

;; QUESTION SECTION:
;tracker.service.consul.        IN  A

;; ANSWER SECTION:
tracker.service.consul. 0   IN  A   X.X.X.X

;; Query time: 1 msec
;; SERVER: 127.0.0.1#53(127.0.0.1)
;; WHEN: Fri Jul  7 11:29:01 2017
;; MSG SIZE  rcvd: 56

希望有帮助并给出一个清晰的想法

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

我的 docker 镜像是否需要自己的 consul 客户端实例? 的相关文章

  • 使用 Visual Studio Tools for Docker 部署和调试远程 Linux Docker 容器

    我试图弄清楚如何使用部署到远程容器适用于 Docker 的 Visual Studio 工具 并调试我的 ASP NET Core 应用程序 实际上 我正在以下场景中工作 我的开发机器是 Hyper V 虚拟机 Docker is inst
  • 如何使用多阶段构建减小 python (docker) 图像大小?

    我正在寻找一种使用 python 和 Dockerfile 创建多阶段构建的方法 例如 使用以下图像 第一张图片 安装所有编译时要求 并安装所有需要的 python 模块 第二张图片 将所有已编译 构建的包从第一个映像复制到第二个映像 而不
  • 微服务、amqp 和服务注册/发现

    我正在研究微服务架构 实际上我想知道一些事情 我非常同意使用 返回 服务发现来在基于 REST 的微服务上发出请求 我需要知道发出请求的服务 或至少是服务器集群的前端 在哪里 因此在这种情况下能够发现 ip port 是有意义的 但我想知道
  • libicui18n.so.52:无法打开共享对象文件

    我一直在使用 libicu 来检测在 docker ubuntu 内部运行的节点应用程序中的字符集 这是通过模块完成的节点 icu 字符集检测器 https github com mooz node icu charset detector
  • Docker 容器中的 LDAP 身份验证

    默认情况下 当Docker容器启动时 里面的用户是sudo I want 默认情况下将 sudo 用户锁定在容器中 在容器中使用 LDAP 身份验证而不是默认身份验证 当用户与映像一起提供时 或者在容器运行时由 sudo 用户创建 为此 我
  • 如何在CentOS7中更改docker守护进程根目录

    我在 CentOS7 上运行 docker 我想更改我的基本目录 var lib docker to data docker I found this https docs docker com engine reference comma
  • 如何使用 pipelinev 为 python 应用程序制作轻量级 docker 镜像

    我可以通过以下简单的操作为我的 python 应用程序生成工作图像Dockerfile FROM python 3 7 WORKDIR myapp COPY Pipfile RUN pip install pipenv RUN pipenv
  • 使用“mvncompilejib:build”推送到 Docker 注册表失败

    我正在尝试使用以下命令构建并将我的 docker 映像部署到私有注册表谷歌联合投资银行Maven 插件 但是 它因访问私有注册表时出现问题而失败 我已经安装了Docker 桌面 v19 03 1 on my Windows 10机器 接下来
  • 从 Kubernetes Python 客户端登录到 GitLab 存储库

    我有一个 Django 应用程序 它使用python 的官方 Kubernetes 客户端 https github com kubernetes client python并且工作正常 但它只部署 正确 公共注册表 有没有办法执行登录后让
  • 上下文更改后 Docker“协议不可用”

    我改变了我的码头环境 现在 当我运行任何 docker 命令时 我得到protocol not available 如果无法运行任何 docker 命令 如何更改回上下文 基本上我做了以下事情 I ran docker context li
  • 如何使用gunicorn和bokeh服务配置Nginx

    我想提供一个 Flask 应用程序 该应用程序使用本地网络服务器上的嵌入式散景服务 为了说明这一点 我使用了一个例子散景服务示例 https github com bokeh bokeh blob 0 12 11 examples howt
  • 在 Mac OS X 上从 boot2docker 迁移到 Vagrant+NFS 的最快方法是什么?

    我有一个从官方 mysql 构建的数据库容器docker pull mysql 我有一个前端应用程序app用蛋糕建造 我有一个后端应用程序cms使用 Symfony 构建 我为两者都设置了容器链接app and cms自动启动并连接到db
  • 如何从连接到外部网络的另一个组合访问容器?

    这是带有容器配置的撰写文件 我希望从外部容器连接到该容器 在另一个撰写文件中定义 version 3 5 services service to connect to build networks my external network n
  • Docker 和 Eureka 与 Spring Boot 无法注册客户端

    我有一个使用 Spring Boot Docker Compose Eureka 的非常简单的演示 我的服务器在端口 8671 上运行 具有以下应用程序属性 server port 8761 eureka instance prefer i
  • 使用 Docker 文件分配附加功能

    我需要部署 Docker 映像 但我只想使用 Docker run 命令而不使用其任何参数 我想在运行容器时分配特殊权限 这是我的 Docker 运行命令 docker run cap add SYS ADMIN cap add DAC R
  • MySQL集群启动失败

    这不是我第一次创建ndbcluster 但我没有收到这样的问题 我正在关注本手册 https hub docker com r mysql mysql cluster by mysql团队 我正在使用回显的默认配置在此 GitHub 存储库
  • 从镜像创建 Docker 容器而不启动它

    作为我的部署策略的一部分 我使用 Upstart 管理 Docker 容器 为此 我需要从注册表中提取图像并创建一个命名容器 如建议的那样 用于运行容器的新贵脚本不会管理生命周期 https stackoverflow com questi
  • nslookup 报告“无法解析 '(null)': 名称无法解析”,尽管它成功解析了 DNS 名称

    我在 ubuntu 上 并且正在运行 docker 默认桥接网络 我有 Zookeeper kafka 的容器化版本 以及我编写的与 kafka 对话的应用程序 I do a docker exec it
  • PHP-docker容器中的环境变量

    我想在我的 docker 容器中显示一个环境变量 PHP 脚本如下所示 我使用 OpenShift 来启动容器 PHP 容器显示 env is 现在我更改容器的 dc 配置 oc env dc envar USER Pieter deplo
  • 如何管理AWS ECS中docker镜像的版本?

    AWS ECS 服务指向一个任务定义 其中包含 docker 镜像的名称 包括标签 因此 当我创建新版本的 docker 映像时 我有两种可能性 将任务定义更新到新版本 然后更新服务以指向任务定义的新版本 使用一些标签指向最后一个版本 假设

随机推荐

  • 更新 hasone 关系表现得很奇怪 (cakephp)

    我有一个现有的展示柜hasOne画廊 Gallery 已经存在并带有foreignKeyshowcase id设置为适当的值 图库有一个文本字段 我尝试通过展示控制器更新该文本字段 我得到的结果是一个额外的画廊条目 沿着原始条目 而不是原始
  • 在逗号分隔的 sql 字符串中的每个单词周围加引号?

    我有一个像这样的字符串 one two three 我怎样才能让它看起来像这样 one two three 所以我可以在 IN 子句中使用它吗 只需使用 REPLACE 方法即可 将逗号替换为所需的字符串 DECLARE TestData
  • 用最少的内存连接 Numpy 数组

    不是我有50GB的数据集保存为h5py 里面是一个字典 字典包含从 0 到 n 的键 值是具有相同形状的 numpy ndarray 3 维 例如 字典 0 np array 我想连接所有这些 np 数组 代码如下 sample np co
  • C# 事件锁定

    C 中是否有类似于 lock 的构造 但在从事件处理程序调用时起作用 即在处理后续事件之前等待代码块完成 我遇到的问题是 lock 仅阻止其他线程获取该对象的锁 但是如果调用同一线程上的事件处理程序 则锁块内代码的执行将被中断 并且新事件是
  • config/environments/development.rb 中“consider_all_requests_local”的用途?

    这个 Rails 配置设置的目的是什么 config action controller consider all requests local true 默认情况下它设置为 trueconfig environments developm
  • Android 中的间谍/监视变量 (Eclipse)

    我是使用 Eclipse 进行 Android 开发的新手 我问一个非常基本的问题 是否可以在调试会话期间观察 监视变量的内容 有点像在 Visual Studio 中 我知道这是一个相当蹩脚的问题 但我自己却无法弄清楚 提前致谢 Gall
  • ASP.NET MVC - 如何在登录页面上显示未经授权的错误?

    在我的 ASP NET MVC 应用程序中 我的大多数控制器都装饰有 Authorize Roles SomeGroup 当用户无权访问某些内容时 他们会被发送到 Login 这是我的帐户控制器上的登录操作 如何确定用户由于未经授权而已到达
  • 如何添加静态断言来检查变量是否是静态的?

    我有一个仅适用于静态局部变量的宏 因为它使用内联汇编表示法来提取有关变量的数据 我需要一种方法来强制宏的输入确实是静态局部变量 correct func f static int x my macro x 不正确 func f int x
  • 使用 XSLT 将名称/值对 XML 转换为元素

    我有一个由名称 值对组成的 XML 文件 我需要使用 xslt 1 的格式 其中每个 名称 都是一个元素名称 内容中包含值 这是一个例子 Input
  • 休眠的替代方案[关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 为 jQuery UI 按钮创建 AngularJS 指令

    Update 小提琴w 完整的解决方案 http jsfiddle net langdonx VXBHG http jsfiddle net langdonx VXBHG 为了比较 KnockoutJS 和 AngularJS 我浏览了Kn
  • 如何调用另一个文件中的函数?

    例如 我有一个文件 error status php 其中包含一个函数 function validateHostName hostName if strpbrk hostName lt gt FALSE ctype digit hostN
  • WPF:不透明度和 MouseEnter 事件

    作为图表的一部分 我正在绘制一些重叠的形状 每个形状都有Opacity 0 5 像这儿
  • 如何更改microk8s kubernetes存储位置

    您好 我在 Ubuntu 18 单节点机器上安装了 Microk8s Kubernetes 我想知道如何更改存储位置 我希望所有容器 pod 都在 dev sdc 卷中创建 该卷是 ext4 格式而不是默认位置 在 MicroK8s 中 容
  • Swift / 在视图控制器中启用编辑模式

    由于 UI 元素 我创建了 View Controller 里面有一个TableView 但我无法启用编辑模式 我尝试了几种方法都没有解决 但使用 TableView Controller 就没有问题了 我尝试过的 override fun
  • 如何在 Android 应用程序中实现 Java 编译器和 DEX 转换器?

    在试图寻找答案的同时Android Jasper 报告 https stackoverflow com q 7085943 1482507我发现还有另外两个问题需要回答 我被要求作为问题而不是答案提出 我现在的问题是 是否有任何编译器可以直
  • System.Reflection.TargetInitationException :调用目标已引发异常

    我正在尝试自动化reactjs应用程序以及我们项目使用的基于C 和protractor net构建的框架 在任何单击或断言函数之后 我都会收到以下错误 但代码中定义的操作会成功执行 System Reflection TargetInvoc
  • CNN 上的快速损失收敛意味着什么?

    我正在两个不同的深度学习库 Caffe e Tensorflow 中训练两个 CNN AlexNet e GoogLeNet 该网络由每个图书馆的开发团队实施 here https github com BVLC caffe tree ma
  • HTML Button 的 jQuery 函数在使用 MVC FileResult 时遇到问题

    我打算让这个函数调用我的 MVC 操作方法来返回 CSV 报告 function exportButton click function get curReport GetCSVReport 如果我制作一个像下面的代码一样的按钮 那么当单击
  • 我的 docker 镜像是否需要自己的 consul 客户端实例?

    我有一个 dockerized 应用程序 分为几个容器 一些前端和后端服务器 负载均衡器 mysql elasticsearch 等 负载均衡器的配置需要知道哪些容器已启动 因此我使用 Consul 服务发现来注册服务 但我不太确定在每个