zoukankan      html  css  js  c++  java
  • Zookeeper安装和使用,Centos7安装Zookeeper,Centos安装配置和Zookeeper安装配置

    Zookeeper安装和使用,Centos7安装Zookeeper,Centos安装配置和Zookeeper安装配置

    ================================

    ©Copyright 蕃薯耀 2020-10-20

    https://www.cnblogs.com/fanshuyao/

    一、使用VMware Workstation Pro安装CentOS-7-x86_64-Minimal-1708.iso

    过程略。

    二、修改IP地址,默认是没有局域网地址的

    进入ip地址配置文件目录:

    cd /etc/sysconfig/network-scripts/

    编辑配置文件:

    vi ifcfg-ens33
    
    全部路径:
    vi /etc/sysconfig/network-scripts/ifcfg-ens33

    只要修改这个,重启网络服务后,就能获取到地址(这个比较好,设置静态地址,有时候会出现不能上网的情况)

    ONBOOT=yes

    设置静态地址:

    ……
    
    BOOTPROTO=static
    ……
    ……
    ONBOOT=yes
    IPADDR=192.168.132.13
    GATEWAY=192.168.132.1
    NETMASK=255.255.255.0

    修改完配置文件,重启网络:

    systemctl restart network

    三、安装Jdk和zookeeper

    上传jdk和zookeeper
    修改权限:

    chmod 777 jdk-8u202-linux-x64.tar.gz apache-zookeeper-3.6.2-bin.tar.gz

    1、解压jdk、zookeeper:

    tar -zxvf jdk-8u202-linux-x64.tar.gz
    tar -zxvf apache-zookeeper-3.6.2-bin.tar.gz

    2、修改文件夹名称(改短一点)

    mv jdk1.8.0_202 /java/jdk1.8
    mv apache-zookeeper-3.6.2-bin /java/zookeeper3.6.2

    3、jdk配置:

    vi /etc/profile

    在文件的最后加下下面的配置:

    JAVA_HOME=/java/jdk1.8
    PATH=$JAVA_HOME/bin:$PATH
    CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
    export JAVA_HOME PATH CLASSPATH

      ZK_HOME=/java/zookeeper3.6.2
      PATH=$PATH:$ZK_HOME/bin
      export ZK_HOME PATH

    重新加载配置文件:

    source /etc/profile

    查看版本:

    java -version

    4、修改zookeeper配置

    修改配置的文件名(直接复制一份),默认文件名不生效:

    cp /java/zookeeper3.6.2/conf/zoo_sample.cfg /java/zookeeper3.6.2/conf/zoo.cfg

    增加zookeeper配置文件夹的目录:

    mkdir /java/zookeeper3.6.2/zkdata

    修改配置文件:

    vi /java/zookeeper3.6.2/conf/zoo.cfg

    修改dataDir的目录为:/java/zookeeper3.6.2/zkdata

    dataDir=/java/zookeeper3.6.2/zkdata

    修改日志目录(可不修改,默认和zkdata同一个目录):

    先在Linux创建目录:
    mkdir /java/zookeeper3.6.2/zkdata/logs
    在zoo.cfg配置: dataLogDir
    =/java/zookeeper3.6.2/zkdata/logs

    修改配置文件(/java/zookeeper3.6.2/conf/zoo.cfg),配置集群(注意IP地址是否正确,不要直接复制)

    server.1=192.168.132.11:2888:3888
    server.2=192.168.132.12:2888:3888
    server.3=192.168.132.13:2888:3888

    其中数字1/2/3分别对应myid的文件内容,看下面:

    创建myid文件:

    echo 1 > /java/zookeeper3.6.2/zkdata/myid
    echo 2 > /java/zookeeper3.6.2/zkdata/myid
    echo 3 > /java/zookeeper3.6.2/zkdata/myid

    查看文件有没有创建成功:

    cat /java/zookeeper3.6.2/zkdata/myid

    四、开放Centos系统端口,不然集群不能通讯,启动失败。注意:需要firewall-cmd --reload才能生效:
    firewall-cmd --zone=public --add-port=2181/tcp --permanent
    firewall-cmd --zone=public --add-port=2888/tcp --permanent
    firewall-cmd --zone=public --add-port=3888/tcp --permanent

    firewall-cmd --zone=public --add-port=9000/tcp --permanent
    firewall-cmd --zone=public --add-port=8001/tcp --permanent
    firewall-cmd --zone=public --add-port=8002/tcp --permanent
    firewall-cmd --zone=public --add-port=8003/tcp --permanent
    firewall-cmd --zone=public --add-port=8004/tcp --permanent

    让端口生效:

    firewall-cmd --reload


    查看防火墙所有开放的端口

    firewall-cmd --zone=public --list-ports

    查看某个端口是否开放:

    firewall-cmd --query-port=2181/tcp

    移除指定端口:

    firewall-cmd --zone=public --remove-port=5672/tcp --permanent #关闭5672端口

    或者

    firewall-cmd --permanent --remove-port=123/tcp

    查看监听的端口

    netstat -lnpt

    检查端口被哪个进程占用

    netstat -lnpt |grep 5672

    如果很多端口要设置,想关掉防火墙,看下面:

    查看防火墙状态:
    firewall-cmd --state
    
    关闭防火墙
    systemctl stop firewalld.service
    
    禁止防火墙开机启动
    systemctl disable firewalld.service

    五、Zookeeper单机配置

    单机(不配置server.1)可以直接启动:

    六、启动Zookeeper
    进入bin目录:

    cd /java/zookeeper3.6.2/bin/

    启动服务:

    ./zkServer.sh start
    
    或者使用全路径:
    /java/zookeeper3.6.2/bin/zkServer.sh start

    查看状态

    ./zkServer.sh status
    
    或者使用全路径:
    /java/zookeeper3.6.2/bin/zkServer.sh status

    停止服务:

    ./zkServer.sh stop
    
    或者
    /java/zookeeper3.6.2/bin/zkServer.sh stop

    启动客户端(默认启动的是本机):

    ./zkCli.sh
    
    或者
    /java/zookeeper3.6.2/bin/zkCli.sh

    带端口启动:

    ./zkCli.sh -server 192.168.220.131:2181

    Zookeeper Client启动后,查看根:

    ls /

    七、Zookeeper Client常用命令

    1、创建节点:

    create /aa a

    其中/aa表示aa节点,并设置该节点的值为a。后面一定要用值,不然会创建失败。

    默认创建的是持久的节点。

    2、获取节点的值

    get /aa

    3、更新节点的值

    set /aa aaaaa

    4、删除节点

    delete /aa

    5、递归删除节点,包括下面的所有子节点

    rmr /aa

    6、创建临时的节点

    create -e /bb bb

    临时节点,关闭或者退出Zookeeper client时,就会消除数据,下次再进来就没有。

    7、列表节点下面的子节点

    ls /aa

    8、退出Client

    quit

    Centos系统其它命令:

    删除目录及下面所有的文件:

    rm -rf version-2

    八、Zookeeper IP地址配置错误导致的错

    2021-01-04 11:31:19,911 [myid:1] - INFO [QuorumPeer[myid=1](plain=[0:0:0:0:0:0:0:0]:2181)(secure=disabled):FastLeaderElection@979] - Notification time out: 1600
    2021-01-04 11:31:20,500 [myid:1] - ERROR [ListenerHandler-/192.168.132.11:3888:QuorumCnxManager$Listener$ListenerHandler@1093] - Exception while listening
    java.net.BindException: 无法指定被请求的地址 (Bind failed)
    at java.net.PlainSocketImpl.socketBind(Native Method)
    at java.net.AbstractPlainSocketImpl.bind(AbstractPlainSocketImpl.java:387)
    at java.net.ServerSocket.bind(ServerSocket.java:375)
    at java.net.ServerSocket.bind(ServerSocket.java:329)
    at org.apache.zookeeper.server.quorum.QuorumCnxManager$Listener$ListenerHandler.createNewServerSocket(QuorumCnxManager.java:1134)
    at org.apache.zookeeper.server.quorum.QuorumCnxManager$Listener$ListenerHandler.acceptConnections(QuorumCnxManager.java:1064)
    at org.apache.zookeeper.server.quorum.QuorumCnxManager$Listener$ListenerHandler.run(QuorumCnxManager.java:1033)
    at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
    at java.util.concurrent.FutureTask.run(FutureTask.java:266)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
    at java.lang.Thread.run(Thread.java:748)
    2021-01-04 11:31:21,502 [myid:1] - ERROR [ListenerHandler-/192.168.132.11:3888:QuorumCnxManager$Listener$ListenerHandler@1112] - Leaving listener thread for address 192.168.132.11:3888 after 3 errors. Use zookeeper.electionPortBindRetry property to increase retry count.
    2021-01-04 11:31:21,502 [myid:1] - INFO [QuorumPeerListener:QuorumCnxManager$Listener@979] - Leaving listener
    2021-01-04 11:31:21,503 [myid:1] - ERROR [QuorumPeerListener:QuorumCnxManager$Listener@981] - As I'm leaving the listener thread, I won't be able to participate in leader election any longer: 192.168.132.11:3888
    2021-01-04 11:31:21,504 [myid:1] - ERROR [QuorumPeerListener:ServiceUtils@42] - Exiting JVM with code 14

    IP地址配置错误,导致无法连接
    
    错误的IP地址:
    server.1=192.168.132.11:2888:3888
    server.2=192.168.132.12:2888:3888
    server.3=192.168.132.13:2888:3888
    
    正确的IP地址:
    server.1=192.168.170.11:2888:3888
    server.2=192.168.170.12:2888:3888
    server.3=192.168.170.13:2888:3888

     九、Zookeeper设置开机启动(需要指定JAVA_HOME,不然启动失败)

    1、创建Zookeeper开机启动脚本文件:

    vi /etc/init.d/zookeeper

    Zookeeper开机启动脚本文件内容(JAVA_HOME的路径要修改,zookeeper的bin要修改):

    #!/bin/bash 
    #chkconfig:2345 20 90 
    #description:zookeeper 
    #processname:zookeeper 
    export JAVA_HOME=/java/jdk1.8
    case $1 in 
    start) su root /java/zookeeper3.6.2/bin/zkServer.sh start;; 
    stop) su root /java/zookeeper3.6.2/binzkServer.sh stop;; 
    status) su root /java/zookeeper3.6.2/bin/zkServer.sh status;; 
    restart) su root /java/zookeeper3.6.2/bin/zkServer.sh restart;; 
    *) echo "require start|stop|status|restart" ;; 
    esac

    2、给脚本添加执行权限

    chmod +x /etc/init.d/zookeeper

    3、将zookeeper添加到开机启动

    chkconfig --add zookeeper

    4、查看开机自启的服务中是否已经有我们的zookeeper

    chkconfig --list zookeeper

    [root@host-11 ~]# chkconfig --list zookeeper

    结果:
    注:该输出结果只显示 SysV 服务,并不包含
    原生 systemd 服务。SysV 配置数据
    可能被原生 systemd 配置覆盖。

    要列出 systemd 服务,请执行 'systemctl list-unit-files'。
    查看在具体 target 启用的服务请执行
    'systemctl list-dependencies [target]'。

    zookeeper 0:关 1:关 2:开 3:开 4:开 5:开 6:关

    5、测试开机启动是否成功,重启服务器

    reboot -f

    6、查看zookeeper的状态:

    service zookeeper status

    启动:service zookeeper start
    关闭:service zookeeper stop
    查看状态:service zookeeper status

    或者查看进程

    ps -ef | grep zookeeper

    十、注意事项:

    1、提示unable access datadir时,删除/java/zookeeper3.6.2/zkdata的version-2目录:rm -rf version-2

    2、

    -----------centos7没有iptables------------
    service iptables status
    service iptables stop

    chkconfig iptables off
    -----------------------------------------------

    ================================

    ©Copyright 蕃薯耀 2020-10-20

    https://www.cnblogs.com/fanshuyao/

    今天越懒,明天要做的事越多。
  • 相关阅读:
    如何进入高效学习状态
    shell printf命令:格式化输出语句
    C# virtual、abstract
    git解决Could not execute editor
    go defer笔记
    git从其他分支提取文件merge到当前分支
    golang map
    状态模式
    golang单例模式
    go 单元测试时读取配置文件
  • 原文地址:https://www.cnblogs.com/fanshuyao/p/13845076.html
Copyright © 2011-2022 走看看