https://humpback.github.io/humpback/
帮助企业快速搭建轻量级的Docker容器云管理平台。 https://humpback.github.io/humpback
Components
Humpback 可以帮助企业快速搭建轻量级的 Docker 容器云管理平台,若将你的 Docker 主机接入到 Humpback 平台中,就能够为你带来更快捷稳定的容器操作体验。
一.安装 Docker: https://abc.htmltoo.com/thread-531.htm
二.搭建私有仓
私有仓库为 Humpback 提供镜像存储基础服务,Humpback 涉及镜像查询、容器构建等功能都依赖于私有仓库服务。
Docker 官方仓库 Distribution 在 hub.docker.com 的镜像名称为:registry
docker pull registry:latest
docker run -d -p 5000:5000 --restart=always -v /var/lib/registry/:/var/lib/registry/ -v /etc/docker/registry/config.yml:/etc/docker/registry/config.yml --name registry registry:latest
关于仓库配置说明请参见 configuration.md
curl http://localhost:5000/v2/_catalog
{"repositories":[]}若能正常访问 registry 接口 _catalog,证明服务启动成功。
三.Zookeeper 集群部署
Humpback 默认选用 Zookeeper 来进行集群节点的注册和发现,后端需要具备一个 Zookeeper 集群。
Zookeeper 下载
示例采用 Zookeeper 3.4.11 版本,请确保在服务器上安装了 java open jdk7 运行环境,下载 Zookeeper 并解压。
cd /data/
wget http://91.cndo.org/zookeeper-3.4.11.tar.gz
tar -xzvf zookeeper-3.4.11.tar.gz
mv zookeeper-3.4.11 zookeeper
cd zookeeper
cp conf/zoo_sample.cfg conf/zoo.cfg
vim conf/zoo.cfg
tickTime=2000
initLimit=10
syncLimit=5
dataDir=/data/zookeeper/zkdata
dataLogDir=/data/zookeeper/logs
clientPort=2181
server.1=192.168.2.80:2888:3888
server.2=192.168.2.81:2888:3888
server.3=192.168.2.82:2888:3888
mkdir -p /data/zookeeper/zkdata
mkdir -p /data/zookeeper/logs
以上安装流程三台服务器都照执行,接下来开始创建 zookeeper 集群并启动。
建立 Zookeeper 节点标识文件 myid
创建 myid 编号,依次在每台 Server 上执行,注意每台 Server 的 myid 要对应正确的编号
192.168.2.80
echo "1" > /data/zookeeper/zkdata/myid
192.168.2.81
echo "2" > /data/zookeeper/zkdata/myid
192.168.2.82
echo "3" > /data/zookeeper/zkdata/myid
启动 Zookeeper
192.168.2.80
/data/zookeeper/bin/zkServer.sh start
192.168.2.81
/data/zookeeper/bin/zkServer.sh start
192.168.2.82
/data/zookeeper/bin/zkServer.sh start
Zookeeper 状态检查
192.168.2.80
/data/zookeeper/bin/zkServer.sh status
如果 Zookeeper 启动失败或报错,可能有以下几个原因:
1.zoo.cfg 文件配置出错:dataLogDir 指定的目录未被创建。
2.myid 文件中的整数格式不对,或者与 zoo.cfg 中的 server 整数不对应。
3.防火墙未打开 Zookeeper 服务端口,如 2888 和 3888。
三.部署 Humpback 管理站点
作为 Humpback 的直观展现,基于 Angular2 和 AdminLTE 构建的用于管理 docker 的网站。
# 创建一个目录,用来存储humpback-web的数据库文件
mkdir -p /data/humpback-web
docker pull humpbacks/humpback-web:1.0.1
docker run -d --net=host --restart=always -e HUMPBACK_LISTEN_PORT=8012 -v /data/humpback-web/dbFiles:/humpback-web/dbFiles --name humpback-web humpbacks/humpback-web:1.0.1
启动成功之后,访问 http://localhost:8012 来确定是否部署成功。
如果要在宿主机访问,请使用虚拟机绑定的IP地址,另外,需要注意防火墙。
如果能够在浏览器中看到登录界面,那么就可以输入默认超级管理员账户:admin,密码:123456 进行登录。
四.部署 Humpback Agent
Humpback Agent 主要为 Humpback 平台提供容器访问功能。API 文档
从项目名称就很容易看出,这货就是一个代理,为Humpback管理站点提供数据的。
需要先在要被管理的机器上安装Docker环境(如果就在humpback这台虚拟机中试验,可以跳过,因为已经安装Docker),之后输入 docker version 查看一下版本号,我们主要关注其中的 API Version(待会要用)。
老规矩,我们的 humpback-agent 也必然是一个镜像,那么执行如下方式安装下:
# 为了简单使用,先不考虑集群功能
# 注意,之前我们在 docker version 中记录的 API Version 要排上用场了,
# 以下命令中有个环境变量 DOCKER_API_VERSION ,需要被设定为我们记录的API VERSION的值。
docker run -d -ti --net=host --restart=always -e DOCKER_API_VERSION=v1.26 -v /var/run/:/var/run/:rw --name=humpback-agent humpbacks/humpback-agent:1.2.5
当启动成功之后,我们的 humpback-agent 也部署成功了。
三台服务器:192.168.2.80, 192.168.2.81, 192.168.2.82 都需要部署 Humpback Agent 用于实现本地镜像、容器管理。
docker version # 检查 Docker API 版本号:1.26
启动 Humpback Agent
1、集群模式启动
docker pull humpbacks/humpback-agent:latest
docker run -d -ti --net=host --restart=always \
--name=humpback-agent \
-e DOCKER_API_VERSION=v1.21 \
-e DOCKER_AGENT_IPADDR=0.0.0.0 \
-e DOCKER_CLUSTER_ENABLED=true \
-e DOCKER_CLUSTER_URIS=zk://192.168.2.80:2181,192.168.2.81:2181,192.168.2.82:2181 \
-e DOCKER_CLUSTER_NAME=humpback/center \
-v /var/run/:/var/run/:rw \
humpbacks/humpback-agent:latest
docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
b1ac4a82c2dd humpbacks/humpback-agent:1.2.5 "./humpback-agent" 3 minutes ago 20 seconds ago humpback-agent
2、非集群模式启动
docker pull humpbacks/humpback-agent:latest
docker run -d -ti --net=host --restart=always --name=humpback-agent -e DOCKER_API_VERSION=v1.21 -e DOCKER_CLUSTER_ENABLED=false -v /var/run/:/var/run/:rw humpbacks/humpback-agent:latest
docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
b1ac4a82c2dd humpbacks/humpback-agent:1.2.5 "./humpback-agent" 3 minutes ago 20 seconds ago humpback-agent
环境变量与参数
DOCKER_API_VERSION=v1.26 一定要与上面的版本号对应一致。
DOCKER_AGENT_IPADDR=0.0.0.0 启动容器时,集群模式下节点注册到集群的本地网络地址,默认为:0.0.0.0 随机选择一个有效本地地址,若本地为双网卡则需选择一个IP地址。
DOCKER_CLUSTER_ENABLED=true 如果当前 Agent 需要被集群模式调度, 那么 Cluster Mode 模式请设置为 true,否则关闭集群调度该节点为 Single Mode 模式。
DOCKER_CLUSTER_URIS=zk://192.168.2.80:2181,192.168.2.81:2181,192.168.2.82:2181 为先前配置的 Zookeeper 集群地址信息。
DOCKER_CLUSTER_NAME=humpback/center 集群名称,要与 Humpback Center 配置一致。
创建分组,注册服务器:
三台服务器都成功启动 Humpback Agent 容器后,进入 Humpback Web 站点,展开左侧 Manage 功能点击 Groups 创建一个分组:MyCluster
并将三台节点服务器加入到该组中并点击 Save 即可。
Humpback Add Group: 进入分组页面,可以查看三台集群服务器信息。
四.humpback-center
Humpback Center 主要为 Humpback 平台提供集群容器调度服务,以集群中心角色实现各个 Group 的容器分配管理。
API 文档 , 需要集群调度的 Group 要在设置中将 Cluster Mode 开关打开即可。
启动 Humpback Center
$ docker pull humpbacks/humpback-center:1.2.4
$ docker run -d -ti --net=host --restart=always \
--name=humpback-center \
-e HUMPBACK_SITEAPI=http://192.168.2.80:8012/api \
-e CENTER_LISTEN_PORT=:8589 \
-e CENTER_API_ENABLECORS=true \
-e DOCKER_CLUSTER_URIS=zk://192.168.2.80:2181,192.168.2.81:2181,192.168.2.82:2181 \
-e DOCKER_CLUSTER_NAME=humpback/center \
-v /opt/app/humpback-center/cache:/opt/humpback-center/cache \
-v /opt/app/humpback-center/logs:/opt/humpback-center/logs \
humpbacks/humpback-center:1.2.4
$ docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
a1640bf8c956 humpbacks/humpback-center:1.2.4 "./humpback-center" 15 minutes ago 45 seconds ago humpback-center
环境变量与参数
HUMPBACK_SITEAPI=http://192.168.2.80:8012/api Humpback-Web 站点地址,注意要带上 /api。
CENTER_LISTEN_PORT=:8589 Humpback Center 的 API 默认端口为:8589。
CENTER_API_ENABLECORS=true Humpback Center API 是否支持跨域访问。
DOCKER_CLUSTER_URIS=zk://192.168.2.80:2181,192.168.2.81:2181,192.168.2.82:2181 为先前配置的 Zookeeper 集群地址信息。
DOCKER_CLUSTER_NAME=humpback/center 集群名称,要与 Humpback Agnet 配置一致。
-v /opt/app/humpback-center/cache 集群容器信息持久化目录,建议不要手动更改与删除。
-v /opt/app/humpback-center/logs 系统日志目录。
系统角色
Humpback Website
Humpback 管理站点,主要提供系统可视化管理,功能为分组管理,权限管理,仓库镜像查询,集群管理。
Humpback Center
Humpback 集群中心,通过调度策略对集群实施容器批量创建、操作、删除、升级、故障迁移、实例调整等功能;同时负责集群节点的发现与管理。
Humpback Agent
Humpback 集群节点,集群中存在多个节点等待被调度,并在 Humpback Center 中被分组管理,通过节点发现模块注册到集群中心并维持心跳。
在管理分组时可以将 Humpback Agent 节点对应的 IP 地址加入到多个分组中,当发生容器调度时,组与组之间容器相互隔离互不影响。
参考网址: https://www.cnblogs.com/humin/p/6859690.html