Linux Zookeeper 安装, 带视频
疯狂创客圈 Java 高并发【 亿级流量聊天室实战】实战系列 【博客园总入口 】
面试必备+面试必备之 高并发基础书籍 【Netty Zookeeper Redis 高并发实战 】
疯狂创客圈 高并发 环境 视频,陆续上线:
- Windows Redis 安装(带视频)
- Linux Redis 安装(带视频)
- Windows Zookeeper 安装(带视频)
- Linux Zookeeper 安装(带视频)
- RabbitMQ 离线安装(带视频)
- Nacos 安装(带视频)
- ElasticSearch 安装, 带视频
小视频以及所需工具的百度网盘链接,请参见 疯狂创客圈 高并发社群 博客
1 何为伪集群模式
在学习环境中,如果没有多余的服务器,这里就将三个ZooKeeper 节点都安装到本地机器上,故称谓伪集群模式。
虽然,伪集群模式只是便于开发、普通测试,尽量不用于生产环境。从学习的角度来说,如果了解了伪集群模式下的安装和配置,生产环境下的安装和配置的方法,也是大致差不多的。
安装ZooKeeper之前,需要规划一下伪集群节点的个数,ZooKeeper节点数有以下要求:
(1)ZooKeeper集群节点数必须是基数。
为什么呢?ZooKeeper 集群中,需要一个主节点,称之为leader节点。leader节点是集群通过选举的规则,从所有节点中选举出来的。选举的规则中很重要的一条是:要求可用节点数量 > 总节点数量/2 。如果是偶数个节点,则可能会出现不满足这个规则的情况。
(2)ZooKeeper集群至少是3个。
ZooKeeper可以通过一个节点,正常启动和提供服务。但是,一个节点的ZooKeeper服务,不能叫做集群,其可靠性大打折扣,仅仅作为学习使用。正常情况下,搭建ZooKeeper集群,至少需要3个节点。
这里,作为学习案例,在本地机器上,规划搭建一个3个节点的伪集群。 实际上,启动的时候,启动两个节点,Zookeeper就可以正常工作了。
2 下载并解压缩
首先是下载。在apache的官方网站提供了好多镜像下载地址,然后找到对应的版本,目前最新的是3.4.13。
http://mirrors.cnnic.cn/apache/ZooKeeper/ZooKeeper-3.4.13/ZooKeeper-3.4.13.tar.gz
疯狂创客圈网盘,已经备好的安装包,也可以直接下载
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 高并发实战》
疯狂创客圈 Java 死磕系列
- Java (Netty) 聊天程序【 亿级流量】实战 开源项目实战
- Netty 源码、原理、JAVA NIO 原理
- Java 面试题 一网打尽
- 疯狂创客圈 【 博客园 总入口 】
Linux Zookeeper 安装, 带视频的更多相关文章
- ElasticSearch 安装, 带视频
疯狂创客圈 Java 高并发[ 亿级流量聊天室实战]实战系列 [博客园总入口 ] 架构师成长+面试必备之 高并发基础书籍 [Netty Zookeeper Redis 高并发实战 ] 疯狂创客圈 高并 ...
- Linux - IDA - 安装 ( 带F5功能 )
Linux - IDA - 安装 ( 带F5功能 ) 0x00 前言 最近在熟悉deepin系统,想着把逆向的一些软件也迁移过去,但像ida,Ollydbg这些工具一般都是在windows下使用,所以 ...
- Eureka 入门,带视频
疯狂创客圈 Java 高并发[ 亿级流量聊天室实战]实战系列 [博客园总入口 ] 架构师成长+面试必备之 高并发基础书籍 [Netty Zookeeper Redis 高并发实战 ] 前言 Crazy ...
- springcloud Config 入门,带视频
疯狂创客圈 Java 高并发[ 亿级流量聊天室实战]实战系列 [博客园总入口 ] 架构师成长+面试必备之 高并发基础书籍 [Netty Zookeeper Redis 高并发实战 ] 前言 Crazy ...
- Zuul 详解,带视频
疯狂创客圈 Java 高并发[ 亿级流量聊天室实战]实战系列 [博客园总入口 ] 架构师成长+面试必备之 高并发基础书籍 [Netty Zookeeper Redis 高并发实战 ] 前言 Crazy ...
- Linux Redis 安装(带视频)
疯狂创客圈 Java 高并发[ 亿级流量聊天室实战]实战系列 [博客园总入口 ] 架构师成长+面试必备之 高并发基础书籍 [Netty Zookeeper Redis 高并发实战 ] 疯狂创客圈 高并 ...
- Windows Redis 安装(带视频)
疯狂创客圈 Java 高并发[ 亿级流量聊天室实战]实战系列 [博客园总入口 ] 架构师成长+面试必备之 高并发基础书籍 [Netty Zookeeper Redis 高并发实战 ] 疯狂创客圈 高并 ...
- RabbitMQ 离线安装(带视频)
疯狂创客圈 Java 高并发[ 亿级流量聊天室实战]实战系列 [博客园总入口 ] 架构师成长+面试必备之 高并发基础书籍 [Netty Zookeeper Redis 高并发实战 ] 疯狂创客圈 高并 ...
- Nacos 安装(带视频)
疯狂创客圈 Java 高并发[ 亿级流量聊天室实战]实战系列 [博客园总入口 ] 架构师成长+面试必备之 高并发基础书籍 [Netty Zookeeper Redis 高并发实战 ] 疯狂创客圈 高并 ...
随机推荐
- 二进制安装 k8s 1.15.6 集群
目录: 第一篇 环境介绍与基础配置 第二篇 部署前期准备工作 第三篇 ETCD 集群部署 第四篇 master节点的部署介绍和前置工作 第五篇 kube-nginx 和 keepalived 部署安装 ...
- Chrome插件安装的3种方法,解决拖放不能安装的情况,并提供插件下载
本文摘录于Chrome插件网站 方法一:拖放安装 下载插件的crx文件后,打开Chrome的扩展页面(chrome://extensions/或按Chrome菜单图标>更多工具>扩展程序) ...
- java调用webservice,比较简单方便的方法。
首先,请同学们自行了解webservice的基础知识. 个人理解,webservice约等于使用http+xml技术进行跨平台的数据交互. http和xml我们都很熟悉了,把他们两个组合到一起就是we ...
- javascript实用Date工具
时间字符串和年月日数据之间的自由转换工具:2018年更新版 上代码: /** * @Desc: 时间处理工具 * @Author: 拿饭盒当烟灰缸 * @Date: 2018-02-27 15:42: ...
- 程序员修神之路--打通Docker镜像发布容器运行流程
菜菜哥,我看了一下docker相关的内容,但是还是有点迷糊 还有哪不明白呢? 如果我想用docker实现所谓的云原生,我的项目该怎么发布呢? 这还是要详细介绍一下docker了 Docker 是一个开 ...
- SpringBoot 发送邮件功能实现
背景 有个小伙伴问我你以前发邮件功能怎么弄的.然后我就给他找了个demo,正好在此也写一下,分享给大家. 理清痛点 发送邮件,大家可以想一下,坑的地方在哪? 我觉得是三个吧. 第一:邮件白名单问题. ...
- 小白学 Python 爬虫(17):Requests 基础使用
人生苦短,我用 Python 前文传送门: 小白学 Python 爬虫(1):开篇 小白学 Python 爬虫(2):前置准备(一)基本类库的安装 小白学 Python 爬虫(3):前置准备(二)Li ...
- 对于在Dao层,一个DML操作一个事务,升级到Service层,一个用户,一个事务
原先的连接Connection,只能是来一次,新创建一个连接connection.这样如果事务在Dao层已经默认提交,在service层出错时,对于俩张关联会有俩种不同的结果.为了解决这样的问题,我们 ...
- MyBatis—resultMap 的关联方式实现多表查询(多 对一)
mapper 层 a)在 StudentMapper.xml 中定义多表连接查询 SQL 语句, 一次性查到需要的所有数据, 包括对应班级的信息. b)通过<resultMap>定义映射关 ...
- [TimLinux] CSS 计数功能实现递归目录
内容引用自<css世界>: count-reset 与 counter 为父子关系,兄弟关系会导致序号混乱 调用一次 count-increment 将给序号进行一次报数,调用 count ...