栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 前沿技术 > 大数据 > 大数据系统

0-zookeeper之Linux系统安装zookeeper

0-zookeeper之Linux系统安装zookeeper

0. Linux系统安装zookeeper
  • 安装zookeeper之前,先把jdk安装好,这里不作说明

  • zookeeper安装指导

    • https://www.cnblogs.com/sea520/p/13500978.html
    • https://www.cnblogs.com/lsdb/p/7297731.html
  • 下载地址

    • https://zookeeper.apache.org/ ,记住下载bin包,否则会启动不了程序,相关错误可见章节4、安装常见问题 1
    • 下载后,上传到服务器指定目录 /root/soft/zookeeper/
  • 解压到指定的目录

    • tar -zxvf zookeeper-3.6.0-bin.tar.gz -C /opt/zhaoyunlong/zookeeper/zookeeper-3.6.0
1. 单机安装 1.1 安装 1.1.1 修改conf配置文件
  • cd /opt/zhaoyunlong/zookeeper/zookeeper-3.6.0/conf
    cp zoo_sample.cfg zoo.cfg #先复制一份,不要在自带的文件上修改,以防修改错误,有备份
    
  • 然后vim zoo.cfg ,然后修改data配置为 dataDir=/var/zhaoyunlong/zookeeper,修改后的配置文件如下:

# 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/zhaoyunlong/zookeeper ##这里为本次修改的地方,注意现在还没有这个目录,所以要在下面步骤中创建
# the port at which the clients will connect
clientPort=2181
...... 
1.1.2 新建存储数据的目录
mkdir -p /var/zhaoyunlong/zookeeper
1.1.3 配置环境变量
  • cd /etc/profile.d/
    
  • vi zk.sh,然后添加环境变量如下,然后wq保存退出
    ZK_HOME=/opt/zhaoyunlong/zookeeper/zookeeper-3.6.0
    PATH=$PATH:$ZK_HOME/bin
    export ZK_HOME
    export PATH
    
  • source /etc/profile #刷新脚本使环境变量生效
    
1.2 安装验证—启停服务

​ 安装完成之后,我们需要验证是否成功。这里先列出涉及到的命令如下

  • 启动命令:
    zkServer.sh start
    
    停止命令:
    zkServer.sh stop
    
    重启命令:
    zkServer.sh restart
    
    查看集群节点状态:
    zkServer.sh status
    
  • 验证

    • 配置了环境变量后,可以在任意的目录启停服务,操作如下:

    • [root@192 conf]# zkServer.sh start ##启动服务
      ZooKeeper JMX enabled by default
      Using config: /opt/zhaoyunlong/zookeeper/zookeeper-3.6.0/bin/../conf/zoo.cfg
      Starting zookeeper ... STARTED  ##STARTED表示服务已经启动了
      [root@192 conf]# 
      
2、伪集群安装

​ 伪集群模式就是在同一主机上启动多个zookeeper组成集群,下面以在192.168.119.129主机上创3个zookeeper组集群为例。

2.1 修改conf配置文件
  • cd /opt/zhaoyunlong/zookeeper/zookeeper-3.6.0/conf
    
    
  • vim zoo.cfg ,然后添加集群的配置如下,然后wq保存退出

    • server.1=192.168.119.129:2887:3887
      server.2=192.168.119.129:2888:3888
      server.3=192.168.119.129:2889:3889
      
2.2 复制已经安装好的zookeeper
  • 将单机版安装好的zookeeper-3.6.0,复制成zookeeper1/zookeeper2/,共计三份

  • 修改配置文件

    由于在一台机器上,所以不同的zookeeper需要用不同的端口,如果是真实的集群则不同修改端口

    • 修改zookeeper1的端口和数据存放配置

      • 先创建数据存放目录

        • mkdir -p /var/zhaoyunlong/zookeeper1
          
      • cd /opt/zhaoyunlong/zookeeper/zookeeper1/conf
        
      • 然后vim zoo.cfg ,修改端口如下,然后保存退出,其他不同修改,同理zookeeper2也是如此修改

        dataDir=/var/zhaoyunlong/zookeeper1
        # the port at which the clients will connect
        clientPort=3181
        
    • 修改zookeeper2的端口和数据存放配置

      • 先创建数据存放目录

        • mkdir -p /var/zhaoyunlong/zookeeper2
          
      • cd /opt/zhaoyunlong/zookeeper/zookeeper2/conf
        
      • vim zoo.cfg ,修改端口如下,然后保存退出,其他不同修改

        dataDir=/var/zhaoyunlong/zookeeper2
        # the port at which the clients will connect
        clientPort=4181
        
  • 服务id配置

    • zookeeper3.6.0的/var/zhaoyunlong/zookeeper/myid配置如下:

      • echo '1' > /var/zhaoyunlong/zookeeper/myid
        
    • zookeeper1的/var/zhaoyunlong/zookeeper1/myid配置如下:

      • echo '2' > /var/zhaoyunlong/zookeeper1/myid
        
    • zookeeper的/var/zhaoyunlong/zookeeper2/myid配置如下:

      • echo '3' > /var/zhaoyunlong/zookeeper2/myid
        
2.3 环境变量

​ 在这里环境变量,除了单机版安装时配置的那台zookeeper,其他2台环境就不设置了,因为伪集群模式毕竟一般不用,我们这里只是作为学习演练来操作。那我们怎么启停服务呢,进入到服务启动目录直接输入命令即可

2.4 安装验证—启停服务
  • 依次进入到各自安装目录的bin路径下,启停服务

    • 第一台

      • cd /opt/zhaoyunlong/zookeeper/zookeeper-3.6.0/bin
        ./zkServer.sh start
        
    • 第二台

      • cd /opt/zhaoyunlong/zookeeper/zookeeper1/bin
        ./zkServer.sh start
        
    • 第三台

      • cd /opt/zhaoyunlong/zookeeper/zookeeper2/bin
        ./zkServer.sh start
        
      • 当3台都起了之后,我们查看状态

        • [root@192 bin]# ./zkServer.sh status
          ZooKeeper JMX enabled by default
          Using config: /opt/zhaoyunlong/zookeeper/zookeeper2/bin/../conf/zoo.cfg
          Client port found: 4181. Client address: localhost.
          Mode: leader ##leader表示这台为leader,其他两台为follower,验证如下
          -----------------------------------------------------------------
          [root@192 bin]# cd /opt/zhaoyunlong/zookeeper/zookeeper1/bin/  切换到zookeeper1的bin目录
          [root@192 bin]# ./zkServer.sh status
          ZooKeeper JMX enabled by default
          Using config: /opt/zhaoyunlong/zookeeper/zookeeper1/bin/../conf/zoo.cfg
          Client port found: 3181. Client address: localhost.
          Mode: follower ##显示为follower
          [root@192 bin]#
          
3. 真实集群安装

​ 下面我们进行真实集群安装,即在不同的机器上安装zookeeper,这是真实的分布式,我们这里部署4台,方便后面验证一些东西。为了简化操作,我们用安装的这个服务zookeeper-3.6.0为基准进行复制,复制之前需要先修改配置文件,后面的操作其实和伪集群安装方式差不多,详情如下:

3.1 修改基准版的配置
  • cd /opt/zhaoyunlong/zookeeper/zookeeper-3.6.0/conf
    
  • 然后 vim zoo.cfg ,然后修改真实集群的配置如下,其实就是把伪集群安装的这个配置给该一下节点和IP,然后wq保存退出

    • ## 这里我们用node01-node04来标记机器,node01就是我们前面单机部署和伪集群部署所用的机器
      server.1=192.168.119.129:2888:3888  #node01
      server.2=192.168.119.130:2888:3888	#node02
      server.3=192.168.119.131:2888:3888	#node03
      server.4=192.168.119.132:2888:3888	#node04
      
3.2 复制已经安装好的zookeeper

​ 经过上面步骤的配置修改,我们接下来把zookeeper的安装文件远程复制到其他机器上。

scp -r /opt/zhaoyunlong/zookeeper/zookeeper-3.6.0 192.168.119.130:/opt/zhaoyunlong/zookeeper

scp -r /opt/zhaoyunlong/zookeeper/zookeeper-3.6.0 192.168.119.131:/opt/zhaoyunlong/zookeeper

scp -r /opt/zhaoyunlong/zookeeper/zookeeper-3.6.0 192.168.119.132:/opt/zhaoyunlong/zookeeper
3.3 修改其他几台的配置
  • 1、基准机器node01的配置已经配置好,不用再修改

  • 2、修改第2台node02的配置

    • 先创建zookeeper数据存放目录

      • mkdir -p /var/zhaoyunlong/zookeeper
        
    • 检查配置文件

      • 其实配置文件也不用修改了,因为是以node01复制而来的,这里我们检查一下

        • # the directory where the snapshot is stored.
          # do not use /tmp for storage, /tmp here is just 
          # example sakes.
          dataDir=/var/zhaoyunlong/zookeeper ##检查这个配置是否和上一步骤新建的目录一致
          
    • 服务id配置

      • echo '2' > /var/zhaoyunlong/zookeeper/myid  #执行后会生成一个myid的文件,且把2写入文件里,这里的2就是配置文件中集群配置项server.2中的2
        
    • 配置环境变量

      • [root@192 conf]# cd /etc/profile.d/
        然后新建一个zookeeper的sh脚本,并配置环境变量如下,然后wq保存退出
        
      • #zookeeper
        export ZK_HOME=/opt/zhaoyunlong/zookeeper/zookeeper-3.6.0  ##这是zookeeper的安装目录
        export PATH=$PATH:$ZK_HOME/bin
        
      • 然后输入以下命令让环境变量生效

        • source /etc/profile
          
  • 3、修改剩下两台node03、node04的配置

    • 这2个的配置和node02只有服务id不一样,其他都一样,提醒要先新建数据存储文件(mkdir -p /var/zhaoyunlong/zookeeper),这些配置后都输入命令刷新变量 source /etc/profile

      • node03的服务id

        • echo '3' > /var/zhaoyunlong/zookeeper/myid  #执行后会生成一个myid的文件,且把3写入文件里,这里的3就是配置文件中集群配置项server.3中的3
          
        • echo '4' > /var/zhaoyunlong/zookeeper/myid  #执行后会生成一个myid的文件,且把4写入文件里,这里的4就是配置文件中集群配置项server.4中的4
          
3.4 安装验证–启停服务

​ 至此,真实集群就安装好了,接下来我们来验证安装是否成功,我们依次启动4台机器,顺序无所谓,然后再输入状态检查命令,我们就知道哪台是leader,哪些是follower,命令操作如下:

  • 1、启动服务

    • 每台机器都进行输入如下命令

    •  

    [root@192 conf]# zkServer.sh start
    ZooKeeper JMX enabled by default
    Using config: /opt/zhaoyunlong/zookeeper/zookeeper-3.6.0/bin/…/conf/zoo.cfg
    Starting zookeeper … STARTED ##STARTED表示服务已经启动

     
  • 2、查看状态

    • 服务已经起来之后,我们查看哪台是leader,哪些是follower,在每一台上输入如下命令,当我们在某一台输入该命令时,如果出现leader,说明这台就是主了

    • [root@192 ~]# zkServer.sh status
      ZooKeeper JMX enabled by default
      Using config: /opt/zhaoyunlong/zookeeper/zookeeper/bin/../conf/zoo.cfg
      Client port found: 2181. Client address: localhost.
      Mode: follower ##显示为follower
      [root@192 ~]#
      
      
    • [root@192 conf]# zkServer.sh status
      ZooKeeper JMX enabled by default
      Using config: /opt/zhaoyunlong/zookeeper/zookeeper-3.6.0/bin/../conf/zoo.cfg
      Client port found: 2181. Client address: localhost.
      Mode: leader #这台为主
      
      
  • 3、停掉其中一台或两台服务

    • 如果我们停掉主,剩下3台会重新推举出一个leader

    • 如果我们继续停掉一台服务,剩下2台会怎么样呢?这次我们不停主,我们停掉从,查看状态如下

      • [root@192 profile.d]# zkServer.sh status
        ZooKeeper JMX enabled by default
        Using config: /opt/zhaoyunlong/zookeeper/zookeeper/bin/../conf/zoo.cfg
        Client port found: 2181. Client address: localhost.
        Error contacting service. It is probably not running
        ## 服务不可用了
        
    • 这里我们可以得出几个结论:

        1. zookeeper的分布式集群至少要3台机器,因为这样根据推举leader的算法才能选出一个leader出来
        1. 从第一台开始启动服务时,当机器的服务达到3台,就会选出一个leader了,其他的机器都会称为follower,后面启动的机器也会自动成为follower
        1. zookeeper集群中,当主挂掉,只要剩余的机器大于2台,就还能继续服务,他们会重新选出一个leader来,即使挂掉的那台主后面启动起来,也是成为了follower,当然这其中的原理我们后面再谈。
4. 安装常见问题
  • 1、启动报错 Starting zookeeper … FAILED TO START

    • https://www.cnblogs.com/sea520/p/13500978.html
  • 2、集群安装时,没有找到主机的路由

    • 原因:防火墙没有关闭,需要关闭全部节点的防火墙
    • https://blog.csdn.net/wy_xing/article/details/103883283
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/670990.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号