1 背景
当下平台软件开发领域微服务大行其道,整个系统服务粒度小、进程多,服务注册和发现成为整个系统中最基础的服务。现下流行的微服务框架基本上都提供了服务注册发现服务,我们团队在16年开始转型微服务,鉴于当初开源框架的成熟度,我们整套系统的基础服务是自研的,服务注册发现服务依赖zookeeper。
Zookeeper简单来说是一个树文件系统,提供节点删、加、更改通知,有临时[顺序]节点和持久[顺序]节点,底层机制可参阅相关文档,网上资料太多了。非常适合用来做分布式系统锁和服务注册发现。
Zookeeper集群至少需要3个zookeeper实例,鉴于当前我们只拿到一块“云芯一号”开发板,姑且先在上面部署一个伪集群,跑起来玩玩。
2 系统准备
我们的系统接入大量GPRS联网设备,有高频次海量的位置信息、实时动态、操控信令等交互,服务一直是跑在Centos7或win server 2012的,几年来非常稳定。“云芯一号”拿到手默认是Ubuntu,一直以来对Ubuntu都不太喜欢,故刷了Debian 9后升级到Debian 10。这里最好更换成国内源镜像,linaro.org的东西更新会慢请耐心等待,国内镜像源总体来说速度杠杠的。升级过程就不详述了,无非就是以下命令
sudo apt-get update
sudo apt-get upgrade
sudo apt-get dist-upgrade
sed -i 's/stretch/buster/g' /etc/apt/sources.list
sudo apt-get update
sudo apt-get upgrade
sudo apt-get dist-upgrade
3 安装依赖
Zookeeper安装之前需要安装jdk,安装前可以先使用java –version检测java环境是否已经存在,如果存在则会打印出java版本信息。使用下面命令安装jdk
Sudo apt install –y default-jdk
安装时使用了163的镜像,速度很快,163镜像如下:
deb http://mirrors.163.com/debian/ buster main non-free contrib
deb http://mirrors.163.com/debian/ buster-updates main non-free contrib
deb http://mirrors.163.com/debian/ buster-backports main non-free contrib
deb-src http://mirrors.163.com/debian/ buster main non-free contrib
deb-src http://mirrors.163.com/debian/ buster-updates main non-free contrib
deb-src http://mirrors.163.com/debian/ buster-backports main non-free contrib
deb http://mirrors.163.com/debian-security/ buster/updates main non-free contrib
deb-src http://mirrors.163.com/debian-security/ buster/updates main non-free contrib
安装完成,使用java –version检测是否安装ok,如果安装ok会有下面信息:
root@linaro-alip:/etc/apt# java -version
Picked up JAVA_TOOL_OPTIONS: -Dgnu.io.rxtx.SerialPorts=/dev/tty96B0
openjdk version "11.0.8" 2020-07-14
OpenJDK Runtime Environment (build 11.0.8+10-post-Debian-1deb10u1)
OpenJDK 64-Bit Server VM (build 11.0.8+10-post-Debian-1deb10u1, mixed mode)
4 安装zookeeper伪集群
这里我们使用3个实例,zookeeper版本为3.4.9,把zookeeper包一式三份,分别命名为server01,server02,server03,这样最简单。
1) 在每个server0x下面创建log和data文件夹
2) 在server01/data下创建文件myid,文件内容为1;server02/data/myid内容为2;server03/data/myid内容为3。其实就是服务器编号。
3) 修改所有server0x下面conf里面的zoo.cfg,配置data和log参数,可以使用相对路径指向当前server0x下面的data和log;集群地址则配置如下(三个server0x都一样):
clientPort=2181
server.1=127.0.0.1:10000:20000
server.2=127.0.0.1:10001:20001
server.3=127.0.0.1:10002:20002
5 启动服务
以上步骤完成,先后启动三个服务,服务路径server0x/bin/zkServer.sh,启动命令:
./zkServer.sh start
三个服务启动完成后可以使用ps命令查看,进程名为java。
使用客户端测试服务是否正常工作,启动客户端:
./zkCli.sh
使用ls命令查看我们系统服务的/xplatform节点。
6 总结
板子上手稍微试用一下,后续继续将系统逐步部署上去,Arm应用越来越广泛,无论做平台还是做设备,我们将继续努力尝试、推广。