问题标签 [swarm]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
mysql - docker swarm 使用 ingress 作为默认 IP,而不是默认覆盖网络
当我使用 docker 时,将 docker-compose.yml 与我的所有堆栈一起部署。它创建一个默认的覆盖网络。
ac4ole1w87ws 入口覆盖群 vcl2s9otd2qx stack_default 覆盖群
问题是 mysql galera 集群的容器使用入口 10.255.0.* 作为主 IP 地址,而不是 stack_default 中的 10.0.0.*。
所以wsrep_cluster_address看起来很乱,我不知道为什么有些来自stack_default,有些来自入口。10.255.0.3,10.0.0.5,10.0.0.6
有时 10.0.0.5 无法与 10.255.0.3 通信(不同的网络)
我知道我可以为每个容器设置一个网络,但是设置太多(我的堆栈有 20 多个)。有更好的办法吗?
docker - Docker 镜像更新时 Docker Swarm 和自动重新部署
我们使用 Docker Swarm 和 Docker Compose 来部署服务。我们开发了一些服务并将它们 dockerizing 到图像中,我希望在我们的 docker 图像更新时自动重新部署服务。
您如何在此技术堆栈或其他堆栈上进行自动重新部署?
docker - Docker:连接到服务器的 Swarm 工作人员
我有一堆集群容器(现在在一个主机中,但可能在多主机系统中,符合多节点集群)。该系统由一个数据服务器和一组自主工作人员组成,这些工作人员处理服务器接收到的位并提取结果。输入数据检索和输出数据摄取是通过 HTTP GET/POST 完成的。服务器端(数据提供和结果接收)工作,当针对在任何主机上运行的工作人员进行测试时,没有 Docker,它运行没有问题。但我需要将这些工人放在一个 Docker 群中。
我无法实现的是不同 swarm worker 和外部服务器之间的通信。我的服务器在 IP 为 10.69.180.30 的主机上运行,端口为 8080。
在几个论坛中挖掘之后,我尝试使用--subnet 10.69.180.0/24 创建一个覆盖网络,然后在另一台主机上启动连接到该网络的工作人员服务。但没办法。
在这个简单的例子中,我不调用worker,而只是调用curl
服务器和get_task
节点的地址。它应该返回一个JSON
字符串,其中包含有关要执行的任务的信息。但是在服务器端我没有收到任何请求。
我不是网络专家,所以我可能会遗漏一些琐碎的事情......(顺便说一句,我首先尝试做同样的事情,但是让服务器在同一主机上运行,但没有成功。)
你知道这种设置是否可行吗?我将非常感谢任何提示使这项工作...
提前致谢!
deployment - Wildfly-Swarm 和通过资源适配器连接到外部 activemq:WFLYCTL0412
所以我已经花了相当多的时间在这上面,但现在已经到了我完全不知所措的地步......
要求:我正在尝试将基于 wildfly 10.1.0 的消息驱动 bean 连接到外部 activemq 5.15.0 服务器(“旧”activemq,而不是 artemis mq!)。为此,我正在部署资源适配器并调整配置。在 wildfly 的标准部署中,这可以正常工作。我正在使用以下脚本来设置容器:
使用此配置,我可以使用独立完整配置启动容器(也可以获取与 JMS 相关的类),并且它可以按预期工作。
但是,如果我尝试使用 wildfly swarm 实现相同的目标,则无法部署相同的测试 mdb.jar,在容器启动期间我会收到以下异常:
看来,资源适配器不可用,但它在我部署的管理控制台中也是可见的。
要设置 swarm 容器,我使用以下 project-defaults.xml:
pom 的相关部分如下所示:
测试 MDB 很简单:
因此,我正在寻找一个提示,为什么 MDB 无法访问资源适配器,即使它已部署、可见并使用适当的名称。我希望,在这一点上它很简单,但我找不到它。
非常感谢!
PS:外部activemq服务器是必需的。使用 JMS 网桥可能会起作用,但有一些不可接受的缺点(由于额外的“跳”,jms-reply-to 目的地不会在 jms 网桥上工作而影响性能)。
编辑 1
Arg,发布后我在我的 pom 中发现了至少一个问题:我使用了不匹配的 swarm 插件版本:swarm fractions 是 2017.10.0,但插件是 2017.4.0。纠正这一点会稍微改变错误症状:
所以下面似乎有一个类加载问题。将对此进行调查,但仍会很高兴获得进一步的意见
编辑 2
上面的堆栈跟踪似乎无关紧要:集群化应用程序的启动方式实际上有所不同:
- 从 java -jar something.app 开始:没有堆栈跟踪
- 从 mv nwildfly-swarm:run 开始:上面的堆栈跟踪。
但是,基本原因是相同的(未找到依赖项)。我解释说 maven 插件在调用中添加了一个额外的层,它记录了额外的堆栈跟踪,但问题仍然是一样的。
docker - 服务无法在 docker 17.06 中以 swarm 模式随机工作
运行服务命令:
服务启动后,我用 测试了服务curl 192.168.2.48:8080/info
,50% 的请求不起作用。docker exec -it xxx bash
使用、 usedcurl 10.0.1.6:8080/info
和输入容器curl 10.0.1.7:8080/info
,发现所有结果都正常。但是如果我多次重新启动上述服务,有时,所有请求都可以完全正常工作。
网络检查
都成功了。
结果docker info
:
怀疑是网络负载均衡或者vip导致的问题,某个节点无法到达,所以服务被挂了。但是,如果我在容器中 ping 另一个,我发现网络正在工作。我感到很困惑。
这个问题困扰了我很久,希望有人能帮助我。
docker - 是否在 traefik 中默认启用 docker swarm 负载均衡器?
我只需要知道这个问题的答案
如果默认情况下禁用它,是否有任何选项可以在所有后端启用它而不在每个服务上添加标签“traefik.backend.loadbalancer.swarm = true”?
docker - docker swarm 中容器的静态 IP
我是 docker 新手,我有一个简单的问题。我有 3 台主机运行具有以下 ip 的 docker swarm:
192.168.0.52
192.168.0.53
192.168.0.54
此外,我还创建了一个带有已发布的 http 服务port:8080
。正如预期的那样,服务它在所有主机 ip 上都可用(例如:)192.168.0.52:8080
。是否可以为服务分配静态 IP 地址(例如192.168.0.254
)并能够从本地网络中的任何计算机访问它?( 192.168.0.0/24
)。这样我的服务应该具有高可用性;如果提供服务的主机出现故障,它应该在另一台主机上启动,但保持相同的 IP。谢谢,亚历克斯
docker - Traefik LetsEncrypt 错误“此 IP 的注册过多”
我是 Docker 的新手,使用 Traefik 的 LetsEncrypt 有问题。我已经按照这些说明运行了新的 Docker Swarm 集群并运行了 Traefik 。但是当我运行 Traefik 服务时出现错误:
此错误的原因是什么以及如何解决?
更新
这个问题与 Traefik 无关,当我尝试通过 Certbot 获取证书时,我得到了同样的错误。