AWS opsworks docker 服务发现

Posted

技术标签:

【中文标题】AWS opsworks docker 服务发现【英文标题】:AWS opsworks docker service discovery 【发布时间】:2017-03-07 00:08:18 【问题描述】:

AWS opswork 可以将 docker 部署到集群,ECS(ec2 容器服务)也可以。 EC2 中的服务发现可以使用 weave.net 或 consul 等来实现...当我们使用 opsworks 进行 docker 部署时,关于如何添加动态服务发现的任何建议,所以在我的 docker 容器中,我可以轻松获得终点部署的其他 Web 服务?

【问题讨论】:

【参考方案1】:

在配方内部,您可以使用搜索,它允许您使用search(:node) 在当前堆栈中搜索 opsworks 实例。此方法返回厨师节点数组:

> search(:node)
=> [#<Chef::Node:0x000000070a44c8
  @attributes=
   "aws_opsworks_instance_id"=>"----",
    "hostname"=>"--",
    "os"=>"linux",
    "platform"=>"ubuntu",
    "platform_family"=>"debian",
    "ipaddress"=>"172.31.85.144",
    "fqdn"=>"---.localdomain",
    "domain"=>"localdomain",
    "network"=>"interfaces"=>"aws_opsworks_virtual"=>"addresses"=>"172.31.85.144"=>"family"=>"inet",
    "kernel"=>"machine"=>"x86_64",
    "cloud"=>
     "public_ips"=>["0.0.0.0"],
      "private_ips"=>["172.31.85.144"],
 ...

您可以通过

获取 Opsworks 堆栈中的所有 IP
> search(:node).map(&:ipaddress)
=> ["172.31.85.144", "172.31.85.31", "172.31.85.16"]

然后你可以通过环境变量将这个列表传递给 docker 资源。

【讨论】:

以上是关于AWS opsworks docker 服务发现的主要内容,如果未能解决你的问题,请参考以下文章

AWS Opsworks Java 应用程序服务器 403 错误

Elasticsearch 使用 AWS OpsWorks 配置堆大小

AWS Autoscaling 和 AWS Opsworks 有啥区别

AWS OpsWorks新增Amazon RDS支持

AWS Opsworks:通过 https 进行负载平衡

通过 AWS OpsWorks Nginx/Unicorn 服务器上的直接 IP 地址禁用 Web 访问