快速搭建zookeeper集群

ZooKeeper是一个为分布式应用所设计的分布的、开源的协调服务,它主要是用来解决分布式应用中经常遇到的一些数据管理问题,简化分布式应用协调及其管理的难度,提供高性能的分布式服务。ZooKeeper本身可以以Standalone模式安装运行,不过它的长处在于通过分布式ZooKeeper集群(一个Leader,多个Follower),基于一定的策略来保证ZooKeeper集群的稳定性和可用性,从而实现分布式应用的可靠性。ZooKeeper是作为分布式协调服务,是不需要依赖于Hadoop的环境,也可以为其他的分布式环境提供服务。

zookeeper有单机、伪集群、集群三种部署方式,可根据自己对可靠性的需求选择合适的部署方式。下边对这三种部署方式逐一进行讲解。

一、单机安装
1.1 下载
进入要下载的版本的目录,选择.tar.gz文件下载,这里我们选择最新版
下载链接:http://archive.apache.org/dist/zookeeper/

wget http://mirror.bit.edu.cn/apache/zookeeper/zookeeper-3.5.5/apache-zookeeper-3.5.5.tar.gz

1.2 安装
使用tar解压要安装的目录即可
这里以解压到/usr/local,实际安装根据自己的想安装的目录修改(注意如果修改,那后边的命令和配置文件中的路径都要相应修改)

tar xf apache-zookeeper-3.5.5.tar.gz -C /usr/local/src/
ln -s /usr/local/src/apache-zookeeper-3.5.5 /usr/local/zookeeper

1.3 配置
在主目录下创建data和logs两个目录用于存储数据和日志:

mkdir  -p /usr/local/zookeeper/{data,logs}

在conf目录下新建zoo.cfg文件,写入以下内容保存:

vim /usr/local/zookeeper/conf/zoo.cfg

tickTime=2000
dataDir=/usr/local/zookeeper/data
dataLogDir=/usr/local/zookeeper/logs
clientPort=2181

1.4 启动和停止
进入bin目录,启动、停止、重启分和查看当前节点状态(包括集群中是何角色)别执行:

cd /usr/local/zookeeper1/bin/ && ./zkServer.sh stop
cd /usr/local/zookeeper1/bin/ && ./zkServer.sh restart
cd /usr/local/zookeeper1/bin/ && ./zkServer.sh status

二、伪集群模式
伪集群模式就是在同一主机启动多个zookeeper并组成集群,下边以在10.0.0.11主机上创3个zookeeper组集群为例。将通过第一大点安装的zookeeper,复制成zookeeper1/zookeeper2/zookeeper3三份。

2.1 zookeeper1配置
zookeeper1配置文件修改如下:

vim /usr/local/zookeeper/conf/zoo.cfg

tickTime=2000
dataDir=/usr/local/zookeeper1/data
dataLogDir=/usr/local/zookeeper1/logs
clientPort=2181
initLimit=5
syncLimit=2
server.1=10.0.0.11:2888:3888
server.2=10.0.0.11:4888:5888
server.3=10.0.0.11:6888:7888

zookeeper1的data/myid配置如下:

echo ‘1‘ > data/myid

2.2 zookeeper2配置
zookeeper2配置文件conf/zoo.cfg修改如下:

vim /usr/local/zookeeper/conf/zoo.cfg

tickTime=2000
dataDir=/usr/local/zookeeper2/data
dataLogDir=/usr/local/zookeeper2/logs
clientPort=3181
initLimit=5
syncLimit=2
server.1=10.0.0.11:2888:3888
server.2=10.0.0.11:4888:5888
server.3=10.0.0.11:6888:7888

zookeeper2的data/myid配置如下:

echo ‘2‘ > data/myid

2.3 zookeeper3配置
zookeeper3配置文件conf/zoo.cfg修改如下:

vim /usr/local/zookeeper/conf/zoo.cfg

tickTime=2000
dataDir=/usr/local/zookeeper3/data
dataLogDir=/usr/local/zookeeper3/logs
clientPort=4181
initLimit=5
syncLimit=2
server.1=10.0.0.11:2888:3888
server.2=10.0.0.11:4888:5888
server.3=10.0.0.11:6888:7888

zookeeper3的data/myid配置如下:

echo ‘3‘ > data/myid

最后使用1.4的命令把三个zookeeper都启动即可,启动顺序随意没要求。

三、集群模式
集群模式就是在不同主机上安装zookeeper然后组成集群的模式;下边以在10.0.0.11/137/138三台主机为例。将第1.1到1.3步中安装好的zookeeper打包复制到137和138上,并都解压到同样的目录下。

3.1 conf/zoo.cfg文件修改
三个zookeeper的conf/zoo.cfg修改如下:

vim /usr/local/zookeeper/conf/zoo.cfg

tickTime=2000
dataDir=/usr/local/zookeeper/data
dataLogDir=/usr/local/zookeeper/logs
clientPort=2181
initLimit=5
syncLimit=2
server.1=10.0.0.11:2888:3888
server.2=10.0.0.12:2888:3888
server.3=10.0.0.13:2888:3888

#2888端口号是zookeeper服务之间通信的端口,而3888是zookeeper与其他应用程序通信的端口,对于137和138,由于安装目录都是zookeeper所以dataDir和dataLogDir不需要改变,又由于在不同机器上所以clientPort也不需要改变
所以此时137和138的conf/zoo.cfg的内容与136一样即可。
3.2 data/myid文件修改
136 data/myid修改如下:

echo ‘1‘ > data/myid

137 data/myid修改如下:

echo ‘2‘ > data/myid

138 data/myid修改如下:

echo ‘3‘ > data/myid

最后使用1.4的命令把三个zookeeper都启动即可,启动顺序随意没要求。

四、 验证Zookeeper集群是否安装成功。
可以验证一下是否启动成功:

ps -ef | grep zookeeper

4.1分别在3台虚拟机上查看zookeeper的状态。

/usr/bin/zookeeper/bin/zkServer.sh status

4.2连接其中一台的zookeeper

/usr/local/zookeeper/bin/zkCli.sh -server 10.0.0.12:2181

4.3写入数据

create /test data

4.4再连接另外一台的zookeeper

/usr/local/zookeeper/bin/zkCli.sh -server 10.0.0.13:2181

4.5如果能获取到刚才写入的数据,则Zookeeper集群安装成功。

get /test

五、报错及处理
应用连接zookeepr报错:Session 0x0 for server 10.0.0.11/10.0.0.11:2181,unexpected error,closing socket connection and attempting reconnect;
先看端口能否telnet通,如果通则使用./zkServer.sh status查看zk是否确实已启动,没启查看bin/zookeeper.out中的报错。
bin/zookeeper.out中报错:“zookeeper address already in use”;显然端口被占用,要么是其他进程占用了配置的端口,要么是上边配置的clientPort和server中的端口有重复。
bin/zookeeper.out中报错:Cannot open channel to 2 at election address /10.0.0.11:3888;这应该只是组成集群的137节点未启动,到137启动起来zk即会正常。

原文地址:https://www.cnblogs.com/wzxmt/p/11031480.html

时间: 2024-08-29 17:07:12

快速搭建zookeeper集群的相关文章

docker 搭建zookeeper集群和kafka集群

docker 搭建zookeeper集群 安装docker-compose容器编排工具 Compose介绍 Docker Compose 是 Docker 官方编排(Orchestration)项目之一,负责快速在集群中部署分布式应用. Compose 项目是 Docker 官方的开源项目,负责实现对 Docker 容器集群的快速编排.Compose 定位是 「定义和运行多个 Docker 容器的应用(Defining and running multicontainer Docker appl

zookeeper(三)--- 搭建zookeeper集群

zookeeper(三)--- 搭建zookeeper集群 环境 vagrant虚拟机 centos7 SecureCRT 软件 zookeeper3.4.6.tar.gz 步骤 1.使用vagrant创建3个虚拟机 IP地址:192.168.21.222,192.168.21.223,192.168.22.224 2.使用SecureCRT链接虚拟机 3.安装配置zookeeper 安装配置Zookeeper集群 解压 tar xzvfzookeeper-3.4.6.tar.gz 重命名解压后

如何搭建Zookeeper集群

 ZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务,是Google的Chubby一个开源的实现,是Hadoop和Hbase的重要组件.它是一个为分布式应用提供一致性服务的软件,提供的功能包括:配置维护.域名服务.分布式同步.组服务等.其部署方式有单机部署和集群部署,单机部署意义不大,下面主要介绍集群部署. 因硬件环境的限制,本次搭建Zookeeper集群是在Windows且是单机的环境下搭建的,也就是伪集群:不过伪集群跟集群区别不大,往下看就知道啦. 一.去Zookeeper官

快速搭建Jenkins集群

关于Jenkins集群 在Jenkins上同时执行多个任务时,单机性能可能达到瓶颈,使用Jenkins集群可以有效的解决此问题,让多台机器同时处理这些任务可以将压力分散,对单机版Jenkins的单点故障的隐患也有分散作用,今天就来实战快速搭建Jenkins集群,Jenkins版本是2.190.2: 如何做到快速搭建集群 通过Docker可以省去大部分准备工作,您只需在Linux电脑上安装docker,在辅以少量命令和操作即可完成集群搭建: 环境信息 本次实战的环境一共要用三台电脑,它们的设置都是

docker-compose搭建zookeeper集群

搭建zookeeper集群 创建docker-compose.yml文件 ``` version: '3.1' services: zoo1: image: zookeeper restart: always container_name: zoo1 ports: - 2181:2181 volumes: - /usr/local/docker/zookeeper/zoo1/data:/data - /usr/local/docker/zookeeper/zoo1/datalog:/datalo

运维之我的docker-compose快速创建zookeeper集群

很多时候大家不同的容器想要不用启动参数这个时候不妨使用脚本封装来实现,官方也很推荐这个做法,这里介绍下如何使用脚本传参快速启动一个zookeeper集群. zookeeper集群大家知道有部分通用配置,和一些动态配置如果用一个简单的zookeeper实例无法正常启动集群,所以我们的节点列表和节点ID是需要动态传入的所以下面的脚本的${ZK_ID}和${ZK_LIST}是需要你使用compose的配置传入的. zookeeper启动脚本 https://code.aliyun.com/nginxs

Dcoker 搭建ZooKeeper集群

原来学习 ZK 时, 我是在本地搭建的伪集群, 虽然说使用起来没有什么问题, 但是总感觉部署起来有点麻烦. 刚好我发现了 ZK 已经有了 Docker 的镜像了, 于是就尝试了一下, 发现真是爽爆了, 几个命令就可以搭建一个完整的 ZK 集群. 下面我简单记录一下使用 Docker 搭建 ZK 集群的一些步骤. 镜像下载 hub.docker.com 上有不少 ZK 镜像, 不过为了稳定起见, 我们就使用官方的 ZK 镜像吧.首先执行如下命令: docker pull zookeeper 当出现

记一次多台linux搭建zookeeper集群

自己搭建了zookeeper集群,使用了三台linux,搭建三节点的集群,这里记录一下. 在linux上可以使用wget+网址+版本号,wget和网址之间有个空格,就可以直接在linux上联网下载相应的软件版本. 首先,在/usr/local下执行 # wget http://archive.apache.org/dist/zookeeper/zookeeper-3.4.5/zookeeper-3.4.5.tar.gz 解压:# tar -zxvf zookeeper-3.4.5.tar.gz

使用 Docker搭建 ZooKeeper 集群

1.镜像下载 docker pull zookeeper 2.启动 ZK 镜像 >>> docker run --name my_zookeeper -d zookeeper:latest 这个命令会在后台运行一个 zookeeper 容器, 名字是 my_zookeeper, 并且它默认会导出 2181 端口.接着我们使用: docker logs -f my_zookeeper 3.使用 ZK 命令行客户端连接 ZK 因为刚才我们启动的那个 ZK 容器并没有绑定宿主机的端口, 因此我