Zookeeper部署

Zookeeper简介

​ ZooKeeper是一个分布式的,开源的分布式应用程序协调服务,是Hadoop和Hbase的重要组件。它是一个为分布式应用提供一致性服务的软件,提供的功能包括:配置维护、域名服务、分布式同步、组服务等。

​ 除了为Hadoop和HBase提供协调服务外,Zookeeper也被其它许多软件采用作为其分布式状态一致性的依赖,比如Kafka,又或者一些软件项目中,也经常能见到Zookeeper作为一致性协调服务存在。

Zookeeper特点

  1. Zookeeper:一个领导者(Leader),多个跟随者(Follower)组成的集群。
  2. Zookeeper集群中只要有半数以上的节点存活,Zookeeper集群就能正常服务。所以Zookeeper适合安装奇数台的服务器。
  3. 全局数据一致,:每个server保存一份相同的数据副本,client无论连接到哪个server,数据都是一致的。
  4. 更新请求数据执行,来自同一个client的更新请求按其发送顺序依次执行,即先进先出。
  5. 数据额=更新原子性,一次数据更新要么成功,要么失败。
  6. 实时性,在一定时间范围内,client能读取到最新的数据。

下载与安装zookeeper

​ ZooKeeper是用Java编写的,需要安装Java运行环境。

​ 从zookeeper官网https://zookeeper.apache.org/releases.html获取zookeeper安装包,注意使用-bin.tar.gz的包。将下载下来的安装包直接解压到一个路径下即可完成zookeeper的安装。

[root@localhost ~]# tar -zxvf zookeeper-3.4.11.tar.gz -C /usr/local
[root@localhost ~]# mv /usr/local/zookeeper-3.4.11  /usr/local/zookeeper

Zookeeper的三个端口

2181:对client端提供服务;

3888:选举leader使用;

2888:集群内机器通讯使用(leader监听此端口);

配置zookeeper

​ 配置文件需要更名为zoo.cfg否则启动报错。

# 配置文件改名
mv /usr/local/zookeeper/conf/zoo_sample.cfg vi /usr/local/zookeeper/conf/zoo.cfg

# 修改配置文件
vi /usr/local/zookeeper/conf/zoo.cfg
# 添加
tickTime=2000
initLimit=10
syncLimit=5
dataDir=/data/zookeeper
# 客户端连接端口
clientPort=2181
# 集群信息
server.1=192.168.127.10:2888:3888
server.2=192.168.127.11:2888:3888
server.3=192.168.127.12:2888:3888

每个配置项含义如下:

参数 描述
tickTime zookeeper使用的基本时间度量单位,以毫秒为单位,它用来控制心跳和超时。2000表示2 tickTime。更低的tickTime值可以更快地发现超时问题。
initLimit 这个配置项是用来配置Zookeeper集群中Follower服务器初始化连接到Leader时,最长能忍受多少个心跳时间间隔数(也就是tickTime)
syncLimit 这个配置项标识Leader与Follower之间发送消息,请求和应答时间长度最长不能超过多少个tickTime的时间长度
dataDir 必须配置项,用于配置存储快照文件的目录。需要事先创建好这个目录,如果没有配置dataLogDir,那么事务日志也会存储在此目录。
clientPort zookeeper服务进程监听的TCP端口,默认情况下,服务端会监听2181端口。
server.A=B:C:D 其中A是一个数字,表示这是第几个服务器;B是这个服务器的IP地址;C表示的是这个服务器与集群中的Leader服务器通信的端口;D 表示如果集群中的Leader服务器宕机了,需要一个端口来重新进行选举,选出一个新的 Leader,而这个端口就是用来执行选举时服务器相互通信的端口。

myid配置

​ 除了修改zoo.cfg配置文件外,集群模式下还要配置一个文件myid(需要手动创建),这个文件需要放在dataDir配置项指定的目录下;
​ 这个文件里面只有一个数字,用来标识当前主机,如果要写入1,表示第一个服务器,与zoo.cfg文本中的server.1中的1对应,以此类推,在集群的第二个服务器zoo.cfg配置文件中dataDir配置项指定的目录下创建myid文件,写入2,这个2与zoo.cfg文本中的server.2中的2对应;
​ Zookeeper在启动时会读取这个文件,得到里面的数据与zoo.cfg里面的配置信息比较,从而判断每个zookeeper server的对应关系。

# 在每个节点的dataDir指定的目录下创建一个myid的文件,并写入节点信息
echo 1 > /data/zookeeper/myid
echo 2 > /data/zookeeper/myid
echo 3 > /data/zookeeper/myid

​ 为了保证zookeeper集群配置的规范性,建议将zookeeper集群中每台服务器的安装和配置文件路径都保存一致。

启动zookeeper集群

​ 在每个节点依次执行如下命令,启动Zookeeper服务:

[root@localhost ~]# cd /usr/local/zookeeper/bin
[root@localhost bin]# ./zkServer.sh  start
[root@localhost kafka]# jps
23097 QuorumPeerMain

zookeeper其他指令

# 启动
zkServer.sh start
# 停止
zkServer.sh stop
# 重启
zkServer.sh restart

集群节点状态

# 查看集群节点状态
[root@localhost zookeeper]# zkServer.sh status
ZooKeeper JMX enabled by default
Using config: /usr/local/zookeeper/bin/../conf/zoo.cfg
Client port found: 2181. Client address: localhost. Client SSL: false.
Mode: follower
  • Zookeeper JMX enabled by default:表示已启用JMX监控功能。

  • Using config:指示正在使用的ZooKeeper配置文件的路径。

  • Client port found: 2181:表示已找到配置文件中设置的客户端连接端口,该端口通常为2181。

  • Client address: localhost:指示客户端连接使用的主机地址,此处为本地主机(localhost)。这意味着客户端正在运行的计算机上与ZooKeeper集群建立连接。

  • Client SSL: false:指示客户端连接是否启用了SSL加密。在这种情况下,值为false,表示未启用SSL加密。

  • Mode:显示ZooKeeper节点的角色,可能为leader(主服务器)或follower(从服务器)。这表明集群中的哪个节点当前是领导者。

启动命令添加到环境变量

有时候为了启动Zookeeper方面,也可以添加zookeeper环境变量到系统的/etc/profile中,这样,在任意路径都可以执行“zkServer.sh start”命令了,添加环境变量的内容为:

export ZOOKEEPER_HOME=/usr/local/zookeeper
export PATH=$PATH:$ZOOKEEPER_HOME/bin

你可能感兴趣的:(linux,zookeeper,分布式,云原生,运维,linux,服务器)