Zookeeper 安装配置与集群

小感慨一下

眼看着2018年就要过去了,工作也有4年的时间了, 从大学实习到现在,期间换过不同的公司,去魔都闯荡过,虽然最终又回到了最开始的地方,但也算得上是去过远方了。
突然有一天打开csdn 个人中心。我看这个界面陷入了沉思:这四年的工作中我到底积累了什么? 我分享了什么? 发现什么也没有,我觉得我得做点什么。也算是对自己之前工作的一种总结和积累 (ps:主要是不能对不起我唯一的一个粉丝 O(∩_∩)O哈哈~)

对Zookeeper的介绍 ( 内容出处 )

  • ZooKeeper是一种分布式协调服务,用于管理大型主机。在分布式环境中协调和管理服务是一个复杂的过程。ZooKeeper通过其简单的架构和API解决了这个问题。ZooKeeper允许开发人员专注于核心应用程序逻辑,而不必担心应用程序的分布式特性。
  • ZooKeeper框架最初是在“Yahoo!"上构建的,用于以简单而稳健的方式访问他们的应用程序。 后来,Apache ZooKeeper成为Hadoop,HBase和其他分布式框架使用的有组织服务的标准。 例如,Apache HBase使用ZooKeeper跟踪分布式数据的状态。

环境配置(下载

  1. jdk 1.8
  2. zookeeper-3.4.9
  3. centos 64位

安装配置

jdk 安装

作为一枚标准的java开发程序猿, jdk的安装时不可避免的, 同时也是因为zookeeper需要基于jdk来运行。
我直接通过本地ssh上传到centos的

  1. 我已经上传的jdk
    在这里插入图片描述
  2. 通过tar -zxvf jdk-8u191-linux-i586.tar.gz 解压
    在这里插入图片描述
  3. 进入解压后的jdk目录, 通过pwd 查看完整目录
    在这里插入图片描述
    这个就是我jdk的目录,
  4. 添加环境变量 vim /etc/profile
    在这里插入图片描述
    在这里插入图片描述
export JAVA_HOME=自己jdk目录
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib:$CLASSPATH
export JAVA_PATH=${JAVA_HOME}/bin:${JRE_HOME}/bin
export PATH=$PATH:${JAVA_PATH}
  1. 环境变量添加完成后, source /etc/profile 使新增变量生效
  2. 通过javac -version 查看jdk是否安装成功
    在这里插入图片描述

问题:
在这里插入图片描述
安装glibc 就可以解决问题了
yum install glibc.i686

接下来安装Zookeeper

单机安装

  1. 上传好的zookeeper文件
    在这里插入图片描述

  2. 解压 (命令同上)
    在这里插入图片描述

  3. 进入zookeeper目录中,复制conf/zoo_sample.cfg 命名为zoo.cfg (具体配置在集群中讲解)
    在这里插入图片描述

  4. 在zookeeper中新建data,logs目录 mkdir 目录名
    在这里插入图片描述

  5. 修改zoo.cfg中的dataDir和dataLogDir
    在这里插入图片描述

  6. 进入到zookeeper安装目录, 通过./bin/zkServer.sh start启动 并通过jps` 查看启动结果
    在这里插入图片描述

  7. 单机版的安装很简单, 如果嫌弃每次启动zookeeper都需要进入到zookeeper的安装目录中,
    也可以将zookeeper添加到环境变量中
    在这里插入图片描述
    然后source /etc/profile 使新增变量生效

  8. 启动并查看启动结果
    在这里插入图片描述

集群安装

现在集群共有两种集群方式

  1. 集群
  2. 伪集群(zookeeper安装在同一个机器上, 只修改端口)
    我采用的集群, 在三台机器上安装zookeeper
  • 关于集群的节点数量选择

Zookeeper 集群中只要有过半的节点是正常的情况下,那么整个集群对外就是可用的。正是基于这个
特性,要将 ZK 集群的节点数量要为奇数(2n+1:如 3、5、7 个节点)较为合适

环境说明
服务器端口
192.168.87.1292181,2881:3881
192.168.87.1302181,2881:3881
192.168.87.1312181,2881:3881
  1. 129上的安装:基础安装同单机安装,只是在配置conf中需要添加其他的信息
    集群文件
server.1=192.168.87.129:2881:3881
server.2=192.168.87.130:2881:3881
server.3=192.168.87.131:2881:3881
  1. 在data目录中新建myid文件, 并将1写入文件中 echo 1 > myid
    在这里插入图片描述

  2. 另外两台机器可以通过scp远程复制过去
    在这里插入图片描述
    在这里插入图片描述

  3. 进入130,131服务器中的zookeeper下的data目录, 分别修改myid=2,myid=3

  4. 启动zookeeper, 通过zkServer.sh status 来查看集群是否成功
    在这里插入图片描述
    代表zookeeper集群 已经成功

备注:

  • 如果防火墙是iptables, 需要在添加以下3行
-A INPUT -m state --state NEW -m tcp -p tcp --dport 2181 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 2881 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 3881 -j ACCEPT
  • 然后重启防火墙
 service iptables restart
  • 查看防火墙的状态
 service iptables status
  • 关闭zookeeper
zkServer.sh stop

Zookeeper 参数说明

  1. tickTime=2000

tickTime 这个时间是作为 Zookeeper 服务器之间或客户端与服务器之间维持心跳的时间间隔,也就是每
个 tickTime 时间就会发送一个心跳。

  1. initLimit=10

initLimit 这个配置项是用来配置 Zookeeper 接受客户端(这里所说的客户端不是用户连接 Zookeeper
服务器的客户端,而是 Zookeeper 服务器集群中连接到 Leader 的 Follower 服务器)初始化连接时最长
能忍受多少个心跳时间间隔数。当已经超过 10 个心跳的时间(也就是 tickTime)长度后 Zookeeper 服
务器还没有收到客户端的返回信息,那么表明这个客户端连接失败。总的时间长度就是 10*2000=20 秒

  1. syncLimit=5

syncLimit 这个配置项标识 Leader 与 Follower 之间发送消息,请求和应答时间长度,最长不能超过多少
个 tickTime 的时间长度,总的时间长度就是 5*2000=10 秒

  1. dataDir

dataDir 就是Zookeeper 保存数据的目录,默认情况下Zookeeper 将写数据的日志文件也保存在
这个目录里

  1. clientPort

clientPort 这个端口就是客户端(应用程序)连接 Zookeeper 服务器的端口,Zookeeper 会监听这个端
口接受客户端的访问请求

  1. server.A=B:C:D

A 是一个数字,表示这个是第几号服务器
B 是这个服务器的 IP 地址
C 用来集群成员的信息交换,表示这个服务器与集群中的 Leader 服务器交换信息的端口;
D 是在 leader 挂掉时专门用来进行选举 leader 所用的端口

  1. myid

对应的IP机器上的对应的编号

到此zookeeper单机安装和集群安装已经全部完成。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值