我正在尝试在microsofts新的azure容器服务上部署一个简单的wordpress示例(wordpress&mysql db),mesos&marathon作为底层编排平台。我已经在google(kubernetes)和amazon(ecs)提供的服务上运行了这个程序,并认为在acs上这也是一个简单的任务。
我已经部署了我的mesos集群,一切都正常运行。部署mysql容器也不是问题,但是当我部署wordpress容器时,我无法连接到mysql容器。我想这可能是因为mysql运行在不同的mesos代理上?
到目前为止我尝试的是:
使用mesos dns获得mysql容器主机(目前我并不关心获得哪个容器)。我将wordpress\u db\u主机环境var设置为 mysql.marathon.mesos
并按照这里的建议指定mysql容器的主机。
我为代理负载平衡器创建了一个新规则,并在azure中为端口3306创建了一个探测器,这很管用,但要实现这么简单的事情似乎是一个非常复杂的方法。在kubernetes和ecs中,可以使用容器名作为主机名来简单地定义链接。
出现的另一个问题是,在端口Map部分和可选设置部分中设置端口有什么区别((见附截图)
更新:如果我用ssh连接到主节点,而不是mysql.marathon.mesos,那么我怎么可能无法从其他容器(在我的例子中是wordpress容器)中获得连接。
1条答案
按热度按时间mm5n2pyu1#
所以这里基本上有两个问题:一个是关于马拉松上的有状态服务,另一个是关于港口管理。首先让我澄清一下,两者都不必与azure或acs有任何关系,它们都与马拉松有关。
问题1:有状态服务
根据您的需求(开发/测试或prod),您可以使用marathon的持久卷功能(简单但没有数据的自动故障转移/ha),也可以使用我在这里介绍的健壮解决方案(基本上是装载文件共享)。
问题2:端口
您在marathonui屏幕截图中看到的端口Map仅在启动docker映像并希望显式地将容器端口Map到中的主机端口时才相关
BRIDGE
模式,详见文档。