zookeeper集群安装

zookeeper能做数据的发布/订阅(配置中心:disconf), 负载均衡(dubbo利用了zookeeper实现负载均衡), 命名服务, master选举(kafka  hadoop  hbase), 分布式队列,  分布式锁。

一: 单机版搭建

1. 准备工作,必须安装好JDK。

2. 建立文件夹,mkdir /usr/local/wulei

3. 下载好安装包, 上传到linux服务器里面。

4. 解压安装包 tar -zxvf  zookeeper-3.4.6.tar.gz

5. 进入zk目录,查看目录结构。cd /usr/local/wulei/zookeeper-3.4.6

6. 创建两个文件夹,用来存zk数据和日志。mkdir mydata    mkdir mydata-log

7. zk启动会默认找zoo.cfg文件,所以 cd conf 修改文件名  mv zoo_sample.cfg zoo.cfg

8. 修改文件参数

# 客户端与服务器或者服务器与服务器之间心跳检测时间
tickTime=2000
# 集群中的follower服务器(F)与leader服务器(L)之间初始连接时能容忍的最大时长
# 我们这里是10 * 2
initLimit=10
# 集群中的follower服务器(F)与leader服务器(L)之间通信最大有效时长为5 * 2
syncLimit=5

# zk存放myid信息跟一些版本,日志,跟服务器唯一的ID信息等
dataDir=/usr/local/wulei/zookeeper-3.4.6/mydata
# zk保存日志的目录
dataLogDir=/usr/local/wulei/zookeeper-3.4.6/mydata-log

# 客户端默认连接端口
clientPort=2181
# the maximum number of client connections.
# increase this if you need to handle more clients
#maxClientCnxns=60
#
# Be sure to read the maintenance section of the 
# administrator guide before turning on autopurge.
#
# http://zookeeper.apache.org/doc/current/zookeeperAdmin.html#sc_maintenance

9.  cd ../bin 执行 ./zkServer.sh start 启动zk服务器。

  • 1. 启动ZK服务:         ./zkServer.sh start
  • 2. 查看ZK服务状态:   ./zkServer.sh status
  • 3. 停止ZK服务:         ./zkServer.sh stop
  • 4. 重启ZK服务:         ./zkServer.sh restart

二: 集群搭建

  真实的集群是需要部署在不同的服务器上的,但是在我们测试时同时启动十几个虚拟机内存会吃不消,所以我这里是搭建伪集群,也就是把所有的服务都搭建在一台虚拟机上。即:伪集群靠端口区分,ip是同一个;而集群是靠ip区分,端口是同一个(端口不相同也可以,看个人配置)。

  zookeeper集群有三个角色: leader   follower   observer; leader和follower的总个数必须为基数。

  * leader: 一个集群有且只有leader节点,客户端的写操作会落到该节点上。

  * follower:客户端的读操作,leader会根据算法落实到某个follower节点上。

  * observer:只提供服务,不参与投票。提高了zookeeper的扩展性(如果大量客户端访问我们zookeeper集群,需要增加zookeeper集群机器数量。从而增加zookeeper集群的性能。 导致zookeeper写性能下降,zookeeper的数据变更需要半数以上服务器投票通过。造成网络消耗增加投票成本)

1. 建立文件夹,mkdir /usr/local/wulei/zookeeper,将刚才的Zookeeper复制到以下三个目录(复制文件: cp 文件  目标路径     复制文件夹:cp -r 文件夹 目标路径)

    cp -r zookeeper-3.4.6 /usr/local/wulei/zookeeper/zookeeper1

    cp -r zookeeper-3.4.6 /usr/local/wulei/zookeeper/zookeeper2

    cp -r zookeeper-3.4.6 /usr/local/wulei/zookeeper/zookeeper3

2. 给每个服务器设置id:    id的取值范围: 1~255 id来标识该机器在集群中的机器序号。在刚刚 dataDir指定的文件夹下创建myid文件 touch myid,内容就是id(例如1 、 2、 3)。我们可以用echo命令快速创建。

    echo 1 > /usr/local/wulei/zookeeper/zookeeper1/mydata/myid

    echo 2 > /usr/local/wulei/zookeeper/zookeeper2/mydata/myid

    echo 3 > /usr/local/wulei/zookeeper/zookeeper3/mydata/myid

3. 到这一步,我们就应该进入改conf/zoo.cfg的数据目录文件和端口了。(真正的集群它们ip不一样,可以不改端口)。vim /usr/local/wulei/zookeeper/zookeeper1/conf/zoo.cfg

# 三个zk的配置都要改,目录换成各自路径, 端口改成2181 2182 2183

# zk数据目录
dataDir=/usr/local/wulei/zookeeper/zookeeper1/mydata
# zk日志目录
dataLogDir=/usr/local/wulei/zookeeper/zookeeper1/mydata-log
# 客户端默认连接端口
clientPort=2181


# 在文件末尾追加这段配置,三个文件这里的配置不用变。
# 格式: server.myid=ip:服务器端口(端口随便写,不与当前机器的端口冲突就行):投票选举端口(端口随便写,不与当前机器的端口冲突就行) 
server.1=192.168.25.100:2881:3881 
server.
2=192.168.25.100:2882:3882
server.
3=192.168.25.100:2883:3883

# zk默认只有leader和follower角色,我们可以指定observer节点
# 首先在该服务器的zoo.cfg文件里面设置
peerType=observer
# server.1=192.168.25.100:2881:3881 
# server.2=192.168.25.100:2882:3882
# server.3=192.168.25.100:2883:3883
#
server.3=192.168.25.100:2884:3884:observer

经过上面几步集群就搭建完成了,这里我们来测试一下 ~

【1】: 启动server1
[root@server1 ~]# cd /usr/local/wulei/zookeeper/zookeeper1/bin
[root@server1 bin]# ./zkServer.sh start
JMX enabled by default
Using config: /usr/local/wulei/zookeeper/zookeeper1/bin/../conf/zoo.cfg
Starting zookeeper ... 
STARTED
[root@server1 bin]# 

2】:由于集群要过半数才能工作,所以此时它的状态还是不可用
[root@server1 bin]# ./zkServer.sh status
JMX enabled by default
Using config: /usr/local/wulei/zookeeper/zookeeper1/bin/../conf/zoo.cfg
Error contacting service. It is probably not running.

3】:启动server2
[root@server1 bin]# cd /usr/local/wulei/zookeeper/zookeeper2/bin
[root@server1 bin]# ./zkServer.sh start
JMX enabled by default
Using config: /usr/local/wulei/zookeeper/zookeeper2/bin/../conf/zoo.cfg
Starting zookeeper ... STARTED

4】:过半数了可以工作了,我们可以看到它是leader
[root@server1 bin]# ./zkServer.sh status
JMX enabled by default
Using config: /usr/local/wulei/zookeeper/zookeeper2/bin/../conf/zoo.cfg
Mode: leader

5】:重看server1状态,现在成了follower
[root@server1 bin]# cd /usr/local/wulei/zookeeper/zookeeper1/bin
[root@server1 bin]# ./zkServer.sh status
JMX enabled by default
Using config: /usr/local/wulei/zookeeper/zookeeper1/bin/../conf/zoo.cfg
Mode: follower

6】:经过上面几步,集群已经能工作了。此时启动server3, 它也是一个follower
[root@server1 bin]# cd /usr/local/wulei/zookeeper/zookeeper3/bin
[root@server1 bin]# ./zkServer.sh start
JMX enabled by default
Using config: /usr/local/wulei/zookeeper/zookeeper3/bin/../conf/zoo.cfg
Starting zookeeper ... STARTED
[root@server1 bin]# ./zkServer.sh status
JMX enabled by default
Using config: /usr/local/wulei/zookeeper/zookeeper3/bin/../conf/zoo.cfg
Mode: follower
[root@server1 bin]# 

 

posted @ 2018-08-20 18:26  吴磊的  阅读(312)  评论(0编辑  收藏  举报
//生成目录索引列表