单机版
系统拓扑
vm1, 192.168.4.219: marathon agent
vm2, 192.168.4.103: marathon master + marathon-lb + marathon
- 在vm1和vm2里编辑/etc/hosts:
192.168.4.219 vm1
192.168.4.103 vm2
- 关闭系统防火墙
systemctl stop firewalld
sytemctl disable firewalld
- 安装并启动zookeeper:
mkdir -p /usr/share/zookeeper
wget http://apache.tt.co.kr/zookeeper/zookeeper-3.4.13/zookeeper-3.4.13.tar.gz
tar xvfz zookeeper-3.4.13.tar.gz
cd /usr/share/zookeeper/zookeeper-3.4.13/conf
cp zoo_sample.cfg zoo.cfg
cd /usr/share/zookeeper/zookeeper-3.4.13/bin
./zkServer.sh start
- 安装mesos:
cat > /etc/yum.repos.d/bintray-mesos-el.repo <<EOF
#bintray-mesos-el - packages by mesos from Bintray
[bintray-mesos-el]
name=bintray-mesos-el
baseurl=https://dl.bintray.com/mesos/el/7/x86_64
gpgcheck=0
repo_gpgcheck=0
enabled=1
EOF
yum update -y
yum install mesos -y
- 启动mesos-master:
mesos-master --work_dir=/var/lib/mesos --ip=192.168.4.103 --hostname=192.168.4.103
此处如果不指明hostname,则会在页面弹出如下的错误:
mesos正确显示的页面如下所示:
- 启动mesos-agent:
mesos-agent --work_dir=/var/lib/mesos --master=192.168.4.103:5050 --containerizers="mesos,docker"
启动成功之后,我们可以在mesos中看到agent注册成功:
其中显示了该agent可用以及已经分配的资源(CPU/GPU/Memory/Disk等)。
- 安装marathon:
rpm -Uvh http://repos.mesosphere.com/el/7/noarch/RPMS/mesosphere-el-repo-7-2.noarch.rpm
yum install -y marathon
- 启动marathon:
marathon --hostname 192.168.4.103 --master 192.168.4.103:5050 --http_port 7070
marathon启动成功的界面如下所示:
同时我们在mesos里面看到marathon注册成功:
- 安装docker:
yum install docker -y
systemctl enable docker
systemctl start docker
- 下载marathon-lb镜像:
docker pull mesophere/marathon-lb
- 启动marathon-lb:
docker run -d --privileged -e PORTS=9090 --net=host docker.io/mesosphere/marathon-lb sse -m http://192.168.4.103:7070 --group ci
这里有一个特别说明的点,–goup我指明的是ci,不然marathon-lb默认将external的group进行ha负载。-m指明marathon的地址。
marathon其他参数的配置请参考官方文档。
- 下载jenkins镜像:
docker pull jenkins/jenkins:lts
- 本机创建jenkins的${jenkins_home},以供后面的jenkins容器挂载:
mkdir -p /jenkins_home
后面jenkins容器之后,里面的jenkins运行用户为jenkins,所以此处我们需要更改/jenkins_home的owner为容器里面的jenkins用户,其id为1000:
chown -R 1000:1000 /jenkins_home
-
配置marathon中的jenkins部署:
访问http://192.168.4.103:7070/ui/#/apps -
点击Create Application;
-
ID输入标识,比如Jenkins;
-
docker container里的Image输入jenkins/jenkins:lts, network选择Bridged
-
Ports里面的container port输入8080
-
Labels里面输入如下参数:
-
key HAPROXY_GROUP, value ci
-
key HAPROXY_0_VHOST, value ci.devops
-
Volumes:
-
Container Path: /var/jenkins_home
-
Host Path: /jenkins_home
-
Mode: Read and Write
完整的配置可以点击右上角的JSON mode查看:
{
"id": "jenkins",
"cmd": null,
"cpus": 1,
"mem": 128,
"disk": 0,
"instances": 1,
"container": {
"docker": {
"image": "jenkins/jenkins:lts"
},
"type": "DOCKER",
"portMappings": [
{
"containerPort": 8080,
"protocol": "tcp",
"name": null,
"labels": null
}
],
"volumes": [
{
"containerPath": "/var/jenkins_home",
"hostPath": "/jenkins_home",
"mode": "RW"
}
]
},
"networks": [
{
"mode": "container/bridge"
}
],
"labels": {
"HAPROXY_GROUP": "ci",
"HAPROXY_0_VHOST": "ci.devops"
}
}
- 修改hosts地址或者更改dns解析记录,添加marathon-lb的ip地址和ci.devops:
192.168.4.103 ci.devops
- 打开浏览器访问http://ci.devops,此时可以看到jenkins的初始化页面。
关注:测试领域专家(头条&微信)获取第一时间文章更新。