运维之我的docker-compose快速创建zookeeper集群 推荐
2017-03-20 22:16
811 查看
很多时候大家不同的容器想要不用启动参数这个时候不妨使用脚本封装来实现,官方也很推荐这个做法,这里介绍下如何使用脚本传参快速启动一个zookeeper集群。
zookeeper集群大家知道有部分通用配置,和一些动态配置如果用一个简单的zookeeper实例无法正常启动集群,所以我们的节点列表和节点ID是需要动态传入的所以下面的脚本的${ZK_ID}和${ZK_LIST}是需要你使用compose的配置传入的。
zookeeper启动脚本
https://code.aliyun.com/nginxs/docker/blob/master/pkg/zookeeper/docker-entrypoint.sh
重点来了我们要从docker-compose.yml传参到启动脚本下面通过environment定义环境变量把参数传递到容器的启动脚本,完成自定义部分内容https://code.aliyun.com/nginxs/docker/blob/master/pkg/zk_cluster/docker-compose.yml
启动我的compose服务这里可以看到其实zk1,zk2,zk3每个都是一个service,而且compose会为这个应用创建一个默认的桥接网络
测试zookeeper集群
下面是一些我写的其它帮助文档: 0. docker安装阿里云加速你的docker
运行你第一个镜像实例-docker容器
docker命令参数
docker仓库使用和镜像提交
docker镜像构建构建及参数详解
docker镜像的导入导出
docker的网络
docker网络的测试示例
docker数据卷
docker的api和python sdk
单机多容器的编排-compose
docker-swarm集群的管理-swarm
docker-swarm集群管理详解
docker-swarm集群中删除节点和服务
docker自建仓库Registry
使用技巧和推荐docker集群web页面管理工具
不要再给你的docker安装ssh server
compose快速创建zookeeper集群
zookeeper集群大家知道有部分通用配置,和一些动态配置如果用一个简单的zookeeper实例无法正常启动集群,所以我们的节点列表和节点ID是需要动态传入的所以下面的脚本的${ZK_ID}和${ZK_LIST}是需要你使用compose的配置传入的。
zookeeper启动脚本
https://code.aliyun.com/nginxs/docker/blob/master/pkg/zookeeper/docker-entrypoint.sh
[root@test-node pkg]# cat zookeeper/docker-entrypoint.sh #!/bin/bash ####################################################### # author : baishaohua # # mail : nginxs@126.com # # blog : new.nginxs.net # # msg : startup zookeeper cluster for docker # ####################################################### #Shell Base Env ZK_HOME="/usr/local/zookeeper" ZK_CONF="${ZK_HOME}/conf/zoo.cfg" ZK_DATA="/var/lib/zookeeper" ZK_CONF_TXT="tickTime=2000\ninitLimit=10\nsyncLimit=5\ndataDir=${ZK_DATA}\nclientPort=2181" echo "zookeeper is start" #init config echo -e ${ZK_CONF_TXT} >${ZK_CONF} #ZK_NODE_LIST from docker argv for i in ${ZK_NODE_LIST} do echo "$i" >>${ZK_CONF} done echo "${ZK_ID}" >${ZK_DATA}/myid #this shell main function ${ZK_HOME}/bin/zkServer.sh start-foreground
Dockerfile文件配置
[root@test-node3 pkg]# cat zookeeper/Dockerfile FROM registry.cn-hangzhou.aliyuncs.com/forker/centos7:last MAINTAINER baishaohua <nginxs@126.com> #start up configure 下面自动把zookeeper安装包安装到/usr/local/zookeeper目录 ADD zookeeper-3.5.1-alpha.tar.gz /usr/local/ RUN mv /usr/local/zookeeper-3.5.1-alpha /usr/local/zookeeper && mkdir -p /var/lib/zookeeper/ RUN yum -y install make gcc libgcc gcc-c++ glibc-devel java-1.8.0-openjdk COPY docker-entrypoint.sh /usr/bin/ #ENV and CMD 配置容器默认启动脚本和开放2181端口 CMD ["/usr/bin/docker-entrypoint.sh"] EXPOSE 2181
重点来了我们要从docker-compose.yml传参到启动脚本下面通过environment定义环境变量把参数传递到容器的启动脚本,完成自定义部分内容https://code.aliyun.com/nginxs/docker/blob/master/pkg/zk_cluster/docker-compose.yml
[root@test-node pkg]# cat zk_cluster/docker-compose.yml version: '3' services: zk1: image: registry.cn-hangzhou.aliyuncs.com/forker/zookeeper restart: always container_name: zk1 ports: - "2181:2181" environment: ZK_ID: 1 ZK_NODE_LIST: server.1=zk1:3181:4181 server.2=zk2:3181:4181 server.3=zk3:3181:4181 zk2: image: registry.cn-hangzhou.aliyuncs.com/forker/zookeeper restart: always container_name: zk2 ports: - "2182:2181" environment: ZK_ID: 2 ZK_NODE_LIST: server.1=zk1:3181:4181 server.2=zk2:3181:4181 server.3=zk3:3181:4181 zk3: image: registry.cn-hangzhou.aliyuncs.com/forker/zookeeper restart: always container_name: zk3 ports: - "2183:2181" environment: ZK_ID: 3 ZK_NODE_LIST: server.1=zk1:3181:4181 server.2=zk2:3181:4181 server.3=zk3:3181:4181
启动我的compose服务这里可以看到其实zk1,zk2,zk3每个都是一个service,而且compose会为这个应用创建一个默认的桥接网络
[root@test-node3 zk_cluster]# docker-compose up -d WARNING: The Docker Engine you're using is running in swarm mode. Compose does not use swarm mode to deploy services to multiple nodes in a swarm. All containers will be scheduled on the current node. To deploy your application across the swarm, use `docker stack deploy`. Creating network "zkcluster_default" with the default driver Creating zk3 Creating zk1 Creating zk2
测试zookeeper集群
[root@test-node zk_cluster]# echo "conf"|nc localhost 2181 clientPort=2181 secureClientPort=-1 dataDir=/var/lib/zookeeper/version-2 dataDirSize=67109393 dataLogDir=/var/lib/zookeeper/version-2 dataLogSize=67109393 tickTime=2000 maxClientCnxns=60 minSessionTimeout=4000 maxSessionTimeout=40000 serverId=1 initLimit=10 syncLimit=5 electionAlg=3 electionPort=4181 quorumPort=3181 peerType=0 membership: server.1=zk1:3181:4181:participant server.2=zk2:3181:4181:participant server.3=zk3:3181:4181:participant version=100000000
下面是一些我写的其它帮助文档: 0. docker安装阿里云加速你的docker
运行你第一个镜像实例-docker容器
docker命令参数
docker仓库使用和镜像提交
docker镜像构建构建及参数详解
docker镜像的导入导出
docker的网络
docker网络的测试示例
docker数据卷
docker的api和python sdk
单机多容器的编排-compose
docker-swarm集群的管理-swarm
docker-swarm集群管理详解
docker-swarm集群中删除节点和服务
docker自建仓库Registry
使用技巧和推荐docker集群web页面管理工具
不要再给你的docker安装ssh server
compose快速创建zookeeper集群
相关文章推荐
- docker 使用compose安装zookeeper集群
- 使用 k8s/docker-compose 部署 zookeeper集群
- 运维人员的解放----Docker快速部署 推荐
- 大数据虚拟化零起点-6基础运维第五步-使用CLI创建Apache Hadoop集群 推荐
- 使用docker容器创建Kafka集群管理、状态保存是通过zookeeper实现,所以先要搭建zookeeper集群
- [推荐]Hadoop+HBase+Zookeeper集群的配置
- 论坛源码推荐(5月22日):快速创建iOS原生图表 视图间的dynamic转场动画
- 有了Docker,一分钟就可以在你的笔记本上快速部署Spark集群
- Microsoft Hyper-V Server 2012快速上手之用脚本创建一台完整的虚拟机 推荐
- Swarm创建docker集群:服务发现-etcd
- 推荐php开发利器 快速创建web应用
- 源码推荐(8.07):快速创建Settings屏幕,icon间优雅的过渡
- Swarm创建docker集群:服务发现-配置文件法
- 创建docker swarm集群的两种方式
- Dockerfile创建Linux/CentOS6.x Nginx MySQL Tomcat PHP(LNMTP)镜像 推荐
- 通过Mongo, Docker和Rancher创建Node.js应用集群
- kvm快速创建虚拟机 推荐
- 源码推荐(9.14):自定义控制器POP手势动画,快速创建model
- linux服务器集群运维经验 推荐