zookeeper单机多节点

最近换了工作,新公司之前测试环境都在云上,结构混乱,在重新整理和调整并迁移到公司本地环境。想不到写些什么,就随便写下吧。

Apache ZooKeeper是Apache软件基金会的一个软件项目,他为大型分布式计算提供开源的分布式配置服务、同步服务和命名注册。 ZooKeeper曾经是Hadoop的一个子项目,但现在是一个独立的顶级项目。
ZooKeeper的架构通过冗余服务实现高可用性。因此,如果第一次无应答,客户端就可以询问另一台ZooKeeper主机。ZooKeeper节点将它们的数据存储于一个分层的命名空间,非常类似于一个文件系统或一个前缀树结构。客户端可以在节点读写,从而以这种方式拥有一个共享的配置服务。更新是全序的。
在一台机上部署三个Zookeeper节点并组成群集:

下载JDK,配置JAVA环境:

tar zxf jdk-8u121-linux-x64.tar.gz -C /usr/local/
echo 'export JAVA_HOME=/usr/local/jdk1.8.0_121' > /etc/profile.d/java.sh
echo 'export JRE_HOME=$JAVA_HOME/jre' >> /etc/profile.d/java.sh
echo 'export PATH=$JAVA_HOME/bin:$PATH' >> /etc/profile.d/java.sh
source /etc/profile.d/java.sh
java -version

 

下载Zookeeper,并解压成三个目录:

tar zxf zookeeper-3.4.13.tar.gz -C /data/
mv /data/zookeeper-3.4.13 /data/zk1
tar zxf zookeeper-3.4.13.tar.gz -C /data/
mv /data/zookeeper-3.4.13 /data/zk2
tar zxf zookeeper-3.4.13.tar.gz -C /data/
mv /data/zookeeper-3.4.13 /data/zk3
cp /data/zk1/conf/zoo_sample.cfg /data/zk1/conf/zoo.cfg
cp /data/zk2/conf/zoo_sample.cfg /data/zk2/conf/zoo.cfg
cp /data/zk3/conf/zoo_sample.cfg /data/zk3/conf/zoo.cfg

修改配置文件,主要注意以下几点:

ZK1:
dataDir=/data/zk1/data
clientPort=2181
server.1=127.0.0.1:2881:3881
server.2=127.0.0.1:2882:3882
server.3=127.0.0.1:2883:3883

ZK2:
dataDir=/data/zk2/data
clientPort=2182
server.1=127.0.0.1:2881:3881
server.2=127.0.0.1:2882:3882
server.3=127.0.0.1:2883:3883

ZK3:
dataDir=/data/zk3/data
clientPort=2183
server.1=127.0.0.1:2881:3881
server.2=127.0.0.1:2882:3882
server.3=127.0.0.1:2883:3883

添加节点ID配置文件

mkdir /data/zk{1..3}/data
echo 1 > /data/zk1/data/myid
echo 2 > /data/zk2/data/myid
echo 3 > /data/zk3/data/myid

建立服务用户

groupadd -g 233 zook
useradd -g zook -u 233 -s /sbin/nologin -c "Zookeeper Service" -M zook
chown -R zook.zook /data/zk{1..3}

建立systemd服务文件

vim /usr/lib/systemd/system/zk1.service
# systemd service file for Zookeeper server
[Unit]
Description=Zookeeper Community Server
After=network.target
After=syslog.target

[Install]
WantedBy=multi-user.target

[Service]
Type=forking
User=zook
Group=zook
Environment="ZOO_LOG_DIR=/data/zk1/data"
Environment="JAVA_HOME=/usr/local/jdk1.8.0_121"
Environment="PATH=/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/bin:$JAVA_HOME/bin"

PIDFile=/data/zk1/data/zookeeper_server.pid

PermissionsStartOnly=true
ExecStart=/data/zk1/bin/zkServer.sh start
ExecStop=/data/zk1/bin/zkServer.sh stop

TimeoutSec=0

Restart=on-failure
PrivateTmp=false

其它两个配置一样,注意修改Zookeeper路径。设置开机自启并运行:

systemctl enable zk{1..3}
systemctl start zk{1..3}
systemctl status zk{1..3}

发表评论

error: Content is protected !!