• zookeeper本地部署和集群搭建


    zookeeper(动物园管理员)是一个广泛应用于分布式服务提供协调服务Apache的开源框架

    Zookeeper从设计模式角度来理解:是一个基于观察者模式设计的分布式服务管理框架,它 负责存储和管理大家都关心的数据 ,然 后 接受观察者的注册 ,一旦这些数据的状态发生变化, Zookeeper 就将 负责通知已经在 Zookeeper上注册的那些观察者 做出相应的反应。

    zookeeper集群特点

    • zookeeper集群由一个领导者(Leader)和多个跟随者(Follower)组成。
    • 集群中只要有半数以上节点存活,Zookeeper集群就能正常服务。所 以Zookeeper适合安装奇数台服务器。
    • 全局数据一致:每个Server保存一份相同的数据副本,Client无论连接到哪个Server,数据都是一致的。
    • 更新请求顺序执行,来自同一个Client的更新请求按其发送顺序依次执行。
    • 数据更新原子性,一次数据更新要么成功,要么失败。
    • 实时性,在一定时间范围内,Client能读到最新数据。

    本地模式安装

    zookeeper由Java开发所有要运行zookeeper需要现安装jdk

    安装jdk

    可以下载免安装版jdk,解压后配置一下环境变量即可

    linux下的环境变量配置文件在

    /etc/profile

    然后在该文件下增加如下配置即可

    export JAVA_HOME=/usr/java/jdk-21/jdk-21.0.1 // 我自己的jdk目录
    export JRE_HOME=${JAVA_HOME}/jre
    export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib
    export PATH=${JAVA_HOME}/bin:$PATH
     

    然后从新加载配置文件,命令为

    source /etc/profile 

    查看Java版本

    则表示已成功安装Jdk

    安装zookeeper

    进入zookeeper官网,找到下载页面,下载-bin.tar.gz版即可,如果没有想要的版本则可以在下载页面的存档连接中找到

    Apache ZooKeeper

    1、拷贝 apache-zookeeper-3.5.7-bin.tar.gz 安装包到 Linux 系统下
    2、解压到指定目录
           
     tar -zxvf apache-zookeeper-3.5.7- bin.tar.gz -C /mydata/zookeeper
    3、修改名称
            
    mv apache-zookeeper-3.5.7 -bin/ zookeeper-3.5.7

    配置修改

    1、将/mydata/zookeeper/zookeeper-3.5.7/conf这个路径下的 zoo_sample.cfg 修改为 zoo.cfg

    mv zoo_sample.cfg zoo.cfg

    2、打开 zoo.cfg 文件,修改 dataDir 配置的路径 修改为如下内容(默认的tmp路径是临时路径,一段时间后,linux会自动删除里面的文件,所有不适合正式环境使用)

    dataDir=/mydata/zookeeper/zookeeper-3.5.7/data

    3、在/mydata/zookeeper/zookeeper-3.5.7/这个目录上创建 data文件夹

    mkdir data

    操作zookeeper

    1、启动 Zookeeper

            在bin目录下使用 ./zkServer.sh start 启动zookeeper
    2、 查看进程是否启动

    3、查看状态

    4、启动客户端

            ./zkCli.sh

    5、退出客户端:

            [zk: localhost:2181(CONNECTED) 0] quit

    6、停止 Zookeeper

            .bin/zkServer.sh stop

    配置参数解读

    Zookeeper中的配置文件zoo.cfg中参数含义解读如下:

    1tickTime = 2000:通信心跳时间,Zookeeper服务器与客户端心跳时间,单位毫秒

    2 initLimit = 10 LF 初始通信时限

    LeaderFollower初始连接时能容忍的最多心跳数(tickTime的数量)

    3syncLimit = 5LF同步通信时限

    LeaderFollower之间通信时间如果超过syncLimit * tickTimeLeader认为Follwer死掉,从服务器列表中删除Follwer。

    4dataDir保存Zookeeper中的数据

    注意:默认的tmp目录,容易被Linux系统定期删除,所以一般不用默认的tmp目录。

    5 clientPort = 2181 :客户端连接端口,通常不做修改。

    zookeeper集群搭建

    1)集群规划

    首先准备三台linux虚拟机 可以安装一台然后使用vmware提供的克隆功能实现克隆,克隆之前需要先关闭虚拟机。
    克隆完成后 修改克隆机 IP 以下以 hadoop100(hadoop100为我自己设置的主机名称) 举例说明
    1)修改克隆虚拟机的静态 IP
    改成

    TYPE="Ethernet"
    PROXY_METHOD="none"
    BROWSER_ONLY="no"
    BOOTPROTO="static"
    DEFROUTE="yes"
    IPV4_FAILURE_FATAL="no"
    IPV6INIT="yes"
    IPV6_AUTOCONF="yes"
    IPV6_DEFROUTE="yes"
    IPV6_FAILURE_FATAL="no"
    IPV6_ADDR_GEN_MODE="stable-privacy"
    NAME="ens33"
    UUID="d7919ed1-15af-49fe-9b4e-aad1456eed3d"
    DEVICE="ens33"
    ONBOOT="yes"

    IPADDR=192.168.127.100
    # wangGuan
    GATEWAY=192.168.127.2
    # DNS
    DNS1=192.168.127.2

     

    2)查看 Linux 虚拟机的虚拟网络编辑器,编辑->虚拟网络编辑器->VMnet8
    3)查看 Windows 系统适配器 VMware Network Adapter VMnet8 IP 地址
    4)保证 Linux 系统 ifcfg-ens33 文件中 IP 地址、虚拟网络编辑器地址和 Windows 系统 VM8 网络 IP 地址在同一网段。

    2)修改克隆机主机名,以下以 hadoop100 举例说明

    1)修改主机名称
    vim /etc/hostname
    hadoop102
    2)配置 Linux 克隆机主机名称映射 hosts 文件,打开/etc/host

    [root@hadoop100 ~]# vim /etc/hosts

    添加如下内容

    192.168.127.100 hadoop100
    192.168.127.101 hadoop101
    192.168.127.102 hadoop102
    192.168.127.103 hadoop103
    192.168.127.104 hadoop104
    192.168.127.105 hadoop105
    192.168.127.106 hadoop106
    192.168.127.107 hadoop107
    192.168.127.108 hadoop108
    192.168.127.132 qingmangmall

    3)重启克隆机 hadoop100
    [root@hadoop100 ~]# reboot
    4)修改 windows 的主机映射文件(hosts 文件)

    • a)进入 C:\Windows\System32\drivers\etc 路径
    • b)打开 hosts 文件并添加如下内容,然后保存
    192.168.127.100 hadoop100
    192.168.127.101 hadoop101
    192.168.127.102 hadoop102
    192.168.127.103 hadoop103
    192.168.127.104 hadoop104
    192.168.127.105 hadoop105
    192.168.127.106 hadoop106
    192.168.127.107 hadoop107
    192.168.127.108 hadoop108
    192.168.127.132 qingmangmall
    至此克隆的虚拟机就可以使用了
    如果之前已有三台虚拟机使用,如何快速将其中的某一个文件快速共享给其他机器呢?

    3)集群分发

    将zookeeper分发给其他服务

            前提:在 hadoop102 hadoop103 hadoop104 都已经创建好的/mydata目录
            并且已经把这两个目录修改为 user:user(想要操作该目录的用户)
    [user@hadoop102 ~]$ sudo chown user:user -R  /mydata
         
        在 hadoop102 上,将 hadoop102 /mydata/zookeeper  目录拷贝到
    hadoop103 上。
    [user@ hadoop102 ~]$ scp -r /mydata/zookeeper user@hadoop103:/mydata
            其他服务器以此类推
    至此三台服务器就都有了zookeeper服务
    想要启用zookeeper集群需要在  /mydata/zookeeper/zookeeper-3.5.7/data 目录下创建 一个 myid 的文件。
    在文件中添加与 server 对应的编号(注意:上下不要有空行,左右不要有空格),这里我使用了linux机器IP的最后三位当作id号
    100
    注意:添加 myid 文件,一定要在 Linux 里面创建,在 notepad++ 里面很可能乱码
    3 )拷贝配置好的 zookeeper 到其他机器上
    scp -r /mydata/zookeeper/zookeeper-3.5.7/data  user@hadoop103:/mydata/zookeeper/zookeeper-3.5.7
    配置zoo.cfg文件
    1 )重命名 /opt/module/zookeeper-3.5.7/conf 这个目录下的 zoo_sample.cfg zoo.cfg
    [user@hadoop102 conf]$ mv zoo_sample.cfg zoo.cfg
    2 )打开 zoo.cfg 文件
    [user@hadoop102 conf]$ vim zoo.cfg
    # 修改数据存储路径配置
    dataDir=/opt/module/zookeeper-3.5.7/zkData
    # 增加如下配置
    #######################cluster##########################
    server.100=hadoop100:2888:3888
    server.103=hadoop103:2888:3888
    server.132=qingmangmall:2888:3888
    3 )配置参数解读
    server.A=B:C:D
    A 是一个数字,表示这个是第几号服务器;
    集群模式下配置一个文件 myid ,这个文件在 dataDir 目录下,这个文件里面有一个数据
    就是 A 的值, Zookeeper 启动时读取此文件,拿到里面的数据与 zoo.cfg 里面的配置信息比
    较从而判断到底是哪个 server
    B 是这个服务器的地址;
    C 是这个服务器 Follower 与集群中的 Leader 服务器交换信息的端口;
    D 是万一集群中的 Leader 服务器挂了,需要一个端口来重新进行选举,选出一个新的
    Leader ,而这个端口就是用来执行选举时服务器相互通信的端口。
    4 )同步 zoo.cfg 配置文件
    集群操作
    1 )分别启动 Zookeeper
    [user@hadoop100 zookeeper-3.5.7]$ bin/zkServer.sh start

    [user@hadoop103 zookeeper-3.5.7]$ bin/zkServer.sh start
    [user@qingmangmall zookeeper-3.5.7]$ bin/zkServer.sh start
    2 )查看状态
    [user@hadoop100 zookeeper-3.5.7]# bin/zkServer.sh status
    JMX enabled by default
    Using config: /opt/module/zookeeper-3.5.7/bin/../conf/zoo.cfg
    Mode: follower
    [user@hadoop103 zookeeper-3.5.7]# bin/zkServer.sh status
    JMX enabled by default
    Using config: /opt/module/zookeeper-3.5.7/bin/../conf/zoo.cfg
    Mode: leader
    [user@qingmangmall zookeeper-3.5.7]# bin/zkServer.sh status
    JMX enabled by default
    Using config: /opt/module/zookeeper-3.5.7/bin/../conf/zoo.cfg
    Mode: follower

    附录

    1)创建用户 并设置文件所属组

            可以使用如下操作创建用户
    [root@hadoop100 ~]# useradd user
    [root@hadoop100 ~]# passwd user
            配置 user用户具有 root 权限,方便后期加 sudo 执行 root 权限的命令
            [root@hadoop100 ~]# vim /etc/sudoers
    修改 /etc/sudoers 文件,在 %wheel 这行 下面添加一行,如下所示:
    ## Allow root to run any commands anywhere
    root ALL=(ALL) ALL
    ## Allows people in group wheel to run all commands
    % wheel ALL=(ALL) ALL
    user  ALL=(ALL)  NOPASSWD:ALL
            注意: user 这一行不要直接放到 root 行下面,因为所有用户都属于 wheel 组,你先
            配置了 user 具有免密功能,但是程序执行到%wheel 行时,该功能又被覆盖回需要
            密码。所以 user 要放到%wheel 这行下面。
            在根目录 下创建文件夹,并修改所属主和所属组
            mkdir /mydata
            修改 mydata文件夹的所有者和所属组均为 user 用户
            [root@hadoop100 ~]# chown user:user /mydata
    查看 /mydata文件夹的所有者和所属组,可以发现所属主已改为自己设置的用户了

    2scpsecure copy)安全拷贝

    1 scp 定义
            scp 可以实现服务器与服务器之间的数据拷贝。( from server1 to server2
    2 )基本语法
            scp            -r             $pdir/$fname                           $user@$host:$pdir/$fname
            命令          递归          要拷贝的文件路径/ 名称            目的地用户 @ 主机 : 目的地路径 / 名称

    3rsync 远程同步工具

    rsync 主要用于备份和镜像。具有速度快、避免复制相同内容和支持符号链接的优点。
    rsync scp 区别: rsync 做文件的复制要比 scp 的速度快, rsync 只对差异文件做更
    新。 scp 是把所有文件都复制过去。
    1 )基本语法
    rsync       -av            $pdir/$fname                        $user@$host:$pdir/$fname
    命令         选项参数       要拷贝的文件路径 / 名称         目的地用户 @ 主机 : 目的地路径 / 名称
    选项参数说明
    选项         功能
    -a             归档拷贝
    -v             显示复制过程
  • 相关阅读:
    LCT 的基本操作
    C/C++自动 21 级(含卓越 211)《软件技术基础》期末大作业
    企望制造ERP存在远程命令执行漏洞 附POC
    clock gating check
    云计算与大数据
    北邮“一号邮路”上的数学体验
    超参数优化(网格搜索和贝叶斯优化)
    成为电车销量的“中坚力量”,微小型车不能只有“低价”?
    JSP response对象简介说明
    日期时间格式化 @JsonFormat与@DateTimeFormat
  • 原文地址:https://blog.csdn.net/qq_45743985/article/details/134161702