搭建zk集群,起码保证3台虚拟机的配置,本人使用的虚拟机环境为wm14+centos7+jdk1.8

  • 下载地址

  zk的tar包下载地址:http://mirror.bit.edu.cn/apache/zookeeper/

  • 安装方式

  下载好tar包后上传到自己的虚拟机文件夹中,这里我自己创建了一个专门存放tar包的目录soft

  

  使用命令:tar -zxvf zookeeper-3.4.13.tar.gz -C /usr/local/installsoft

将tar包解压到另一个目录installsoft中。

  

  为了方便后续直接使用脚本启动不必进入bin目录启动,我们配置一下环境变量。

  使用命令:vim /etc/profile

  

  环境变量中增加:

      export ZK_HOME=/usr/local/installsoft/zookeeper-3.4-13

   export PATH=$ZK_HOME/bin:$PATH

  • 集群配置

  进入zk目录

具体每个目录每个文件什么含义就不在此多说,有兴趣的可以上网找到,我们这里配置集群主要关注conf文件夹。进入该文件夹。

这里要提一句,因为本日志是在整个集群都搭建好之后才过来记录的,所以这个部分有个小步骤省略掉了,就是修改配置文件的名称,将原配置文件重命名成了zoo.cfg。

命令:mv 原文件.cfg zoo.cfg

打开配置文件看看内容:命令:vim zoo.cfg

  其实里面的配置内容有很多,但是为了快速的搭建集群,此配置文件只写了一点点,比如:

   dataDir=/usr/local/installsoft/zookeeper-3.4.13/data (数据存储目录,一定要记得按照路径在外面建立文件夹,不然会启动报错)

       dataLogDir=/usr/local/installsoft/zookeeper-3.4.13/log(日志存储目录,一定要记得按照路径在外面建立文件夹,不然会启动报错)

       server.1=ip:2888:3888(集群节点1的配置,包括集群节点的IP,以及zk内部通讯的端口,对外通讯的端口)

       server.2=ip:2888:3888(集群节点2的配置,包括集群节点的IP,以及zk内部通讯的端口,对外通讯的端口)

       server.3=ip:2888:3888(集群节点3的配置,包括集群节点的IP,以及zk内部通讯的端口,对外通讯的端口)

  当然,集群节点可以选择配置多个,因为机器原因,我虚拟机最多启动3个就已经卡炸,所以只有3个节点。另外的配置条目具体意思可以自行网上查找,挺多的,这里不做赘述。

  

  zk目录下新建两个文件夹。

另外重点说一下,这里的data目录是一定要存在的,但是log文件夹其实可以不用,zk会将日志自动存储到默认位置,但是我没有发现该默认日志文件的位置,如有知晓的同学,可以告知我一下,万分感谢。

  进入data文件夹。

  使用命令:vim myid

    linux默认机制,没有文件创建文件并打开,省略一个创建的步骤。

    该文件内容填什么?其实内容很简单,就是刚刚配置的集群部分,server.X的X,类似用来表明身份的意思,也就是身份证,表示我这个zk服务器是集群中的第几个节点,比如我这台机器IP是192.168.131.101,集群配置为server.1=192.168.131.101:2888:3888,那么我的myid文件就写个1即可。

其余的集群机器可以照着这个路数完全复制过去,仅仅需要注意myid部分的值。

  • 启动zk集群

     因为我们前面配置了环境变量,所以就不用像启动别的脚本那样还要进入到bin目录下去执行,任意位置,输入:

zkServer.sh start

等输出完毕之后,可以看到

代表启动完毕。

之后输入:

zkServer.sh status

    可以查看集群节点状态。

  

  

其余命令:

   zkServer.sh restart(重启)

    zkServer.sh stop (停止)

  • 问题

     在搭建完成之后,启动集群,命令zkServer.sh start启动正常输出,但是使用zkServer.sh status就在报错,本想通过日志查看一下具体报错问题,但是因为上面也说过,没找到日志文件,导致该问题困扰了很久,网上也搜了不少,总结一下:

  1.   防火墙问题,记得关闭防火墙。
  2.        zoo.cfg文件配置内容,仔细检查,特别是上面我说的文件夹的创建,一旦忘记或者指定到了zk读取不到的目录,就会导致启动失败。
  3.        myid内容写错或文件位置错误。
  4.        一定要把集群的机器全部启动之后再来看status,不然就报错,因为配置了集群,但是其余的节点没启动起来,选举没法执行,会导致当前启动的节点一直观望,也就获取不到具体的节点状态了。(这也是我这次解决问题的使用方法)

zookeeper学习记录第二篇-----安装、配置、启动的更多相关文章

  1. ZooKeeper学习总结 第二篇:ZooKeeper深入探讨(转载)

    其实zookeeper系列的学习总结很早就写完了,这段时间在准备找工作的事情,就一直没有更新了.下边给大家送上,文中如有不恰当的地方,欢迎给予指证,不胜感谢!. 1. 数据模型 1.1. 只适合存储小 ...

  2. ZooKeeper学习总结 第二篇:ZooKeeper深入探讨

    其实zookeeper系列的学习总结很早就写完了,这段时间在准备找工作的事情,就一直没有更新了.下边给大家送上,文中如有不恰当的地方,欢迎给予指证,不胜感谢!. 1. 数据模型 1.1. 只适合存储小 ...

  3. MySQL学习【第二篇安装】

    一.Mysql安装方式 1.安装方式 1.rpm,yum安装 安装方便,安装速度快,但无法定制 2.二进制安装 不需要安装,解压即用,不能定制功能 3.编译安装 可定制,安装很慢,安装分为四个步骤 1 ...

  4. JavaWeb学习总结第二篇--第一个JavaWeb程序

    JavaWeb学习总结第二篇—第一个JavaWeb程序 最近我在学院工作室学习并加入到研究生的项目中,在学长学姐的带领下,进入项目实践中,为该项目实现一个框架(用已有框架进行改写).于是我在这里记录下 ...

  5. 我是如何将网站全站启用Https的?-记录博客安装配置SSL证书全过程

    评论»   文章目录 为什么要Https 如何选择Https 安装部署SSL证书 平滑过渡Https 搜索引擎的响应 启用Https小结 正如大家所看到的,部落全站已经启用了Https访问了,连续几天 ...

  6. 从0开始搭建SQL Server AlwaysOn 第二篇(配置故障转移集群)

    从0开始搭建SQL Server AlwaysOn 第二篇(配置故障转移集群) 第一篇http://www.cnblogs.com/lyhabc/p/4678330.html第二篇http://www ...

  7. RabbitMQ学习总结 第二篇:快速入门HelloWorld

    目录 RabbitMQ学习总结 第一篇:理论篇 RabbitMQ学习总结 第二篇:快速入门HelloWorld RabbitMQ学习总结 第三篇:工作队列Work Queue RabbitMQ学习总结 ...

  8. 学习KnockOut第二篇之Counter

                                                                        学习KnockOut第二篇之Counter        欲看此 ...

  9. Zookeeper、Solr和Tomcat安装配置实践

    Zookeeper.Solr和Tomcat安装配置实践

随机推荐

  1. BZOJ1021 [SHOI2008]循环的债务

    Description Alice.Bob和Cynthia总是为他们之间混乱的债务而烦恼,终于有一天,他们决定坐下来一起解决这个问题. 不过,鉴别钞票的真伪是一件很麻烦的事情,于是他们决定要在清还债务 ...

  2. 【转载】MySQL数据库可以用任意ip连接访问的方法

    通过CMD命令行修改数据库表的一个字段的值,实现连接,访问. 第一步.找到MYSQL软件安装所在的bin目录: (1)cd\当前目录 (2)指定MYSQL安装的bin目录 (3)输入 -h local ...

  3. PHP开发支付宝之电脑网站支付--流程简介

    前言 前端时间自己开发了一个drupal的支付宝模块,现在整理一下过程,因为支付宝官方网站提供的接口及文档都是新接口的,而且使用新接口的过程比较麻烦一点,所以整理一下 1.支付宝的账号必须经过企业资格 ...

  4. SSM 框架-02-MyEclipse 2017 安装与破解

    SSM 框架-02-MyEclipse 2017 安装与破解 现在在学J2EE,然后使用的工具就是 MyEclipse,现在就抛弃 Eclipse 了,我就不多说它俩的区别了,但是 MyEclipse ...

  5. Mybatis学习第二天——mapper的动态代理

    传统的Dao层开发通过接口与实现类的方式,Mybatis中通过mapper动态代理是需要定义接口. 1.传统Dao层封装 那么可以将公共资源提取出来,剩余的封装成方法来实现.下面是UserDaoImp ...

  6. malloc()函数,calloc()函数,realloc()函数,free()函数

    malloc()函数 头文件:#include <stdlib.h> malloc() 函数用来动态地分配内存空间,其原型为:void* malloc (size_t size); [参数 ...

  7. redis使用方式

    关于Jedis连接Linux上的redis出现 DENIED Redis is running in protected mode问题的解决方案 1.修改redis.conf配置文件,将绑定的ip地址 ...

  8. 基于yaf框架和uploadify插件,做的一个导入excel文件,查看并保存数据的功能

    思路: 1.首先,页面前端,上传附件,提交给后台,并带一个随机性的参数(可以用时间戳): 2.后端接收附件,做一系列的逻辑处理,无误后,将对应的文件存储在上传的目录下: 3.然后前端,上传附件成功后, ...

  9. Visual Staudio 2015 打开指定文件,定位到指定文件目录下

    Visual Staudio 2015 项目定位文件位置 每次使用的Visual Staudio 2015 写代码的时候总是打开了.cs文件或xaml文件时, 还要手动去找该 文件位置,每次都要翻好大 ...

  10. ScriptManager的使用方法 .(转)

    从这一节开始我将和大家一起学习ASP.NET AJAX的服务器端控件的用法.首先,安装ASPAJAXExtSetup.msi,可以到微软官方网站上去下载.安装之后当你新建项目的时候会多出一个ASP.N ...