Swarm和Mesos集成部署

安装步骤

1.准备环境

准备三台Ubuntu 14.40的环境(物理机和虚拟机都可以),配置DNS或者/etc/hosts文件来保证相互通过机器名可以访问,并且关闭防火墙。

2.在两台计算节点上安装Docker

登陆computer1.wyq.com和computer2.wyq.com执行以下命令安装Docker:

# apt-get update # apt-get install wget# wget -qO- https://get.docker.com/ | sh

默认情况下,Docker只允许通过unix socket来访问Docker Engine,所以根据以上理论的分析,如果Swarm Manager节点master.wyq.com想要访问计算节点上的Docker Engine,我们必须修改Swarm默认配置来开启一个TCP的端口供外部访问:

编辑/etc/default/docker文件,修改DOCKER_OPTS参数如下:

# vim /etc/default/docker DOCKER_OPTS="-H 0.0.0.0:2375 -H unix:///var/run/docker.sock"# service docker restart

3.在master节点安装Golang和godep

由于master.wyq.com上需要安装Swarm Manager服务,Swarm 是由GO语言编写,所以需要在master.wyq.com上安装Golang来支持Swarm Manager的运行。

注: 这里使用Swarm的最新的版本:

/# wgethttps://storage.googleapis.com/golang/go1.5.3.linux-amd64.tar.gz

/# tar -C /usr/local -xzf go1.5.3.linux-amd64.tar.gz

Swarm像大多数GO语言的项目一样,使用godep来管理包的依赖,由于Swarm官方没有提供Swarm的安装包,所以需要我们自己编译,所以在编译之前我们需要安装godep来帮助下载Swarm的依赖。

首先由于godep的一些依赖使用了mercurial, 先安装mercurial

# apt-get install -y mercurial

安装godep:

\# mkdir $HOME/go-tools && export GOPATH=$HOME/go-tools

\# go get github.com/tools/godep

\# ll /root/go-tools/bin/

-rwxr-xr-x 1 root root 10327064 Jan 22 16:47 godep*

在安装完Golang和godep之后,编辑/etc/profile,添加环境变量:

export PATH=$PATH:/usr/local/go/bin:$HOME/go-tools/bin

安装验证:

\# go versiongo version go1.5.3 linux/amd64

\# godep versiongodep v51 (linux/amd64/go1.5.3)

4.在master节点上build Mesos

Mesos官方目前没有提供Mesos的安装包,需要自己下载源码包进行build。这里是以Mesos最新的版本为例进行安装。

登陆master节点master.wyq.com执行以下步骤进行build:

首先需要安装build Mesos 必须的第三方软件包:

# apt-get update# apt-get install -y openjdk-7-jdk# apt-get install -y autoconf libtool# apt-get -y install build-essential python-dev python-boto libcurl4-nss-dev libsasl2-dev maven libapr1-dev libsvn-dev

下载源码包进行编译安装:

# wget http://mirror.bit.edu.cn/apache/mesos/0.26.0/mesos-0.26.0.tar.gz# tar -xzvf mesos-0.26.0.tar.gz# cd mesos-0.26.0# ./bootstrap# mkdir build && cd build# ../configure# make# make install DESTDIR=/opt/apache/mesos# ll /opt/apache/mesos/usr/local/sbin/total 2632drwxr-xr-x 2 root root 4096 Jan 28 16:41 ./

drwxr-xr-x 9 root root 4096 Jan 15 20:02 ../

-rwxr-xr-x 1 root root 406 Jan 28 16:41 mesos-daemon.sh*

-rwxr-xr-x 1 root root 1698505 Jan 28 16:41 mesos-master*

-rwxr-xr-x 1 root root 954864 Jan 28 16:41 mesos-slave*

-rwxr-xr-x 1 root root 888 Jan 28 16:41 mesos-start-cluster.sh*

-rwxr-xr-x 1 root root 1366 Jan 28 16:41 mesos-start-masters.sh*

-rwxr-xr-x 1 root root 1349 Jan 28 16:41 mesos-start-slaves.sh*

-rwxr-xr-x 1 root root 635 Jan 28 16:41 mesos-stop-cluster.sh*

-rwxr-xr-x 1 root root 1200 Jan 28 16:41 mesos-stop-masters.sh*

-rwxr-xr-x 1 root root 1185 Jan 28 16:41 mesos-stop-slaves.sh*

配置:

编辑/opt/apache/mesos/usr/local/sbin/mesos-daemon.sh文件:

•修改prefix变量的值为:/opt/apache/mesos/usr/local

•在prefix的下一行添加行:

export LD_LIBRARY_PATH=${prefix}/lib

export MESOS_LAUNCHER_DIR=${prefix}/libexec/mesos

export MESOS_EXECUTOR_ENVIRONMENT_VARIABLES="{\"PATH\": \"${PATH}\",\"LD_LIBRARY_PATH\": \"${LD_LIBRARY_PATH}\"}"

5.在master节点上编译Swarm

下载源码包:

# mkdir /opt/docker/swarm && cd /opt/docker/swarm# wget https://github.com/docker/swarm/archive/v1.0.1.tar.gz

构建build目录结构:

# mkdir -p $PWD/src/github.com/docker# tar -C src/github.com/docker -xzf v1.0.1.tar.gz# mv src/github.com/docker/swarm-1.0.1 src/github.com/docker/swarm# export GOPATH=$PWD# cd src/github.com/docker/swarm/

编译Swarm binary:

# godep go install .# $PWD/bintotal 22680-rwxr-xr-x 1 root root 23215632 Feb 1 19:25 swarm*

6.在master节点上安装NFS

为了节省安装时间,我们不需要在三台机器上分别build Mesos,可以直接将build的安装目录拷贝到其他两台机器上即可。但是我们需要定期的和社区最新的代码进行同步和重新build,所以为了避免每次重复的拷贝,我们采用共享文件的方式。

登陆master.wyq.com执行如下命令安装配置NFS:

# apt-get install -y nfs-common nfs-kernel-server# vim /etc/exports/opt/apache/mesos *(rw,sync,no_root_squash,no_subtree_check)# /etc/init.d/nfs-kernel-server start# showmount -e localhostExport list for localhost:

/opt/apache/mesos *

7.配置两台计算节点

登陆computer1.wyq.com和computer2.wyq.com,执行如下命令:

在两台计算节点上安装运行Mesos需要的安装包:

# apt-get update# apt-get install -y openjdk-7-jdk# apt-get install -y autoconf libtool# apt-get -y install build-essential python-dev python-boto libcurl4-nss-dev libsasl2-dev maven libapr1-dev libsvn-dev

Mount Mesos安装目录:

# mkdir /opt/apache/mesos

# mount -t nfs -o nolock maser.wyq.com:/opt/apache/mesos /opt/apache/mesos

# ll /opt/apache/mesos/usr/local/sbin/

total 2632

drwxr-xr-x 2 root root 4096 Jan 28 16:41 ./

drwxr-xr-x 9 root root 4096 Jan 15 20:02 ../

-rwxr-xr-x 1 root root 406 Jan 28 16:41 mesos-daemon.sh*-rwxr-xr-x 1 root root 1698505 Jan 28 16:41 mesos-master*-rwxr-xr-x 1 root root 954864 Jan 28 16:41 mesos-slave*-rwxr-xr-x 1 root root 888 Jan 28 16:41 mesos-start-cluster.sh*-rwxr-xr-x 1 root root 1366 Jan 28 16:41 mesos-start-masters.sh*-rwxr-xr-x 1 root root 1349 Jan 28 16:41 mesos-start-slaves.sh*-rwxr-xr-x 1 root root 635 Jan 28 16:41 mesos-stop-cluster.sh*-rwxr-xr-x 1 root root 1200 Jan 28 16:41 mesos-stop-masters.sh*-rwxr-xr-x 1 root root 1185 Jan 28 16:41 mesos-stop-slaves.sh*

8.启动服务

登陆master.wyq.com启动Mesos master和Swarm manager:

# cd /opt/apache/mesos/usr/local/sbin/# mkdir /opt/mesoslog# ./mesos-daemon.sh mesos-master --work_dir=/var/lib/mesos --log_dir=/opt/mesoslog# cd /opt/docker/swarm/bin# ./swarm manage -c mesos-experimental --cluster-opt mesos.address=9.111.255.10 --cluster-opt mesos.port=3375 gradyhost1.eng.platformlab.ibm.com:5050

登陆computer1.wyq.com和computer2.wyq.com启动Mesos agent:

# cd /opt/apache/mesos/usr/local/sbin/# mkdir /opt/mesoslog# ./mesos-daemon.sh mesos-slave --master=gradyhost1.eng.platformlab.ibm.com:5050 --log_dir=/opt/mesoslog --containerizers=mesos,docker

9.验证:

打开Mesos portal:http://master.wyq.com:5050查看Slaves,Frameworks和offers的信息。

在任意一个计算节点上查看docker info:

# docker -H manager.wyq.com:2375 infoContainers: 0Images: 1Role: primaryStrategy: spreadFilters: health, port, dependency, affinity, constraintOffers: 2

Offer: 98085d1e-4516-4c4c-b6a3-4f8cde32c980-O19

└ cpus: 2

└ mem: 2.851 GiB

└ disk: 29.79 GiB

└ ports: 31000-32000

Offer: 98085d1e-4516-4c4c-b6a3-4f8cde32c980-O20

└ cpus: 2

└ mem: 2.851 GiB

└ disk: 29.79 GiB

└ ports: 31000-32000CPUs: 4Total Memory: 5.701 GiBName: manager.wyq.com

执行docker run, 创建hello-world container:

# docker -H manager.wyq.com:2375 run --cpu-shares 1 hello-worldHello from Docker.

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,530评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 86,403评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,120评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,770评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,758评论 5 367
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,649评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,021评论 3 398
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,675评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,931评论 1 299
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,659评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,751评论 1 330
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,410评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,004评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,969评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,203评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,042评论 2 350
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,493评论 2 343

推荐阅读更多精彩内容