zk集群搭建

下载就不说了,官网直接下载对应的版本解压

这边演示的是阿里云服务器,不是虚拟机


我的目录结构是这样的

drwxr-xr-x 2  502 games  4096 4月  28 16:07 bin
drwxr-xr-x 2  502 games  4096 8月   6 18:25 conf
drwxr-xr-x 3 root root   4096 5月   6 15:45 dataDir (新建,存放zk数据)
drwxr-xr-x 3 root root   4096 4月  22 09:47 dataLogDir (新建,存放数据日志)
drwxr-xr-x 5  502 games  4096 2月  10 19:29 docs
drwxr-xr-x 2 root root   4096 4月  21 17:30 lib
-rw-r--r-- 1  502 games 11358 9月  13 2018 LICENSE.txt
drwxr-xr-x 2 root root   4096 4月  22 09:47 logs (新建,存放日志文件)
-rw-r--r-- 1  502 games   432 2月  10 18:00 NOTICE.txt
-rw-r--r-- 1  502 games  1560 2月   7 21:54 README.md
-rw-r--r-- 1  502 games  1347 2月   7 21:54 README_packaging.txt
  • 然后几个地方需要注意修改的
  1. 在根目录下,创建一个dataLogDir(需要在conf配置中指定位置)目录用于存放数据,
    创建一个logs目录用于存放日志文件
    创建dataLogDir 保存数据日志
mkdir dataDir
mkdir logs
mkdir dataLogDir
-----------------
drwxr-xr-x 3 root root   4096 5月   6 15:45 dataDir
drwxr-xr-x 3 root root   4096 4月  22 09:47 dataLogDir
drwxr-xr-x 3 root root   4096 4月  22 09:47 logs
  1. 在dataDir目录下创建一个myid文件用于记录该zookeeper在集群中的id(保证唯一就行)
    在其他服务器一次执行同样的步骤,比如A服务器myid指定为1,B服务器myid指定为2....
vim dataDir/myid
## 内容
1

#集群模式下配置一个文件myid,这个文件在daraDir目录下,
#这个文件里面就有配置的值,Zookeeper启动时读取此文件
#拿到里面的数据与zoo.cfg里面的配置信息比较从而判断到底是哪个server。
  1. 进入config目录---是这样的
-rw-r--r-- 1  502 games  535 5月   4 2018 configuration.xsl
-rw-r--r-- 1  502 games 2712 2月   7 21:54 log4j.properties
-rw-r--r-- 1  502 games  922 2月   7 21:54 zoo_sample.cfg
  1. 复制一份zoo_sample.cfg 官方也是建议复制一份,不要在事例配置文件修改
# 复制一份示例配置文件
cp ./zoo_sample.cfg conf/zoo.cfg
# 编辑 zoo.cfg
vim conf/zoo.cfg
  1. 进行编辑,可以先用默认配置,在末尾加入以下配置,
    在其他服务器加上同样的配置,但是myid需要更改保证每台服务器唯一就行,和Ip对应
    server后面的数字唯一标识是哪台服务器,便于寻找服务
    ip对应服务器ip,后面的数字简单点解释:2888是集群内部通信的端口和3888是选举端口
server.1=ip:2888:3888
server.2=ip:2888:3888
server.3=ip:2888:3888

下面是conf中的配置


# The number of milliseconds of each tick
#这个时间是作为Zookeeper服务器之间或者客户端与服务器之间维持心跳的时间间隔,也就是每个tickTime时间就会发送一下心跳。
tickTime=2000

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

# The number of ticks that can pass between
# sending a request and getting an acknowledgement
#这个配置项标示Leader与Follower之间发送消息、请求和应答时间长度,
#最长不能超过多少个tickTime的时间长度,总的时间长度就是5*2000=10秒。
syncLimit=5

# the directory where the snapshot is stored.
# do not use /tmp for storage, /tmp here is just
# example sakes.
#Zookeeper保存数据的目录,默认情况下,Zookeeper将数据的日志文件也保存在这里。
#这个改成自己知道的目录
dataDir=/usr/dev-environment/zk/dataDir
#短文本 这个路径需要新建的 
dataLogDir=/usr/dev-environment/zk/dataLogDir

# the port at which the clients will connect
#这个端口就是客户端连接Zookeeper服务器的端口。Zookeeper会监听这个端口,接受客户端的访问请求。
clientPort=2181
# the maximum number of client connections.
# increase this if you need to handle more clients
#maxClientCnxns=60

#autopurge.purgeInterval=1
#四字命令白名单
4lw.commands.whitelist=*

# server.A=ip:2888:3888
#集群需要配置的ip,'xxxxxip'改成真实的服务器Ip,后面的
#其中A是一个数字,标示这是第几号服务器;
#ip是这个服务器的ip地址;
#2888标示的是这个服务器与集群中的Leader服务器交换信息的端口(可以自定义);
#3888标示的是万一集群中Leader服务器挂了,需要一个端口来进行选举(可以自定义),
#选出一个新的Leader,而这个端口就是用来执行选举时服务器相互通信的端口。
#如果是伪集群的配置方式,由于B都是一样,所以不同的Zookeeper实例通信端口号不能一样,所以要给他们分配不同的端口号。

#我是这样配置的
server.1=ip:2888:3888
server.2=ip:2888:3888
server.3=ip:2888:3888

#支持外网访问互通(内网打通不用管)
quorumListenOnAllIPs=true
  • 进入bin目录分别在不同服务器启动服务
[root@cheng bin]# zkServer.sh restart
ZooKeeper JMX enabled by default
Using config: /usr/dev-environment/zk/bin/../conf/zoo.cfg
ZooKeeper JMX enabled by default
Using config: /usr/dev-environment/zk/bin/../conf/zoo.cfg
Stopping zookeeper ... STOPPED
ZooKeeper JMX enabled by default
Using config: /usr/dev-environment/zk/bin/../conf/zoo.cfg
Starting zookeeper ... STARTED
zkServer.sh start 启动zk服务
zkServer.sh stop 停止zk服务
zkServer.sh restart 重启zk服务
zkServer.sh status 查看zk服务状态

通过status查看状态可以看到选举状态

[root@VM_0_6_centos bin]# zkServer.sh status
ZooKeeper JMX enabled by default
Using config: /usr/dev-environment/zk/bin/../conf/zoo.cfg
Client port found: 2181. Client address: localhost.
Mode: follower(启动成功,选举为从节点)

另一台服务器

[root@cheng bin]# zkServer.sh status
ZooKeeper JMX enabled by default
Using config: /usr/dev-environment/zk/bin/../conf/zoo.cfg
Client port found: 2181. Client address: localhost.
Mode: leader (启动成功,选举为主节点)

你可能感兴趣的:(zk集群搭建)