• zookeeper安装部署


    安装包:apache-zookeeper-3.5.5-bin.tar.gz,下载路径 https://archive.apache.org/dist/zookeeper/

    环境要求:zookeeper 3.5.5要求JDK版本不低于1.8,centos7和rhel7的jdk默认就是1.8版本

    安装过程(在单机上安装3个实例,实例的目录和端口不同):

    ①上传及解压安装包

    [root@centos7-2 ~]# mkdir -p /cslc/zookeeper
    [root@centos7-2 ~]# cd /cslc/zookeeper/  #通过SFTP将安装包上传到这个目录
    [root@centos7-2 zookeeper]# tar zxf apache-zookeeper-3.5.5-bin.tar.gz 
    [root@centos7-2 zookeeper]# cp -r apache-zookeeper-3.5.5-bin zookeeper1  
    [root@centos7-2 zookeeper]# cp -r apache-zookeeper-3.5.5-bin zookeeper2 
    [root@centos7-2 zookeeper]# cp -r apache-zookeeper-3.5.5-bin zookeeper3  #三个实例
    [root@centos7-2 zookeeper]# ll zookeeper1/
    总用量 32
    drwxr-xr-x. 2 root root 232 2月 23 21:36 bin
    drwxr-xr-x. 2 root root 77 2月 23 21:36 conf
    drwxr-xr-x. 5 root root 4096 2月 23 21:36 docs
    drwxr-xr-x. 2 root root 4096 2月 23 21:36 lib
    -rw-r--r--. 1 root root 11358 2月 23 21:36 LICENSE.txt
    -rw-r--r--. 1 root root 432 2月 23 21:36 NOTICE.txt
    -rw-r--r--. 1 root root 1560 2月 23 21:36 README.md
    -rw-r--r--. 1 root root 1347 2月 23 21:36 README_packaging.txt

    ②创建配置文件

    [root@centos7-2 zookeeper]# mkdir {zookeeper1,zookeeper2,zookeeper3}/data   #创建数据文件目录
    [root@centos7-2 zookeeper]# cd zookeeper1/conf/
    [root@centos7-2 conf]# cp zoo_sample.cfg zoo.cfg   #复制生成配置文件

    修改zoo.cfg,修改部分如下,然后分别修改zookeeper2和zookeeper3的配置文件,三个配置文件只有dataDir和clientPort不同。

    # 存放数据文件
    dataDir=/cslc/zookeeper/zookeeper1/data  #其他两个为zookeeper2/data和zookeeper3/data
    # 服务端口 clientPort=2181   #其他两个为2182和2183
    # zookeeper cluster,2888为选举端口,3888为心跳端口 
    server.1=192.168.85.20:2887:3887 
    server.2=192.168.85.20:2888:3888 
    server.3=192.168.85.20:2889:3889

    ③创建myid文件

    myid文件的内容为一个数字,用来标识当前主机,conf/zoo.cfg文件中配置的server.X中X是什么数字,myid文件中就输入这个数字。

    [root@centos7-2 conf]# echo "1" > /cslc/zookeeper/zookeeper1/data/myid
    [root@centos7-2 conf]# echo "2" > /cslc/zookeeper/zookeeper2/data/myid
    [root@centos7-2 conf]# echo "3" > /cslc/zookeeper/zookeeper3/data/myid

    ④启动和关闭和查看状态

    启动命令在bin目录下,./zkServer.sh start、stop、status可分别启动、停止和查看状态。

    要同时启动三个实例的应用,启动后会开始选取leader和follower,耗时约30s~120s,leader选取期间集群服务不可用。

    启动完成后通过status查看(由于leader选取耗时刚启动状态可能为not running),只有一个实例的Mode为leader即主,其他实例Mode为follower即从。

    [root@centos7-2 conf]# cd ../bin
    [root@centos7-2 bin]# ls
    README.txt    zkCli.cmd  zkEnv.cmd  zkServer.cmd            zkServer.sh          zkTxnLogToolkit.sh
    zkCleanup.sh  zkCli.sh   zkEnv.sh   zkServer-initialize.sh  zkTxnLogToolkit.cmd
    [root@centos7-2 bin]# ./zkServer.sh start
    /usr/bin/java
    ZooKeeper JMX enabled by default
    Using config: /cslc/zookeeper/zookeeper1/bin/../conf/zoo.cfg
    Starting zookeeper ... STARTED
    [root@centos7-2 bin]# ./zkServer.sh status
    /usr/bin/java
    ZooKeeper JMX enabled by default
    Using config: /cslc/zookeeper/zookeeper1/bin/../conf/zoo.cfg
    Client port found: 2181. Client address: localhost.
    Mode: leader

    服务发现原理

    zookeeper本质是一个文件系统,进入文件系统的操作,路径必须从/开始

    # 通过客户端登录zookeeper
    [root@centos7-2 bin]# ./zkCli.sh -server localhost:2181
    /usr/bin/java
    Connecting to localhost:2181
    2020-02-23 22:49:53,274 [myid:] - INFO [main:Environment@109] - Client environment:zookeeper.version=3.5.5-390fe37ea45dee……
    [zk: localhost:2181(CONNECTED) 0] ls /
    [zookeeper]
    
    # 以服务发现为例,假设服务名为elp,下属两个服务,分别为172.26.0.[1,2]:8080,即在zookeeper文件系统下创建两个目录表示elp服务下的IP及端口
    # 分别创建/elp/172.26.0.1:8080与/elp/172.26.0.1:8080
    [zk: localhost:2181(CONNECTED) 1] create /elp
    Created /elp
    [zk: localhost:2181(CONNECTED) 2] cd /elp
    [zk: localhost:2181(CONNECTED) 3] create /elp/172.26.0.1:8080
    Created /elp/172.26.0.1:8080
    [zk: localhost:2181(CONNECTED) 4] create /elp/172.26.0.2:8080
    Created /elp/172.26.0.2:8080
    
    # 查看
    [zk: localhost:2181(CONNECTED) 5] ls /elp
    [172.26.0.1:8080, 172.26.0.2:8080]
    
    # zookeeper提供了“心跳检测”功能,它会定时向各个服务提供者发送一个请求,如果长期没有响应,服务中心就认为该服务提供者已经“挂了”,并将其剔除。
    # 例如:zookeeper判断172.26.0.2:8080心跳失败
    [zk: localhost:2181(CONNECTED) 6] delete /elp/172.26.0.2:8080
    [zk: localhost:2181(CONNECTED) 6] ls /elp 
    # 查看结果 
    [172.26.0.1:8080]
  • 相关阅读:
    No configuration found for this host:al
    相对路径和绝对路径
    工具类学习
    JRebel没有自动部署的解决方法
    之前写了http解析高德地图时,json转对象搞了半天 , 今天同事用GSON把json转对象,一句代码就解决了,代码如下
    导入项目时遇到的问题
    解析Http请求调用高德地图的api(货车路径规划)
    二进制中的符号位的区分以及表示
    svn提交及更新时的常见问题
    JDBC 连接池下重构操作
  • 原文地址:https://www.cnblogs.com/Forever77/p/11484462.html
Copyright © 2020-2023  润新知