首页 > 代码库 > docker基础平台安装1

docker基础平台安装1

Docker基础平台安装

1. 前言

1.1.  文档目标

假定您对docker及相关生态有一定的了解,参照此文档,可以完成以下工作

2  完成docker基础组件的安装

2  完成docker网络组件的安装配置

2  完成docker平台管理组件的安装

1.2.  平台目标

2  Docker应用部署平台

2  各主机资源统一调度

2  应用实例快速伸缩

2  方便的服务发现机制

2  内部DNS访问容器

2  跨主机容器网络

2  容器内应用健康检查

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

 

2.  安装部署

2.1.  安装docker

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.  安装etcd集群

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.3.  安装flannel网络

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

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.5.  配置本地私有镜像库

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.6.  安装zookeeper集群

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.7.  Mesos平台主从安装

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.8.  Marathon框架安装

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.9.  安装DNS服务器

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.10.    增加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.11.    安装服务访问代理

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

 

 

2.12.    完结

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

docker基础平台安装1