安装zoopeeper3.4.6

zk集群在搭建部署的时候,通常选择 2n+1 奇数台。底层 Paxos 算法支持(过半成功)。

zk安全前提

服务器基础环境

IP

主机名

hosts映射

防火墙关闭

时间同步

ssh免密登录

JDK环境

jdk1.8

配置好环境变量

zk具体安装部署

集群规划

3个节点安装zookeeper

server1

agent1

agent2

选择server1安装,scp给其他两个节点

安装包

zookeeper-3.4.6.tar.gz

上传解压

cd /usr/local

tar zxvf zookeeper-3.4.6.tar.gz

建立软链:

ln -s zookeeper-3.4.6/ zookeeper

注意:scp给其他两个节点后,也要记得建立软链

修改配置文件

zoo.cfg

#zk默认加载的配置文件是zoo.cfg 因此需要针对模板进行修改。保证名字正确。

cd zookeeper/conf

cp zoo_sample.cfg zoo.cfg

vi zoo.cfg

#修改

dataDir=/home/zkdata

#文件最后添加 2888心跳端口 3888选举端口

server.1=server1:2888:3888

server.2=agent1:2888:3888

server.3=agent2:2888:3888

myid

#在每台机器的dataDir指定的目录下创建一个文件 名字叫做myid

#myid里面的数字就是该台机器上server编号。server.N N的数字就是编号

mkdir -p /home/zkdata

echo 1 >/home/zkdata/myid

把安装包同步到其他节点上

cd /usr/local

scp -r zookeeper-3.4.6/ agent1:`pwd`

scp -r zookeeper-3.4.6/ agent2:`pwd`

在agent1和agent2上分别建立软链

ln -s zookeeper-3.4.6/ zookeeper

创建其他机器上myid和datadir目录

Agent1上执行:

mkdir -p /home/zkdata

echo 2 > /home/zkdata/myid

agent2上执行:

mkdir -p /home/zkdata

echo 3 > /home/zkdata/myid

配置环境变量

server1,agent1,agent2节点分别配置环境变量

vim /etc/profile

增加内容:

# set zookeeper

export ZOOKEEPER_HOME=/usr/local/zookeeper

export PATH=$ZOOKEEPER_HOME/bin:$PATH

zk集群的启动

每台机器上单独启动服务

#在哪个目录执行启动命令 默认启动日志就生成当前路径下 叫做zookeeper.out

/usr/local/zookeeper/bin/zkServer.sh start

/usr/local/zookeeper/bin/zkServer.sh status

/usr/local/zookeeper/bin/zkServer.sh stop

#3台机器启动完毕之后 可以使用status查看角色是否正常。

#还可以使用jps命令查看zk进程是否启动。

jps

2034 Jps

1980 QuorumPeerMain #看我,我就是zk的java进程

扩展:编写shell脚本 一键脚本启动。

本质:在server1机器上执行shell脚本,由==shell程序通过ssh免密登录==到各个机器上帮助执行命令。

一键关闭脚本

vim zk2_stop.sh

#!/bin/bash

# 1 数组 放 主机名

hosts=(server1 agent1 agent2)

# 2 遍历 关闭

for host in ${hosts[*]}

do

ssh $host "source /etc/profile;/usr/local/zookeeper/bin/zkServer.sh stop"

done

一键启动脚本

vim zk1_start.sh

#!/bin/bash

# 1 数组 放 主机名

hosts=(server1 agent1 agent2)

# 2 遍历 关闭

for host in ${hosts[*]}

do

ssh $host "source /etc/profile;/usr/local/zookeeper/bin/zkServer.sh start"

done

使用客户端访问

/usr/local/zookeeper/bin/zkCli.sh [-server ip]

例如:

/usr/local/zookeeper/bin/zkCli.sh -server server1