Zookeeper入门到实战 (二) : Centos7下安装Zookeeper(单机模式和集群模式)

1.下载zookeeper

  • 版本: 3.7.0
  • 下载地址: https://mirrors.bfsu.edu.cn/apache/zookeeper/zookeeper-3.7.0/apache-zookeeper-3.7.0-bin.tar.gz
# 下载zookeeper
$ wget https://mirrors.bfsu.edu.cn/apache/zookeeper/zookeeper-3.7.0/apache-zookeeper-3.7.0-bin.tar.gz

2.解压
$ tar -zxvf apache-zookeeper-3.7.0-bin.tar.gz

3.创建data和logs目录

data主要用来存储节点数据,logs主要用来存储服务运行的日志。

# 创建 data 和 logs 目录
$ mkdir data logs

4.修改配置文件

zookeeper默认提供了zoo_sample.cfg作为示例配置文件

zookeeper配置文件位置

我们将其复制一份改名为zoo.cfg,去掉注释只保留配置项。

# 将原来的 zoo_sample.cfg 去除注释和空白行之后写入zoo.cfg
$ cat zoo_sample.cfg | grep -v "#"  | grep -v "^$" > zoo.cfg

生成新的配置文件

# 用vim编辑器打开 zoo.cfg 更新dataDir配置项 新增dataLogDir配置项
$ vim zoo.cfg

修改配置文件

修改完成后保存退出

5.单机模式

如果只需要单机启动的话,启动之前先查看一下zookeeper服务是否已经启动?zookeeper的默认端口为2181是否被占用?启动之后再来验证一下

# 当前有无zookeeper相关进程
$ ps -ef | grep -v grep | grep zookeeper
# 当前2181端口是否被占用
$ netstat - tunlp | grep 2181

进入zookeeper的bin目录,然后运行zkServer.sh启动

# 启动
$ ./zkServer.sh start

启动之后,看一下该服务器节点状态。

# 查看节点状态
$ ./zkServer.sh  status

查看节点状态

由上图可见现在是在单机模式下运行的

启动之后,那么如何停止zookeeper?

# 停止
$ ./zkServer.sh stop

停止之后查看节点状态

6.集群模式

如果是配置集群模式的话,需要进行额外的配置;在这里我就用3个不同的端口来模拟三台机器,有条件的同学可以将相应的地址替换为不同主机的地址。

因为是在一台机器上启动三个zookeeper实例,所以需要三个配置文件分别是zoo_1.cfgzoo_2.cfgzoo_3.cfgb并且这三个实例需要有各自的data和logs目录;分别为data1,losg1data2,losg2data3,losg3

6.1 进入zookeeper主目录创建各自的data和logos目录
# 将原来单机版的 data 改为 data1 , logs 改为 logs1
$ mv data data1
$ mv logs logs1

修改目录名称

# 创建 data2 data3 和 logs2 logs3
$ mkdir data2 data3 logs2 logs3

创建目录

6.2 进入zookeeper主目录下conf修改配置文件
# 将原来单机版的zoo.cfg 改为 zoo_1.cfg
$ mv zoo.cfg zoo_1.cfg

# 用vim编辑器打开 zoo.cfg 新增集群的配置
$ vim zoo_1.cfg

添加三条服务器的配置,格式为:

{服务器ID}={服务器IP地址}:{通信端口}:{投票端口}

服务器ID为集群中服务器的唯一标识,而服务器的IP地址后面有两个端口,用冒号分割;这两个端口分别是:

  • 通信端口:zookeeper集群中服务器之间进行数据交换和同步的端口
  • 投票端口:zookeeper服务器之间投票选举的端口

修改后的zoo_1.cfg文件内容如下:

tickTime=2000
initLimit=10
syncLimit=5
# 数据目录
dataDir=/root/soft/apache-zookeeper-3.7.0-bin/data1
# 日志目录
dataLogDir=/root/soft/apache-zookeeper-3.7.0-bin/logs1
# 客户端连接的端口
clientPort=2181

# {服务器ID}={服务器IP地址}:{通信端口}:{投票端口}
server.1=192.168.31.195:2888:3888
server.2=192.168.31.195:2887:3887
server.3=192.168.31.195:2886:3886

zoo_1.cfg复制为zoo_2.cfgzoo_3.cfg,并修改zoo_2.cfgzoo_3.cfg中的dataDir、dataLogDir、clientPort三个配置项

修改后的zoo_2.cfg文件内容如下:

tickTime=2000
initLimit=10
syncLimit=5
# 数据目录
dataDir=/root/soft/apache-zookeeper-3.7.0-bin/data2
# 日志目录
dataLogDir=/root/soft/apache-zookeeper-3.7.0-bin/logs2
# 客户端连接的端口
clientPort=2182

# 服务器集群列表
server.1=192.168.31.195:2888:3888
server.2=192.168.31.195:2887:3887
server.3=192.168.31.195:2886:3886

修改后的zoo_3.cfg文件内容如下:

tickTime=2000
initLimit=10
syncLimit=5
# 数据目录
dataDir=/root/soft/apache-zookeeper-3.7.0-bin/data3
# 日志目录
dataLogDir=/root/soft/apache-zookeeper-3.7.0-bin/logs3
# 客户端连接的端口
clientPort=2183

# 服务器集群列表
server.1=192.168.31.195:2888:3888
server.2=192.168.31.195:2887:3887
server.3=192.168.31.195:2886:3886
6.3 分别进入三个data目录创建myid

zookeeper集群中三个服务器需要分配一个编号,也是就和将zookeeper实例和配置中的服务器id对应,在zookeeper服务器选举的时候根据这个编号(服务器id)在配置文件中找到对应的服务器地址。

配置服务器id

6.4 使用配置文件依次启动三个实例
# bin目录下依次启动三个实例
$ ./zkServer.sh  start zoo_1.cfg
$ ./zkServer.sh  start zoo_2.cfg
$ ./zkServer.sh  start zoo_3.cfg

来验证下是否启动了

# 查看各节点状态
$ ./zkServer.sh  status zoo_1.cfg
$ ./zkServer.sh  status zoo_2.cfg
$ ./zkServer.sh  status zoo_3.cfg

由上可见,三个节点都正常启动,节点1为Leader,其它两个节点为Follower,我们启动时并没有指定谁为Leader;由此可见zookeeper集群的leader确实时启动时选举产生的。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值