Docker基础平台安装

Docker基础平台安装

  1. 前言

1.1. 文档目标

假定您对docker及相关生态有一定的了解,参照此文档,可以完成以下工作
² 完成docker基础组件的安装
² 完成docker网络组件的安装配置
² 完成docker平台管理组件的安装
1.2. 平台目标

² Docker应用部署平台
² 各主机资源统一调度
² 应用实例快速伸缩
² 方便的服务发现机制
² 内部DNS访问容器
² 跨主机容器网络
² 容器内应用健康检查
1.3. 环境要求

操作系统:centos 7.1 及以上
主机数量:建议三台及以上物理或虚拟机
1.4. 涉及组件

组件
备注
Docker deamon
Zookeeper
作为mesos集群基础
Mesos-master
Mesos主及控制台
Mesos-slave
Marathon
Marathon框架控制台
Etcd
容器网络分配中心
flannel
容器网络服务
Docker registry
镜像仓库
Mesos-dns
DNS组件
Marathon-lb
自动Haproxy代理组件

1.5. 组件规划

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

1.6. 平台访问参考

名称
访问路径
Mesos平台
192.168.2.45:5050
Marathon平台
http://192.168.2.45:8080/ui/#/apps
Etcd
http://192.168.2.44:2379,
http://192.168.2.45:2379,
http://192.168.2.46:2379
Registry
192.168.2.39:5000
Haproxy
http://192.168.2.49:9090/haproxy?stats

  1. 安装部署

2.1. 安装docker

² 作用:docker运行基础组件
² 安装目标:所有主机
² 脚本:
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. 安装etcd集群

² 作用:跨主机网络配置信息存储,集群模式
² 安装目标:集群主机,三台
² 脚本
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.3. 安装flannel网络

² 作用:跨主机网络虚拟网关组件
² 安装目标:所有主机
² 脚本

写入子网配置

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.4. 搭建私有镜像库

² 作用:本地docker镜像仓库
² 安装目标:单机
² 脚本
docker run-d --net=host --privileged --restart always
-v/home/data:/var/lib/registry
index.alauda.cn/library/registry:2.4.1

2.5. 配置本地私有镜像库

² 作用:使所有docker主机能使用该镜像库
² 安装目标:所有主机
² 脚本
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.6. 安装zookeeper集群

² 作用:作为mesos集群基础
² 安装目标:建议三台主机,集群方式
² 脚本

启动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
² 注意事项
n 不同ZK实例启动时MYID的值需要不同,以便能构成ZK集群

2.7. Mesos平台主从安装

² 作用:Mesos平台,整合各主机CPU及内存资源,统一调度
² 安装目标:
n Mesos-主 统一资源调度;建议三台机器,自动通过zk选举master
n Mesos-从 负责向主服务器反馈本机资源情况及接受调度,安装到所有主机(包括mesos-主)
² 脚本
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'

² 注意事项
n Mesos从安装时,需要注意规划并设定attributes,可以用来区分特定主机资源,如某主机供mysql使用,其值为key:value ;在其框架上发布docker应用时,可指定部署到有特定属性的主机

2.8. Marathon框架安装

² 作用:基于mesos的服务框架,用来运行长时间任务
² 安装目标:三台主机,主从互备
² 脚本
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.9. 安装DNS服务器

² 作用:docker容器内部可使用dns相互访问
² 安装目标:二台主机,主备
² 脚本
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"]]
}'
² 注意事项
n 脚本中constraints中标红的IP需要更改,表示DNS服务器部署到该主机上

2.10. 增加DNS服务配置

² 作用:使各主机及各主机上容器优先使用内部DNS服务器
² 安装目标:所有主机
² 脚本
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.11. 安装服务访问代理

² 作用:通过marathon启动的docker应用可以按规定方式由haproxy反向代理访问
² 安装目标:建议两台以上,主备
² 脚本
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
² 注意事项
n 不同主机上的代理,需要有不同的group,使用marathon发布应用时使用不同的label来标示使用哪个代理
² 代理使用方式

使用方式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应用容器

2.12. 完结

至此,docker的基础平台,mesos-marathon平台搭建完成

posted @ 2017-07-03 08:48  mint_vip  阅读(579)  评论(0编辑  收藏  举报