我这里采用的是模拟真实情况:

部署三台虚拟机Centos7

192.168.242.101
192.168.242.102
192.168.242.103

每台机器都安装Zookeeper且一致:

/usr/local/apache-zookeeper-3.7.0-bin/

要三台机器上的Zookeeper相互通信,设置比较简单

1、找到ZK配置的dataDir路径,配置myid文件,内容即服务编号

[root@localhost ~]# cat /usr/local/apache-zookeeper-3.7.0-bin/conf/zoo.cfg
# The number of milliseconds of each tick
tickTime=2000
# The number of ticks that the initial
# synchronization phase can take
initLimit=10
# The number of ticks that can pass between
# sending a request and getting an acknowledgement
syncLimit=5
# the directory where the snapshot is stored.
# do not use /tmp for storage, /tmp here is just
# example sakes.
dataDir=/tmp/zookeeper
# the port at which the clients will connect
clientPort=2181
# the maximum number of client connections.
# increase this if you need to handle more clients
#maxClientCnxns=60
#
# Be sure to read the maintenance section of the
# administrator guide before turning on autopurge.
#
# http://zookeeper.apache.org/doc/current/zookeeperAdmin.html#sc_maintenance
#
# The number of snapshots to retain in dataDir
#autopurge.snapRetainCount=3
# Purge task interval in hours
# Set to "0" to disable auto purge feature
#autopurge.purgeInterval=1 ## Metrics Providers
#
# https://prometheus.io Metrics Exporter
#metricsProvider.className=org.apache.zookeeper.metrics.prometheus.PrometheusMetricsProvider
#metricsProvider.httpPort=7000
#metricsProvider.exportJvmInfo=true server.1 = 192.168.242.101:2182:3888
server.2 = 192.168.242.102:2182:3888
server.3 = 192.168.242.103:2182:3888 [root@localhost ~]#

zoo.cfg默认是找zoo_sample.cfg复制粘贴的

可以看到dataDir默认是配置在  /tmp/zookeeper

然后配置myid文件:

[root@192.168.242.101 ~]# echo 1 > /tmp/zookeeper/myid

[root@192.168.242.102 ~]# echo 2 > /tmp/zookeeper/myid

[root@192.168.242.103 ~]# echo 3 > /tmp/zookeeper/myid

然后回到zoo.cfg,把所有Zookeeper都注册一遍:

vim /usr/local/apache-zookeeper-3.7.0-bin/conf/zoo.cfg

格式: server.[myid编号] = ZK服务IP:ZK服务端口:选举端口

在最底下空行处追加

server.1 = 192.168.242.101:2182:3888
server.2 = 192.168.242.102:2182:3888
server.3 = 192.168.242.103:2182:3888

这里要注意,不能再使用单例模式的2181端口,否则ZK报错启动失败,端口已被占用

选举端口在黑马的教程中是使用3881端口,尚硅谷则使用3888,应该是都可以使用的

下一步是开放防火墙端口,也可以直接选择关闭防火墙:

systemctl start firewalld
firewall-cmd --zone=public --add-port=2182/tcp --permanent
firewall-cmd --zone=public --add-port=3888/tcp --permanent
firewall-cmd --reload

然后依次启动Zookeeper:

/usr/local/apache-zookeeper-3.7.0-bin/bin/zkServer.sh start

启动之后检查一下各个ZK的状态是否正常

1号机ZK:

[root@localhost ~]# /usr/local/apache-zookeeper-3.7.0-bin/bin/zkServer.sh status
/usr/bin/java
ZooKeeper JMX enabled by default
Using config: /usr/local/apache-zookeeper-3.7.0-bin/bin/../conf/zoo.cfg
Client port found: 2181. Client address: localhost. Client SSL: false.
Mode: leader
[root@localhost ~]#

2号机ZK:

[root@localhost ~]# /usr/local/apache-zookeeper-3.7.0-bin/bin/zkServer.sh status
/usr/bin/java
ZooKeeper JMX enabled by default
Using config: /usr/local/apache-zookeeper-3.7.0-bin/bin/../conf/zoo.cfg
Client port found: 2181. Client address: localhost. Client SSL: false.
Mode: follower
[root@localhost ~]#

3号机ZK:

[root@localhost ~]# /usr/local/apache-zookeeper-3.7.0-bin/bin/zkServer.sh status
/usr/bin/java
ZooKeeper JMX enabled by default
Using config: /usr/local/apache-zookeeper-3.7.0-bin/bin/../conf/zoo.cfg
Client port found: 2181. Client address: localhost. Client SSL: false.
Mode: follower
[root@localhost ~]#

可以看到模式发生变化了,选举机制将1号机ZK任命为Leader,2和3号机ZK则任命为Follower

说明集群部署成功

这里补充一个尚硅谷的集群控制脚本,非常实用

# 集群控制脚本
vim /usr/bin/zk-cluster
######################################################################
#!/bin/bash
case $1 in
"start"){
for i in 192.168.242.131 192.168.242.132 192.168.242.133
do
echo ---------- zookeeper $i 启动 ------------
ssh $i "/opt/module/apache-zookeeper-3.7.0/bin/zkServer.sh start"
done
};;
"stop"){
for i in 192.168.242.131 192.168.242.132 192.168.242.133
do
echo ---------- zookeeper $i 停止 ------------
ssh $i "/opt/module/apache-zookeeper-3.7.0/bin/zkServer.sh stop"
done
};;
"status"){
for i in 192.168.242.131 192.168.242.132 192.168.242.133
do
echo ---------- zookeeper $i 状态 ------------
ssh $i "/opt/module/apache-zookeeper-3.7.0/bin/zkServer.sh status"
done
};;
esac
###################################################################### # 可执行权限赋予
chmod +x /usr/bin/zk-cluster # 集群操作
zk-cluster start
zk-cluster stop
zk-cluster status

【Zookeeper】Re03 集群搭建的更多相关文章

  1. 分享知识-快乐自己:zookeeper 伪集群搭建

    1):单一 zookeeper  搭建步骤 2):zookeeper 伪集群搭建 1):新建一个集群目录 [root@zoodubbo opt]# mkdir zookeeper_cluster 2) ...

  2. zookeeper伪集群搭建

    zookeeper伪集群搭建 1. 下载zookeeper: https://zookeeper.apache.org/ 2. 解压: tar -zxvf zookeeper-3.4.14.tar.g ...

  3. Zookeeper分布式集群搭建

    实验条件:3台安装linux的机子,配置好Java环境. 步骤1:下载并分别解包到每台机子的/home/iHge2k目录下,附上下载地址:http://mirrors.cnnic.cn/apache/ ...

  4. 初始zookeeper与集群搭建实例

    zookeeper是什么 Zookeeper,一种分布式应用的协作服务,是Google的Chubby一个开源的实现,是Hadoop的分布式协调服务,它包含一个简单的原语集,应用于分布式应用的协作服务, ...

  5. Zookeeper + Kafka 集群搭建

    第一步:准备 1. 操作系统 CentOS-7-x86_64-Everything-1511 2. 安装包 kafka_2.12-0.10.2.0.tgz zookeeper-3.4.9.tar.gz ...

  6. [dubbo实战] dubbo+zookeeper伪集群搭建

    zookeeper作为注册中心,服务器和客户端都要访问,如果有大量的并发,肯定会有等待.所以可以通过zookeeper集群解决. 一.为什么需要zookeeper呢? 大部分分布式应用需要一个主控.协 ...

  7. [dubbo实战] dubbo+zookeeper伪集群搭建 (转)

    zookeeper作为注册中心,服务器和客户端都要访问,如果有大量的并发,肯定会有等待.所以可以通过zookeeper集群解决. 一.为什么需要zookeeper呢? 大部分分布式应用需要一 个主控. ...

  8. 初识ZooKeeper与集群搭建实例

    原文链接:http://www.linuxidc.com/Linux/2015-02/114230.htm zookeeper是什么 Zookeeper,一种分布式应用的协作服务,是Google的Ch ...

  9. Zookeeper+ActiveMQ集群搭建

    搭建三台虚拟机安装centos7.要提前安装好jdk环境 1.环境准备,搭建三台虚拟机ip分别是 192.168.192.130 192.168.192.131 192.168.192.134 Zoo ...

  10. JAVAEE——宜立方商城08:Zookeeper+SolrCloud集群搭建、搜索功能切换到集群版、Activemq消息队列搭建与使用

    1. 学习计划 1.solr集群搭建 2.使用solrj管理solr集群 3.把搜索功能切换到集群版 4.添加商品同步索引库. a) Activemq b) 发送消息 c) 接收消息 2. 什么是So ...

随机推荐

  1. 推荐一款免费的终端工具-Windterm

    Windterm 提到SSH终端工具,大家一定会想到putty.xshell.MobaXterm这些产品.但是当我使用Windterm后,我彻底改变了我对之前使用SSH终端工具的认知,其强大的能力,彻 ...

  2. 加入域 " " 时出现了以下错误

    加入域 " " 时出现了以下错误: 因为文件共享不安全,所以你不能连接到文件共享.此共享需要过时的 SMB1 协议,而此协议是不安全的,可能会使你的系统遭受攻击. 你的系统需要 S ...

  3. python 简单剖析及语法基础

    1.Python的应用领域 WEB开发 网络编程 爬虫 云计算 人工智能.数据分析 自动化运维  金融分析  科学运算  游戏开发 2.Python的发展前景 知乎上有一篇文章,问Python未来10 ...

  4. org.elasticsearch.client.transport.NoNodeAvailableException: None of the configured nodes are available es端口号及集群名称

    org.elasticsearch.client.transport.NoNodeAvailableException: None of the configured nodes are availa ...

  5. __int1024!

    使用说明: 数据范围约为\(-2^{1024}\le N \le2^{1024}\),反映到十进制约为\(-10^{309}\le N \le10^{309}\),但不保证完全如此. 输入输出使用自带 ...

  6. 淘宝二面:千万级数据中如何用Redis维护热点数据"?

    MySQL里有千万条数据,但是Redis中只存10万的数据,如何保证redis中的数据都是热点数据? 我是小宋, 一个只熬夜但不秃头的Java程序员.关注我,带你轻松过面试.提升简历亮点(14个dem ...

  7. Pytest 失败重运行

    需安装第三方插件:pytest-rerun.pytest-rerunfailures 失败重试和失败重运行的区别 失败重试:[--reruns=1],用例执行失败后,会立即开始重试一次此用例,再执行下 ...

  8. Atcoder Beginner Contest 324 F Beautiful Path 题解-分数规划

    为了更好的阅读体验,请点击这里 分数规划小技巧:尽可能将式子写成存在某种取值,使得不等式成立的形式. 不然可能需要绕几个弯才能想出来. 题目链接 题目大意:给出一个 DAG,每条边有一个 \(b_i, ...

  9. HDD成都站:HMS Core 6.0带来新可能,多元服务驱动产品价值提升

    9月10日,由华为开发者联盟主办的HDD(Huawei Developer Day)于成都举行.活动中,华为HMS Core各领域专家重点解读了HMS Core 6.0为开发者带来的多项全新能力,及生 ...

  10. socket 地址复用 SO_REUSEADDR

    背景 默认的情况下,如果一个网络应用程序的一个套接字 绑定了一个端口(例如888),这时候,别的套接字就无法使用这个端口( 888 ) ref : https://blog.csdn.net/tenn ...