阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

CentOS 7中Mesos+Zookeeper+Marathon安装部署全程详解

196次阅读
没有评论

共计 11066 个字符,预计需要花费 28 分钟才能阅读完成。

注意,以下安装过程均是在 CentOS 7 中 root 下完成,如果是普通用户,用 sudo 提权的方式安装。

一、环境

1、配置三台服务器,三个 mesos-master 节点,三个 slave 节点,我用测试 IP

主机名 IP 地址 所安装的服务
mesos-node1eth0:192.168.10.227

mesos-master,mesos-slave,marathon,

zookeeper,haproxy

mesos-node2eth0:192.168.10.228mesos-master,mesos-slave,marathon,zookeeper,haproxy
mesos-node3eth0:192.168.10.229mesos-master,mesos-slave,marathon,zookeeper,haproxy

2、查看内核版本

[root@mesos-node1 ~]# cat /etc/RedHat-release
 CentOS Linux release 7.2.1511 (Core)
 [root@mesos-node1 ~]# uname  -r
 3.10.0-327.el7.x86_64
 [root@mesos-node1 ~]# uname  -a
 Linux mesos-node1 3.10.0-327.el7.x86_64 #1 SMP Thu Nov 19 22:10:57 UTC 2015 x86_64 x86_64 x86_64 GNU/Linux
 [root@mesos-node1 ~]#

注意以下部分在三台服务器上都要执行

3、关闭 SELinux

【临时】

[root@mesos-node1 ~]]# setenforce 0
 [root@mesos-node1 ~]]# getenforce
 Permissive

【永久】

 更改配置文件 /etc/selinux/config 将 SELINUX=enforcing 修改为 SELINUX=disabled 重启生效,如果不想重启就将上面临时修改的也执行一次。

4、关闭防火墙

systemctl stop firewalld

5、配置 host 解析

[root@mesos-node1 ~]# cat /etc/hosts
 127.0.0.1  localhost localhost.localdomain localhost4 localhost4.localdomain4
 ::1        localhost localhost.localdomain localhost6 localhost6.localdomain6
 192.168.10.227    mesos-node1 
 192.168.10.228    mesos-node2 
 192.168.10.229    mesos-node3 
 [root@mesos-node1 ~]#

二、部署 docker

1、利用 yum 安装 docker

yum install docker

2、启动 docker

systemctl start docker.service

3、加入开机自启动服务

systemctl enable docker.service

4、创建 docker 用户组,避免使用 sudo

usermod -aG docker lcm

三、部署 zookeeper

1、安装 Java

yum install -y java

2、查看 Java 版本

 [root@mesos-node1 ~]# java -version
 openjdk version “1.8.0_121”    #<=====OpenJDK1.8
 OpenJDK Runtime Environment (build 1.8.0_121-b13)
 OpenJDK 64-Bit Server VM (build 25.121-b13, mixed mode)
 [root@mesos-node1 ~]#

3、进入源码安装目录下载 zookeeper 稳定版 3.4.9 并安装

cd /usr/local/src/
 wget http://mirrors.cnnic.cn/apache/zookeeper/stable/zookeeper-3.4.9.tar.gz
 tar xf zookeeper-3.4.9.tar.gz
 mv zookeeper-3.4.9 /usr/local/

4、创建软连接,方便以后升级时用

ln -s /usr/local/zookeeper-3.4.9/ /usr/local/zookeeper

5、修改 zookeeper 配置文件,只修改一个,然后分发到其他两台上

cd /usr/local/zookeeper/conf
 mv zoo_sample.cfg zoo.cfg
 [root@mesos-node1 ~]# grep “^[a-z]” zoo.cfg
 tickTime=2000
 initLimit=10
 syncLimit=5
 dataDir=/usr/local/zookeeper/data
 dataLogDir=/usr/local/zookeeper/logs
 clientPort=2181
 server.1=mesos-node1:2888:3888
 server.2=mesos-node2:2888:3888
 server.3=mesos-node3:2888:3888
 [root@mesos-node1 ~]#

6、创建 dataDir 和 dataLogDir 目录

mkdir -p /usr/local/zookeeper/data /usr/local/zookeeper/logs

7、在三台服务器上创建 myid 文件,里面的数据要和配置文件里面的 server. 后面的数字一样,表示这是第几台服务器

echo “1” >/usr/local/zookeeper/data/myid
echo “1” >/usr/local/zookeeper/data/myid
echo “1” >/usr/local/zookeeper/data/myid

8、启动 zookeeper

cd  /usr/local/zookeeper
./bin/zkServer.s start

9、查看角色状态

./bin/zkServer.sh status

可以看到两个 follower,一个 leader

10、尝试连接 zookeeper

 ./bin/zkCli.sh  #<===== 连接当前 zookeeper
 ./bin/zkCli.sh  -server 192.168.10.228:2181  #<====== 连接远程 zookeeper
 [zk: 192.168.10.228:2181(CONNECTED) 0] ls /      #<====== 可以用 ls / 查看
 [zookeeper]
 [zk: 192.168.10.228:2181(CONNECTED) 1]

OK,zookeeper 安装成功,接下来安装 mesos

三、mesos+marathon 集群部署

1、安装 mesosphere 仓库

rpm -ivh http://repos.mesosphere.com/el/7/noarch/RPMS/mesosphere-el-repo-7-1.noarch.rpm

2、安装 mesos 和 marathon

yum -y install mesos marathon

3、增加 zookeeper 配置

 [root@mesos-node1 ~]#  cat /etc/mesos/zk
 zk://192.168.10.227:2181,192.168.10.228:2181,192.168.10.229:2181/mesos
 [root@mesos-node1 ~]#

4、配置 mesos-hostname

 echo 本地 IP 地址 | tee /etc/mesos-master/ip
 echo 本地 IP 地址 | tee /etc/mesos-master/hostname
 echo 本地 IP 地址 | tee /etc/mesos-slave/ip
 echo 本地 IP 地址 | tee /etc/mesos-slave/hostname
 echo 2 > /etc/mesos-master/quorum  #这个数字要大于安装的 master 节点的总数的 0.5 倍,即一半

5、配置 mesos-master slave marathon 开机自启动并启动

systemctl enable mesos-master mesos-slave marathon
systemctl start mesos-master mesos-slave marathon

6、在浏览器打开任意一台服务的 mesos

http://192.168.10.227:5050/

7、如果出现下面的界面,安装成功

CentOS 7 中 Mesos+Zookeeper+Marathon 安装部署全程详解

8、运行一个 mesos 任务来测试

MASTER=$(mesos-resolve `cat /etc/mesos/zk`)  #<===== 获取主服务器的 IP 地址
 mesos-execute –master=$MASTER –name=”cluster-test”–command=”sleep 60″  #如果没有发现任务在运行,可尝试修改 –name=”cluster-test”,这个名字可以随意起

9、打开浏览器查看

CentOS 7 中 Mesos+Zookeeper+Marathon 安装部署全程详解

至此环境已经搭建成功

更多详情见请继续阅读下一页的精彩内容 :http://www.linuxidc.com/Linux/2017-03/141478p2.htm

二、测试,尝试管理一个 docker 镜像

注意,以下内容没有特别说明可在任意一台服务上完成,我选择在 227

1、在 docker 中下载一个 nginx 镜像

docker pull nginx

2、在所有 mesos-slave 上增加配置参数,并重启(这一步在三台服务上面进行操作)

echo ‘docker,mesos’ | tee /etc/mesos-slave/containerizers
 systemctl restart mesos-slave

3、在浏览器中打开 marathon,默认端口 8080

http://192.168.10.227:8080

CentOS 7 中 Mesos+Zookeeper+Marathon 安装部署全程详解

下面通过 Mesos 调度,使用 marathon 来创建一个 nginx 镜像的 Docker 容器,Marathon 启动时会读取 /etc/mesos/zk 配置文件,Marathon 通过 Zookeeper 来找到 Mesos Master。

4、创建 nginx 配置文件 nginx.json

[root@mesos-node1 ~]# cat nginx.json
 {
 “id”:”nginx”,
 “cmd”: null,
 “cpus”:0.2,
 “mem”:32.0,
 “instances”: 1,
 “constraints”: [[“hostname”,
 “UNIQUE”,””]],
 “container”: {
 “type”:”DOCKER”,
 “docker”: {
 “image”: “nginx”,
 “network”: “BRIDGE”,
 “portMappings”: [
 {“containerPort”: 80,
 “hostPort”: 0,”servicePort”: 0,”protocol”:
 “tcp” }
 ]
  }
    }
      }
 [root@mesos-node1 ~]#

5、利用 curl 的方式开启 nginx 容器

curl -X POST http://192.168.10.227:8080/v2/apps -d@/root/nginx.json -H “Content-type:application/json”

6、查看开启的容器

[root@mesos-node1 ~]# docker ps -a
 CONTAINER ID        IMAGE              COMMAND                  CREATED              STATUS              PORTS                            NAMES
 5175ef6c9dde        nginx              “nginx -g ‘daemon off”  About a minute ago  Up About a minute  443/tcp, 0.0.0.0:31894->80/tcp  mesos-e0a9ccd0-e362-  4250-8c58-08b6ded0bb17-S2.e4635e6a-d25b-4c5b-a351-0756174acf28

7、在浏览器中查看

CentOS 7 中 Mesos+Zookeeper+Marathon 安装部署全程详解

CentOS 7 中 Mesos+Zookeeper+Marathon 安装部署全程详解

但是我们可以发现,只能 227 这台服务器来访问这个端口,出现 nginx 页面,用其他的 IP 地址显然是不可以的.

CentOS 7 中 Mesos+Zookeeper+Marathon 安装部署全程详解

so,接下来我们就来配置服务发现,设置一个固定端口,实现让每个 IP 地址都可以访问到这个页面。

 

注意,以下安装过程均是在 CentOS 7 中 root 下完成,如果是普通用户,用 sudo 提权的方式安装。

一、环境

1、配置三台服务器,三个 mesos-master 节点,三个 slave 节点,我用测试 IP

主机名 IP 地址 所安装的服务
mesos-node1eth0:192.168.10.227

mesos-master,mesos-slave,marathon,

zookeeper,haproxy

mesos-node2eth0:192.168.10.228mesos-master,mesos-slave,marathon,zookeeper,haproxy
mesos-node3eth0:192.168.10.229mesos-master,mesos-slave,marathon,zookeeper,haproxy

2、查看内核版本

[root@mesos-node1 ~]# cat /etc/RedHat-release
 CentOS Linux release 7.2.1511 (Core)
 [root@mesos-node1 ~]# uname  -r
 3.10.0-327.el7.x86_64
 [root@mesos-node1 ~]# uname  -a
 Linux mesos-node1 3.10.0-327.el7.x86_64 #1 SMP Thu Nov 19 22:10:57 UTC 2015 x86_64 x86_64 x86_64 GNU/Linux
 [root@mesos-node1 ~]#

注意以下部分在三台服务器上都要执行

3、关闭 SELinux

【临时】

[root@mesos-node1 ~]]# setenforce 0
 [root@mesos-node1 ~]]# getenforce
 Permissive

【永久】

 更改配置文件 /etc/selinux/config 将 SELINUX=enforcing 修改为 SELINUX=disabled 重启生效,如果不想重启就将上面临时修改的也执行一次。

4、关闭防火墙

systemctl stop firewalld

5、配置 host 解析

[root@mesos-node1 ~]# cat /etc/hosts
 127.0.0.1  localhost localhost.localdomain localhost4 localhost4.localdomain4
 ::1        localhost localhost.localdomain localhost6 localhost6.localdomain6
 192.168.10.227    mesos-node1 
 192.168.10.228    mesos-node2 
 192.168.10.229    mesos-node3 
 [root@mesos-node1 ~]#

二、部署 docker

1、利用 yum 安装 docker

yum install docker

2、启动 docker

systemctl start docker.service

3、加入开机自启动服务

systemctl enable docker.service

4、创建 docker 用户组,避免使用 sudo

usermod -aG docker lcm

三、部署 zookeeper

1、安装 Java

yum install -y java

2、查看 Java 版本

 [root@mesos-node1 ~]# java -version
 openjdk version “1.8.0_121”    #<=====OpenJDK1.8
 OpenJDK Runtime Environment (build 1.8.0_121-b13)
 OpenJDK 64-Bit Server VM (build 25.121-b13, mixed mode)
 [root@mesos-node1 ~]#

3、进入源码安装目录下载 zookeeper 稳定版 3.4.9 并安装

cd /usr/local/src/
 wget http://mirrors.cnnic.cn/apache/zookeeper/stable/zookeeper-3.4.9.tar.gz
 tar xf zookeeper-3.4.9.tar.gz
 mv zookeeper-3.4.9 /usr/local/

4、创建软连接,方便以后升级时用

ln -s /usr/local/zookeeper-3.4.9/ /usr/local/zookeeper

5、修改 zookeeper 配置文件,只修改一个,然后分发到其他两台上

cd /usr/local/zookeeper/conf
 mv zoo_sample.cfg zoo.cfg
 [root@mesos-node1 ~]# grep “^[a-z]” zoo.cfg
 tickTime=2000
 initLimit=10
 syncLimit=5
 dataDir=/usr/local/zookeeper/data
 dataLogDir=/usr/local/zookeeper/logs
 clientPort=2181
 server.1=mesos-node1:2888:3888
 server.2=mesos-node2:2888:3888
 server.3=mesos-node3:2888:3888
 [root@mesos-node1 ~]#

6、创建 dataDir 和 dataLogDir 目录

mkdir -p /usr/local/zookeeper/data /usr/local/zookeeper/logs

7、在三台服务器上创建 myid 文件,里面的数据要和配置文件里面的 server. 后面的数字一样,表示这是第几台服务器

echo “1” >/usr/local/zookeeper/data/myid
echo “1” >/usr/local/zookeeper/data/myid
echo “1” >/usr/local/zookeeper/data/myid

8、启动 zookeeper

cd  /usr/local/zookeeper
./bin/zkServer.s start

9、查看角色状态

./bin/zkServer.sh status

可以看到两个 follower,一个 leader

10、尝试连接 zookeeper

 ./bin/zkCli.sh  #<===== 连接当前 zookeeper
 ./bin/zkCli.sh  -server 192.168.10.228:2181  #<====== 连接远程 zookeeper
 [zk: 192.168.10.228:2181(CONNECTED) 0] ls /      #<====== 可以用 ls / 查看
 [zookeeper]
 [zk: 192.168.10.228:2181(CONNECTED) 1]

OK,zookeeper 安装成功,接下来安装 mesos

三、mesos+marathon 集群部署

1、安装 mesosphere 仓库

rpm -ivh http://repos.mesosphere.com/el/7/noarch/RPMS/mesosphere-el-repo-7-1.noarch.rpm

2、安装 mesos 和 marathon

yum -y install mesos marathon

3、增加 zookeeper 配置

 [root@mesos-node1 ~]#  cat /etc/mesos/zk
 zk://192.168.10.227:2181,192.168.10.228:2181,192.168.10.229:2181/mesos
 [root@mesos-node1 ~]#

4、配置 mesos-hostname

 echo 本地 IP 地址 | tee /etc/mesos-master/ip
 echo 本地 IP 地址 | tee /etc/mesos-master/hostname
 echo 本地 IP 地址 | tee /etc/mesos-slave/ip
 echo 本地 IP 地址 | tee /etc/mesos-slave/hostname
 echo 2 > /etc/mesos-master/quorum  #这个数字要大于安装的 master 节点的总数的 0.5 倍,即一半

5、配置 mesos-master slave marathon 开机自启动并启动

systemctl enable mesos-master mesos-slave marathon
systemctl start mesos-master mesos-slave marathon

6、在浏览器打开任意一台服务的 mesos

http://192.168.10.227:5050/

7、如果出现下面的界面,安装成功

CentOS 7 中 Mesos+Zookeeper+Marathon 安装部署全程详解

8、运行一个 mesos 任务来测试

MASTER=$(mesos-resolve `cat /etc/mesos/zk`)  #<===== 获取主服务器的 IP 地址
 mesos-execute –master=$MASTER –name=”cluster-test”–command=”sleep 60″  #如果没有发现任务在运行,可尝试修改 –name=”cluster-test”,这个名字可以随意起

9、打开浏览器查看

CentOS 7 中 Mesos+Zookeeper+Marathon 安装部署全程详解

至此环境已经搭建成功

更多详情见请继续阅读下一页的精彩内容 :http://www.linuxidc.com/Linux/2017-03/141478p2.htm

四、服务发现和 haproxy

以下操作在三台服务上都有

1、安装 haproxy

yum -y install haproxy

2、设置服务发现

  mkdir -p /etc/marathon/conf
 cp /etc/mesos/zk /etc/marathon/conf/master
 cp /etc/marathon/conf/master /etc/marathon/conf/zk
 sed -i ‘s|mesos|marathon|g’ /etc/marathon/conf/zk

3、设置文件 /etc/haproxy-marathon-bridge/marathons

 mkdir /etc/haproxy-marathon-bridge/
 [root@mesos-node1 conf]# cat /etc/haproxy-marathon-bridge/marathons
 192.168.10.227:8080
 192.168.10.228:8080
 192.168.10.229:8080
 [root@mesos-node1 conf]#

4、下载安装脚本

wget https://github.com/draculavlad/SetUpMesosphereOnCentOS7WithServiceDiscovery/blob/master/haproxy-marathon-bridge

5、添加执行权限

chmod +x /etc/init.d/haproxy-marathon-bridge

6、通过 haproxy-marathon-bridge 脚本从 Marathon 生成一个 HAProxy 配置在 localhost:8080 运行:

 ./haproxy-marathon-bridge 192.168.10.227:8080 > /etc/haproxy/haproxy.cfg

7、将 haproxy 加入开机自启动并启动

 systemctl start haproxy
 systemctl enable haproxy

8、开启 haproxy 的定时任务,每一分钟加入一次任务。

/etc/init.d/haproxy-marathon-bridge install_cronjob

9、查看 nginx.json 文件

[root@mesos-node1 ~]# cat nginx.json
 {
 “id”:”nginx”,
 “cmd”: null,
 “cpus”:0.2,
 “mem”:32.0,
 “instances”: 1,
 “constraints”: [[“hostname”,
 “UNIQUE”,””]],
 “container”: {
 “type”:”DOCKER”,
 “docker”: {
 “image”: “nginx”,
 “network”: “BRIDGE”,
 “portMappings”: [
 {“containerPort”: 80,
 “hostPort”: 0,”servicePort”: 3030, “protocol”:      #此处我设置了固定的端口,这个端口可以按照要求来设定。
 “tcp” }
 ]
  }
    }
      }
 [root@mesos-node1 ~]#

再查看 /etc/haproxy/haproxy.cfg 文件

[root@mesos-node1 ~]# cat /etc/haproxy/haproxy.cfg
global
    log        127.0.0.1 local2
    chroot      /var/lib/haproxy
    pidfile    /var/run/haproxy.pid
    maxconn    4000
    user        haproxy
    group      haproxy
    daemon
    # turn on stats unix socket
    stats socket /var/lib/haproxy/stats
defaults
    mode                    tcp
    log                    global
    option                  dontlognull
    option                  redispatch
    retries                3
    timeout queue          1m
    timeout connect        10s
    timeout client          1m
    timeout server          1m
    timeout check          10s
    maxconn                3000
frontend front-nginx-3030
 bind *:3030
 default_backend    back-nginx-3030
backend back-nginx-3030
 balance leastconn
  server nginx-1 192.168.10.227:31894 check
[root@mesos-node1 ~]#

可以看到服务发现自动生成了这个访问端口,将它映射在随机生成的端口上,至此我们就可以用任意一台的 IP 地址来访问这个端口了。

CentOS 7 中 Mesos+Zookeeper+Marathon 安装部署全程详解

更多 CentOS 相关信息见 CentOS 专题页面 http://www.linuxidc.com/topicnews.aspx?tid=14

本文永久更新链接地址 :http://www.linuxidc.com/Linux/2017-03/141478.htm

正文完
星哥说事-微信公众号
post-qrcode
 
星锅
版权声明:本站原创文章,由 星锅 2022-01-21发表,共计11066字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中