Tag: 领事

启动领事在docker不公开http端口

我按照cosul docker hub文档中的说明在桉树云中启动服务器。 然而,除了使用本地主机的Http端口没有被暴露出来 export CONSUL_LOCAL_CONFIG=/root/consul.json 从1 docker run -d –net=host -e 'CONSUL_LOCAL_CONFIG={"skip_leave_on_interrupt": true}' consul agent -server -bind=127.0.0.1 -bootstrap-expect=1 把绑定地址作为127.0.0.1是不会启动服务器; 给IP地址,服务器正在启动,但是bot可以访问。 我也尝试了-P和-P 8500:8500。 仍然无法从另一台机器连接。 请注意,这台机器有一个私人IP以及公共IP。 所以我猜测这就是为什么-net主机没有启动的绑定地址仍然不清楚。 我find两个类似的线程可以解释这一点 在docker run命令中提到–net = host时,Docker容器不公开端口 https://github.com/docker/docker/issues/13914

如何使其他微服务知道服务注册的领事的IP地址

我目前正在dockerizing一个微服务应用程序,并使用Consul进行服务发现。 因此,所有的服务都向领事登记,并从领事处获得环境variables。 未解锁的微服务应用程序的启动脚本从用户处取得Consul ip:port,并将其转发给所有其他微服务。 但是,如何为dockerized微服务应用程序复制相同的每个容器是独立的。 而且,所有的服务都需要向领事注册,但他们没有领事。 我可以在每个所需的微服务应用程序中对consul ip:port进行硬编码,但是我不认为这是一个很好的方法。 那么你有什么想法如何使其他服务意识到领事IP? 任何帮助表示赞赏。

如何在进程启动后执行docker命令

我写了一个服务的Dockerfile(我有一个CMD指向启动进程的脚本),但是在进程启动后我不能运行任何其他命令? 我尝试使用'&'在后台运行进程,以便其他命令在进程启动后运行,但不工作? 任何想法如何实现这一目标? 例如,考虑我启动了一个数据库服务器,并希望在数据库进程启动后才运行一些脚本,我该怎么做? 编辑1: 我的具体用例是我运行一个Rabbitmq服务器作为服务,我想创build一个新的用户,让他的pipe理员,并删除默认来宾用户一旦服务在容器中启动。 我可以通过logindocker容器手动完成,但我想通过将它们附加到启动rabbitmq服务的shell脚本来实现自动化,但是这不起作用。 任何帮助表示赞赏! 问候

Consul-Agent架构..升级到0.8.1后的node-id问题 – 概念问题?

我不知道我的问题的根源究竟在哪里,所以我试图解释更大的图片。 简而言之,症状:将代理从0.7.3升级到0.8.1后,我的代理(下面解释)由于公布的节点ID(为什么可能发生,下面解释),不能再连接到群集领导。 我既不能解决它与https://www.consul.io/docs/agent/options.html#_disable_host_node_id也不完全理解,为什么我遇到这个..那是更大的图片,甚至可能是不同的问题来自哪里。 我有以下设置: 我运行一个应用程序堆栈约8个容器为不同的服务(不同的micoservices,数据库types等)。 我使用一个单一的领事服务器每个堆栈(是的领事服务器运行在软件堆栈,它有其原因,因为我需要这是离线可部署的,每个堆栈生活本身) 领事服务器确实处理注册,服务发现以及KV /configuration 重要/可疑:每个容器都有一个以“consul agent -config-dir /etc/consul.d”开头的consul代理。连接这个服务器。 configuration看起来像这样..包括其他文件与他们encryption令牌/ acl令牌。 不要怀疑servicename()..它在图像构build时被一个m4macros所取代 客户端由八卦键和ACL键保护 重要提示:所有容器都在同一个硬件节点上 服务器configuration看起来像这样,如果有的话。 另外,ACL看起来像这样,一个ACL-master和client token / gossip json文件在这个configuration文件夹中 对不起,这可能是TLTR上面,但所有解释背后的原因是,这个多代理设置(或每个容器1代理)。 我的理由是: 我使用tiller来configuration容器,所以一个dimploy gem会尝试通常连接到localhost:8500 ..以表明,在不使consul-configuration非常复杂的情况下,我使用这个本地代理,然后将请求转发给实际的服务器从而处理所有的encryption密钥/ ACL否定的东西 我在服务器上使用了几个“consul watch”任务来触发重新configuration,他们也在localhost:8500上运行,没有任何额外的configuration 也就是说,我运行1代理/容器的原因是,只要通过127.0.0.1:8500(作为安全级别)连接,本地服务就可以简单地与后端对话,而不必真正了解身份validation, 最后的问题: 这个多领事代理人是否devise成这样使用? 我所要问的原因是,因为据我所知,当我开始一个0.8.1的时候,我得到的node-id重复问题来自于“主机”,因此所有的consul-agent的硬件节点是相同的。 。 对? 我的devise是错误的,还是需要从现在开始生成我自己的node-id?

通过docker swarm模式负载平衡器,consul和外部负载平衡器消除混乱

家伙。 我正在尝试用小ASP.NET应用程序代表的微服务来devise项目。 作为服务发现,我使用Consul。 作为一个编排系统,我使用Docker Swarm模式。 另外,我使用外部负载均衡器(fabio或traefik)。 问题是,我不明白如何将docker swarm负载平衡器与外部的平衡器相结合? 这个想法如下。 每个服务都在启动时在领事处注册。 法比奥使用领事来获得需要负载均衡的服务。 但是当我们以群模式部署服务时,它使用内部负载均衡器,它在外部正常工作。 因此,例如,fabio指向(通过其内部algorithm和权重)serviceA到serviceB_node1,docker swlb可以将该请求指向另一个serviceB_node2。 它打破了lbalgorithm,服务使用统计等等。 如何正确地使docker群lb正常工作

用于Mac容器的Docker托pipenetworking – Consul运行状况检查连接被拒绝

我在我的服务中有一个HTTP健康检查,显示在localhost:35000/health 。 目前它总是返回200 OK 。 运行状况检查的configuration是通过HTTP API而不是通过服务configuration来编程的,但本质上是: set id: service-id set name: health check set notes: consul does a GET to '/health' every 30 seconds set http: http://127.0.0.1:35000/health set interval: 30s 当我直接在我的主机上以开发模式( consul agent -dev -ui )运行领事时,健康检查通过没有任何问题。 但是,当我在docker集装箱运行领事时,运行状况检查失败: 2017/07/08 09:33:28 [WARN] agent: http request failed 'http://127.0.0.1:35000/health': Get http://127.0.0.1:35000/health: dial tcp 127.0.0.1:35000: getsockopt: connection refused 据我所知,docker集装箱启用了与领主版本相同的状态: […]

docker-compose不能使用私有IP

我试图在docker-compose中运行2个容器。 我的docker-compose.yml是: version: '2' services: consul: image: "consul:0.8.3" hostname: "consul" command: "agent -server -client=0.0.0.0 -retry-join=10.30.1.97 -retry-join=10.30.1.42 -bootstrap-expect=3 -ui" ports: – "8400:8400" – "8500:8500" – "8300:8300" – "8600:53/udp" vault: depends_on: – consul image: "vault" hostname: "vault" links: – "consul:consul" environment: VAULT_ADDR: http://127.0.0.1:8200 ports: – "8200:8200" volumes: – ./tools/wait-for-it.sh:/wait-for-it.sh – ./config/vault:/config – ./config/vault/policies:/policies entrypoint: /wait-for-it.sh -t 20 […]

在Docker Swarm上使用Consul的Spring Cloud微服务的方法1.12 ++

我在Spring云生态系统上有几个微服务器,作为configuration服务器和注册服务器,我有Consul。 此外,我有4个节点和3个代理作为服务器模式的Docker Swarm和1个作为每个节点的客户模式的代理代理。 我的问题是什么:我尝试在consul实例上的每个节点上运行Docker容器,例如: docker run -d –name consul -h node1 -p 8500:8500 -p … progrium/consul -server -advertise ${CONSUL_MASTER} -bootstrap-expect 3 并与其他领事代理人一起主要领事: docker run -d –name consul -h node2 -p 8500:8500 -p … progrium/consul -server -advertise $(docker info –format "{{.Swarm.NodeAddr}}") -join ${CONSUL_MASTER} 然后在Docker Swarm中将我的微服务部署为堆栈: docker stack deploy –compose-file docker-compose.yml my_stek 我在每个微服务中的bootstrap.yml是: spring: application: name: service-name […]

如何将已经运行服务的Docker中的主机系统的端口绑定到Docker容器端口。

如果我的问题似乎是模糊的,我对领事和docker工人是很新的,所以请耐心等待。 我有多个Web服务运行在他们自己的Docker容器中。 现在我想使用consul(由hashicorp)作为服务发现工具。 Consul代理默认在端口8500上运行。 现在我将在所有docker集装箱运行的主机系统上运行Consul(因为它是一个服务发现工具,我不能让每个集装箱都有自己的领事)以及在docker集装箱中运行的docker服务与8500端口进行交互,在主机系统上运行。 最初我假设使用docker端口转发(-p)将工作,但尝试它后,下面的错误是我得到的 docker: Error response from daemon: driver failed programming external connectivity on endpoint practical_lamarr (dd21827e00a3218f9e090986c09f875a82yurd04b76d8a2528f0bccb854e05a3): Error starting userland proxy: listen tcp 0.0.0.0:8500: bind: address already in use. 有人可以告诉我,如何在主机系统端口上运行的领事被绑定到容器端口。

在主机上使用consul DNSparsing容器

目的:获取一个docker容器,使用主机提供的DNS,这是在另一个容器中运行的一个咨询代理,通过traefik反向代理访问可用的服务。 安装主机:Ubuntu 16.04.2 LTS 注册者将新容器注册到consul代理,traefik是负载平衡服务并使其可用的反向代理。 有一个通用的节点应用程序,当你点击“/”path时,它会返回“Hello World” 容器1。 docker run -d –net=host consul agent -dev 容器2。 docker run -d –name=registrator –net=host –volume=/var/run/docker.sock:/tmp/docker.sock gliderlabs/registrator:latest consul://localhost:8500 容器3。 docker run -d –net=host -p 8089:8080 -p 80:80 –name=traefik -v ~/projects/traefix/docker.toml:/etc/traefik/traefik.toml traefik 容器4。 docker run -P -d meep/node-web-app 主机使用networkingpipe理器 主机设置为查询领事TLD的任何查询,它将parsing为领事docker容器 /etc/NetworkManager/dnsmasq.d/10-consul server=/consul/127.0.0.1#8600 我有/etc/NetworkManager/dnsmasq.d/docker-bridge.conf与以下configuration,这意味着它将监听泊坞networking接口上的DNS请求。 listen-address=172.17.0.1 目前在我的主机上,我可以做到以下几点 dig node-web-app.service.consul返回127.0.0.1的IP地址 curl http://node-web-app.service.consul/返回'Hello World' […]