您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

将Docker容器与Mesos / Marathon链接

将Docker容器与Mesos / Marathon链接

您正在未知领域中徘徊!?

这里有多种方法。虽然它们都不是完美的,但是由于编排挂钩,情况会在将来的Docker版本中得到改善。

一种方法是使用良好的旧服务发现和注册。IE,当服务启动时,它将找出其公共可用地址,并在Zookeeper,Etcd甚至Redis中进行注册。由于服务找出其公共可用地址并非易事(除非您采用某些约定,例如,始终映射端口X:X而不是让Docker分配随机端口),所以您可能希望从外部进行注册。这意味着您的业务流程层(在这种情况下为Mesos)将启动容器,然后找出主机和端口,并将其放入服务发现系统中。我对Marathon并不是很熟悉,但是您应该可以为此注册一个钩子。然后,其他容器将仅在服务发现注册表中查找普通地址和简单地址。

您还可以查看Skydock,它会自动Skydns注册容器的DNS名称。但是,它目前是单主机,因此,如果您喜欢这个主意,则必须以某种方式扩展它以支持多个主机,甚至可能支持SRV记录。

另一种方法是使用“众所周知的入口点”。这实际上是服务发现的简化案例。这意味着您将确保您的服务将始终在预设的主机和端口上运行,以便您可以静态使用这些地址。当然,这是不好的(因为当您出于测试/分阶段目的而要重现环境时,这会使您的生活更加艰难),但是,如果您对服务发现一无所知,那可能是一个开始。

您还可以使用Pipework创建一个(或多个)跨多个主机的虚拟网络,并将容器绑定在一起。通过管道,您可以手动分配IP地址,也可以通过DHCP自动分配IP地址。虽然不建议使用此方法,但是如果您还想将容器插入现有的网络体系结构(例如VLAN …),则此方法非常适合。

无论您决定使用哪种解决方案,我都强烈建议“假装”您正在使用链接。即,不是硬编码您的应用程序配置以进行连接(随机示例)my-postgresql- db:5432,而是使用环境变量DB_PORT_5432_TCP_ADDRDB_PORT_5432_TCP_PORT(好像是链接),并在启动容器时设置这些变量。这样,如果您将容器“折叠”到更简单的环境中而无需发现服务等,则可以轻松地回退链接而无需付出任何努力。

其他 2022/1/1 18:13:59 有527人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶