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

部署三台虚拟机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. 系统镜像烧写及U-Boot编译

    1 系统镜像烧写 1.1 工具介绍 烧写软件:使用NXP的MfgTool2工具烧写,工具路径:[正点原子]阿尔法Linux开发板(A盘)-基础资料\05.开发工具\04.正点原子MFG_TOOL出厂固 ...

  2. c# webApi返回Excel数据流 || 使用Excel数据流的方式下载Excel

    背景: 在前端无法生成特殊的excel表格,或操作复杂的时候会通过后台进行生成excel.但是服务器的资源也非常宝贵,所以通过数据流的方式就可以实现:不在服务器存储的情况下,使前端成功下载excel文 ...

  3. Thread交互及interrupt示例

    package com.test.docxml; /** Thread交互及interrupt示例 * 线程模拟:一个在睡觉,一个在敲墙,敲墙完成之后,把睡觉的吵醒了. */ public class ...

  4. MySQL Docker搭建挂载并启用远程连接

    1.拉取镜像 后面可以指定版本号,这里使用8.0 docker pull docker.io/mysql:8.0 2.查看mysql镜像 docker images 3.启动docker并挂载 doc ...

  5. Nuxt.js 深入浅出:目录结构与文件组织详解

    title: Nuxt.js 深入浅出:目录结构与文件组织详解 date: 2024/6/18 updated: 2024/6/18 author: cmdragon excerpt: 摘要:本文详述 ...

  6. 推荐一个vs Nuget部署插件

    写在前面 nuget部署工具, 无论是直接用web上传还是用命令行工具上传,还是其他第三方工具我都没找到满意,直到那天在群里提了一下,有位大佬说了个NuPackvs插件,用了下,感觉基本满足了我的需求 ...

  7. SpringBoot 过滤器更改 Request body ,并实现数据解密

    客户端.服务端网络通信,为了安全,会对报文数据进行加解密操作. 在SpringBoot项目中,最好使用参考AOP思想,加解密与Controller业务逻辑解耦,互不影响. 以解密为例:需要在reque ...

  8. 《HelloGitHub》第 99 期

    兴趣是最好的老师,HelloGitHub 让你对编程感兴趣! 简介 HelloGitHub 分享 GitHub 上有趣.入门级的开源项目. github.com/521xueweihan/HelloG ...

  9. CF1862C 题解

    考虑每个木板在水平放置后对每个位置上产生的贡献. 稍微手玩几组样例: 不难发现一个高度为 \(h\) 的木板在水平放置后会是位置 \([1,h]\) 上高度增加 \(1\). 但是高度最大是 \(10 ...

  10. c语言生成随机数

    记录示例,留作自用 #include <stdio.h> #include <stdlib.h> #include <time.h> int main(void) ...