【rpc配置】zookeeper在linux下的单机配置+systemd服务化+自启动

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/cdnight/article/details/86501202

前言

本系列将完成分布式应用最重要的rpc远程调用技术选型。

参考资料:
zookeeper+centos7.4安装配置+自启动

Linux 安装zookeeper

linux 安装配置zookeeper

当然,还有本篇的试错篇
【rpc配置】zookeeper在linux下的单机配置【草稿版】
因为本篇是正式归纳篇。

配置

从官网下载:

sudo wget http://mirror.bit.edu.cn/apache/zookeeper/zookeeper-3.4.13/zookeeper-3.4.13.tar.gz

在这里插入图片描述

解压缩到目标文件夹:

sudo mkdir -p /usr/local/zookeeper/
-- 解压到目标目录:
sudo tar -zxvf zookeeper-3.4.13.tar.gz -C /usr/local/zookeeper/

在这里插入图片描述

在这里插入图片描述

创建日志及数据目录:

#创建数据和日志存放目录 
sudo mkdir /usr/local/zookeeper/zookeeper-3.4.13/logs
sudo mkdir /usr/local/zookeeper/zookeeper-3.4.13/data

在这里插入图片描述

进行文件配置:

#打开zookeeper程序目录
cd /usr/local/zookeeper/zookeeper-3.4.13/
# 先把conf下的zoo_sample.cfg备份一份,然后重命名为zoo.cfg 
cd conf
sudo cp zoo_sample.cfg zoo.cfg

在这里插入图片描述

编辑配置文件:

sudo vim zoo.cfg

看到的是:
在这里插入图片描述

按照下面的解释进行修改,额,假如是按照前面步骤进行的话,那么可以直接替换为这个内容:

#ZK中的一个时间单元。ZK中所有时间都是以这个时间单元为基础,进行整数倍配置的。例如,session的最小超时时间是2*tickTime
tickTime=2000
#Follower在启动过程中,会从Leader同步所有最新数据,然后确定自己能够对外服务的起始状态。Leader允许F在 initLimit 时间内完成这个工作。通常情况下,我们不用太在意这个参数的设置。如果ZK集群的数据量确实很大了,F在启动的时候,从Leader上同步数据的时间也会相应变长,因此在这种情况下,有必要适当调大这个参数了
initLimit=10
#在运行过程中,Leader负责与ZK集群中所有机器进行通信,例如通过一些心跳检测机制,来检测机器的存活状态。如果L发出心跳包在syncLimit之后,还没有从F那里收到响应,那么就认为这个F已经不在线了。注意:不要把这个参数设置得过大,否则可能会掩盖一些问题
syncLimit=5
#存储快照文件snapshot的目录。默认情况下,事务日志也会存储在这里。建议同时配置参数dataLogDir, 事务日志的写性能直接影响zk性能
dataDir=/usr/local/zookeeper/zookeeper-3.4.13/data
#事务日志输出目录。尽量给事务日志的输出配置单独的磁盘或是挂载点,这将极大的提升ZK性能
dataLogDir=/usr/local/zookeeper/zookeeper-3.4.13/logs
#客户端连接server的端口,即对外服务端口,一般设置为2181吧
clientPort=2181
#第一个端口用于F和L之间的数据同步和其它通信,第二个端口用于Leader选举过程中投票通信,server.x这里的x是一个数字,与myid文件中的id是一致的
server.1=127.0.0.1:2888:3888

变更为:
在这里插入图片描述

保存,然后,

-- 在data目录下创建myid文件,并写入对应ip的机器编号
cd /usr/local/zookeeper/zookeeper-3.4.13/data
sudo vim myid

内容为1,进行保存。
在这里插入图片描述

在这里插入图片描述

设置环境变量。
创建一个环境变量ZOOKEEPER并把该环境变量添加到系统路径:

sudo vim /etc/profile

在export PATH语句前添加两行:

#配置zk
export ZOOKEEPER=/usr/local/zookeeper/zookeeper-3.4.13
export PATH=$ZOOKEEPER/bin:$PATH

在这里插入图片描述

保存,并执行 使环境变量生效:

source /etc/profile

启动zk并测试

此时安装成功,进行测试:

启动

1.进入zookeeper的bin目录,执行sh zkServer.sh start进行启动zookeeper

cd /usr/local/zookeeper/zookeeper-3.4.13/bin
sh zkServer.sh start

执行结果:
在这里插入图片描述

注意,ubuntu下面会报这个错误,具体可以看:

Ubuntu zookeeper-3.5.0-alpha启动错误 zkEnv.sh: Syntax error: “(” unexpected (expecting “fi”)(转)

在这里插入图片描述

具体解决方案是:
执行以下命令:

执行以下命令

 

 
cd /bin/
sudo  ls -l /bin/sh

在这里插入图片描述

sudo  ln -sf bash /bin/sh
sudo  ls -l /bin/sh

在这里插入图片描述

然后再次执行

cd /usr/local/zookeeper/zookeeper-3.4.13/bin
sudo sh zkServer.sh start

在这里插入图片描述

查看状态

cd /usr/local/zookeeper/zookeeper-3.4.13/bin
sudo sh zkServer.sh status

正常情况:

在这里插入图片描述

异常情况坑位—环境变量异常

假如你看到的是:

在这里插入图片描述

不要犹豫了,出bug了。
这时候在bin目录下面可以找到一个疑似错误输出的文件,那就是:
在这里插入图片描述

假设你看到的是某些命令找不到那么,100%是没有导入环境变量。
那么打开zkServer.sh,添加source /etc/profile

sudo vim zkServer.sh

在这里插入图片描述

原本是上图,那么在开始添加source 命令:
在这里插入图片描述

然后保存,启动,然后查看状态:
在这里插入图片描述

已经成功启动了。

尝试启动客户端进行连接测试

zkCli.sh -server 127.0.0.1:2181

在这里插入图片描述

停止zk

cd /usr/local/zookeeper/zookeeper-3.4.13/bin
sudo sh zkServer.sh stop

好了,停止。

在这里插入图片描述

systemd服务化+自启动

假如有看过前面文章的话应该知道服务化怎么执行,可以参考:
【配置中心】xxl-conf配置3 - xxl-conf-admin在linux下面的自启动

下面我们直接进行。

然后在linux的service目录下添加服务文件,

sudo vim /lib/systemd/system/zookeeper.service

填入以下内容:

[Unit]
Description=zookeeper服务,分布式应用必须服务。 
[Service]
Type=forking
ExecStart=/usr/local/zookeeper/zookeeper-3.4.13/bin/zkServer.sh start
ExecStop=/usr/local/zookeeper/zookeeper-3.4.13/bin/zkServer.sh stop
PrivateTmp=true
 
[Install]
WantedBy=multi-user.target

如下图:

在这里插入图片描述

重新装载服务:

systemctl daemon-reload

启动zookeeper服务:

systemctl start zookeeper

查看状态。

systemctl status zookeeper


在这里插入图片描述

注意,稳妥起见,用原生脚本检查是否正在运行:

sh zkServer.sh status

在这里插入图片描述

好了,开机自启动:

systemctl enable zookeeper

在这里插入图片描述

大功告成。

结语

zookeeper只是系统中需要用到的其中一个重量级组件。。
话说,系统引入的东西越多复杂程度越高。如果能够简简单单就完成任务多好啊。

猜你喜欢

转载自blog.csdn.net/cdnight/article/details/86501202