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 @   Lianxia  阅读(65)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?
  1. 1 rainymood rainymood
rainymood - rainymood
00:00 / 00:00
An audio error has occurred.

This

is

Waite

点击右上角即可分享
微信分享提示