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呢?
网友评论