docker项目一集群

  1. 环境准备

[root@centos7 ~]# cat /etc/redhat-release

CentOS Linux release 7.2.1511 (Core)

[root@centos7 ~]# uname -r

3.10.0-327.el7.x86_64

[root@master dockersoft]# vi /etc/hosts

192.168.0.107 master

192.168.0.108 slave

 

2、安装mesos

[root@master ~]# wget http://www.apache.org/dist/mesos/0.28.2/mesos-0.28.2.tar.gz

[root@master ~]# tar xf mesos-0.28.2.tar.gz

[root@master ~]# wget http://repos.fedorapeople.org/repos/dchen/apache-maven/epel-apache-maven.repo -O /etc/yum.repos.d/epel-apache-maven.repo

[root@master ~]# yum install -y epel-release

[root@master ~]# bash -c 'cat > /etc/yum.repos.d/wandisco-svn.repo <<EOF

> [WANdiscoSVN]

> name=WANdisco SVN Repo 1.9

> enabled=1

> baseurl=http://opensource.wandisco.com/centos/7/svn-1.9/RPMS/$basearch/

> gpgcheck=1

> gpgkey=http://opensource.wandisco.com/RPM-GPG-KEY-WANdisco

> EOF'

[root@master ~]# yum groupinstall -y "Development Tools"

[root@master ~]# yum install -y apache-maven python-devel java-1.8.0-openjdk-devel zlib-devel libcurl-devel openssl-devel cyrus-sasl-devel cyrus-sasl-md5 apr-devel subversion-devel apr-util-devel

[root@master ~]# cd mesos-0.28.2/

[root@master mesos-0.28.2]# ./configure

[root@master mesos-0.28.2]# make

... 我只想说一个小时过去了

... 两个小时过去了

....一觉过去了

[root@master mesos-0.28.2]# make install

[root@master mesos-0.28.2]# ln -sf /root/mesos-0.28.2/bin/mesos-master.sh /usr/sbin/mesos-master

[root@master mesos-0.28.2]#mesos-master --work_dir=/home/q/mesos/data --log_dir=/home/q/mesos/logs --no-hostname_lookup --ip=0.0.0.0

简配参数:

--work_dir:运行期数据存放路径,包含了 sandbox,slave meta 信息等,建议修改;

--log_dir:mesos 日志存放路径,建议修改;

--[no-]hostname_lookup:是否从 DNS 获取主机名,本机例子中关闭了此配置,直接显

示 IP;

--ip:mesos 进程绑定的 IP。

 

安装成功

 

安装mesos启动从服务器

[root@slave ~]# ln -sf /root/mesos-0.28.2/bin/mesos-slave.sh /usr/bin/mesos-slave

[root@slave ~]# mesos-slave --containerizers="mesos,docker" --work_dir=/home/q/mesos/data --log_dir=/home/q/mesos/logs --master=192.168.0.105:5050 --no-hostname_lookup --ip=0.0.0.0

 

I0813 07:16:24.437655  3385 slave.cpp:796] New master detected at [email protected]:5050

I0813 07:16:24.445626  3386 status_update_manager.cpp:174] Pausing sending status updates

I0813 07:16:24.451594  3385 slave.cpp:821] No credentials provided. Attempting to register without authentication

I0813 07:16:24.452718  3385 slave.cpp:832] Detecting new master

I0813 07:16:25.293764  3385 slave.cpp:971] Registered with master [email protected]:5050; given slave ID 96d26ff6-ff69-4ac3-9931-433fddd8f98b-S0

 

去master服务器上验证节点是否连接上

看到activated为1

id和注册id一致

 

以上部分表示注册服务试验成功

 

  1. mesos-master 配置 zookeeper

(特别注意:每次启动失败后需要删除data与log目录,否则启动会一直失败,个人认为可能是因为pid已经绑定的原因)

[root@master ~]# tar xf zookeeper-3.4.6.tar.gz -C /home/q

[root@master ~]# tar xf zookeeper-3.4.6.tar.gz -C /home/q

[root@master ~]# cd /home/q/zookeeper-3.4.6/

[root@master zookeeper-3.4.6]# mv conf/zoo_sample.cfg conf/zoo.cfg

[root@master zookeeper-3.4.6]# ./bin/zkServer.sh start conf/zoo.cfg

JMX enabled by default

Using config: conf/zoo.cfg

Starting zookeeper ... STARTED

 

[root@master zookeeper-3.4.6]# ./bin/zkServer.sh status conf/zoo.cfg

JMX enabled by default

Using config: conf/zoo.cfg

Mode: standalone

验证

[root@master zookeeper-3.4.6]# ./bin/zkCli.sh

Connecting to localhost:2181

WATCHER::

 

WatchedEvent state:SyncConnected type:None path:null

[zk: localhost:2181(CONNECTED) 0] ls /  查看跟节点

[zookeeper]

 

后台运行mesos

[root@master ~]# nohup mesos-master --work_dir=/home/q/mesos/data --log_dir=/home/q/mesos/logs --no-hostname_lookup --ip=0.0.0.0 --zk=zk://192.168.0.105:2181/mesos --quorum=1 &>/dev/null &

配置参数:

--zk:Zookeeper 地址,用于 leader 选举。指定 zk 端口号。

--zk_session_timeout:根据网络环境调整 zk session 超时时间,默认 10s

--quorum:Master replica logs 多写数量,多 Master 场景下此值要超过 Master 数量的一半,

--credential:slave 参数,提供密钥对,介入集群时用于验证

此时,Mesos-slave 使用 zk 地址和端口号连接 Mesos-master

 

[zk: localhost:2181(CONNECTED) 3] ls /

[mesos, zookeeper] 多了个mesos节点

 

使用zookeeper配置mesos-master集群

[root@master zookeeper-3.4.6]# vi conf/zoo.cfg

[root@master zookeeper-3.4.6]# egrep "^[a-z]" conf/zoo.cfg

tickTime=2000

initLimit=10

syncLimit=5

dataDir=/home/q/zookeeper-3.4.6/data/zk1

dataLogDir=/home/q/zookeeper-3.4.6/datalog/zk1

clientPort=2181

server.1=192.168.0.105:3181:4181

server.2=192.168.0.105:3182:4182

server.3=192.168.0.105:3183:4183

[root@master zookeeper-3.4.6]#mkdir -p datalog/{zk1,zk2,zk3}

[root@master zookeeper-3.4.6]# mkdir -p data/{zk1,zk2,zk3}

[root@master zookeeper-3.4.6]# echo "1"> data/zk1/myid

[root@master zookeeper-3.4.6]# echo "2"> data/zk2/myid

[root@master zookeeper-3.4.6]# echo "3"> data/zk3/myid

[root@master zookeeper-3.4.6]# cd conf/

[root@master conf]# cp zoo.cfg zk1.cfg

[root@master conf]# cp zoo.cfg zk2.cfg

[root@master conf]# cp zoo.cfg zk3.cfg

[root@master conf]# sed -i 's/zk1/zk2/g' zk2.cfg

[root@master conf]# sed -i 's/zk1/zk3/g' zk3.cfg

[root@master conf]# sed -i 's/2181/2182/g' zk2.cfg

[root@master conf]# sed -i 's/2181/2183/g' zk3.cfg

[root@master zookeeper-3.4.6]# ./bin/zkServer.sh start conf/zk1.cfg

JMX enabled by default

Using config: conf/zk1.cfg

Starting zookeeper ... STARTED

[root@master zookeeper-3.4.6]# ./bin/zkServer.sh start conf/zk2.cfg

JMX enabled by default

Using config: conf/zk2.cfg

Starting zookeeper ... ASTARTED

[root@master zookeeper-3.4.6]# ./bin/zkServer.sh start conf/zk3.cfg

JMX enabled by default

Using config: conf/zk3.cfg

Starting zookeeper ... STARTED

[root@master zookeeper-3.4.6]# ./bin/zkServer.sh status conf/zk1.cfg

JMX enabled by default

Using config: conf/zk1.cfg

Mode: follower

[root@master zookeeper-3.4.6]# ./bin/zkServer.sh status conf/zk2.cfg

JMX enabled by default

Using config: conf/zk2.cfg

Mode: leader

[root@master zookeeper-3.4.6]# ./bin/zkServer.sh status conf/zk3.cfg

JMX enabled by default

Using config: conf/zk3.cfg

Mode: follower

 

[root@master zookeeper-3.4.6]# ./bin/zkCli.sh -server 192.168.0.105:2182

可以指定端口连接zookeeper

 

 

可见 集群配置成功,生产环境需要使用不同机器,由于本人机器内存有限,所以采用一台机器做集群实验

 

集群注册如下

mesos加入集群,一台电脑没法完成这个操作,操作如下

[root@master ~]# mesos-master --work_dir=/home/q/mesos/data --log_dir=/home/q/mesos/logs --no-hostname_lookup --ip=0.0.0.0 --zk=zk://集群1的ip:2181/mesos --quorum=2

 

 

[root@master ~]# mesos-master --work_dir=/home/q/mesos/data --log_dir=/home/q/mesos/logs --no-hostname_lookup --ip=0.0.0.0 --zk=zk://集群2的ip:2181/mesos --quorum=2

 

[root@master ~]# mesos-master --work_dir=/home/q/mesos/data --log_dir=/home/q/mesos/logs --no-hostname_lookup --ip=0.0.0.0 --zk=zk://集群3的ip:2181/mesos --quorum=2

 

slave加入mesos集群

[root@slave ~]# mesos-slave --containerizers="mesos,docker" --work_dir=/home/q/mesos/data --log_dir=/home/q/mesos/logs --master=zk://集群1的ip:2181,集群2的ip:2181,集群3的ip:2181/mesos  --no-hostname_lookup --ip=0.0.0.0

 

 

 

 

 

 

 

  1. 部署运行marathon框架

启动mesos

[root@master ~]# mesos-master --work_dir=/home/q/mesos/data --log_dir=/home/q/mesos/logs --no-hostname_lookup --ip=0.0.0.0 --zk=zk://192.168.0.105:2181:2181/mesos --quorum=2

 

slave加入mesos

[root@slave ~]# mesos-slave --containerizers="mesos,docker" --work_dir=/home/q/mesos/data --log_dir=/home/q/mesos/logs --master=zk://192.168.0.105:2181/mesos --no-hostname_lookup --ip=0.0.0.0

 

[root@master ~]# wget http://downloads.mesosphere.com/marathon/v0.15.2/marathon-0.15.2.tgz

[root@master ~]# tar xf marathon-0.15.2.tgz -C /home/q/

[root@master ~]# cd /home/q/marathon-0.15.2/

[root@master ~]# cd /home/q/marathon-0.15.2/

[root@master marathon-0.15.2]# ./bin/start --hostname 192.168.0.105 --master zk://192.168.0.105:2181/mesos  --http_address 0.0.0.0

 

(zk://可以配置多个节点进行,集群管理,多个节点有,分割 例如

./bin/start --hostname 192.168.46.138 --master

zk://192.168.46.138:2181,192.168.46.141:2181,192.168.46.155:2181/mesos

--http_address 0.0.0.0)

此时,marathon 会自动注册到 mesos 中

[zk: localhost:2181(CONNECTED) 5] ls /

[mesos, zookeeper, marathon]

 

点击 create,创建一个测试任务,echo “hello world”

 

以上试验证明marathon通过zookeeper可以连接mesos,并进行任务的创建,分发,多个slave的环境,mesos会自动分配,大家可以自己尝试。

 

(知识补充,从机启动的时候,可以看到注册的信息)

[root@slave ~]# mesos-slave --containerizers="mesos,docker" --work_dir=/home/q/mesos/data --log_dir=/home/q/mesos/logs --master=zk://192.168.0.105:2181/mesos --no-hostname_lookup --ip=0.0.0.0

 

I0813 12:17:04.466225  2575 group.cpp:700] Trying to get '/mesos/json.info_0000000001' in ZooKeeper

I0813 12:17:04.477416  2575 detector.cpp:479] A new leading master ([email protected]:5050) is detected

I0813 12:17:04.478828  2575 slave.cpp:796] New master detected at [email protected]:5050

I0813 12:17:04.482622  2575 slave.cpp:821] No credentials provided. Attempting to register without authentication

I0813 12:17:04.482717  2575 slave.cpp:832] Detecting new master

I0813 12:17:04.482834  2575 status_update_manager.cpp:174] Pausing sending status updates

I0813 12:17:05.457556  2575 slave.cpp:971] Registered with master [email protected]:5050; given slave ID f44ef2ca-e0a9-468e-9bd7-971823d23721-S0

I0813 12:17:05.458139  2578 status_update_manager.cpp:181] Resuming sending status updates

I0813 12:17:05.487421  2575 slave.cpp:1030] Forwarding total oversubscribed resources

 

[zk: localhost:2181(CONNECTED) 7] ls /mesos

[json.info_0000000001, log_replicas]

 

 

 

 

 

猜你喜欢

转载自blog.csdn.net/Stestack/article/details/84094542