linux 使用 nginx 搭建 zookeeper 集群

搭建 zookeeper 集群,笔者这里使用3台 centos7 服务器,它们 ip 分别是 192.168.0.125;192.168.0.123;192.168.0.117,后面简称 125,123,117

然后为3台服务器配置 java 环境,笔者这里的3台服务器已经成功安装 java 环境,没有安装 java 环境的朋友可以参考:https://blog.csdn.net/wsjzzcbq/article/details/82818826

目录

1、官网下载 zookeeper

2、安装 zookeeper

3、启动集群

4、添加 nginx 

5、集群测试

5.1、测试集群间数据同步

5.2、测试集群中 leader 节点挂掉的情况


1、官网下载 zookeeper

zookeeper 官网地址:https://zookeeper.apache.org/

下载最新稳定版本3.7.0

 

 点击下载

 

2、安装 zookeeper

下载完成后,将安装包上传到3台服务器中的一台,笔者这里上传到 125 服务器

 然后将安装包上传到其他2台服务器,或者通过 scp 命令将安装包复制到另外2台服务器

笔者这里使用 scp 命令进行复制

scp /root/apache-zookeeper-3.7.0-bin.tar.gz root@192.168.0.123:/root
scp /root/apache-zookeeper-3.7.0-bin.tar.gz root@192.168.0.117:/root

3台服务器都有 zookeeper 安装包后,分别创建 zookeeper 安装目录

分别在 3 台服务器的 /usr/local 目录下创建 zookeeper 目录

mkdir -p /usr/local/zookeeper

然后将 zookeeper 安装包解压到新创建的 zookeeper 安装目录

tar -zxvf apache-zookeeper-3.7.0-bin.tar.gz -C /usr/local/zookeeper

 

解压完成后,分别进入 3 台服务器的 zookeeper 安装目录,修改配置文件

进入安装目录

cd /usr/local/zookeeper/apache-zookeeper-3.7.0-bin/

进入conf目录

cd conf

复制修改文件名

分别将 3 台服务器的 zoo_sample.cfg 复制为 zoo.cfg

cp zoo_sample.cfg zoo.cfg

 

查看配置文件 zoo.cfg

vi zoo.cfg

dataDir 配置 zookeeper 数据存放目录,笔者这里使用默认的 /tmp/zookeeper,此时 /tmp 目录下还没有 /zookeeper 目录

知道默认的数据存放目录后,进入/tmp 目录,创建 zookeeper 目录

cd /tmp

创建 zookeeper 目录

mkdir zookeeper

 然后进入创建的 zookeeper 目录

cd zookeeper

创建一个 myid 的文件

这个 myid 的文件是搭建集群用的,需要放在 dataDir 指定的目录下(即默认的 /tmp/zookeeper)

touch myid

创建后,编辑 myid

vi myid

125 的 myid 是1, 123 的 myid 是2, 117 的 myid 是3,这个 myid 相当于是节点在集群中的唯一标识 ,后面会用到

3 台机器的 myid 都配置完成后,分别在3台机器的 zoo.cfg 文件中配置集群信息

cd /usr/local/zookeeper/apache-zookeeper-3.7.0-bin/conf

编辑 zoo.cfg 

vi zoo.cfg

配置节点集群信息

server.1=192.168.0.125:2888:3888
server.2=192.168.0.123:2888:3888
server.3=192.168.0.117:2888:3888

server. 后面的 1、2、3 是上面的 myid,这个 myid 要和后面的 ip 地址保持一致

2888 端口和 3888 端口是随意的,也可以使用其他端口号

 

配置集群信息后

开放防火墙 2181 2888 3888 端口

firewall-cmd --zone=public --add-port=2181/tcp --permanent
firewall-cmd --zone=public --add-port=2888/tcp --permanent
firewall-cmd --zone=public --add-port=3888/tcp --permanent

开放后,更新防火墙规则(无需断开连接,动态添加规则)

firewall-cmd --reload

 

3、启动集群

分别进入 3 台服务器的 bin 目录,启动 zookeeper

进入bin目录

cd /usr/local/zookeeper/apache-zookeeper-3.7.0-bin/bin

启动

./zkServer.sh start

 启动后查看各个节点状态

./zkServer.sh status

可以看到,117成为了 leader 另外2个是 follower 

集群搭建成功

4、添加 nginx 

nginx 配置如下,监听 2181 端口

stream {
    server {
        listen 2181;
        proxy_pass zookeepers;
    }

    upstream zookeepers {
        server 192.168.0.125:2181;
		server 192.168.0.123:2181;
		server 192.168.0.117:2181;
    }
}

5、集群测试

5.1、测试集群间数据同步

新增一条数据,测试集群间数据同步

新建 maven 项目,添加依赖

<dependency>
    <groupId>org.apache.curator</groupId>
    <artifactId>curator-framework</artifactId>
    <version>5.2.1</version>
</dependency>

新建 Demo 类

package com.learn.zookeeper;

import org.apache.curator.framework.CuratorFramework;
import org.apache.curator.framework.CuratorFrameworkFactory;
import org.apache.curator.retry.ExponentialBackoffRetry;
import org.apache.zookeeper.data.Stat;

/**
 * Demo
 *
 * @author wsjz
 * @date 2022/05/10
 */
public class Demo {

    public static void main(String[] args) throws Exception {
        CuratorFramework curator =
                CuratorFrameworkFactory
                        .builder()
                        .connectString("localhost:2181")
                        .retryPolicy(new ExponentialBackoffRetry(1000, 3))
                        .build();
        curator.start();

        curator.create().creatingParentsIfNeeded().forPath("/name", "hello world".getBytes());
        byte[] bytes = curator.getData().storingStatIn(new Stat()).forPath("/name");
        System.out.println(new String(bytes));
    }
}

运行 Demo

创建 /name 节点

 

使用 zkCli zookeeper客户端查看各个节点数据

./zkCli.sh

查看 /name 节点数据

get /name

 

查看3台服务器的节点数据 

3 台服务器的 zookeeper 中都有 /name 数据,说明集群间数据同步没问题

5.2、测试集群中 leader 节点挂掉的情况

这里将 117 上的 zookeeper 关闭,看其他 2 个节点的情况

./zkServer.sh stop

查看 zookeeper 状态

./zkServer.sh status

可以看到,123 成为了新的 leader

至此完

  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

悟世君子

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值