美文网首页
Zookeeper 高可用搭建

Zookeeper 高可用搭建

作者: Franck_ | 来源:发表于2020-11-15 14:59 被阅读0次

1 单机搭建zk

2 zk可视化

3 spring cloud单机整合zk

4 zk集群搭建

5 spring cloud整合zk集群



单机搭建

先去下载zookepper下来。

下载地址: https://archive.apache.org/dist/zookeeper/stable/

现在当前最新是3.5.8

image.png

注意,这里要用xxx-bin.tar.gz这个包,不然启动zk的时候会报错。

然后上传到服务器, 然后解压。

tar -zxvf apache-zookeeper-3.5.8-bin.tar.gz

然后进入conf目录下,将zoo_sample.cfg 复制一份明明为zoo.cfg .

cp zoo_sample.cfg zoo.cfg

然后修改这个配置文件

vi zoo.cfg

这些都是默认的配置,下面做一些解释说明:

# 心跳检查时间,默认2秒
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
# 数据存储的位置
dataDir=/tmp/zookeeper
# 默认使用端口
clientPort=2181


#maxClientCnxns=60

#autopurge.snapRetainCount=3

#autopurge.purgeInterval=1
~                                                                                                                                                                                                                                                            
~                                                                                                                                                                                                                                                            
~                                        

这里我就没有进行修改,根据需要进行修改,修改完毕后,保存退出

:wq

然后去到zk的bin目录,执行脚本启动zk

sh zkServer.sh start

启动后可以看到如下信息:

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


启动后,可以去zk的logs目录,看看是否有报错信息:
打开logs目录后执行.

grep -E -i "((exception)|(error))" *

或者 直接看日志文件也可以。

如果没有任何返回则说明没有报错。


3 Spring cloud 整合ZK

引入包:


        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-zookeeper-discovery</artifactId>
        </dependency>

启动类加上注解: @EnableFeignClients

项目的配置文件配置进行配置 zk的连接:

spring.cloud.zookeeper.connect-string=192.168.43.210:2181

这样就集成了单个zk服务注册发现中心。

4 zk集群搭建

集群模式和单机模式差不多,增加的步骤如下
1 在zoo.cfg配置文件里面,增加集群结点的配置信息

# 配置zk集群节点信息
server.1=192.168.1.3:2888:3888
server.2=192.168.1.4:2888:3888
server.3=192.168.1.5:2888:3888  

上面的集群配置中,只是比单机配置多了server.n=A:B:C的几个配置,该配置项的规则如下:

1、统一前缀,"server.";

2、"server."后面的数字n表示机器的id(序号),可以随意指定,不要重复即可;

3、A表示集群中zk机器的ip;

4、B表示Zk集群中,follower与leader通信的端口;

5、C表示当leader宕机时,各follower选举新leader的通信端口;

2 在各个结点的dataDir目录下,创建myid文件,文件名=myid,myid文件里面的内容就是上面配置对应的server.id的id。 例如server.1 那个结点的myid文件的内容为: 1。 单单包含一个数字1 ,不包含其他内容。

创建命令可以使用这个: 创建一个内容为1的myid文件,这个文件在目录 /usr/local/zookeeper/data/下。

 echo 1 > /usr/local/zookeeper/data/myid

创建完成后,依次去各个结点,启动zoopkeeper即可。

启动后,可以执行sh zkServer.sh status 来查看各个结点的状态。

启动的时候,注意防火墙需要开放对应的端口。

还有一些不明白的问题:
1 怎么指定那个是leader?需要去管理吗?
不需要指定。自动会有一个。 可以执行 sh zkServer.sh status来看。

2 leader节点宕机后,是自动选举的吗?选举有什么规则呢?
是自动进行选举的。

3 结点宕机重启后,会是follower吗?

5 spring cloud整合zk集群

很简单,只需要在配置zk地址的时候填写多个集群服务器的地址即可。

spring.cloud.zookeeper.connect-string=192.168.43.210:2181,192.168.43.211:2181,192.168.43.212:2181

4 zk宕机后,微服务受影响吗?
如果之前微服务有同步过注册表信息,就不会受影响。 微服务会读取本地的服务注册信息进行调用。

5 微服务是往leader里面写数据的,怎么识别到哪台是leader呢?

参考: Zookeeper单机与集群搭建配置

相关文章

网友评论

      本文标题:Zookeeper 高可用搭建

      本文链接:https://www.haomeiwen.com/subject/aornbktx.html