首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Apache Mesos,MESOS-DNS,马拉松和码头

Apache Mesos,MESOS-DNS,马拉松和码头
EN

Stack Overflow用户
提问于 2016-02-29 06:43:49
回答 1查看 468关注 0票数 2

在我的环境中,在独立模式下运行mesos-从、mesos-主马拉松和mesos-dns。我将mysql应用程序部署到马拉松上,作为码头容器运行。

MySql应用程序配置如下。

代码语言:javascript
复制
{
    "id": "mysql",
    "cpus": 0.5,
    "mem": 512,
    "instances": 1,
    "container": {
        "type": "DOCKER",
        "docker": {
            "image": "mysql:5.6.27",
            "network": "BRIDGE",            
              "portMappings": [
                {
                  "containerPort": 3306,
                  "hostPort": 32000,
                  "protocol": "tcp"
                }
                ]
        }
    },
    "constraints": [
            [
              "hostname",
              "UNIQUE"
            ]],
    "env": {
        "MYSQL_ROOT_PASSWORD": "password"   
    },
      "minimumHealthCapacity" :0,
      "maximumOverCapacity" : 0.0
}

然后我部署了名为mysql client的应用程序。Mysql客户端应用程序需要连接到mysql应用程序。

mysql应用程序配置如下。

代码语言:javascript
复制
{
    "id": "mysqlclient",
    "cpus": 0.3,
    "mem": 512.0,
    "cmd": "/scripts/create_mysql_dbs.sh",
    "instances": 1,
    "container": {
        "type": "DOCKER",
        "docker": {
            "image": "mysqlclient:latest",
            "network": "BRIDGE",            
            "portMappings": [{
                "containerPort": 3306,
                "hostPort": 0,
                "protocol": "tcp"
            }]
        }
    },
    "env": {
        "MYSQL_ENV_MYSQL_ROOT_PASSWORD": "password",
        "MYSQL_PORT_3306_TCP_ADDR": "mysql.marathon.slave.mesos.",
        "MYSQL_PORT_3306_TCP_PORT": "32000"     
    },
      "minimumHealthCapacity" :0,
      "maximumOverCapacity" : 0.0
}

我的美索-dns config.json。如下所示

代码语言:javascript
复制
{
  "zk": "zk://127.0.0.1:2181/mesos",
  "masters": ["127.0.0.1:5050"],
  "refreshSeconds": 60,
  "ttl": 60,
  "domain": "mesos",
  "port": 53,
  "resolvers": ["127.0.0.1"],
  "timeout": 5,
  "httpon": true,
  "dnson": true,
  "httpport": 8123,
  "externalon": true,
  "listener": "127.0.0.1",
  "SOAMname": "ns1.mesos",
  "SOARname": "root.ns1.mesos",
  "SOARefresh": 60,
  "SOARetry":   600,
  "SOAExpire":  86400,
  "SOAMinttl": 60,
  "IPSources": ["mesos", "host"]
}
I can ping with service name mysql.marathon.slave.mesos. from host machine. But when I try to ping from mysql docker container I get host unreachable. Why docker container cannot resolve hsot name?

我尝试将dns参数设置为应用程序。但这不管用。

编辑

我可以平mysql.marathon.slave.mesos。主人/奴隶的主人。但我不能从mysqlclient码头集装箱中跳转。上面写着遥不可及。我怎么才能解决这个问题?

EN

回答 1

Stack Overflow用户

发布于 2016-02-29 09:07:41

不确定您的实际问题是什么,我想您想知道如何将一个Mesos服务名称解析为一个实际的端点,即MySQL客户机。

如果是这样的话,您可以使用我的细观解析器 bash脚本从Mesos获取端点:

代码语言:javascript
复制
mesosdns-resolver.sh -sn mysql.marathon.mesos -s <IP_ADDRESS_OF_MESOS_DNS_SERVER>

您可以在您的create_mysql_dbs.sh脚本(不管它做什么)中使用它来获得实际的IP地址和运行mysql应用程序的端口。

您可以传入一个环境变量,如

代码语言:javascript
复制
"MYSQL_ENV_SERVICE_NAME": "mysql.marathon.mesos"

然后像这样在图像/脚本中使用它

代码语言:javascript
复制
mesosdns-resolver.sh -sn $MYSQL_ENV_SERVICE_NAME -s <IP_ADDRESS_OF_MESOS_DNS_SERVER>

另外,请注意,马拉松并不一定是运行一次性操作的正确工具(我假设您使用第二个应用程序初始化数据库)。对此,时间记录是一个更好的选择。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35693417

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档