Linux Zookeeper 安装, 带视频

疯狂创客圈 Java 高并发【 亿级流量聊天室实战】实战系列 【博客园总入口html

面试必备+面试必备之 高并发基础书籍 【Netty Zookeeper Redis 高并发实战java


《SpringCloud Nginx 高并发核心编程》 环境搭建 图文教程和演示视频:面试

组件 连接地址
【必须】 虚拟机Linux 开发环境准备 windows vmware 扩展硬盘 + 共享文件
Linux openresty 安装 Linux openresty 安装
【必须】Linux Redis 安装(带视频) Linux Redis 安装(带视频)
【必须】Linux Zookeeper 安装(带视频) Linux Zookeeper 安装, 带视频
Windows Redis 安装(带视频) Windows Redis 安装(带视频)
RabbitMQ 离线安装(带视频) RabbitMQ 离线安装(带视频)
ElasticSearch 安装, 带视频 ElasticSearch 安装, 带视频
Nacos 安装(带视频) Nacos 安装(带视频)
【必须】Eureka Eureka 入门,带视频
【必须】springcloud Config 入门,带视频 springcloud Config 入门,带视频
【必须】Zuul 详解,带视频 Zuul 详解,带视频
【必须】SpringCloud 脚手架打包与启动 SpringCloud脚手架打包与启动

1 何为伪集群模式

在学习环境中,若是没有多余的服务器,这里就将三个ZooKeeper 节点都安装到本地机器上,故称谓伪集群模式。
虽然,伪集群模式只是便于开发、普通测试,尽可能不用于生产环境。从学习的角度来讲,若是了解了伪集群模式下的安装和配置,生产环境下的安装和配置的方法,也是大体差很少的。spring

安装ZooKeeper以前,须要规划一下伪集群节点的个数,ZooKeeper节点数有如下要求:
(1)ZooKeeper集群节点数必须是基数。
为何呢?ZooKeeper 集群中,须要一个主节点,称之为leader节点。leader节点是集群经过选举的规则,从全部节点中选举出来的。选举的规则中很重要的一条是:要求可用节点数量 > 总节点数量/2 。若是是偶数个节点,则可能会出现不知足这个规则的状况。
(2)ZooKeeper集群至少是3个。
ZooKeeper能够经过一个节点,正常启动和提供服务。可是,一个节点的ZooKeeper服务,不能叫作集群,其可靠性大打折扣,仅仅做为学习使用。正常状况下,搭建ZooKeeper集群,至少须要3个节点。apache

这里,做为学习案例,在本地机器上,规划搭建一个3个节点的伪集群。 实际上,启动的时候,启动两个节点,Zookeeper就能够正常工做了。编程

2 下载并解压缩

首先是下载。在apache的官方网站提供了好多镜像下载地址,而后找到对应的版本,目前最新的是3.4.13。vim

http://mirrors.cnnic.cn/apache/ZooKeeper/ZooKeeper-3.4.13/ZooKeeper-3.4.13.tar.gzwindows

疯狂创客圈网盘,已经备好的安装包,也能够直接下载服务器

mkdir -p  /work/zookeeper/zooKeeper-3.4.13
tar  -zxvf  /work/zookeeper/zooKeeper-3.4.13.tar.gz   -C   /work/zookeeper/zooKeeper-3.4.13

3 安装Zookeeper

安装集群的第一步,在安装目录下,建立好两个目录:日志目录、数据目录。并发

mkdir -p  /work/zookeeper/zooKeeper-3.4.13/data

mkdir -p   /work/zookeeper/zooKeeper-3.4.13/logs

进入 /work/zookeeper/zooKeeper-3.4.13/conf目录,把zoo_sample.cfg文件复制一份名字改为zoo.cfg。

cp zoo_sample.cfg zoo.cfg

4 修改zoo.cfg 配置文件

修改zoo.cfg 配置文件,设置日志目录、数据目录、客户端链接端口、伪集群节点的配置

dataDir=/work/zookeeper/zookeeper_01/data

dataLogDir=/work/zookeeper/zookeeper_01/logs

clientPort=2181


server.1=192.168.71.82:2881:3881

server.2=192.168.71.82:2882:3882

server.3=192.168.71.82:2883:3883

两个目录设置选项的介绍以下:

dataDir=/work/zookeeper/zookeeper_01/data

dataLogDir=/work/zookeeper/zookeeper_01/logs

(1)dataDir:数据目录选项,配置为前面准备的数据目录。myid文件,处于此目录下。
(2) dataLogDir:日志目录选项, 配置为前面准备的日志目录。若是没有设置该参数,默认将使用和dataDir相同的设置。

clientPort = 2181 的介绍以下:

clientPort: 表示client客户端链接ZooKeeper集群中的节点的端口号。在生成环境的集群中,不一样的节点,处于不一样的机器,端口号通常都相同,便于记忆和使用。因为这里是伪集群模式,因此,三个节点集中在一台机器上,因此3个端口号,配置为不同。
clientPort:通常设置为2181。伪集群下,不一样的节点,clientPort不能相同,能够按照编号,进行累加。

集群节点信息的配置,示例以下:

server.1=127.0.0.1:2888:3888
server.2=127.0.0.1:2889:3889
server.3=127.0.0.1:2890:3890

节点信息,须要配置集群中全部节点的 (id)编号、IP、端口。在“.cfg”配置文件中,能够按照这样的格式进行配置,每一行都表明一个节点。一个节点格式为:

server.id=host:port:port

在ZooKeeper集群中,每一个节点都须要感知到整个集群是哪些节点组成,因此,每个配置文件,都须要配置所有的节点。

整体来讲,配置节点的时候,注意四点:
(1)不能有相同id的节点,须要确保每一个节点的myid文件中的id值不一样;
(2)每一行 “server.id=host:port:port”中的id值,须要与所对应节点的数据目录下的myid中的id值,保持一致;
(3)每个配置文件,都须要配置所有的节点信息。不只仅是配置本身的那份,而是须要全部节点的id、ip、端口配置。
(4)每一行 “server.id=host:port:port”中,须要配置两个端口。前一个端口为通讯端口(如示例中的2888)用于节点之间的通信使用,后一个端口为选主端口(如上的3888)用于选举 leader主节点使用。
(5)在伪集群的模式下,每一行记录,相同的端口必须修改都不同,主要是避免端口冲突。在分布式集群模式下,因为不一样节点的ip不一样,每一行记录,能够端口相同。

5 建立myid文件文件

在data目录下,为每个节点,建立一个id文件。每个节点,须要有一个记录节点id 的文本文件,文件名为myid。myid文件的特色以下:
(1)myid文件的惟一做用,是记录(伪)节点的编号;
(2)myid文件是一个文本文件,文件名称为myid;
(3)myid文件内容为一个数字,表示节点的编号;
(4)myid文件中,只能有一个数字,不能有其余的内容;
(5)myid文件的存放位置,默认处于数据目录下面。

ZooKeeper对id的值,有何要求呢?
首先,myid文件中id的值,只能是一个数字,即一个节点的编号ID;
其次,id的范围是1~255,表示集群最多的节点个数为255个。

6 复制节点

将zooKeeper-3.4.13 复制三份分别取名为zookeeper_01和zookeeper_02和zookeeper_03。第三份能够复制也能够不复制。

cp  /work/zooKeeper/zooKeeper-3.4.13   /work/zooKeeper/zookeeper_01

cp  /work/zooKeeper/zooKeeper-3.4.13   /work/zooKeeper/zookeeper_02

cp  /work/zooKeeper/zooKeeper-3.4.13   /work/zooKeeper/zookeeper_03

而且在每一份的配置文件中,修改正确的路径,端口号、以及myid 文件的编号。

好比 /work/zookeeper_02的/conf/zoo.cfg的配置项,修改以下。

dataDir=/data/zookeeper/zookeeper_02/data

dataLogDir=/data/zookeeper/zookeeper_02/logs

clientPort=2182

server.1=192.168.71.82:2881:3881

server.2=192.168.71.82:2882:3882

server.3=192.168.71.82:2883:3883

好比 /work/zookeeper_02/data/myid的数字,也须要对应修改成2。

7.启动

分别进入启动三台服务。至少2台。

/work/zookeeper/zookeeper-01/bin/zkServer.sh start

/work/zookeeper/zookeeper-02/bin/zkServer.sh start

10.启动完成后,查看服务状态。

/work/zookeeper/zookeeper-02/bin/zkServer.sh  status

8 设置开机启动

在开机启动命令文件中,加入两行,命令以下:

vim /etc/rc.local

加入两行,以下:

/usr/bin/su  - root  -c   "/work/zookeeper/zookeeper-01/bin/zkServer.sh start"
/usr/bin/su  - root  -c   "/work/zookeeper/zookeeper-02/bin/zkServer.sh start"

具体,请关注 Java 高并发研习社群博客园 总入口


最后,介绍一下疯狂创客圈:疯狂创客圈,一个Java 高并发研习社群博客园 总入口

疯狂创客圈,倾力推出:面试必备 + 面试必备 + 面试必备 的基础原理+实战 书籍 《Netty Zookeeper Redis 高并发实战

img


疯狂创客圈 Java 死磕系列

  • Java (Netty) 聊天程序【 亿级流量】实战 开源项目实战
相关文章
相关标签/搜索