1、下载解压

wget https://mirrors.tuna.tsinghua.edu.cn/apache/zookeeper/zookeeper-3.4.11/zookeeper-3.4.11.tar.gz

tar -zxvf  zookeeper-3.4.11.tar.gz && cd zookeeper-3.4.11

2、修改配置文件

cp conf/zoo_sample.cfg zoo.cfg

vim zoo.cfg

tickTime=2000

dataDir=/var/lib/zookeeper/

initLimit=5

syncLimit=2

clientPort=2181

server.1=172.16.2.116:2888:3888

server.2=172.16.2.225:2888:3888

server.3=172.16.2.115:2888:3888

server.4=172.16.2.240:2888:3888

server.5=172.16.2.241:2888:3888

  • 2888端口号是服务器与集群中的leader服务器交换信息的端口
  • 3888端口号是zookeeper与其他应用程序通信的端口,万一集群中的leader服务器挂了,需要一个端口来重新进行选举,选出新的leader,而这个端口就是用来执行选举时候服务器互相通信的端口
  • initLimit:这个配置是用来配置zookeeper接受客户端(这里所说的客户端不是用户连接zookeeper服务器的客户端,而是zookeeper服务器集群中连接到leader的follower服务)初始化连接时最长能接受多少个心跳时间间隔数。当已经超过10个心跳的时间(也就是tickTime)长度之后zookeeper服务器还没有接收到客户端返回的信息,那么表示这个客户端连接失败。总时间长度是10*2000=20秒。
  • syncLimit:这个配置标识leader与follower之间发送消息,请求和答应时间长度,最长不能超过多少个tickTime的时间长度,总时间长度是5*2000=10秒
  • 如果是伪集群的配置方式,由于ip都是一样的,所以不同的zookeeper实例通信端口号不能一样,所以要给它们分配不同的端口号

3、创建/var/lib/zookeeper快照目录,并创建server id文件。

$sudo mkdir /var/lib/zookeeper

$ cd /var/lib/zookeeper

在该目录下创建名为myid的文件,内容为1(这个值随server而改变,后面会提到)。

4、将server1上已经配置好的/home/hanli/zookeeper-3.4.11/和/var/lib/zookeeper两个目录分别拷贝至server2和server3。然后将其上的/var/lib/zookeeper/myid的内容修改为2和3.

5、启动Zookeeper

一次启动三台服务器,进入Zookeeper-3.4.5目录下,执行如下启动命令:

[root@master] /home/hanli/zookeeper-3.4.11/bin$ ./zkServer.sh start

注:启动第一台的时候可能会报错,提示zoo2和zoo3,等全部启动完成之后就不会报错了。

ansible安装集群

1、tasks/main.yml

---
- name: unzip zookeeper
unarchive: src=zookeeper-3.4.11.tar.gz dest=/usr/local
- name: configuration file
copy: src=zoo.cfg dest=/usr/local/zookeeper-3.4.11/conf/zoo.cfg
- name: mkdir dataDir
file: path=/var/lib/zookeeper state=directory
- name: touch myid
file: path=/var/lib/zookeeper/myid state=touch
- name: touch myid file
shell: echo {{ myid }} > /var/lib/zookeeper/myid

2、files/zoo.cfg

tickTime=2000
initLimit=10
syncLimit=5
dataDir=/var/lib/zookeeper
dataLogDir=/var/lib/zookeeper
clientPort=2181
server.1=172.16.2.116:2888:3888
server.2=172.16.2.225:2888:3888
server.3=172.16.2.115:2888:3888
server.4=172.16.2.240:2888:3888
server.5=172.16.2.241:2888:3888

3、/etc/ansible/hosts

[test]
172.16.2.225 myid=2
172.16.2.115 myid=3
172.16.2.116 myid=1
[backup]
172.16.2.240 myid=4
172.16.2.241 myid=5

4、入口zookeeper.yml

---
- hosts: all
remote_user: root
roles:
- zookeeper

5、ansible all -m shell -u root -a '/usr/local/zookeeper-3.4.11/bin/zkServer.sh start'

ansible roles实践 zookeeper集群部署的更多相关文章

  1. Centos6下zookeeper集群部署记录

    ZooKeeper是一个开放源码的分布式应用程序协调服务,它包含一个简单的原语集,分布式应用程序可以基于它实现同步服务,配置维护和命名服务等. Zookeeper设计目的 最终一致性:client不论 ...

  2. 分布式协调服务之Zookeeper集群部署

    一.分布式系统概念 在聊Zookeeper之前,我们先来聊聊什么是分布式系统:所谓分布式系统就是一个系统的软件或硬件组件分布在网络中的不同计算机之上,彼此间通过消息传递进行通信和协作的系统:简单讲就是 ...

  3. HBase集成Zookeeper集群部署

    大数据集群为了保证故障转移,一般通过zookeeper来整体协调管理,当节点数大于等于6个时推荐使用,接下来描述一下Hbase集群部署在zookeeper上的过程: 安装Hbase之前首先系统应该做通 ...

  4. Zookeeper集群部署

    一. 部署前的准备工作 保证各个主机之间能够正常通信,最好是在同一网段. 修改host文件,加入IP和主机名的映射.方法为修改/etc/hosts和etc/hostname文件,不同的Linux发行版 ...

  5. 消息中间件kafka+zookeeper集群部署、测试与应用

    业务系统中,通常会遇到这些场景:A系统向B系统主动推送一个处理请求:A系统向B系统发送一个业务处理请求,因为某些原因(断电.宕机..),B业务系统挂机了,A系统发起的请求处理失败:前端应用并发量过大, ...

  6. docker环境下solrcloud+zookeeper集群部署教程

    前言:两个月前的16年11月份完成的配置,使用的solr6.1和zookeeper3.4,刚刚写成blog,目前版本可能有小版本的变化. 本例完成结果为:在docker环境下部署solrcloud集群 ...

  7. Zookeeper集群部署与配置(三)

    在上一篇博客中我们讲解了<Zookeeper的单机配置>,此篇博客将继续介绍Zookeeper的集群部署与配置. 环境 集群配置的环境与单机配置的环境相同,唯一不同的就是集群是在多台服务器 ...

  8. Zookeeper集群部署及报错分析

    安装 下载压缩包 解压 修改zoo.cfg文件 创建myid文件 启动 自启动配置 有时间再补hhh 报错处理 很荣幸的遇到了大部分报错,日志再zookeeper目录的bin下的zookeeper.o ...

  9. Zookeeper 集群部署的那些事儿

    简介 额...., &*$% 淘气! ZooKeeper 是 Apache 的一个顶级项目,为分布式应用提供高效.高可用的分布式协调服务. ZooKeeper本质上是一个分布式的小文件存储系统 ...

随机推荐

  1. JAVA中价格金额的存储类型

    在java项目中,我们会遇到价格.金额的数据,这时候我们java中应该用BigDecimal类型,数据库用decimal类型, 长度可以自定义, 如18; 小数点我们项目中用的是2, 保留2位小数. ...

  2. 1266 - Points in Rectangle

    1266 - Points in Rectangle    PDF (English) Statistics Forum Time Limit: 2 second(s) Memory Limit: 3 ...

  3. Manthan, Codefest 16 D. Fibonacci-ish

    D. Fibonacci-ish time limit per test 3 seconds memory limit per test 512 megabytes input standard in ...

  4. 如何利用Python实现Office在线预览

    目前,市场对于Office在线预览功能的需求是很大的.对于我们用户本身来说,下载Office文件后再实现预览是极其不方便的,何况还有一些不能打开的专业文档.压缩文件等.此时,能提供在线预览服务的软件就 ...

  5. 实现golang io.Writer支持按照天为单位分割日志

    golang中的日志不支持按照天分割,很多开源的日志包都是只支持按照文件大小分割日志,不太利于生产环境中的使用.因此我实现了timewriter,支持: 实现按照天为单位分割日志,可以完美支持gola ...

  6. Adversarially Robust Generalization Requires More Data

    目录 概 主要内容 高斯模型 upper bound lower bound 伯努利模型 upper bound lower bound Schmidt L, Santurkar S, Tsipras ...

  7. Java初学者作业——声明变量储存商品信息并进行输出

    返回本章节 返回作业目录 需求说明: 声明变量存储商品信息(商品名称.商品价格和商品库存数量). 输出商品信息. 实现思路: 打印商品商品信息实现步骤: 声明变量存储商品信息.为变量赋值. 输出变量的 ...

  8. 美和易思 MOOT去鼠标检测,快进,倍速,自动下一章

    F12 放到 console 直接运行即可 或者油猴添加新脚本 核心去除网页绑定焦点事件代码: if (!-[1,] && !window.XMLHttpRequest || navi ...

  9. emqx启用redis认证插件

    本次测试使用的是免费版的 emqx-windows-4.3.10 版本 1.修改redis插件 emqx_auth_redis.conf  设置用户名密码,    auth.redis.passwor ...

  10. CSS基础 装饰 元素本身隐藏和显示效果及案例

    1.visibility:hidden; 2.display: none: 区别: 1.visibility:hidden 隐藏元素本身,且在网页中 占位置 2.display:none; 隐藏元素本 ...