标签:val ack 虚拟机 mct exe pat mon sys app
假定您对docker及相关生态有一定的了解,参照此文档,可以完成以下工作
2 完成docker基础组件的安装
2 完成docker网络组件的安装配置
2 完成docker平台管理组件的安装
2 Docker应用部署平台
2 各主机资源统一调度
2 应用实例快速伸缩
2 方便的服务发现机制
2 内部DNS访问容器
2 跨主机容器网络
2 容器内应用健康检查
操作系统:centos 7.1 及以上
主机数量:建议三台及以上物理或虚拟机
组件 |
备注 |
Docker deamon |
|
Zookeeper |
作为mesos集群基础 |
Mesos-master |
Mesos主及控制台 |
Mesos-slave |
|
Marathon |
Marathon框架控制台 |
Etcd |
容器网络分配中心 |
flannel |
容器网络服务 |
Docker registry |
镜像仓库 |
Mesos-dns |
DNS组件 |
Marathon-lb |
自动Haproxy代理组件 |
IP |
标签 |
说明 |
基础环境 |
192.168.2.45 <docker, flannel,etcd> |
scope:back num:1 |
DNS服务器 |
Mesos-master Mesos-slave Marathon |
192.168.2.46 <docker, flannel,etcd> |
scope:back num:2 db:s |
Mesos-master Mesos-slave |
|
192.168.2.47 <docker, flannel> |
scope:back num:3 db:m |
Mesos-master Mesos-slave Marathon |
|
192.168.2.44 <docker, flannel,etcd> |
scope:font;num:1 |
HA-PROXY(预留) |
Mesos-slave |
192.168.2.48 <docker, flannel> |
scope:font;num:2 |
DNS服务器 |
Mesos-slave |
192.168.2.49 <docker, flannel> |
scope:font;num:3 |
HA-PROXY(预留) |
Mesos-slave Marathon |
名称 |
访问路径 |
Mesos平台 |
192.168.2.45:5050 |
Marathon平台 |
http://192.168.2.45:8080/ui/#/apps |
Etcd |
http://192.168.2.46:2379 |
Registry |
192.168.2.39:5000 |
Haproxy |
2 作用:docker运行基础组件
2 安装目标:所有主机
2 脚本:
yum -yremove docker-engine
rm -rfdocker.sh
wget http://192.168.2.37/soft/docker.sh
chmod +xdocker.sh
./docker.sh192.168.2.39:5000
2 作用:跨主机网络配置信息存储,集群模式
2 安装目标:集群主机,三台
2 脚本
rm -rf etcd-cluster.sh
wget http://192.168.2.37/soft/etcd-cluster.sh
chmod +x etcd-cluster.sh
./etcd-cluster.sh etcd03 etcd01=http://192.168.2.47:2380,etcd02=http://192.168.2.48:2380,etcd03=http://192.168.2.49:2380
2 作用:跨主机网络虚拟网关组件
2 安装目标:所有主机
2 脚本
#写入子网配置
etcdctlset /coreos.com/network/config ‘{"Network":"172.88.0.0/16", "Backend":{"Type":"vxlan"}}‘
etcdctlget /coreos.com/network/config
#
安装
flannel
yum -y remove flannel
rm -rf flannel.sh
wget -N http://192.168.2.37/soft/flannel.sh
chmod +x flannel.sh
./flannel.sh http://192.168.2.44:2379,http://192.168.2.45:2379,http://192.168.2.46:2379
2 作用:本地docker镜像仓库
2 安装目标:单机
2 脚本
docker run-d --net=host --privileged --restart always \
-v/home/data:/var/lib/registry \
index.alauda.cn/library/registry:2.4.1
2 作用:使所有docker主机能使用该镜像库
2 安装目标:所有主机
2 脚本
vim/usr/lib/systemd/system/docker.service
#在这行加入参数:ExecStart=/usr/bin/docker daemon --insecure-registry192.168.2.39:5000 -H fd://
systemctldaemon-reload
servicedocker restart
ps-ef|grep docker
#应该显示 /usr/bin/docker daemon --insecure-registry192.168.2.39:5000 -H fd://
2 作用:作为mesos集群基础
2 安装目标:建议三台主机,集群方式
2 脚本
#启动zk应用
docker run-d \
-e MYID=1\
-eSERVERS=192.168.2.37,192.168.2.38,192.168.2.39 \
--name=zookeeper--net=host --restart=always 192.168.2.39:5000/zookeeper:3.4.8
2 注意事项
n 不同ZK实例启动时MYID的值需要不同,以便能构成ZK集群
2 作用:Mesos平台,整合各主机CPU及内存资源,统一调度
2 安装目标:
n Mesos-主 统一资源调度;建议三台机器,自动通过zk选举master
n Mesos-从 负责向主服务器反馈本机资源情况及接受调度,安装到所有主机(包括mesos-主)
2 脚本
n 本机IP变量
#先获取并设计本机IP变量
exportHOST=$(ifconfig eth0 | grep ‘inet‘| grep -v ‘127.0.0.1‘ | cut -d: -f2 | awk ‘{print $2}‘)
echo $HOST
n 安装mesos-主,连接到zk集群
# mesos
主,连接到
zk
集群
docker run -d \
-e MESOS_HOSTNAME=$HOST \
-e MESOS_IP=$HOST \
-e MESOS_QUORUM=1 \
-e MESOS_ZK=zk://192.168.2.45:2181,192.168.2.46:2181,192.168.2.47:2181/mesos \
--name mesos-master --net host --restart always 192.168.2.39:5000/mesos-master:0.28.1
n 安装mesos-从
docker run-d \
-eMESOS_HOSTNAME=$HOST \
-eMESOS_IP=$HOST \
-eMESOS_MASTER=zk://192.168.2.45:2181,192.168.2.46:2181,192.168.2.47:2181/mesos \
-eMESOS_ATTRIBUTES=key:back1 \
-v/sys/fs/cgroup:/sys/fs/cgroup \
-v /var/run/docker.sock:/var/run/docker.sock\
--namemesos-slave --net host --privileged --restart always \
192.168.2.39:5000/mesos-slave:0.28.1/usr/sbin/mesos-slave --attributes=‘scope:back;num:2;db:s‘
2 注意事项
n Mesos从安装时,需要注意规划并设定attributes,可以用来区分特定主机资源,如某主机供mysql使用,其值为key:value ;在其框架上发布docker应用时,可指定部署到有特定属性的主机
2 作用:基于mesos的服务框架,用来运行长时间任务
2 安装目标:三台主机,主从互备
2 脚本
docker run-d \
-eMARATHON_HOSTNAME=$HOST \
-eMARATHON_HTTPS_ADDRESS=$HOST \
-eMARATHON_HTTP_ADDRESS=$HOST \
-e MARATHON_MASTER=zk://192.168.2.45:2181,192.168.2.46:2181,192.168.2.47:2181/mesos\
-eMARATHON_ZK=zk://192.168.2.45:2181,192.168.2.46:2181,192.168.2.47:2181/marathon\
--namemarathon --net host --restart always 192.168.2.39:5000/marathon:1.1.1
2 作用:docker容器内部可使用dns相互访问
2 安装目标:二台主机,主备
2 脚本
curl-XPOST ‘http://192.168.2.45:8080/v2/apps‘ -H ‘Content-Type: application/json‘-d ‘{
"id":"/base/mesos-dns-48",
"env": {
"LOCAL_IP":"192.168.2.48",
"MESOS_ZK":"zk://192.168.2.45:2181,192.168.2.46:2181,192.168.2.47:2181/mesos",
"MESOS_DNS_EXTERNAL_SERVERS":"114.114.114.114,8.8.4.4",
"MESOS_DNS_REFRESH":"10"
},
"container": {
"docker": {
"image": "192.168.2.39:5000/mesos-dns",
"network":"HOST"
},
"type": "DOCKER"
},
"cpus": 0.2,
"mem": 128,
"instances": 1,
"constraints":[["hostname", "CLUSTER", "192.168.2.48"]]
}‘
2 注意事项
n 脚本中constraints中标红的IP需要更改,表示DNS服务器部署到该主机上
2 作用:使各主机及各主机上容器优先使用内部DNS服务器
2 安装目标:所有主机
2 脚本
sudo sed-i ‘1s/^/nameserver 192.168.2.45\n/‘ /etc/resolv.conf
sudo sed-i ‘1s/^/nameserver 192.168.2.48\n/‘ /etc/resolv.conf
2 作用:通过marathon启动的docker应用可以按规定方式由haproxy反向代理访问
2 安装目标:建议两台以上,主备
2 脚本
docker run-d --privileged -e PORTS=11112 \
--net=host--restart=always 192.168.2.39:5000/marathon-lb --sse \
-mhttp://192.168.2.45:8080 -m http://192.168.2.47:8080 -mhttp://192.168.2.49:8080 \
--groupproxy44
2 注意事项
n 不同主机上的代理,需要有不同的group,使用marathon发布应用时使用不同的label来标示使用哪个代理
2 代理使用方式
#使用方式1 主机+路径
HAPROXY_GROUP=proxy44
HAPROXY_0_PATH=/v1/test
HAPROXY_0_VHOST=client2.com
#使用方式2 主机
HAPROXY_GROUP=proxy44
HAPROXY_0_VHOST=client2.com
#使用方式3 IP+servicePort
#HAPROXY_0_PORT重新默认的serviceport
HAPROXY_GROUP=proxy44
HAPROXY_0_PORT=8787
#使用方式4 IP+PATH
HAPROXY_GROUP=proxy44
HAPROXY_0_PATH=/v1/test
HAPROXY_0_VHOST=192.168.2.44
如CAS以下配置,即可通过192.168.2.44:8787或 49:8787访问到CAS应用容器
至此,docker的基础平台,mesos-marathon平台搭建完成
标签:val ack 虚拟机 mct exe pat mon sys app
原文地址:http://www.cnblogs.com/vipmint/p/7109474.html