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
          
      • node04的服务id

        • 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
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值