搭建messo+chronos+ zookeeper集群

这两天在尝试搭建messo+chronos+ zookeeper集群,以下做一下小总结。

 

1在云平台上申请三台Ubuntu 14.04虚拟机,三台主机ip分别为:10.18.5.150,10.18.5.151, 10.18.5.217,分别装好docker1.17。wget -qO- https://get.docker.com/ | sh。

 

2三台主机上均写一个docker-compose.yml,大部分代码都相同。不同之处:zookeeper的MYID要设置成不同的值(1,2,3),否则zookeeper无法选出leader;涉及ip的地方要注意和所在主机ip保持一致。docker-compose.yml的代码贴在附录。

 

注:因为要同时对三台主机进行操作,在不使用ansible此类工具时,希望屏幕上能显示三个界面并能同时写入代码,如很常用的两行命令,sudo docker-compose down (slave)和sudo docker-composeup –d (slave)。因此,使用tmux分屏(如何分屏?tmux ->sudo apt-get install tmux ->ctrl+B,?进入快捷键文档->splitwindow:横分屏或竖分屏ctrl+B,;->man ->set sycn-pane on 屏同时操作),分别ssh+ ip登录三台主机,然后就可以同时操作三台主机了。分屏后,如何进入分屏界面?tmux a如何退出分屏界面,回到本机模式?Ctrl + B , D。

 

3需要在每台主机上修改 /etc/default/docker,使能够从公司镜像仓库拉下镜像。

sudo vim /etc/default/docker

DOCKER_OPTS="--registry-mirror=http://mirror-hub.cloud.***.com--insecure-registry=mirror-hub.cloud. ***.com --insecure-registry=hub.cloud. ***.com"

修改完/etc/default/docker后需要重启docker, sudodocker restart。接着拉起docker-compose,

sudo docker-compose –d。docker-composeconfig 查看是否有报错,否则修改docker-compos

e.yml。sudo docker-composeexec slave bash 进入slave。

 

4在拉起docker-compose后,在浏览器中输入三台主机之一的ip:10.18.5.151,发现刷不出来,sudo docker-compose ps看一下master, slave,zookeeper的状态,发现并不是所有的都up,存在exit,由此得知其中有没拉起来的。看日志找错误sudo docker-compose logs --tail 100 master, sudo docker-compose logs--tail 100 slave, sudo docker-compose logs --tail 100 zookeeper,发现log中出现异常ip(分三台主机的ip),因此sudoiptables -A INPUT -s 10.18.5.92 -j DROP,将这个异常的ip禁掉。这样,集群正常拉起了。

 

5拉起后,在浏览器中输入10.18.5.150:5050,能正常刷出并能看到3个slave;再看chronos是否正常,在浏览器中输入10.18.5.150:8080,发现chronos中不能直接加job。因此查看chronos文档add adocker job,发现需要通过发送post请求,因此在chrome中(chrome应用商场)安装rest插件:postman,post请求填写如下:

10.18.5.150:8080/scheduler/iso8601

Content-Type: application/json

{

 "schedule": "R///PT2M",

 "name": "sleep 100",

 "container": {

   "type": "DOCKER",

   "image": "hub.//……//ubuntu",

   "network": "BRIDGE",

   "volumes": [

     {

       "containerPath": "/var/log/",

       "hostPath": "/logs/",

       "mode": "RW"

     }

    ]

  },

 "cpus": "0.5",

 "mem": "512",

 "uris": [],

 "command": "sleep 100"

}

 

附录

version: '2'

services:

 zookeeper:

   image: hub.cloud.***.com/sysdev/mesos_zookeeper

   network_mode: "host"

   environment:

     - MYID=2

     - SERVERS=10.18.5.150,10.18.5.151,10.18.5.217

   volumes:

     - /etc/localtime:/etc/localtime:ro

 

  master:

   image: hub.cloud. ***.com/sysdev/mesos-master:0.28.0-2.0.16.ubuntu1404

   network_mode: "host"

   command: --no-hostname_lookup --work_dir=/var/lib/mesos/master

   environment:

     - MESOS_ZK=zk://10.18.5.150:2181,10.18.5.151:2181,10.18.5.217:2181/mesos

     - MESOS_QUORUM=2

     - MESOS_ADVERTISE_IP=10.18.5.151

   volumes:

     - /etc/localtime:/etc/localtime:ro

   depends_on:

     - zookeeper

 

 slave:

   image: hub.cloud. ***.com/sysdev/mesos-slave:0.28.0-2.0.16.ubuntu1404

   network_mode: "host"

   command: --no-hostname_lookup --containerizers=docker--work_dir=/var/lib/mesos

   environment:

     - MESOS_MASTER=zk://10.18.5.150:2181,10.18.5.151:2181,10.18.5.217:2181/mesos

     -  MESOS_containerizers=docker

     -  MESOS_ADVERTISE_IP=10.18.5.151

   volumes:

     - /etc/localtime:/etc/localtime:ro

   depends_on:

     - master

 

 cassandra:

   image: cassandra:2.1

   network_mode: "host"

   environment:

     - CASSANDRA_SEEDS=10.18.5.151

     - CASSANDRA_CLUSTER_NAME=cassandra_cluster

     - CASSANDRA_DC=dc

     - CASSANDRA_ENDPOINT_SNITCH=GossipingPropertyFileSnitch

     - CASSANDRA_NUM_TOKENS=256

     - CASSANDRA_LI

   volumes:

     - /etc/localtime:/etc/localtime:ro

         

 chronos:

    image:hub.cloud. ***.com/ctrip_mesoscloud/chronos:latest

   network_mode: "host"

   environment:

     -CHRONOS_MASTER=zk://10.18.5.150:2181,10.18.5.151:2181,10.18.5.217:2181/mesos

    -CHRONOS_ZK_HOSTS=zk://10.18.5.150:2181,10.18.5.151:2181,10.18.5.217:2181/chronos

     - CHRONOS_HOSTNAME=10.18.5.151

     - CHRONOS_CASSANDRA_CONTACT_POINTS=10.18.5.150,10.18.5.151,10.18.5.217

     - CHRONOS_CASSANDRA_KEYSPACE=metrics

     - CHRONOS_CASSANDRA_PORT=9042

     - CHRONOS_HTTP_PORT=8080

     - CHRONOS_JOB_HISTORY_LIMIT=20

   volumes:

     - /etc/localtime:/etc/localtime:ro

   depends_on:

     - slave

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章