疯狂创客圈 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脚手架打包与启动 |
在学习环境中,若是没有多余的服务器,这里就将三个ZooKeeper 节点都安装到本地机器上,故称谓伪集群模式。
虽然,伪集群模式只是便于开发、普通测试,尽可能不用于生产环境。从学习的角度来讲,若是了解了伪集群模式下的安装和配置,生产环境下的安装和配置的方法,也是大体差很少的。spring
安装ZooKeeper以前,须要规划一下伪集群节点的个数,ZooKeeper节点数有如下要求:
(1)ZooKeeper集群节点数必须是基数。
为何呢?ZooKeeper 集群中,须要一个主节点,称之为leader节点。leader节点是集群经过选举的规则,从全部节点中选举出来的。选举的规则中很重要的一条是:要求可用节点数量 > 总节点数量/2 。若是是偶数个节点,则可能会出现不知足这个规则的状况。
(2)ZooKeeper集群至少是3个。
ZooKeeper能够经过一个节点,正常启动和提供服务。可是,一个节点的ZooKeeper服务,不能叫作集群,其可靠性大打折扣,仅仅做为学习使用。正常状况下,搭建ZooKeeper集群,至少须要3个节点。apache
这里,做为学习案例,在本地机器上,规划搭建一个3个节点的伪集群。 实际上,启动的时候,启动两个节点,Zookeeper就能够正常工做了。编程
首先是下载。在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
安装集群的第一步,在安装目录下,建立好两个目录:日志目录、数据目录。并发
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
修改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不一样,每一行记录,能够端口相同。
在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个。
将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。
分别进入启动三台服务。至少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
在开机启动命令文件中,加入两行,命令以下:
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 高并发实战》