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
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?