我尝试使用Mesos& amp;在微软新的Azure Container Service上部署一个简单的WordPress示例(WordPress和MySQL数据库)。 Marathon作为底层编排平台。我已经在谷歌(Kubernetes)和亚马逊(ECS)提供的服务上运行了这一点,并认为这对ACS来说也是一件容易的事。
我部署了Mesos集群,一切都正常运行。部署MySQL容器也不是问题,但是当我部署WordPress容器时,我无法连接到我的MySQL容器。我想这可能是因为MySQL在不同的Mesos代理上运行?
到目前为止我尝试了什么:
使用Mesos DNS来获取MySQL容器主机(现在我并不关心我得到哪个容器)。我将WORDPRESS_DB_HOST环境var设置为mysql.marathon.mesos
,并按照建议here指定MySQL容器的主机。
我为代理负载均衡器创建了一个新规则,并为Azure本身的端口3306创建了一个探针,但这似乎是一种非常复杂的方式来实现这么简单的事情。在Kubernetes和ECS中,可以使用容器名称作为主机名来简单地定义链接。
出现了另一个问题,在Port Mappings Section和Optional Settings部分设置Port之间,他们在Marathon中有什么不同。 (见附件截图)
更新:如果我使用mysql.marathon.mesos进入主节点而不是我可以挖掘,那么我怎么能从其他容器中获得连接呢?在我的情况下wordpress容器)。
答案 0 :(得分:0)
所以这里基本上有两个问题:一个是关于Marathon的有状态服务,另一个是关于端口管理。首先让我澄清一下,首先不要对Azure或ACS做任何事情,它们都与马拉松相关。
Q1 :有状态服务
根据您的要求(开发/测试或产品),您可以使用Marathon的persistent volumes功能(简单但没有自动故障转移/ HA用于数据),或者,因为您使用的是Azure,所以我可以使用强大的解决方案显示here(基本上安装了文件共享)。
Q2 :端口
您在Marathon UI屏幕截图中看到的端口映射仅在您启动Docker镜像并希望在BRIDGE
模式下将容器端口明确映射到主机端口时才相关,有关详细信息,请参阅docs