问题标签 [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.

0 投票
0 回答
258 浏览

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 多个)。有更好的办法吗?

0 投票
0 回答
100 浏览

docker - Docker 镜像更新时 Docker Swarm 和自动重新部署

我们使用 Docker Swarm 和 Docker Compose 来部署服务。我们开发了一些服务并将它们 dockerizing 到图像中,我希望在我们的 docker 图像更新时自动重新部署服务。

您如何在此技术堆栈或其他堆栈上进行自动重新部署?

0 投票
1 回答
63 浏览

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字符串,其中包含有关要执行的任务的信息。但是在服务器端我没有收到任何请求。

我不是网络专家,所以我可能会遗漏一些琐碎的事情......(顺便说一句,我首先尝试做同样的事情,但是让服务器在同一主机上运行,​​但没有成功。)

你知道这种设置是否可行吗?我将非常感谢任何提示使这项工作...

提前致谢!

0 投票
1 回答
1381 浏览

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 插件在调用中添加了一个额外的层,它记录了额外的堆栈跟踪,但问题仍然是一样的。

0 投票
0 回答
70 浏览

docker - 在我的 swarm 上按图像重新部署所有 docker 服务

我的工作流程是:

  1. 使用 git 推送代码
  2. 在我的 CI 服务器 ( drone.io )上构建 docker 镜像
  3. 将图像推送到我的私人注册表
  4. 在这里,我需要使用注册表中的这个新图像版本更新所有堆栈中的所有服务

有谁知道如何以正确的方式做到这一点?

我在 docker docs 中看到了滚动更新的官方教程。

但是有一个问题是我不知道服务和堆栈名称。

0 投票
0 回答
48 浏览

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 另一个,我发现网络正在工作。我感到很困惑。

这个问题困扰了我很久,希望有人能帮助我。

0 投票
1 回答
158 浏览

docker - 是否在 traefik 中默认启用 docker swarm 负载均衡器?

我只需要知道这个问题的答案

如果默认情况下禁用它,是否有任何选项可以在所有后端启用它而不在每个服务上添加标签“traefik.backend.loadbalancer.swarm = true”?

0 投票
0 回答
880 浏览

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。谢谢,亚历克斯

0 投票
1 回答
1845 浏览

docker - Traefik LetsEncrypt 错误“此 IP 的注册过多”

我是 Docker 的新手,使用 Traefik 的 LetsEncrypt 有问题。我已经按照这些说明运行了新的 Docker Swarm 集群并运行了 Traefik 。但是当我运行 Traefik 服务时出现错误:

此错误的原因是什么以及如何解决?

更新

这个问题与 Traefik 无关,当我尝试通过 Certbot 获取证书时,我得到了同样的错误。

0 投票
0 回答
601 浏览

docker - 可以在 docker swarm 中创建 glusterfs 卷

我有一个 docker swarm 集群,我正在尝试设置 gluster 以在 swarm 中运行。我在所有工作人员上安装了 gluster,并尝试使用以下命令创建一个 gluster 卷:

但我收到以下错误:

我在网上发现我需要将 privileged 设置为 true 才能设置扩展属性。但我在这里发现swarm 不支持此功能。有解决办法吗?