- 环境准备
[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一致
以上部分表示注册服务试验成功
- 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
- 部署运行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]