Zookeeper如何实现分布式服务配置中心详解

网友投稿 364 2022-09-14


Zookeeper如何实现分布式服务配置中心详解

目录1 linux安装并启动Zookeeper1.1 安装1.1.1 安装1.2 启动3 Spring Boot配置 3.1 依赖3.2 配置文件3.3 项目代码3.4 启动测试总结

1 Linux安装并启动Zookeeper

1.1 安装

下载链接:https://archive.apache.org/dist/zookeeper/

1.1.1 安装

[root@iZ1608aqb7ntn9Z tmp]# ls

apache-zookeeper-3.5.7-http://bin.tar.gz hsperfdata_root

[root@iZ1608aqb7ntn9Z tmp]# tar -zxvf apache-zookeeper-3.5.7-bin.tar.gz

apache-zookeeper-3.5.7-bin/docs/

apache-zookeeper-3.5.7-bin/docs/skin/

apache-zookeeper-3.5.7-bin/docs/images/

......

[root@iZ1608aqb7ntn9Z tmp]# mv apache-zookeeper-3.5.7-bin /usr/local/zookeeper

[root@iZ1608aqb7ntn9Z tmp]# cd /usr/local/zookeeper

[root@iZ1608aqb7ntn9Z zookeeper]# cd conf/

[root@iZ1608aqb7ntn9Z conf]# ls

configuration.xsl log4j.properties zoo_sample.cfg

[root@iZ1608aqb7ntn9Z conf]# cp zoo_sample.cfg zoo.cfg

[root@iZ1608aqb7ntn9Z conf]# ls

configuration.xsl log4j.properties zoo.cfg zoo_sample.cfg

[root@iZ1608aqb7ntn9Z conf]# vim zoo.cfg

# 修改zoo.cfg配置文件 内容为:

tickTime=2000

initLimit=10

syncLimit=5

dataDir=/usr/local/zookeeper/data

clientPort=2181

# 保存退出

[root@iZ1608aqb7ntn9Z conf]# cd ..

[root@iZ1608aqb7ntn9Z zookeeper]# mkdir datahttp://

[root@iZ1608aqb7ntn9Z zookeeper]# ls

bin conf data docs lib LICENSE.txt NOTICE.txt README.md README_packaging.txt

1.2 启动

[root@iZ1608aqb7ntn9Z zookeeper]# cd bin/

[root@iZ1608aqb7ntn9Z bin]# ./zkServer start

......

[root@iZ1608aqb7ntn9Z bin]# ./zkServer.sh status

ZooKeeper JMX enabled by default

Using config: /usr/local/zookeeper/bin/../conf/zoo.cfg

Client port found: 2181. Client address: localhost. Client SSL: false.

Error contacting service. It is probably not running.

在上边我们发现了启动错误,查看日志,发现8080端口被占用,通过查阅Zookeeper3.5的官方文档,发现这是Zookeeper3.5的新特性:

所以我们需要再次修改配置文件,修改启动端口:

在配置文件中加入admin.serverPort=8888

然后再次启动,查看状态:

[root@iZ1608aqb7ntn9Z bin]# ./zkServer.sh status

ZooKeeper JMX enabled by default

Using config: /usr/local/zookeeper3.5.7/bin/../conf/zoo.cfg

Client port found: 2181. Client address: localhost.

Mode: standalone

发现启动成功,接下来我们用客户端链接:

[root@iZ1608aqb7ntn9Z bin]# ./zkCli.sh

Connecting to localhost:2181

......

WatchedEvent state:SyncConnected type:None path:null

[zk: localhost:2181(CONNECTING) 0] ls /

[zookeeper]

1.3 阿里云安全组放开2181端口

(略)

2 zookeeper配置

[zk: localhost:2181(CONNECTING) 0] ls /

[zookeeper]

[zk: localhost:2181(CONNECTED) 4] create /config

Created /config

[zk: localhost:2181(CONNECTED) 6] create /config/hello # config后的名称要与spring.name的名称对应

Created /config/hello

[zk: localhost:2181(CONNECTED) 7] create /config/hello/student.name zs

Created /config/hello/student.name

[zk: localhost:2181(CONNECTED) 8] get /config/hello/student.name

zs

3 Spring Boot配置

3.1 依赖

org.springframework.boot

spring-boot-starter-web

org.springframework.cloud

spring-cloud-starter-zookeeper-discovery

2.1.4.RELEASE

pom

runtime

org.springframework.cloud

spring-cloud-starter-zookeeper-config

2.1.4.RELEASE

pom

runtime

注意:一定要注意Spring Boot和Spring Cloud的版本对应!

3.2 配置文件

application.yml

server:

port: 0 # 表示随机端口

student:

name: 1

bootstrap.yml

spring:

cloud:

zookeeper:

connect-string: 8.131.57.161:2181 # zk服务端地址

enabled: true # 启动远程配置

application:

name: hello

3.3 项目代码

/**

* @desc: 控制器

* @author: YanMingXin

* @create: 2021/8/20-16:31

**/

@RestController

public class HelloController {

@Value("${student.name}")

private String name;

@RequestMapping("/hello")

public String getName() {

return name;

}

}

3.4 启动测试

下面我们来修改下远程配置,看下是不是真的使用了zookeeper的配置文件:

[zk: localhost:2181(CONNECTED) 9] delete /config/hello/student.name

[zk: localhost:2181(CONNECTED) 10] get /config/hello/student.name

org.apache.zookeeper.KeeperException$NoNodeException: KeeperErrorCode = NoNode for /config/hello/student.name

[zk: localhost:2181(CONNECTED) 11] create /config/hello/student.name ls

Created /config/hello/student.name

[zk: localhost:2181(CONNECTED) 12] get /config/hello/student.name

ls

重新启动项目:

总结


版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:Linux之网络管理(5)多网卡bond单IP-主备模式(linux 网卡bond模式)
下一篇:Linux网络管理之网卡别名及网卡绑定配置(linux中配置网卡命令)
相关文章

 发表评论

暂时没有评论,来抢沙发吧~