CentOS搭建:ZK集群

12/31/2023 Linux

目录


参考:


# CentOS搭建:ZK集群

ZooKeeper是Apache Hadoop的一个子项目,它是一个开源的分布式中间件,为分布式环境提供了协调服务。

# 环境依赖

类别 应用 版本 包名 包类型 备注
系统 Linux CentOS 7.x / / /
软件 ZooKeeper 3.4.5 zookeeper-3.4.5.tar.gz (opens new window) 源码二进制包 官网下载 (opens new window)
3.8.4 apache-zookeeper-3.8.4-bin.tar.gz (opens new window) 源码二进制包 官网下载 (opens new window)
依赖 jdk 8 jdk-8u411-linux-x64.tar.gz 源码二进制包 官网下载 (opens new window)

# 安装JDK

由于ZooKeeper是基于Java开发的,因此在启动ZooKeeper之前,需要确保系统上已经安装了JDK,并且配置了相应的环境变量。具体来说,ZooKeeper需要JDK 1.7或更高版本的支持。在安装完JDK并配置好环境变量后,还需要在环境变量中配置ZooKeeper的HOME目录(ZK_HOME),以便系统能够找到ZooKeeper的可执行文件。

CentOS搭建:JDK

# 单机安装

# 解压缩安装包

sudo tar -zxvf -C apache-zookeeper-3.8.4-bin.tar.gz /soft/zookeeper/
1

# 修改配置文件

创建数据目录和日志目录

sudo mkdir -p /data/zookeeper/apache-zookeeper-3.8.4/data
sudo mkdir -p /data/zookeeper/apache-zookeeper-3.8.4/log
sudo touch /data/zookeeper/apache-zookeeper-3.8.4/zookeeper_server.pid
ll -a /data/zookeeper/apache-zookeeper-3.8.4/
1
2
3
4

创建配置文件

ll -a /data/soft/zookeeper/apache-zookeeper-3.8.4/conf/zoo*
cp /data/soft/zookeeper/apache-zookeeper-3.8.4/conf/zoo_sample.cfg /data/soft/zookeeper/apache-zookeeper-3.8.4/conf/zoo.cfg
ll -a /data/soft/zookeeper/apache-zookeeper-3.8.4/conf/zoo*
1
2
3

编辑配置文件

vi /data/soft/zookeeper/apache-zookeeper-3.8.4/conf/zoo.cfg
1
dataDir=/data/data/zookeeper/apache-zookeeper-3.8.4/data
1

# 配置环境变量

创建或编辑配置文件

# 查看
ll /etc/profile.d
# 编辑
sudo vi /etc/profile.d/zookeeper.sh
1
2
3
4

填入配置内容并保存

export ZK_HOME=/data/soft/zookeeper/apache-zookeeper-3.8.4-bin
export PATH=$PATH:$ZK_HOME/bin
1
2

环境配置生效

#重新加载配置文件
source /etc/profile.d/zookeeper.sh
1
2

检查是否配置成功

zkServer.sh status
1

# 自定义服务管理

新增用户并赋权

# 查看是否已有用户和用户组
getent passwd zookeeper
getent group zookeeper
# 新增用户组及用户
sudo groupadd zookeeper
sudo useradd -g zookeeper zookeeper -s /sbin/nologin
# 查看是否创建成功
getent passwd zookeeper
getent passwd zookeeper | cut -d: -f7
1
2
3
4
5
6
7
8
9
  • -s /sbin/nologin:设置用户为非标准方式登录到系统,用户只用于运行服务,而不需要直接的交互。
# 更改目录的属主
sudo chown -R zookeeper:zookeeper /soft/zookeeper
sudo chown -R zookeeper:zookeeper /data/zookeeper
# 查看母的属主
ll -a /soft |grep zookeeper
ll -a /data |grep zookeeper
1
2
3
4
5
6

配置服务管理

sudo vi /etc/systemd/system/zookeeper.service
1
[Unit]
Description=ZooKeeper Service
After=network.target

[Service]
# 启动类型,forking:作为子进程启动
Type=forking
# 环境参数:JAVA_HOME,java路径
Environment=JAVA_HOME=/data/soft/jdk/jdk1.8.0_411
# 环境参数:ZOO_LOG_DIR,日志路径
Environment=ZOO_LOG_DIR=/data/data/zookeeper/apache-zookeeper-3.8.4/log 
# 环境参数:ZOOPIDFILE,进程文件
Environment=ZOOPIDFILE=/data/data/zookeeper/apache-zookeeper-3.8.4/zookeeper_server.pid
# 指定服务的启动、重启、停止脚本
ExecStart=/data/soft/zookeeper/apache-zookeeper-3.8.4-bin/bin/zkServer.sh start
ExecReload=/data/soft/zookeeper/apache-zookeeper-3.8.4-bin/bin/zkServer.sh restart
ExecStop=/data/soft/zookeeper/apache-zookeeper-3.8.4-bin/bin/zkServer.sh stop
# 指定运行服务的用户和用户组,限制服务进程的权限,提高系统的安全性。
User=zookeeper
Group=zookeeper

[Install]
WantedBy=multi-user.target
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#刷新生效
sudo systemctl daemon-reload 
#状态
sudo systemctl status zookeeper
#启动
sudo systemctl start zookeeper
#重启
sudo systemctl restart zookeeper
#停止
sudo systemctl stop zookeeper
#开机自启动
sudo systemctl enable zookeeper
#取消开机自启动
sudo systemctl disable zookeeper
1
2
3
4
5
6
7
8
9
10
11
12
13
14

# 集群安装

# 解压缩安装包

cd /opt/
mkdir zk
mv zookeeper-3.4.5.tar.gz zk/
cd zk/
ll
tar -zxvf zookeeper-3.4.5.tar.gz
cd zookeeper-3.4.5/
mkdir data
mkdir log
ll
1
2
3
4
5
6
7
8
9
10

# 配置环境变量

cp /etc/profile /etc/profile.bak20230719
vim /etc/profile
1
2
# zookeeper
export PATH=$PATH:/opt/zk/zookeeper-3.4.5/bin
1
2
# 环境变量生效
source /etc/profile
1
2

# 修改配置文件

cd /opt/zk/zookeeper-3.4.5/conf/
cp zoo_sample.cfg zoo.cfg
ll
vim zoo.cfg
1
2
3
4
dataDir=/opt/zk/zookeeper-3.4.5/data
dataLogDir=/opt/zk/zookeeper-3.4.5/log
# 第1台服务器的的ip或者映射名称:2888:3888
server.0=master:2888:3888
# 第2台服务器的的ip或者映射名称:2888:3888
server.1=slave1:2888:3888
# 第3台服务器的的ip或者映射名称:2888:3888
server.2=slave2:2888:3888
# 注意:以上2888表示zookeeper的端口,3888表示选举leader的端口
1
2
3
4
5
6
7
8
9

# 创建服务器标识

在 /opt/zk/zookeeper-3.4.5/data 文件夹下创建 myid 文件,将其值修改为0。

注意:

  • zoo.cfg 中 server. 后面的数值必须和 = 后面 IP 中的 myid 值保持一致,即 IP 为 slave1 的节点中 myid 的值为1,IP 为 slave2 的节点中 myid 的值为2。
cd /opt/zk/zookeeper-3.4.5/data/
vim myid 
1
2
# server.x 的 x 值
1

# 集群部署配置(多机集群)

同样操作或者将刚才的配置的复制到其他两台服务器上并修改

# 启动zookeeper

# 启动
zkServer.sh start
# 状态
zkServer.sh status
# 停止
zkServer.sh stop
# 重启
zkServer.sh restart
# 连接服务端
zkCli.sh -timeout - -r -server ip:port
1
2
3
4
5
6
7
8
9
10

# nginx反向代理zookpeer 3.8.4

Nginx反向代理Zookeeper是一种常见的配置,特别是在需要实现负载均衡、高可用性或隐藏后端服务详细信息的场景中。针对Nginx反向代理Zookeeper 3.8.4的配置,以下是一些关键的步骤和注意事项:

# 一、环境准备

  1. 安装Zookeeper:确保Zookeeper 3.8.4已经正确安装并运行在集群环境中。
  2. 安装Nginx:确保Nginx已经正确安装,并配置好基本的Web服务器功能。

# 二、Nginx配置

  1. 修改Nginx配置文件

    • 通常,Nginx的配置文件位于/etc/nginx/nginx.conf/usr/local/nginx/conf/nginx.conf
    • 在配置文件中,可以添加一个或多个server块来定义反向代理的设置。
  2. 配置反向代理

    • 使用proxy_pass指令来指定Zookeeper集群的地址。如果Zookeeper集群有多个节点,可以使用Nginx的负载均衡功能来分配请求。
    • 可以根据需要配置其他相关的指令,如proxy_set_header来设置请求头。

例如,一个简单的Nginx反向代理Zookeeper的配置可能如下:

http {
    upstream zookeeper_cluster {
        server zk1:2181;
        server zk2:2181;
        server zk3:2181;
    }

    server {
        listen 80;
        server_name localhost;

        location / {
            proxy_pass http://zookeeper_cluster;
            proxy_set_header Host $host;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        }
    }
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19

在这个例子中,zookeeper_cluster是一个上游服务器组,包含了三个Zookeeper节点的地址。Nginx会将接收到的请求转发到这个上游服务器组中的一个节点。

# 三、测试与验证

  1. 重新加载Nginx配置:修改完配置文件后,需要重新加载Nginx配置以使更改生效。可以使用nginx -s reload命令来重新加载配置。
  2. 测试反向代理:使用客户端工具或浏览器来访问Nginx服务器的地址,并验证请求是否被正确转发到Zookeeper集群。

# 四、注意事项

  1. 安全性:确保Nginx和Zookeeper之间的通信是安全的,可以使用SSL/TLS来加密通信。
  2. 性能优化:根据实际需求调整Nginx的负载均衡算法和连接超时等参数,以优化性能。
  3. 故障排查:如果配置出现问题,可以检查Nginx的错误日志和Zookeeper的日志来定位问题。

通过以上步骤,您可以成功配置Nginx反向代理Zookeeper 3.8.4。这将有助于提高Zookeeper集群的可用性和安全性,并简化客户端的访问方式。

上次更新时间: 11/13/2024, 8:26:38 AM