Linux下伪分布式搭建zookeeper集群

zookeeper是一个为分布式应用提供一致性服务的软件,它是开源的Hadoop项目的一个子项目,并根据google发表的一篇论文来实现的。zookeeper为分布式系统提供了高笑且易于使用的协同服务,它可以为分布式应用提供相当多的服务,诸如统一命名服务,配置管理,状态同步和组服务等。zookeeper接口简单,我们不必过多地纠结在分布式系统编程难于处理的同步和一致性问题上,你可以使用zookeeper提供的现成(off-the-shelf)服务来实现来实现分布式系统额配置管理,组管理,Leader选举等功能。
zookeeper集群的安装,准备三台服务器,此处我用单机伪集群方式搭建

clientPort=2181
server1:192.168.25.139:2888:3888

clientPort=2182
server1:192.168.25.139:2888:3888

clientPort=2183
server1:192.168.25.139:2888:3888

有多台主机,可以参考[https://blog.csdn.net/u012637358/article/details/80989446 ]
单机也可以参考[ https://blog.csdn.net/sjmz30071360/article/details/82153191?utm_source=blogxgwz0 ]

以下是我自己本机试过的:

1. 下载zookeeper

访问地址: [http://mirror.bit.edu.cn/apache/zookeeper/ ]

2. 使用xshell 拖拽上传

  • lrzsz是一款在linux里可代替ftp上传和下载的程序。它有两个命令rz和sz。
    在联网的状态中,在centos里直接yum -y install lrzsz 程序会自动安装好。

  • window —> Linux
    直接拖拽 或者 输入rz 回车 选择文件

  • Linux —> windows
    sz 文件 回车,选择保存路径ok

3.解压到目录

以我普通用户目录为例:
/home/xzb

cd  ~
mkdir  -p   software
cd software
tar -zxvf zookeeper-3.5.4-beta.tar.gz
mv zookeeper-3.5.4-beta/ zookeeper3.5.4

4. 创建数据持久化目录和日志目录

cd ~
创建dataDir1 dataDir2 dataDir3 来分别存放数据

mkdir  -p   ~/data/zookeeper/dataDir{1,2,3}
日志目录
mkdir -p ~/data/zookeeper/log

5.配置环境便令

vi ~/.bash_profile
添加以下内容,安装位置

export ZOOKEEPER_HOME=/home/xzb/software/zookeeper3.5.4
export PATH=$PATH:$ZOOKEEPER_HOME/bin:$ZOOKEEPER_HOME/conf

保存配置信息
source ~/.bash_profile

6.复制每个zookeeper服务所需的配置文件

cd ~/software/zookeeper3.5.4/conf

cp zoo_sample.cfg zoo1.cfg
cp zoo_sample.cfg zoo2.cfg
cp zoo_sample.cfg zoo3.cfg

分别编辑 zoo1.cfg zoo2.cfg zoo3.cfg
zoo.cfg 文件的各项参数

#文件配置如下
#The number of milliseconds of each tick
tickTime=2000
#The number of ticks that the initial
#synchronization phase can take
initLimit=10
#The number of ticks that can pass between
#sending a request and getting an acknowledgement
syncLimit=5
#the directory where the snapshot is stored.
#do not use /tmp for storage, /tmp here is just
#example sakes.
#数据持久化路径
dataDir=/var/data/zookeeper
#日志保存路径,需要手动创建
dataLogDir=/var/log/zookeeper/log

#the port at which the clients will connect
#即zk对外服务端口
clientPort=2181

#cluster config
#第一个端口用于Follower和Leader之间的数据同步和其它通信
#第二个端口用于Leader选举过程中投票通信
server.1=192.168.25.139:2888:3888
server.2=192.168.25.139:2888:3888
server.3=192.168.25.139:2888:3888

#the maximum number of client connections.
#increase this if you need to handle more clients
#maxClientCnxns=60
##Be sure to read the maintenance section of the
#administrator guide before turning on autopurge.
##http://zookeeper.apache.org/doc/current/zookeeperAdmin.html#sc_maintenance
##The number of snapshots to retain in dataDir
#autopurge.snapRetainCount=3
#Purge task interval in hours

修改zoo1.cfg参数如下:

	#example sakes.
	dataDir=/home/xzb/data/zookeeper/dataDir1
	dataLogDir=/home/xzb/data/zookeeper/log
	#the port at which the clients will connect
	clientPort=2181
	server.1=192.168.25.139:2888:3888
	server.2=192.168.25.139:2888:3888
	server.3=192.168.25.139:2888:3888

修改zoo2.cfg参数如下:

dataDir=/home/xzb/data/zookeeper/dataDir2
dataLogDir=/home/xzb/data/zookeeper/log
#the port at which the clients will connect
clientPort=2182
server.1=192.168.25.139:2888:3888
server.2=192.168.25.139:2888:3888
server.3=192.168.25.139:2888:3888

修改zoo3.cfg参数如下:

#example sakes.
dataDir=/home/xzb/data/zookeeper/dataDi3
dataLogDir=/home/xzb/data/zookeeper/log
#the port at which the clients will connect
clientPort=2183
server.1=192.168.25.139:2888:3888
server.2=192.168.25.139:2888:3888
server.3=192.168.25.139:2888:3888

7. 创建myid文件

server1节点
cd    ~/data/zookeeper/dataDir1
echo "1">myid

servier2节点

cd   ~/data/zookeeper/dataDir2
echo "2">myid

server3节点

cd    ~/data/zookeeper/dataDir3
echo "3">myid

8. 启动服务

cd ~/software/zookeeper3.5.4/bin

 ./zkServer.sh start  ../conf/zoo1.cfg 
 ./zkServer.sh start  ../conf/zoo2.cfg 
 ./zkServer.sh start  ../conf/zoo3.cfg 

查看服务状态:

./zkServer.sh status  ../conf/zoo1.cfg 
./zkServer.sh status  ../conf/zoo2.cfg 
./zkServer.sh status  ../conf/zoo3.cfg 

9.查看zk进程

[xzb@xzb bin]$ jps
8811 QuorumPeerMain
9327 Jps

10. 对外提供访问服务端口

2181 2182 2183
root 用户

vi  /etc/sysconfig/iptables

添加以下开放的端口

-A INPUT -m state --state NEW -m tcp -p tcp --dport 2181 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 2182 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 2183 -j ACCEPT

重启端口服务
service iptables restart

注意事项

在一台机器上部署了3个server,需要注意的是在集群为分布式模式下我们使用的每个配置文档模拟一台机器,也就是说单台机器及上运行多个Zookeeper实例。但是,必须保证每个配置文档的各个端口号不能冲突,除了clientPort不同之外,dataDir也不同。另外,还要在dataDir所对应的目录中创建myid文件来指定对应的Zookeeper服务器实例。

■ clientPort端口:如果在1台机器上部署多个server,那么每台机器都要不同的 clientPort,比如 server1是2181,server2是2182,server3是2183

■ dataDir和dataLogDir:dataDir和dataLogDir也需要区分下,将数据文件和日志文件分开存放,同时每个server的这两变量所对应的路径都是不同的

■ server.X和myid: server.X 这个数字就是对应,data/myid中的数字。在3个server的myid文件中分别写入了0,1,2,那么每个server中的zoo.cfg都配 server.0 server.2,server.3就行了。因为在同一台机器上,后面连着的2个端口,3个server都不要一样,否则端口冲突

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值