zookeeper伪集群(只是为了学习而采用伪集群)安装和相关应用

本文详细介绍了如何在一台服务器上模拟伪集群环境,通过修改zookeeper配置,创建多个实例并设置myid实现一主二从的高可用架构。重点讲解了配置步骤、验证方法和客户端操作,适合理解Zookeeper集群工作原理的学习者。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

对于伪集群的安装就是把原来安装的zookeeper的配置进行相应修改即可,要几个就修该几个!!!

伪集群在实际开发中并没有什么用,伪集群是在一台服务器上的,但是在实际开发中是每台服务器上都有一个zookeeper服务器这样才能保证当一台服务器垮掉之后,还能进行正常的访问。这里只是模拟一下实际开发的场景,真集群就是把localhost改成新的服务器地址即可

注意:只要用到端口访问,都要把防火墙关闭,否则外部无法访问本机相应的端口

//查看防火墙状态
systemctl status firewalld
//关闭状态
systemctl stop firewalld
  1. 创建一个文件夹里面放不同的zookeeper
    在这里插入图片描述
  2. 在这个文件夹下创建三个文件夹,每个文件夹相当于一个端口
    在这里插入图片描述
  3. 进入到zk2190下 创建一个data文件夹
    在这里插入图片描述
  4. 到原先已经安装好的zookeeper下的conf文件夹下(具体安装在我的博客中有,这里只是伪集群的安装)复制之前zoo.cfg到zk2190
    在这里插入图片描述
  5. 修改zk2190下的zoo.cfg
    在这里插入图片描述
  6. 接下来就是按原来的步骤去修改zk2191和zk2192,重复步骤太麻烦,因为它们都和zk2190基本上是一样的,所以只需复制就行,简单的改一下里面的相关配置即可
    在这里插入图片描述
    在这里插入图片描述
  7. 回到zk2190下,在data中创建myid,并修改
    在这里插入图片描述
    在这里插入图片描述
  8. 回到zk2190修改zoo.cfg
    在这里插入图片描述
  9. 重复之前的修改,分别对zk2191和zk2192进行修改
    在这里插入图片描述
    在这里插入图片描述
    拓展:真集群中只需要把localhost换成不同的ip地址即可,剩下的步骤和本文一样

zk2192的修改重复上述步骤

  1. 开始启动zookeeper服务(这里还是在之前安装的单机版zookeeper下启动,本文只是创建了几个不同的zookeeper启动环境,这里就相当于有三个zookeeper服务)
  • 启动zk2190
[root@localhost ~]# ./apache-zookeeper-3.6.2-bin/bin/zkServer.sh start zks/zk2190/zoo.cfg
# 后面跟的就是具体要启动的zookeeper服务

在这里插入图片描述再分别启动zk2191和zk2192

  • 查看zookeeper状态
    [root@localhost ~]# ps -ef|grep zookeeper
  • 查看zk2190的信息
    在这里插入图片描述
  • 查看zk2191的信息
    在这里插入图片描述
  • 查看zk2192的信息
    在这里插入图片描述
    完成了一主二从的集群效果

根据zookeeper选举原理可以推断出2191会成为leader

主服务器可以进行写操作和读操作

从服务器只能进行读操作,当有写操作请求发送到该服务器上时,从服务器会把请求转发给主服务器进行写操作,主服务器写操作完毕,会同步到从服务器

zookeeper是满足CP原则,要求数据必须一致,在同步期间可能会存在阻塞

验证一些集群

#连接到2190服务器客户端 使用-server后指定要连接服务器的地址及端口
./apache-zookeeper-3.6.2-bin/bin/zkCli.sh -server localhost:2190

操作来验证对一个从服务器进行了写操作,看是否其它的服务器被同步了
zk2190是从机(这里之所以能查看到choage这个节点是因为后面的结论)
在这里插入图片描述
zk2191是主机
在这里插入图片描述
zk2192是从机
在这里插入图片描述

结论:对从机创建了一个节点(写操作)但是从机只能进行读操作,这时从机会把写操作交给主机,然后主机处理完,在同步到不同的从机上

  1. 假如zk2190从机垮了,那么是不会有什么影响的,zk2191还是主机,zk2192还是从机
  2. 假如zk2191主机垮了,那么肯定是有影响的,集群会重新选一个leader,因为会比较myid的值,所以新的leader应该是3号服务器zk2192

具体验证操作
在这里插入图片描述
zookeeper的Java客户端程序
常见的客户端

  1. zookeeper自带的客户端不方便不推荐使用
  2. zkclient之前使用的较多,但是又与后期维护复杂,以及dubbo等都遗弃了该客户端所以也不推荐使用
  3. curator客户端 dubbo2.7之后全都升级使用curator,包括es(elaticsSearch)都使用curator 推荐使用

curator客户端的简单举例
其实就是利用java程序对zookeeper服务器进行操作
之前的redis也可以用Java程序对其操作,不管是什么服务,它基本上都有对应的java客户端

导入依赖时要注意:不要去导入主包,因为它只是一个包。要导入从包,那么maven会把从包依赖的主包也导进去。

pom.xml导入依赖

        <!-- https://mvnrepository.com/artifact/org.apache.curator/curator-framework -->
        <dependency>
            <groupId>org.apache.curator</groupId>
            <artifactId>curator-framework</artifactId>
            <version>5.1.0</version>
        </dependency>
    </dependencies>
下面的依赖也是可以的,它是从包,会自动把上面一个主包导进去
 <dependency>
        <groupId>org.apache.curator</groupId>
        <artifactId>curator-recipes</artifactId>
        <version>4.2.0</version>
    </dependency>

测试程序

package com;

import org.apache.curator.RetryPolicy;
import org.apache.curator.framework.CuratorFramework;
import org.apache.curator.framework.CuratorFrameworkFactory;
import org.apache.curator.retry.ExponentialBackoffRetry;

public class test {
    public static void main(String[] args) throws Exception {
        //定义重试策略:在连接zookeeper时可能第一次没有连接成功,在休眠1秒钟后,继续重试,可以重试次数是2次,重试2次仍然失败,退出
        RetryPolicy retryPolicy = new ExponentialBackoffRetry(1000,2);
        //创建连接zookeeper的客户端代理
        CuratorFramework curatorFramework = CuratorFrameworkFactory.newClient("192.168.98.133:2190",retryPolicy);
        //启动客户端连接
        curatorFramework.start();
        //在zookeeper服务器上创建一个结点和给该节点赋值,
        //"123456".getBytes()把字符串转为字节型数组
        curatorFramework.create().forPath("/chaoge2021","123456".getBytes());
        //关闭客户端连接
        curatorFramework.close();
    }
}

查看结果

在这里插入图片描述

自此伪集群的安装和相关应用完成

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值