搭建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

 

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