ZooKeeper分布式集群安装

本文涉及的产品
日志服务 SLS,月写入数据量 50GB 1个月
注册配置 MSE Nacos/ZooKeeper,118元/月
服务治理 MSE Sentinel/OpenSergo,Agent数量 不受限
简介:   我特意选择了稳定版......   奇数意思是说奇数和偶数对故障的容忍度是一致的....所以建议配置奇数个,并不是必须奇数... 一、master节点上安装配置 1、下载并解压ZooKeeper-3.

  我特意选择了稳定版......

  奇数意思是说奇数和偶数对故障的容忍度是一致的....所以建议配置奇数个,并不是必须奇数...

一、master节点上安装配置

1、下载并解压ZooKeeper-3.4.6.tar.gz

tar -zxvf zookeeper-3.4.6.tar.gz

  这里路径为 /home/fesh/zookeeper-3.4.6

2、设置the Java heap size  (个人感觉一般不需要配置)

  保守地use a maximum heap size of 3GB for a 4GB machine

3、$ZOOKEEPER_HOME/conf/zoo.cfg

cp zoo_sample.cfg 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=/home/fesh/data/zookeeper
# the port at which the clients will connect
clientPort=2181

 server.1=master:2888:3888
 server.2=slave1:2888:3888
 server.3=slave2:2888:3888

复制代码

4、/home/fesh/data/zookeeper/myid

  在节点配置的dataDir指定的目录下面,创建一个myid文件,里面内容为一个数字,用来标识当前主机,$ZOOKEEPER_HOME/conf/zoo.cfg文件中配置的server.X,则myid文件中就输入这个数字X。(即在每个节点上新建并设置文件myid,其内容与zoo.cfg中的id相对应)这里master节点为 1

mkdir -p /home/fesh/data/zookeeper
cd /home/fesh/data/zookeeper
touch myid
echo "1" > myid

5、设置日志

conf/log4j.properties

 

# Define some default values that can be overridden by system properties
zookeeper.root.logger=INFO, CONSOLE

改为

# Define some default values that can be overridden by system properties  
zookeeper.root.logger=INFO, ROLLINGFILE

#
# Add ROLLINGFILE to rootLogger to get log file output
#    Log DEBUG level and above messages to a log file
log4j.appender.ROLLINGFILE=org.apache.log4j.RollingFileAppender

改为---每天一个log日志文件,而不是在同一个log文件中递增日志

#
# Add ROLLINGFILE to rootLogger to get log file output
#    Log DEBUG level and above messages to a log file
log4j.appender.ROLLINGFILE=org.apache.log4j.DailyRollingFileAppender

 

bin/zkEvn.sh

复制代码
if [ "x${ZOO_LOG_DIR}" = "x" ]
then
    ZOO_LOG_DIR="."
fi

if [ "x${ZOO_LOG4J_PROP}" = "x" ]
then
    ZOO_LOG4J_PROP="INFO,CONSOLE"
fi
复制代码

改为

复制代码
if [ "x${ZOO_LOG_DIR}" = "x" ]
then
    ZOO_LOG_DIR="$ZOOBINDIR/../logs"
fi

if [ "x${ZOO_LOG4J_PROP}" = "x" ]
then
    ZOO_LOG4J_PROP="INFO,ROLLINGFILE"
fi
复制代码

 

二、从master节点分发文件到其他节点

1、在master节点的/home/fesh/目录下

scp -r zookeeper-3.4.6 slave1:~/
scp -r zookeeper-3.4.6 slave2:~/
scp -r data slave1:~/
scp -r data slave2:~/

2、在slave1节点的/home/fesh/目录下

vi ./data/zookeeper/myid

修改为 2

3、在slave2节点的/home/fesh/目录下

vi ./data/zookeeper/myid

修改为 3

三、其他配置

1、在每个节点配置/etc/hosts (并保证每个节点/etc/hostname中分别为master、slave1、slave2) 主机 -IP地址映射

192.168.145.129    master
192.168.145.130    slave1
192.168.145.131    slave2

2、在每个节点配置环境变量/etc/profile

#Set ZOOKEEPER_HOME ENVIRONMENT
export ZOOKEEPER_HOME=/home/fesh/zookeeper-3.4.6
export PATH=$PATH:$ZOOKEEPER_HOME/bin

四、启动

 在每个节点上$ZOOKEEPER_HOME目录下,运行 (这里的启动顺序为 master >  slave1 >  slave2 )

bin/zkServer.sh start

并用命令查看启动状态

bin/zkServer.sh status

master节点

slave1节点

slave2节点

 

(注:之前我配置正确的,但是一直都是,每个节点上都启动了,但就是互相连接不上,最后发现好像是防火墙的原因,啊啊啊!一定要先把防火墙关了!  sudo ufw disable )

五、结束语

5.1 日志报错

  查看$ZOOKEEPER_HOME/zookeeper.out 日志,会发现开始会报错,但当leader选出来之后 就没有问题了。

  我启动的顺序是slave-01>slave-02>slave-03,由于ZooKeeper集群启动的时候,每个结点都试图去连接集群中的其它结点,先启动的肯定连不上后面还没启动的,所以上面日志前面部分的异常是可以忽略的。通过后面部分可以看到,集群在选出一个Leader后,最后稳定了。

  其他结点可能也出现类似问题,属于正常。

5.2 时钟同步

  zookeeper等需要其他机器和master时间同步。

相关实践学习
基于MSE实现微服务的全链路灰度
通过本场景的实验操作,您将了解并实现在线业务的微服务全链路灰度能力。
目录
相关文章
|
2月前
|
存储 负载均衡 监控
dubbo学习一:zookeeper与dubbo的关系,下载安装启动zookeeper(解决启动中报错)
这篇文章是关于Apache Dubbo框架与Zookeeper的关系,以及如何下载、安装和启动Zookeeper的教程,包括解决启动过程中可能遇到的报错问题。
81 3
dubbo学习一:zookeeper与dubbo的关系,下载安装启动zookeeper(解决启动中报错)
|
1月前
|
存储 分布式计算 负载均衡
分布式计算模型和集群计算模型的区别
【10月更文挑战第18天】分布式计算模型和集群计算模型各有特点和优势,在实际应用中需要根据具体的需求和条件选择合适的计算架构模式,以达到最佳的计算效果和性能。
58 2
|
2月前
|
分布式计算 NoSQL Java
Hadoop-32 ZooKeeper 分布式锁问题 分布式锁Java实现 附带案例和实现思路代码
Hadoop-32 ZooKeeper 分布式锁问题 分布式锁Java实现 附带案例和实现思路代码
47 2
|
1月前
|
存储 监控 大数据
构建高可用性ClickHouse集群:从单节点到分布式
【10月更文挑战第26天】随着业务的不断增长,单一的数据存储解决方案可能无法满足日益增加的数据处理需求。在大数据时代,数据库的性能、可扩展性和稳定性成为企业关注的重点。ClickHouse 是一个用于联机分析处理(OLAP)的列式数据库管理系统(DBMS),以其卓越的查询性能和高吞吐量而闻名。本文将从我的个人角度出发,分享如何将单节点 ClickHouse 扩展为高可用性的分布式集群,以提升系统的稳定性和可靠性。
76 0
|
2月前
|
分布式计算 Java Hadoop
Hadoop-30 ZooKeeper集群 JavaAPI 客户端 POM Java操作ZK 监听节点 监听数据变化 创建节点 删除节点
Hadoop-30 ZooKeeper集群 JavaAPI 客户端 POM Java操作ZK 监听节点 监听数据变化 创建节点 删除节点
67 1
|
2月前
|
分布式计算 监控 Hadoop
Hadoop-29 ZooKeeper集群 Watcher机制 工作原理 与 ZK基本命令 测试集群效果 3台公网云服务器
Hadoop-29 ZooKeeper集群 Watcher机制 工作原理 与 ZK基本命令 测试集群效果 3台公网云服务器
43 1
|
2月前
|
分布式计算 Hadoop Unix
Hadoop-28 ZooKeeper集群 ZNode简介概念和测试 数据结构与监听机制 持久性节点 持久顺序节点 事务ID Watcher机制
Hadoop-28 ZooKeeper集群 ZNode简介概念和测试 数据结构与监听机制 持久性节点 持久顺序节点 事务ID Watcher机制
45 1
|
2月前
|
分布式计算 Hadoop
Hadoop-27 ZooKeeper集群 集群配置启动 3台云服务器 myid集群 zoo.cfg多节点配置 分布式协调框架 Leader Follower Observer
Hadoop-27 ZooKeeper集群 集群配置启动 3台云服务器 myid集群 zoo.cfg多节点配置 分布式协调框架 Leader Follower Observer
50 1
|
2月前
|
存储 SQL 消息中间件
Hadoop-26 ZooKeeper集群 3台云服务器 基础概念简介与环境的配置使用 架构组成 分布式协调框架 Leader Follower Observer
Hadoop-26 ZooKeeper集群 3台云服务器 基础概念简介与环境的配置使用 架构组成 分布式协调框架 Leader Follower Observer
51 0
|
3月前
|
安全 应用服务中间件 API
微服务分布式系统架构之zookeeper与dubbo-2
微服务分布式系统架构之zookeeper与dubbo-2