Board logo

标题: 在 RHEL 7.1 little endian 上设置 Mesos/Marathon 集群-2 [打印本页]

作者: look_w    时间: 2017-12-19 20:15     标题: 在 RHEL 7.1 little endian 上设置 Mesos/Marathon 集群-2

安装和设置 Mesos 从属节点确保所有 Mesos 从属节点都配置了 Docker 设置。有关在 RHEL LE 上安装和配置 Docker 的更多信息,请参阅 。
Marathon UI 可在 http://mesos_master_ip:8080 网站上访问。
例如,如果 mesos-master 的 IP 地址为 192.168.122.31,那么可以在 http://192.168.122.31:8080 网站上访问 Marathon UI 链接。
通过 Marathon 部署应用程序源代码可在  网站上找到。
源代码包含用于在 Intel 和 Power (ppc64le) 系统上构建 MySQL Docker 镜像的 Docker 文件和相关设置脚本。
在以下示例中,192.168.122.48 是运行 Mesos 服务器和 Marathon 的系统的 IP 地址。
您可以使用 Marathon UI 或直接使用 REST API 部署应用程序。例如,以下命令使用了 Marathon 的 REST API 部署应用程序::
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
curl -X POST http://192.168.122.48:8080/v2/apps -d @mysqlcontainer.json -H "Content-type: application/json"
#cat mysqlcontainer.json
{
  "id": "mysql",
  "cpus": 0.5,
  "mem": 64.0,
  "instances": 1,
  "container": {
    "type": "DOCKER",
    "docker": {
      "image": "ppc64le/mysql",
      "network": "BRIDGE",
      "portMappings": [
        { "containerPort": 3306, "hostPort": 0, "servicePort": 0, "protocol": "tcp" }
      ]
    }
  },
  "env": {
     "MYSQL_ROOT_PASSWORD" : "password",
     "MYSQL_USER" : "test",
     "MYSQL_PASSWORD" : "test",
     "MYSQL_DB" : "BucketList"
   }
}




非零的 hostPort 会导致分配一个随机端口。也可以显式指定 hostPort 值。确保 hostPort 中指定的端口包含在一些资源信息中。例如,如果除了默认端口范围 31000 到 32000 外,还需要使用端口范围 7000 到 8000,可使用以下选项:
–resources="ports(*):[7000-8000, 31000-32000]"
连接到使用 Marathon 框架部署的服务本节将介绍如何使用 MySQL 服务来连接和使用通过 Marathon 部署的服务,并在一个示例 Web 应用程序中使用它。
源代码可在  网站上获得。示例代码拥有针对 Intel 和 PowerPC LE (ppc64le) 架构的 Docker 文件。
使用 Docker 链接连接到一个服务
部署服务后,必须发现和连接该服务,也就是说,必须从一个应用程序链接到该服务。一个服务可依赖于另一个服务。因此,链接容器很重要。
在使用 Marathon 链接服务时,请注意以下几点:
使用 constraints 参数将链接的容器部署在同一个节点上,如下面的示例所示:
1
2
3
4
5
6
$ curl -X POST -H "Content-type: application/json" localhost:8080/v2/apps -d '{
   "id": "sleep-cluster",
   "cmd": "sleep 60",
   "instances": 3,
   "constraints": [["hostname", "CLUSTER", "a.specific.node.com"]]
}'




要使用上述代码,可以使用 hostname 参数启动 mesos-slave,如下面的示例所示:
1
# mesos-slave --master=zk://192.168.122.48:2181/mesos --containerizers=docker,mesos --executor_registration_timeout=10mins --ip=192.168.122.253 --hostname=Ubuntu




使用 Marathon API 启动链接的容器
该设置是在一个基于 OpenPOWER(PowerPC 架构)的环境中进行的。但是,您可以为基于 Intel 的环境使用相同的指令。
将目标容器名称指定为 link 键的值。此外,使用 constraints 参数确保新容器部署在运行目标容器的同一个主机上。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
curl -X POST http://192.168.122.48:8080/v2/apps -d @flaskcontainer.json -H "Content-type: application/json"
# cat flaskcontainer.json
{
  "id": "flaskappcontainer",
  "cpus": 0.5,
  "mem": 64.0,
  "instances": 1,
  "container": {
    "type": "DOCKER",
    "docker": {
      "image": "ppc64le/flaskapp",
      "network": "BRIDGE",
      "portMappings": [
        { "containerPort": 80, "hostPort": 0, "servicePort": 0, "protocol": "tcp" }
      ],
      "parameters": [
                { "key": "link", "value": "mesos-b81f9a21-3133-49de-acf6-988226eb6874-S18.5d3dcaa7-05c6-4a5b-af68-dba32b7d1835"}
            ]
    }
  },
  "constraints": [
                [ "hostname","CLUSTER","ubuntu" ]
              ]
}






欢迎光临 电子技术论坛_中国专业的电子工程师学习交流社区-中电网技术论坛 (http://bbs.eccn.com/) Powered by Discuz! 7.0.0