使用Mesos和Marathon管理Docker集群(2)

$ docker version

Client version: 1.0.0 Client API version: 1.12 Go version (client): go1.2.1 Git commit (client): 63fe64c Server version: 1.0.0 Server API version: 1.12 Go version (server): go1.2.1 Git commit (server): 63fe64c

从Docker Hub拉取一个ubuntu image

$ docker pull libmesos/ubuntu

配置Mesos:

$ curl -fL ~ubuntu14.04%2B1_amd64.deb -o /tmp/mesos.deb $ dpkg -i /tmp/mesos.deb $ mkdir -p /etc/mesos-master $ echo in_memory | sudo dd of=/etc/mesos-master/registry ## Mesos Python egg for use in authoring frameworks $ curl -fL -o /tmp/mesos.egg $ easy_install /tmp/mesos.egg  

下载Marathon:

$ tar xvzf marathon-0.6.0.tgz

Mesos通过Deimos 管理Docker,通过pip安装Deimos:

$ pip install deimos

配置mesos 使用Deimos

$ mkdir -p /etc/mesos-slave $ echo /usr/local/bin/deimos | sudo dd of=/etc/mesos-slave/containerizer_path $ echo external | sudo dd of=/etc/mesos-slave/isolation

启动所有服务 :

$ initctl reload-configuration

$ service docker start

$ service zookeeper start

$ service mesos-master start

$ service mesos-slave start

##### Starting Marathon #####

$ cd marathon-0.6.0

$ ./bin/start --master zk://localhost:2181/mesos --zk_hosts localhost:2181

Marathon 在端口8080已经启动侦听,我们可以通过浏览器访问:

curl localhost:8080/help # gives us some details about the API's

启动容器

我们通过Marathon启动一个容器的REST API提交如下:

curl -X POST -H "Accept: application/json" -H "Content-Type: application/json" \
localhost:8080/v2/apps -d '{
"container": {"image": "docker:///libmesos/ubuntu", "options": ["--privileged"]},
"cpus": 0.5,
"cmd": "sleep 500",
"id": "docker-tester",
"instances": 1,
"mem": 300
}'

我们通过在curl命令后选项"options"提交定制的Docker,我们能检查syslog ,因为mesos缺省日志是放在syslog中。

Jun 27 07:24:58 vagrant-ubuntu-trusty-64 deimos[19227]: deimos.containerizer.docker.launch() exit 0 // docker run --sig-proxy --rm --cidfile /tmp/deimos/mesos/00d459fb-22ca-4af7-9a97-ef8a510905f2/cid -w /tmp/mesos-sandbox -v /tmp/deimos/mesos/00d459fb-22ca-4af7-9a97-ef8a510905f2/fs:/tmp/mesos-sandbox --privileged -p 31498:31498 -c 512 -m 300m -e PORT=31498 -e PORT0=31498 -e PORTS=31498 libmesos/ubuntu sh -c 'sleep 500'

我们也能通过Marathon Rest API检查我们启动任务的状态:

curl -X GET -H "Content-Type: application/json" localhost:8080/v2/apps

下面是Marathon UI获得信息的截图:

更多关于Docker任务的信息可以通过Mesos GUI在Mesos主服务器的端口5050 ,现在我们测试一下任务的伸缩性,比如我们需要加入更多节点服务器,有两种办法,使用GUI或通过发出put请求。

curl -X PUT -H "Content-Type: application/json" localhost:8080/v2/apps/docker-tester \
"container": {"image": "docker:///libmesos/ubuntu", "options": ["--privileged"]},
"cpus": 0.5,
"cmd": "sleep 500",
"id": "docker-tester",
"instances": 2, # increasing the instance count to 2
"mem": 300
}'

Marathon能确保所有docker进程启动运行,如果某个进程崩溃,Marathon会重新启动同样的进程,以确保每个配置运行一个实例,还有其他开源Mesos调度器如Apache Aurora, Airbnb's Chronos. 但是marathon比较直接简单提供好的REST API用来管理容器,虽然Mesos, Marathon 和Docker还很年轻,但是提供了基于Docker的杀手级集群管理组合。

关于Apache Mesos的一些想法 

Ubuntu 15.04下安装Docker 

配置 Docker 镜像下载的本地 mirror 服务 

Docker安装应用(CentOS 6.5_x64)  

在 Docker 中使用 MySQL

在Ubuntu Trusty 14.04 (LTS) (64-bit)安装Docker  

Docker安装应用(CentOS 6.5_x64)  

Ubuntu 14.04安装Docker   

阿里云CentOS 6.5 模板上安装 Docker  

Docker 的详细介绍请点这里
Docker 的下载地址请点这里

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/7bb926ce5ca95fa9ffcdd8c54a55ee8a.html