iT邦幫忙

2017 iT 邦幫忙鐵人賽
DAY 28
0
Cloud

用30天來建構和操作Apache Mesos系列 第 28

Day28:在Mesos上執行Docker Container(四)

  • 分享至 

  • xImage
  •  

昨天已經把建構好的Docker image push到DockerHub了,今天就來使用Mesos來執行Docker Container。

在執行啟動Mesos的設定有點調整,指令如下:

啟動Mesos Master,指令如下

# mesos-master --work_dir=/tmp/mesos/master

啟動Mesos Slave,指令如下

# GOLOG_v=1 mesos-agent --master=192.168.1.223:5050 --isolation=docker/runtime,filesystem/linux --work_dir=/tmp/mesos/agent --image_providers=docker --executor_environment_variables="{}" --containerizers=docker,mesos

今天就使用marathon framework來啟動之前建構好的mysql docker image:
執行步驟如下:

1.啟動marathon framework:

在執行marathon framework之前需要先開啟zookeeper,然後JDK需要使用1.8以上的版本,啟動marathon指令如下:

# ./start --master 192.168.1.223:5050 --mesos_role marathon --mesos_authentication_principal ""

2.撰寫使用marathon framework啟動mysql docker container的設定檔

vi mysql.json
{
  "id": "/mysql",
  "cpus": 1,
  "mem": 512,
  "disk": 0,
  "instances": 1,
  "container": {
    "type": "DOCKER",
    "docker": {
      "image": "jackyoh/mysql",
      "network": "BRIDGE",
      "portMappings": [
        {
          "containerPort": 3306,
          "hostPort": 0,
          "servicePort": 10000,
          "protocol": "tcp"
        }
      ],
      "forcePullImage": false
    }
  }
}

"image": "jackyoh/mysql",就會從DockerHub pull下來

3.使用curl透過restful把執行設定送到marathon執行,指令如下

#curl -X POST -H "Content-Type: application/json" http://192.168.1.223:8080/v2/apps -d @mysql.json

執行完上面的指令之後就可以到Mesos WebUI看到執行結果:

http://ithelp.ithome.com.tw/upload/images/20161228/201034568KJWMwnw8P.png

marathon執行畫面如下:

http://ithelp.ithome.com.tw/upload/images/20161228/20103456CsimiFurID.png

使用mysql command測試連線mysq,但測試之前需要先看port是多少如下的畫面:

http://ithelp.ithome.com.tw/upload/images/20161228/20103456Whzg4zWq9a.png

所以連線mysql的port 需要用31964

使用mysql command測試連線mysq,指令如下:

# mysql -h 192.168.1.223 -u root -p --port 31964

http://ithelp.ithome.com.tw/upload/images/20161228/20103456s15JsCvrJb.png

今天已經介紹了如何使用Mesos來執行mysql的docker container,其實像這種的執行方式還有許多議題可以研究,例如儲存資料的部份,像以上的做法如果把container砍掉之後資料就會不見,需要有一個永久層來儲存資料的部份,所以在Mesos上執行stateful applications需要注意資料的部份,一不小心資料就會不見了。

參考資料:

https://mesosphere.github.io/marathon/docs/external-volumes.html


上一篇
Day27:在Mesos上執行Docker Container(三)
下一篇
Day29:實作一個自訂的Mesos Framework(一)
系列文
用30天來建構和操作Apache Mesos30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言