在UHost上安装使用Mesos+Marathon
本篇介绍如何利用云知芯的云主机搭建Mesos+Marathon集群,用户可根据业务需要,灵活搭建单master和多master的集群。
单master部署
单master模式一般用于小型开发测试环境,或者用于体验mesos+marathon 的基本功能。
单master可以直接使用部署脚本mesos-deploy.tar.gz来部署,此脚本全部使用docker container来运行mesos所有组件:mesos-master, zookeeper, marathon, meoss-slave.
需要的版本信息如下:
Mesos-master,mesos-slave:1.1.0
Marathon:1.3.6
Zookeeper:3.4.9
环境准备
最基本的拓扑环境,为一台绑定了外网IP的UHost
(1)创建一台UHost,并绑定EIP
网络配置信息为,内网IP:10.9.116.105,外网IP:106.75.6.148
主机配置信息为,OS:CentOS 7.2 64位,kernel版本: 3.10.0-327.22.2.el7.x86_64
(2)配置防火墙
外网防火墙需要开启ssh,mesos-master和marathon端口,以及在marathon上跑的应用app的端口(假设为8100端口)
具体端口信息如下:ssh:22,mesos-master:5050,marathon:8080,app:8100
Docker安装
本文安装的docker版本为1.12.5
添加docker的yum源
本文使用的是官方yum源,在配置文件中添加docker yum源文件:
/etc/yum.repos.d/docker-main.repo
[docker-main-repo] name=Docker main Repository baseurl=https://yum.dockerproject.org/repo/main/centos/7 enabled=1 gpgcheck=1 gpgkey=https://yum.dockerproject.org/gpg
查看可用docker-engine版本
安装docker
使用如下命令安装,版本为1.12.5:
yum install -y docker-engine-1.12.5-1.el7.centos.x86_64
查看版本:
docker –v
可以修改部分docker参数:
##修改docker的启动参数 ##docker service定义文件为/usr/lib/systemd/system/docker.service ##此处不做改动,直接启动docker服务 service docker start docker ps
Docker-compose安装
本文安装的docker-compose版本为1.8
下载安装包并执行:
curl -L https://github.com/docker/compose/releases/download/1.8.0/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose chmod +x /usr/local/bin/docker-compose
使用脚本部署mesos + marathon
可以通过 链接下载安装包mesos-deploy.tar.gz,并修改配置:
tar xf mesos-deploy.tar.gz cd mesos-deploy ##根据你机器的IP修改env文件中的变量: DEPLOY_MESOS_MASTER_IP(内网IP) DEPLOY_MESOS_SLAVE_IP(内网IP) DEPLOY_HOST_PUBLIC_IP(公网IP) DEPLOY_MESOS_MASTER_PORT=5050 (master端口) DEPLOY_MESOS_SLAVE_PORT=5051 (slave端口) DEPLOY_MARATHON_PORT=8080 (marathon端口)
执行部署命令,部署mesos+marathon:
source ./env && docker-compose -p undefined up –d #此过程会下载mesos,marathon,zookeeper镜像
添加slave节点
Slave节点的部署步骤与前面Master的步骤一致,但是执行部署的命令有不同。
(1)创建的UHost,并绑定外网,信息如下:
内网IP 10.9.129.84,公网IP:106.75.64.95
(2)配置Slave节点信息,并部署节点:
需要配置master,slave的IP与端口: DEPLOY_MESOS_MASTER_IP(master内网IP) DEPLOY_MESOS_SLAVE_IP(内网IP) DEPLOY_HOST_PUBLIC_IP(slave公网IP) DEPLOY_MESOS_MASTER_PORT=5050 (master端口) DEPLOY_MESOS_SLAVE_PORT=5051 (slave端口) source ./env && docker-compose -p undefined up -d mesosslave #此过程会下载mesos-slave镜像
使用marathon运行一个task
查看mesos 和 marathon信息
通过UI界面,可以查询Mesos和Marathon集群的详细信息。示例地址如下:
Mesos-master:http://106.75.6.148:5050
Marathon:http://106.75.6.148:8080
运行一个nginx服务
伸缩nginx的实例个数
多master部署
组件及拓扑
(1)规划集群陪着和部署节点
部署节点:10.9.116.105,Cluster信息如下:
(2)配置防火墙
外网防火墙需要开启ssh,mesos-master和marathon端口,以及在marathon上跑的应用app的端口(假设为8100端口)
部署脚本介绍
可以通过 链接下载部署包mesos-cluster.tar.gz快速搭建集群。
部署包中主要由脚本deploy.sh和umesos-deploy,umesos-slave组成,deploy.sh是部署脚本,umesos-deploy是master集群部署文件,umesos-slave是slave节点部署文件。
Master集群节点组件全部采用容器方式部署,部署过程中会下载官方镜像(UHost需要配置外网IP)。Slave节点采用yum方式部署。部署过程会升级内核至4.1.0-13.el7.ucloud.x86_64,并重新启动,有效避免一些docker的bug。
此部署脚本根据使用经验调整了一些参数,可以满足大部分的生产环境使用,并且可以分区域(azone)分节点(owner)部署多集群(cluster)。后续添加slave节点也十分方便。 此部署脚本适用centos6,centos7.
部署步骤
创建节点并配置key
a. 创建UHost并分配IP
创建流程参考上文单master章节部分
b. 下载解压部署包
下载部署包。部署需要用到pssh程序,将此程序拷贝到系统PATH中,比如:
tar xf mesos-cluster.tar.gz cd umesos-cluster cp pssh /usr/bin
c. 配置key
使用ssh-copy-id将部署节点key加入集群节点,后续可以无密码登陆
#如果没有生成key,使用ssh-keygen生成key。 ssh-copy-id -i root@10.9.116.242 ssh-copy-id -i root@10.9.111.248 ssh-copy-id -i root@10.9.135.146
用脚本添加集群信息
脚本各参数说明如下:
azone 是集群位置,比如bj集群; cluster是内网IP; clusterPublic是公网IP。此示例是3个节点集群,如果要建多节点(比如5)集群,需要添加ip信息,并修改quorum值。 Marathon_aut,可以设定marathon的用户名及密码,用冒号隔开。
可以通过deploy.sh –list 查看所有集群信息。
./deploy.sh --list
部署master节点
a. 集群部署
确认信息无误后,直接运行./deploy.sh –azone=bj来部署bj集群。此过程会消耗一定时间,要保持网络畅通,若网络断开失败,可重新执行部署命令。
./deploy.sh –azone=bj //bj为需部署的集群简称
部署完成后,通过deploy.sh –list 查看所有集群信息,如下图:
注:第一次部署时,可能会有网络问题导致部署失败,或者各节点拉取镜像速度不一致,导致master集群创建不成功;此时可以再次使用相同命令重新部署一次;或者找到失败节点,重启,直至都加入mesos集群中。
b. 集群确认
安装成功之后,可以通过访问mesos和marathon的UI来确认是否集群工作。
UI访问地址如下:
Mesos-master:106.75.25.230:5050,106.75.64.31:5050,106.75.4.181:5050
Marathon: 106.75.25.230:8080,106.75.64.31:8080,106.75.4.181:8080
默认用户名/密码:umesos/umesos
部署slave节点
添加Slave节点:
--azone指定slave添加到哪个集群,-s指定内网IP,-p指定外网IP ./deploy.sh -m slave --azone=bj -s 10.9.116.242 -p 106.75.13.243 ./deploy.sh -m slave --azone=bj -s 10.9.111.248 -p 106.75.64.31 ./deploy.sh -m slave --azone=bj -s 10.9.135.146 -p 106.75.4.181
Mesos-master UI可以看到成功注册到master中的slave节点。
使用marathon运行task
仍以运行nginx服务为例,使用方法请参考单master章节。