Zookeeper-分布式应用程序协调服务框架

ZooKeeper是一种分布式协调服务

Zookeeper

  • 集群规划:master为master节点

    
    
  • 下载zookeeper:https://zookeeper.apache.org/releases.html#download

  • 下载zookeeper 3.7.1版本到本地,上传到 master:/opt/software,解压安装并重命名

    [root@master softwares]# ls
    anaconda-ks.cfg  apache-zookeeper-3.7.1-bin.tar.gz  hadoop-3.3.4.tar.gz  jdk-8u3
    [root@master softwares]# 
    #解压安装到/opt/app 
    [root@master softwares]#  tar -zvxf apache-zookeeper-3.7.1-bin.tar.gz -C /opt/app/
    [root@master app]# ls
    apache-zookeeper-3.7.1-bin  hadoop  jdk
    # ll
    总用量 8
    drwxr-xr-x.  6 root  root   133 10月 17 19:14 apache-zookeeper-3.7.1-bin
    drwxr-xr-x. 11  1024  1024  227 10月 17 16:49 hadoop-3.3.4
    drwxr-xr-x.  8 10143 10143  273 4月  26 14:03 jdk1.8.0_333
    
    #把apache-zookeeper-3.7.1-bin重命名为zookeeper
    # mv apache-zookeeper-3.7.1-bin/ zookeeper
    
  • 创建zookeeper数据目录

    [root@master app]# cd zookeeper/
    [root@master zookeeper]# mkdir data ;mkdir logs
    [root@master zookeeper]# ls
    bin   data  lib          logs        README.md
    conf  docs  LICENSE.txt  NOTICE.txt  README_packaging.md
    
  • 创建ServerID标识(创建myid配置文件)

    文件里面有一个数据就是A的值(该A就是zoo.cfg文件中server.A=B:C:D中的A),在zoo.cfg文件中配置的dataDir路径中创建myid文件

    #切换工作目录
    [root@master zookeeper]# cd data/
    #把节点id写入到myid文件中(执行下列命令,会自动创建myid文件)
    [root@master data]# echo 1 > myid
    
  • 建立配置文件

    #打开配置文件目录
    [root@master zookeeper]# cd conf/
    [root@master conf]# ls
    configuration.xsl  log4j.properties  zoo_sample.cfg
    //根据zoo_sample.cfg文件复制一份zoo.cfg(该文件才是zookeeper启动使用的配置文件)
    [root@master conf]# cp zoo_sample.cfg  zoo.cfg
    [root@master conf]# ls
    configuration.xsl  log4j.properties  zoo.cfg  zoo_sample.cfg
    
    
  • 修改zoo.cfg配置文件

    [root@master conf]# vi zoo.cfg
    #修改zookeeper数据目录路径
    dataDir=/opt/app/zookeeper/data
    #添加zookeeper日志目录路径
    dataLogDir=/opt/app/zookeeper/logs
    #并添加3个节点的主机号和端口号,server.X 中X的值是由data/myid来指定的
    server.1=master:2888:3888
    server.2=node1:2888:3888
    server.3=node2:2888:3888
    

  • 添加环境变量

    [root@master zookeeper]# vi /etc/profile
    //在最后追加
    #Zookeeper_HOME
    export ZOOKEEPER_HOME=/opt/app/zookeeper
    export PATH=$PATH:$ZOOKEEPER_HOME/bin
    #使环境变量生效
    [root@master zookeeper]# source /etc/profile
    
  • 分发环境变量文件

    # scp /etc/profile root@node2:/etc/
    # scp /etc/profile root@node3:/etc/
    #分别在node2、node3上运行命令
    # source /etc/profile
    
  • 分发zookeeper组件

    [root@master app]# scp -r zookeeper/node1:/opt/app/
    [root@master app]# scp -r zookeeper/ node2:/opt/app/
    
  • 分别修改node1、node2上的myid

    #node1:切换工作目录
    [root@node1 data]# cd /opt/app/zookeeper/data
    #把节点id写入到myid文件中(执行下列命令,会自动创建myid文件)
    [root@node1 data]# echo 2 > myid
    [root@node1 data]# ls
    myid
    [root@node1 data]# cat myid
    2
    
    #node2:切换工作目录
    [root@node2 softwares]# cd /opt/app/zookeeper/data/; ls
    myid
    [root@node2 data]# echo 3 > myid
    [root@node2 data]# cat myid
    3
    [root@node2 data]#
    
  • 检查防火墙、selinux应为关闭状态(3台机器同)

    # systemctl status firewalld
    ● firewalld.service - firewalld - dynamic firewall daemon
       Loaded: loaded (/usr/lib/systemd/system/firewalld.service; disabled; vendor preset: enabled)
       Active: inactive (dead)
         Docs: man:firewalld(1)
    #如果没有关闭,则在3台机器上都要关闭防火墙,禁止开机启动,关闭selinux
    # systemctl stop firewalld
    # systemctl disable firewalld
    #SELINUX的值改为disable
    # vim /etc/selinux/config
    SELINUX=disable   
    
  • 试验启动zookeeper

    #分别在三台机器上启动zookeeper, 会有QuorumPeerMain进程运行,如果提示权限不够则给zkServer.sh添加x权限  chmod u+x zkServer.sh
    [root@master zookeeper]# zkServer.sh start
    ZooKeeper JMX enabled by default
    Using config: /opt/app/zookeeper/bin/../conf/zoo.cfg
    Starting zookeeper ... STARTED
    
#分别在三台机器上查看zookeeper状态
  [root@master zookeeper]# zkServer.sh status
  ZooKeeper JMX enabled by default
  Using config: /opt/app/zookeeper/bin/../conf/zoo.cfg
  Client port found: 2181. Client address: localhost. Client SSL: false.
  Mode: follower //或者显示leader,通过选举产生

master follower 、node1:leader 、node2: follower

master、node3两台服务器zookeeper的状态是follow模式,node2这台服务器zookeeper的状态是leader模式。

  注:如果查看zookeeper状态zkServer.sh status如下报错:
  # zkServer.sh status
  ZooKeeper JMX enabled by default
  Using config: /export/server/zookeeper/bin/../conf/zoo.cfg
  Client port found: 2181. Client address: localhost. Client SSL: false.
  Error contacting service. It is probably not running.
  #证明几台机器没有全部启动,选举出问题
Zookeeper集群连接
[root@master zookeeper]# ./bin/zkCli.sh -server 192.168.15.138:2181
Connecting to 192.168.15.138:2181
2022-11-06 15:40:53,027 [myid:] - INFO  [main:Environment@98] - Client environme                                                                                    nt:zookeeper.version=3.7.1-a2fb57c55f8e59cdd76c34b357ad5181df1258d5, built on 20                                                                                    22-05-07 06:45 UTC
2022-11-06 15:40:53,028 [myid:] - INFO  [main:Environment@98] - Client environme                                                                                    nt:host.name=master
2022-11-06 15:40:53,029 [myid:] - INFO  [main:Environment@98] - Client environme                                                                                    nt:java.version=1.8.0_341
2022-11-06 15:40:53,029 [myid:] - INFO  [main:Environment@98] - Client environme                                                                                    nt:java.vendor=Oracle Corporation
2022-11-06 15:40:53,029 [myid:] - INFO  [main:Environment@98] - Client environme                                                                                    nt:java.home=/opt/app/jdk/jre
2022-11-06 15:40:53,029 [myid:] - INFO  [main:Environment@98] - Client environme                                                                                    nt:java.class.path=/opt/app/zookeeper/bin/../zookeeper-server/target/classes:/op                                                                                    t/app/zookeeper/bin/../build/classes:/opt/app/zookeeper/bin/../zookeeper-server/                                                                                    target/lib/*.jar:/opt/app/zookeeper/bin/../build/lib/*.jar:/opt/app/zookeeper/bi                                                                                    n/../lib/zookeeper-prometheus-metrics-3.7.1.jar:/opt/app/zookeeper/bin/../lib/zo                                                                                    okeeper-jute-3.7.1.jar:/opt/app/zookeeper/bin/../lib/zookeeper-3.7.1.jar:/opt/ap                                                                                    p/zookeeper/bin/../lib/snappy-java-1.1.7.7.jar:/opt/app/zookeeper/bin/../lib/slf                                                                                    4j-reload4j-1.7.35.jar:/opt/app/zookeeper/bin/../lib/slf4j-api-1.7.35.jar:/opt/a                                                                                    pp/zookeeper/bin/../lib/simpleclient_servlet-0.9.0.jar:/opt/app/zookeeper/bin/..                                                                                    /lib/simpleclient_hotspot-0.9.0.jar:/opt/app/zookeeper/bin/../lib/simpleclient_c                                                                                    ommon-0.9.0.jar:/opt/app/zookeeper/bin/../lib/simpleclient-0.9.0.jar:/opt/app/zo                                                                                    okeeper/bin/../lib/reload4j-1.2.19.jar:/opt/app/zookeeper/bin/../lib/netty-trans                                                                                    port-native-unix-common-4.1.76.Final.jar:/opt/app/zookeeper/bin/../lib/netty-tra                                                                                    nsport-native-epoll-4.1.76.Final.jar:/opt/app/zookeeper/bin/../lib/netty-transpo                                                                                    rt-classes-epoll-4.1.76.Final.jar:/opt/app/zookeeper/bin/../lib/netty-transport-                                                                                    4.1.76.Final.jar:/opt/app/zookeeper/bin/../lib/netty-resolver-4.1.76.Final.jar:/                                                                                    opt/app/zookeeper/bin/../lib/netty-handler-4.1.76.Final.jar:/opt/app/zookeeper/b                                                                                    in/../lib/netty-common-4.1.76.Final.jar:/opt/app/zookeeper/bin/../lib/netty-code                                                                                    c-4.1.76.Final.jar:/opt/app/zookeeper/bin/../lib/netty-buffer-4.1.76.Final.jar:/                                                                                    opt/app/zookeeper/bin/../lib/metrics-core-4.1.12.1.jar:/opt/app/zookeeper/bin/..                                                                                    /lib/jline-2.14.6.jar:/opt/app/zookeeper/bin/../lib/jetty-util-ajax-9.4.43.v2021                                                                                    0629.jar:/opt/app/zookeeper/bin/../lib/jetty-util-9.4.43.v20210629.jar:/opt/app/                                                                                    zookeeper/bin/../lib/jetty-servlet-9.4.43.v20210629.jar:/opt/app/zookeeper/bin/.                                                                                    ./lib/jetty-server-9.4.43.v20210629.jar:/opt/app/zookeeper/bin/../lib/jetty-secu                                                                                    rity-9.4.43.v20210629.jar:/opt/app/zookeeper/bin/../lib/jetty-io-9.4.43.v2021062                                                                                    9.jar:/opt/app/zookeeper/bin/../lib/jetty-http-9.4.43.v20210629.jar:/opt/app/zoo                                                                                    keeper/bin/../lib/javax.servlet-api-3.1.0.jar:/opt/app/zookeeper/bin/../lib/jack                                                                                    son-databind-2.13.2.1.jar:/opt/app/zookeeper/bin/../lib/jackson-core-2.13.2.jar:                                                                                    /opt/app/zookeeper/bin/../lib/jackson-annotations-2.13.2.jar:/opt/app/zookeeper/                                                                                    bin/../lib/commons-cli-1.4.jar:/opt/app/zookeeper/bin/../lib/audience-annotation                                                                                    s-0.12.0.jar:/opt/app/zookeeper/bin/../zookeeper-*.jar:/opt/app/zookeeper/bin/..                                                                                    /zookeeper-server/src/main/resources/lib/*.jar:/opt/app/zookeeper/bin/../conf:.:                                                                                    /opt/app/jdk/lib/dt.jar:/opt/app/jdk/lib/tools.jar
2022-11-06 15:40:53,029 [myid:] - INFO  [main:Environment@98] - Client environme                                                                                    nt:java.library.path=/usr/java/packages/lib/i386:/lib:/usr/lib
2022-11-06 15:40:53,029 [myid:] - INFO  [main:Environment@98] - Client environme                                                                                    nt:java.io.tmpdir=/tmp
2022-11-06 15:40:53,029 [myid:] - INFO  [main:Environment@98] - Client environme                                                                                    nt:java.compiler=<NA>
2022-11-06 15:40:53,029 [myid:] - INFO  [main:Environment@98] - Client environme                                                                                    nt:os.name=Linux
2022-11-06 15:40:53,029 [myid:] - INFO  [main:Environment@98] - Client environme                                                                                    nt:os.arch=i386
2022-11-06 15:40:53,029 [myid:] - INFO  [main:Environment@98] - Client environme                                                                                    nt:os.version=3.10.0-1160.el7.x86_64
2022-11-06 15:40:53,029 [myid:] - INFO  [main:Environment@98] - Client environme                                                                                    nt:user.name=root
2022-11-06 15:40:53,029 [myid:] - INFO  [main:Environment@98] - Client environme                                                                                    nt:user.home=/root
2022-11-06 15:40:53,029 [myid:] - INFO  [main:Environment@98] - Client environme                                                                                    nt:user.dir=/opt/app/zookeeper
2022-11-06 15:40:53,029 [myid:] - INFO  [main:Environment@98] - Client environme                                                                                    nt:os.memory.free=12MB
2022-11-06 15:40:53,029 [myid:] - INFO  [main:Environment@98] - Client environme                                                                                    nt:os.memory.max=247MB
2022-11-06 15:40:53,029 [myid:] - INFO  [main:Environment@98] - Client environme                                                                                    nt:os.memory.total=15MB
2022-11-06 15:40:53,095 [myid:] - INFO  [main:ZooKeeper@657] - Initiating client                                                                                     connection, connectString=192.168.15.138:2181 sessionTimeout=30000 watcher=org.                                                                                    apache.zookeeper.ZooKeeperMain$MyWatcher@a8195f
2022-11-06 15:40:53,098 [myid:] - INFO  [main:X509Util@77] - Setting -D jdk.tls.                                                                                    rejectClientInitiatedRenegotiation=true to disable client-initiated TLS renegoti                                                                                    ation
2022-11-06 15:40:53,102 [myid:] - INFO  [main:ClientCnxnSocket@239] - jute.maxbu                                                                                    ffer value is 1048575 Bytes
2022-11-06 15:40:53,109 [myid:] - INFO  [main:ClientCnxn@1735] - zookeeper.reque                                                                                    st.timeout value is 0. feature enabled=false
2022-11-06 15:40:53,115 [myid:192.168.15.138:2181] - INFO  [main-SendThread(192.                                                                                    168.15.138:2181):ClientCnxn$SendThread@1171] - Opening socket connection to serv                                                                                    er node1/192.168.15.138:2181.
2022-11-06 15:40:53,115 [myid:192.168.15.138:2181] - INFO  [main-SendThread(192.                                                                                    168.15.138:2181):ClientCnxn$SendThread@1173] - SASL config status: Will not atte                                                                                    mpt to authenticate using SASL (unknown error)
Welcome to ZooKeeper!
2022-11-06 15:40:53,122 [myid:192.168.15.138:2181] - INFO  [main-SendThread(192.                                                                                    168.15.138:2181):ClientCnxn$SendThread@1005] - Socket connection established, in                                                                                    itiating session, client: /192.168.15.137:53678, server: node1/192.168.15.138:21                                                                                    81
JLine support is enabled
2022-11-06 15:40:53,189 [myid:192.168.15.138:2181] - INFO  [main-SendThread(192.                                                                                    168.15.138:2181):ClientCnxn$SendThread@1446] - Session establishment complete on                                                                                     server node1/192.168.15.138:2181, session id = 0x200004719220000, negotiated ti                                                                                    meout = 30000

WATCHER::

WatchedEvent state:SyncConnected type:None path:null
[zk: 192.168.15.138:2181(CONNECTED) 0] ls /
[zookeeper]
[zk: 192.168.15.138:2181(CONNECTED) 1] quit

WATCHER::

WatchedEvent state:Closed type:None path:null
2022-11-06 15:41:48,480 [myid:] - INFO  [main:ZooKeeper@1288] - Session: 0x200004719220000 closed
2022-11-06 15:41:48,480 [myid:] - INFO  [main:ServiceUtils@45] - Exiting JVM with code 0
2022-11-06 15:41:48,480 [myid:] - INFO  [main-EventThread:ClientCnxn$EventThread@568] - EventThread shut down for session: 0x200004719220000
您在 /var/spool/mail/root 中有新邮件
[root@master zookeeper]#

连接本机的不用带-server

posted @ 2022-11-06 14:55  Lianxia  阅读(86)  评论(0)    收藏  举报