本文是数人云9月22日线上微信群分享的文章实录。数人云容器管理面板Crane开源以来,很多小伙伴对它还不是非常了解,数人云工程师金鑫从Crane技术背景、环境准备和使用步骤等方面为大家做了详细的介绍,并整理大家常见的问题逐一进行了解答。
金鑫
数人云工程师
Docker1.12发布已有一段时间了,像Swarm mode模式、应用编排、滚动更新、健康检查、服务发现等等、这些功能给开发者们带来了更多惊喜,之前在安装 Docker之外,还要安装其它的组件来配合完成,比如Mesos-Marathon,比如K8S,现在Docker决定大包大揽,将这些功能整合到了一起。安装Docker1.12以后,通过命令行,几条命令,Swarm集群,overlay网络,服务发现等均可创建完成。
这里再提一下Docker1.12的服务发现和负载均衡是结合在一起实现的,有两种方式,一种是DNS轮询,一种是IPVS;IPVS这种方式,Docker为每个服务都分配来一个虚拟ip,这个ip是为服务做保留,不是对外提供服务。在创建服务时,通过entrypoint-mode的参数来确定是基于dnsrr(轮询)还是VIP(IPVS)的服务发现方式。
考虑到基于DNS的方式做负载均衡,会有时效性的问题,DNS生效的时间导致不能实时反映服务的变化情况。会有服务发现不准确的情况。而且,IPVS支持udp协议。稍有遗憾的是,不支持会话保持,我们在Crane发布的服务默认的服务发现的方式是后一种,IPVS的方式也是Docker1.12默认的服务发现方式。
Docker1.12的功能很诱人,但是在使用上来讲,一旦服务数量增加,单纯靠命令行管理,毕竟不是很方便,所以,数人云开发了这样一款工具,并且把它开源出来,供大家更方便的使用新版 Docker带来的新特性。
Crane!!!
背景
Crane作为国内第一款基于SwarmKit的容器管理工具,开源之后,小伙伴们试用热情高涨,也有小伙伴表示,体验时会在使用的某一处卡住,无法进行进一步的体验。这里针对大家反馈比较多的使用问题,做一点说明,避免环境原因,影响到小伙伴们的Crane体验。
环境准备
目前推荐的主机系统是CentOS7或者Ubuntu14.04,及以上版本,虽然Docker新版本已经可以在Mac上安装,考虑不是主流,该版本未在Mac下的测试。
1、请确保Docker安装版本 >=1.12, 并确保Docker正常运行.(如何安装和配置Docker请参考https://docs.docker.com/engine/installation/)
按照如上说明,安装的Docker版本因该是1.12.1。service docker restart,启动Docker。
2、请确保docker-compose已经正确安装.(如何安装docker-compose请参考https://docs.docker.com/compose/install/)
注意,这里安装后的docker-compose版本是1.8.0,如果您已经按照过较早版本的docker-compose,需要按照上述的地址更新到新版本,因为程序启动的语法是按照docker-compose的2.0语法。版本较早会影响程序的安装。
3、请确保主机的selinux和firewalld为关闭状态,如果不关闭,会影响Docker的一些功能使用。
关闭selinux 方法:vim /etc/sysconfig/selinux 设置 SELINUX=disabled 并重启系统
关闭firewalld方法:CentOS 7.0默认使用的是firewall作为防火墙,如果是Ubuntu,可以跳过这步。
systemctl status firewalld.service#查看firewall状态 systemctl start firewalld.service#启动firewall systemctl stop firewalld.service#停止firewall systemctl disable firewalld.service#禁止firewall开机启动
4、确保iptables对Docker没有规则限制,通常来讲,系统默认即可,如果您的环境内基于iptables的防火墙限制,建议删除。因为Swarm mode的服务发现和负载均衡均利用到iptables的转发规则。避免使用中遇到限制,需要将iptables的限制 规则清空。在之前公众号的《数人云工程师手记 | 基于 Docker 1.12 Swarm 的集群管理开发实践》对Swarm的服务发现及负载均衡有详细的介绍。有想深入了解的小伙伴可以在微信公众号内查找到该文章。
5、请确保NTP服务开启,收到的反馈比较多的是安装脚本执行过程中提示:
NTP is unsynchronised, Please confirm your ntp status before continue.
解决方式:以CentOS7为例,安装NTP服务,
yum install -y ntp && systemctl start ntpd && systemctl enable ntpd && systemctl disable chronyd ntpdate time.nist.gov
ntpsat 查看,显示如下正常,
synchronised to NTP server (59.46.44.253) at stratum 3 time correct to within 62 ms polling server every 1024 s
若仍出现unsynchronised字样,需要重启ntpd服务
service ntpd restart
6、确保开启Docker的TCP连接端口。
centos:
vim /lib/systemd/system/docker.service
ExecStart=/usr/bin/dockerd -H tcp://0.0.0.0:2375 -H unix:///var/run/docker.sock
systemctl daemon-reload && service docker restart
ubuntu:
vim /etc/default/docker
OCKER_OPTS="-H tcp://0.0.0.0:2375 -H unix:///var/run/docker.sock"
service docker restart
2375为Docker默认的tcp通讯端口,稍后在使用主机连接时需要用到。
至此,基础环境准备完毕!
安装Crane的主机默认会作为集群的管理节点,可以直接发布服务。
作为刚开始接触1.12的同学可以先按向导模式来发布,这样更便于了解新增的Docker运行参数,选择向导模式创建。这里对参数做一下介绍。然后我们发布一个ZooKeeper的集群作为演示的demo。
示例: 本地docker run命令为:
docker run centos bash -c "while [ true ]; do echo 'this is a test'; sleep 10; done;" 命令行输入 bash 参数输入两项 -c while [ true ]; do echo 'this is a test'; sleep 10; done;
发布ZooKeeper集群。因为表单较长,这里摘取了主要参数。
2181 tcp 2181 2888 tcp 2888 3888 tcp 3888
环境变量:
2181 tcp 2182 2888 tcp 2889 3888 tcp 3889
2181 tcp 2183 2888 tcp 2890 3888 tcp 3890
点击部署,等待镜像拉取成功后,(点击容器id–终端)执行./bin/zsServer.sh status 查看该容器的节点属性leaderorfollow
发布好的服务可以直接保存为模版。保存好的模版可以通过快捷创建,直接使用。也可以通过bundle的文件来快速部署应用。
点击项目-创建项目-DAB创建-输入项目名称-试试看中选择wordpress-部署。(也可以直接读取已有的DAB文件来发布。)
镜像拉取会有一小段时间,等待服务运行,访问主机的8000的端口,即可访问刚刚创建的应用。
Crane提供更直观的方式创建网络、添加主机、管理已发布的服务。详细的操作手册可以参考我们的线上的使用手册(https://dataman.gitbooks.io/crane/content)
原文标题:数人云工程师手记 | 新手快速入门Docker最新版管理工具