先准备好三台linux(虚拟机)。

1. 先把Java环境配好。我CentOS-7-x86_64-DVD-1708 + jdk1.8.0_161

1.1 先把jdk上传到系统里面(我利用的Filezilla),我在系统的根目录建了一个文件夹soft,用来存放需要的安装包,比如jdk、Zookeeper

1.2 先卸载系统自带的JDK(切换到root)

[root@localhost /]# rpm -qa|grep java
[root@localhost /]# rpm -e java-1.8.-openjdk-1.8.0.131-.b12.el7.x86_64 --nodeps
[root@localhost /]# rpm -e java-1.8.-openjdk-headless-1.8.0.131-.b12.el7.x86_64 --nodeps

1.3  新建一个Java目录,然后定位到我们安装包的目录,再进行解压

mkdir /usr/local/java

cd /soft/

tar -zxvf jdk-8u161-linux-x64.tar.gz -C /usr/local/java/

进入目标目录:可以看到刚解压的文件

1.4 配置环境变量

vim /etc/profile

在文件里面加入如下配置

# java
export JAVA_HOME=/usr/local/java/jdk1..0_161
export JRE_HOME=/usr/local/java/jdk1..0_161/jre
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib
export PATH=$JAVA_HOME/bin:$JRE_HOME/bin:$PATH

1.5 最后刷新配置,查看Java是否安装成功

2. 三台机器,配置Zookeeper

2.1 定位到安装包文件夹,然后执行解压(所有操作三台机器一样)

[root@localhost soft]# tar -zxvf zookeeper-3.4..tar.gz -C /usr/local/

可以看到Zookeeper已经存在于/usr/local/目录下了

2.2 配置一下环境变量(此步骤的目的是:每次启动服务就不需要定位到Zookeeper的bin目录了)

vim /etc/profile

# zookeeper
export ZK_HOME=/usr/local/zookeeper-3.4.
export PATH=$ZK_HOME/bin:$PATH

2.3 配置Zookeeper的配置文件

进入zookeeper的conf目录,修改配置文件名

[root@localhost zookeeper-3.4.]# cd conf
[root@localhost conf]# mv zoo_sample.cfg zoo.cfg
[root@localhost conf]# vim zoo.cfg

2.4 具体配置

dataDir=/usr/local/zookeeper-3.4./data

server.=192.168.192.128::
server.=192.168.192.129::
server.=192.168.192.130::

首先 修改 dataDir,顾名思义就是【数据目录】了,修改成我们自定义的即可。

然后看下面的三个server:

(1)为什么是三个,因为Zookeeper喜欢奇数不喜欢偶数。

(2)三行server解释

官方解释

The entries of the form server.X list the servers that make up the ZooKeeper service. When the server starts up, it knows which server it is by looking for the file myid in the data directory. That file has the contains the server number, in ASCII.

Finally, note the two port numbers after each server name: " 2888" and "3888". Peers use the former port to connect to other peers. Such a connection is necessary so that peers can communicate, for example, to agree upon the order of updates. More specifically, a ZooKeeper server uses this port to connect followers to the leader. When a new leader arises, a follower opens a TCP connection to the leader using this port. Because the default leader election also uses TCP, we currently require another port for leader election. This is the second port in the server entry.

蹩脚翻译

表单server.X的条目列出构成ZooKeeper服务的服务器。当服务器启动时,它通过查找数据目录中的文件myid来知道它是哪个服务器 。该文件包含服务器编号,以ASCII格式显示。

最后,请注意每个服务器名称后面的两个端口号:“2888”和“3888”。对等体使用前端口连接到其他对等体。这样的连接是必要的,使得对等体可以进行通信,例如,以商定更新的顺序。更具体地说,一个ZooKeeper服务器使用这个端口来连接追随者到领导者。当新的领导者出现时,追随者使用此端口打开与领导者的TCP连接。因为默认领导选举也使用TCP,所以我们目前需要另外一个端口进行领导选举。这是服务器条目中的第二个端口。

大概意思

server.X=A:B:C

X-代表服务器编号

A-代表ip

B和C-代表端口,这个端口用来系统之间通信

2.5 根据dataDir进行X的配置【这里三台服务器不一样!!!】

找到Zookeeper目录,新建data文件夹,并且在data文件夹下面创建一个文件,叫myid,并且在文件里写入server.X对应的X

[root@localhost zookeeper-3.4.]# mkdir data

然后

cd data

vim myid

#之后会产生一个新文件,直接在里面写 X 即可

#比如我配置的三个server,myid里面写的X就是server.X=ip:: 中ip所对应的X

 server.0=192.168.192.128:2888:3888【192.168.192.128服务器上面的myid填写0】
 server.1=192.168.192.129:2888:3888【192.168.192.129服务器上面的myid填写1】
 server.2=192.168.192.130:2888:3888【192.168.192.130服务器上面的myid填写2】

2.6 最后启动服务器

先刷新一下环境变量

source /etc/profile

然后开启防火墙

[root@localhost zookeeper-3.4.]# firewall-cmd --zone=public --add-port=/tcp --permanent
success
[root@localhost zookeeper-3.4.]# firewall-cmd --zone=public --add-port=/tcp --permanent
success
[root@localhost zookeeper-3.4.]# systemctl restart firewalld

然后

zkServer.sh start
输出:

[root@localhost zookeeper-3.4.]# zkServer.sh start
ZooKeeper JMX enabled by default
Using config: /usr/local/zookeeper-3.4./bin/../conf/zoo.cfg
Starting zookeeper ... STARTED

是否启动成功,执行以下命令

zkServer.sh status

128

[root@localhost zookeeper-3.4.]# zkServer.sh status
ZooKeeper JMX enabled by default
Using config: /usr/local/zookeeper-3.4./bin/../conf/zoo.cfg
Mode: follower

129

[root@localhost zookeeper-3.4.]# zkServer.sh status
ZooKeeper JMX enabled by default
Using config: /usr/local/zookeeper-3.4./bin/../conf/zoo.cfg
Mode: leader

130

[root@localhost zookeeper-3.4.]# zkServer.sh status
ZooKeeper JMX enabled by default
Using config: /usr/local/zookeeper-3.4./bin/../conf/zoo.cfg
Mode: follower

其实也可以查看启动过程

zkServer.sh start-foreground

PS:想要用客户端连接,需要把2181端口打开(防火墙)

【更新】搭建 Zookeeper-3.4.11 集群的更多相关文章

  1. 【ZooKeeper系列】1.ZooKeeper单机版、伪集群和集群环境搭建

    ZooKeeper安装模式主要有3种: 单机版(Standalone模式)模式:仅有一个ZooKeeper服务 伪集群模式:单机多个ZooKeeper服务 集群模式:多机多ZooKeeper服务 1 ...

  2. 【Hadoop离线基础总结】zookeeper的介绍以及集群环境搭建、网络编程和RPC的简单了解

    ZooKeeper的介绍以及集群环境搭建.网络编程和RPC的简单了解 ZooKeeper介绍 概述 ZooKeeper是一个分布式协调服务的开源框架,主要用来解决分布式集群中应用系统的一致性问题.例如 ...

  3. K8S 搭建 Kafka:2.13-2.6.0 和 Zookeeper:3.6.2 集群

    搭建 Kafka:2.13-2.6.0 和 Zookeeper:3.6.2 集群 一.服务版本信息: Kafka:v2.13-2.6.0 Zookeeper:v3.6.2 Kubernetes:v1. ...

  4. Azure上搭建ActiveMQ集群-基于ZooKeeper配置ActiveMQ高可用性集群

    ActiveMQ从5.9.0版本开始,集群实现方式取消了传统的Master-Slave方式,增加了基于ZooKeeper+LevelDB的实现方式. 本文主要介绍了在Windows环境下配置基于Zoo ...

  5. 11. 搭建一个完整的K8S集群

    11. 搭建一个完整的Kubernetes集群 1. kubectl的命令遵循分类的原则(重点) 语法1: kubectl 动作 类 具体的对象 例如: """ kube ...

  6. zookeeper作为soa服务器集群的协调调度服务器

    zookeeper作为soa服务器集群的协调调度服务器,当然自身也支持集群. ZooKeeper搭建系列集 ZooKeeper系列之一:ZooKeeper简介 ZooKeeper系列之二:ZooKee ...

  7. keepalived工作原理和配置说明 腾讯云VPC内通过keepalived搭建高可用主备集群

    keepalived工作原理和配置说明 腾讯云VPC内通过keepalived搭建高可用主备集群 内网路由都用mac地址 一个mac地址绑定多个ip一个网卡只能一个mac地址,而且mac地址无法改,但 ...

  8. 使用Kubeadm搭建Kubernetes(1.12.2)集群

    Kubeadm是Kubernetes官方提供的用于快速安装Kubernetes集群的工具,伴随Kubernetes每个版本的发布都会同步更新,在2018年将进入GA状态,说明离生产环境中使用的距离越来 ...

  9. Hadoop及Zookeeper+HBase完全分布式集群部署

    Hadoop及HBase集群部署 一. 集群环境 系统版本 虚拟机:内存 16G CPU 双核心 系统: CentOS-7 64位 系统下载地址: http://124.202.164.6/files ...

  10. 使用国内的镜像源搭建 kubernetes(k8s)集群

    1. 概述 老话说的好:努力学习,提高自己,让自己知道的比别人多,了解的别人多. 言归正传,之前我们聊了 Docker,随着业务的不断扩大,Docker 容器不断增多,物理机也不断增多,此时我们会发现 ...

随机推荐

  1. LVM常规操作记录梳理(扩容/缩容/快照等)

    基本介绍Linux用户安装Linux 操作系统时遇到的一个最常见的难以决定的问题就是如何正确地给评估各分区大小,以分配合适的硬盘空间.随着 Linux的逻辑盘卷管理功能的出现,这些问题都迎刃而解, l ...

  2. Shell学习笔记一

    Shell 简介 Shell 是一个用 C 语言编写的程序,它是用户使用 Linux 的桥梁.Shell 既是一种命令语言,又是一种程序设计语言. 基本上Shell分两大类:一:图形界面Shell(G ...

  3. 《Linux及安全》课程实践二

    编译生成新内核 一.实践原理 Linux模块是一些可以作为独立程序来编译的函数和数据类型的集合.之所以提供模块机制,是因为Linux本身是一个单内核.单内核由于所有内容都集成在一起,效率很高,但可扩展 ...

  4. 201306114357-实验3-C语言

    #include<stdio.h>#include <stdlib.h>#include <time.h>main(){ int a,b,c,n,u,i,sum;  ...

  5. HDU 2087 剪花布条 (字符串哈希)

    http://acm.hdu.edu.cn/showproblem.php?pid=2087 Problem Description 一块花布条,里面有些图案,另有一块直接可用的小饰条,里面也有一些图 ...

  6. [转帖]龙芯下一代处理器微结构GS464E细节曝光

    龙芯下一代处理器微结构GS464E细节曝光 [日期:2015-05-26] 来源:Linux公社  作者:Linux [字体:大 中 小] http://www.linuxidc.com/Linux/ ...

  7. Python中=、copy、deepcopy

    一.Python中的"=" a = 1 b = 1 c = a print(id(a)) print(id(b)) print(id(c)) #输出为 14070784103734 ...

  8. Android控件第4类——ProgressBar

    ProgressBar是进度条,是比较常用的控件.它有一个抽象的子类——AbsSeekBar,AbsSeekBar有两个比较常用子类,SeekBar.RatingBar. 1.ProgressBar, ...

  9. 基于C#.NET的高端智能化网络爬虫(二)(攻破携程网)

    本篇故事的起因是携程旅游网的一位技术经理,豪言壮举的扬言要通过他的超高智商,完美碾压爬虫开发人员,作为一个业余的爬虫开发爱好者,这样的言论我当然不能置之不理.因此就诞生了以及这一篇高级爬虫的开发教程. ...

  10. 转《js闭包与内存泄漏》

    首先,能导致内存泄漏的一定是引用类型的变量,比如函数和其他自定义对象.而值类型的变量是不存在内存泄漏的,比如字符串.数字.布尔值等.因为值类型是靠复制来传递的,而引用类型是靠类似c语言中的指针来传递的 ...