Linux实战——Zookeeper集群安装部署
Posted 会不了一点
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux实战——Zookeeper集群安装部署相关的知识,希望对你有一定的参考价值。
Zookeeper集群安装部署
简介
ZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务,是Hadoop和Hbase的重要组件。它是一个为分布式应用提供一致性服务的软件,提供的功能包括:配置维护、域名服务、分布式同步、组服务等。
除了为Hadoop和HBase提供协调服务外,Zookeeper也被其它许多软件采用作为其分布式状态一致性的依赖,比如Kafka,又或者一些软件项目中,也经常能见到Zookeeper作为一致性协调服务存在。
Zookeeper不论是大数据领域亦或是其它服务器开发领域,涉及到分布式状态一致性的场景,总有它的身影存在。
安装
Zookeeper是一款分布式的集群化软件,可以在多台服务器上部署,并协同组成分布式集群一起工作。
-
首先,要确保已经完成了集群化环境前置准备环节的全部内容【集群化环境前置准备】
-
【node1上操作】下载Zookeeper安装包,并解压
# 下载 wget http://archive.apache.org/dist/zookeeper/zookeeper-3.5.9/apache-zookeeper-3.5.9-bin.tar.gz # 确保如下目录存在,不存在就创建 mkdir -p /export/server # 解压 tar -zxvf apache-zookeeper-3.5.9-bin.tar.gz -C /export/server
-
【node1上操作】创建软链接
ln -s /export/server/apache-zookeeper-3.5.9-bin /export/server/zookeeper
-
【node1上操作】修改配置文件(找到对应项,进行修改)
# 可以直接修改它给我们的实例配置文件,先将名字改为zoo.cfg mv /export/server/zookeeper/conf/zoo_sample.cfg /export/server/zookeeper/conf/zoo.cfg vim /export/server/zookeeper/conf/zoo.cfg # 修改内容如下: tickTime=2000 # 其中dataDir:zookeeper数据存储目录 dataDir=/export/server/zookeeper/data clientPort=2181 initLimit=5 syncLimit=2 server.1=node1:2888:3888 server.2=node2:2888:3888 server.3=node3:2888:3888
-
【node1上操作】配置
myid
# 1. 创建Zookeeper的数据目录 mkdir /export/server/zookeeper/data # 2. 创建文件,并填入1 vim /export/server/zookeeper/data/myid # 在文件内填入1即可
-
【在node2和node3上操作】,创建文件夹
mkdir -p /export/server
-
【node1上操作】将Zookeeper 复制到node2和node3(复制软链接是没有用的!!!)
cd /export/server scp -r apache-zookeeper-3.5.9-bin node2:$PWD scp -r apache-zookeeper-3.5.9-bin node3:$PWD
-
【在node2上操作】
# 1. 创建软链接 ln -s /export/server/apache-zookeeper-3.5.9-bin /export/server/zookeeper # 2. 修改myid文件 vim /export/server/zookeeper/data/myid # 修改内容为2
-
【在node3上操作】
# 1. 创建软链接 ln -s /export/server/apache-zookeeper-3.5.9-bin /export/server/zookeeper # 2. 修改myid文件 vim /export/server/zookeeper/data/myid # 修改内容为3
-
【在node1、node2、node3上分别执行】启动Zookeeper
# 启动命令 /export/server/zookeeper/bin/zkServer.sh start # 启动Zookeeper
-
【在node1、node2、node3上分别执行】检查Zookeeper进程是否启动
jps # 结果中找到有:QuorumPeerMain 进程即可
Reference:
jps是jdk提供的一个查看当前java进程的小工具(全称是JavaVirtual Machine Process Status Tool)
语法:jps [options] [hostid]
options:-
-q :仅输出VM标识符,不包括class
-
-l :输出完全的包名,应用主类名,jar的完全路径名
-
-v:输出jvm参数
-
-V:输出通过flag文件传递到JVM中的参数(.hotspotrc文件或-XX:Flags=所指定的文件
jps –l #输出主类或者jar的完全路径名 jps –v #输出jvm参数 jps –q #仅仅显示java进程号
-
-
【node1上操作】验证Zookeeper
/export/server/zookeeper/bin/zkCli.sh # 进入到Zookeeper控制台中后,执行 ls / # 如无报错即配置成功
至此Zookeeper安装完成
Zookeeper实战之单机集群模式
前一篇文章介绍了Zookeeper的单机模式的安装及应用,但是Zookeeper是为了解决分布式应用场景的,所以通常都会运行在集群模式下。今天由于手头机器不足,所以今天打算在一台机器上部署三个Zookeeper服务来组成一个Zookeeper集群。这里解压Zookeeper的安装包到/opt目录下,这里用三个目录来代表三个Zookeeper实例,分别是/opt/zookeeper1,/opt/zookeeper2和/opt/zookeeper3.
1. 首先编辑每个Zookeeper目录下的conf/zoo.cfg文件。三个配置配置文件的内容分别如下
- $ cat /opt/zookeeper1/conf/zoo.cfg
- tickTime=2000
- dataDir=/opt/zookeeper1/data
- clientPort=2181
- initLimit=10
- syncLimit=5
- server.1=127.0.0.1:2881:3881
- server.2=127.0.0.1:2882:3882
- server.3=127.0.0.1:2883:3883
- $ cat /opt/zookeeper2/conf/zoo.cfg
- tickTime=2000
- dataDir=/opt/zookeeper2/data
- clientPort=2182
- initLimit=10
- syncLimit=5
- server.1=127.0.0.1:2881:3881
- server.2=127.0.0.1:2882:3882
- server.3=127.0.0.1:2883:3883
- $ cat /opt/zookeeper3/conf/zoo.cfg
- tickTime=2000
- dataDir=/opt/zookeeper3/data
- clientPort=2183
- initLimit=10
- syncLimit=5
- server.1=127.0.0.1:2881:3881
- server.2=127.0.0.1:2882:3882
- server.3=127.0.0.1:2883:3883
其中有几点需要注意
* dataDir: 三个Zookeeper实例的dataDir目录要区别开,这里分别指定到各个Zookeeper实例目录下的data目录。
* clientPort: 定义Zookeeper客户端连接Zookeeper服务端时使用的端口,这里因为是在一台机器上做的集群,所以三个实例的端口要区分开。
* server.: 定义Zookeeper集群的各个实例的的ip和端口,这里因为是在一台机器上做的集群,所以IP都定义的是127.0.0.1,但是后面的端口要区分开。
2. 创建data目录和实例id文件
- mkdir /opt/zookeeper1/data
- mkdir /opt/zookeeper2/data
- mkdir /opt/zookeeper3/data
- echo 1 > /opt/zookeeper1/data/myid
- echo 2 > /opt/zookeeper2/data/myid
- echo 3 > /opt/zookeeper3/data/myid
这里要注意需要在每个Zookeeper的dataDir目录下创建myid文件,内容是记录各个Zookeeper的实例ID。
3. 启动Zookeeper服务
分别进入各个Zookeeper的bin目录,然后运行“./zkServer.sh start”来启动一个Zookeeper服务。
4. 客户端连接
随便进入一个Zookeeper的bin目录,然后运行下面的命令来分别连接Zookeeper服务。
- ./zkCli.sh -server 127.0.0.1:2181
- ./zkCli.sh -server 127.0.0.1:2182
- ./zkCli.sh -server 127.0.0.1:2183
在其中的一个client上创建一个znode节点
- create /mykey myvalue
然后在别的client上查看新创建zonde节点
- get /mykey
5. 查看Zookeeper状态
启动Zookeeper之后,由于Zookeeper自己会有一套leader的选举算法,所以此时如果想知道那个Zookeeper是leader可以在各个Zookeeper的bin目录运行“./zkServer.sh status”命令来查看。
如果是Leader
- $ ./zkServer.sh status
- JMX enabled by default
- Using config: /opt/zookeeper1/bin/../conf/zoo.cfg
- Mode: leader
如果不是Leader
- $ ./zkServer.sh status
- JMX enabled by default
- Using config: /opt/zookeeper3/bin/../conf/zoo.cfg
- Mode: follower
此时可以把leader的那个节点停了,然后再看查看其它两个Zookeeper实例,此时剩下的两个Zookeeper实例就会再选举出一个leader。
以上是关于Linux实战——Zookeeper集群安装部署的主要内容,如果未能解决你的问题,请参考以下文章
Zookeeper集群安装部署(超详细操作演示)—— Linux
3. linux centos6.8环境下部署zookeeper集群
Zookeeper实战分布式安装部署&客户端命令行操作(开发重点)