查看原文
其他

在多台 Linux 服务器上搭建 Pulsar 集群

Growth ApachePulsar 2019-06-01

作者:高天赐

编辑:Irene

Pulsar 是一个支持多租户的、高性能的消息中间件。上一篇我们介绍了如何在 Mac 上搭建 Pulsar 集群,本文详细介绍如何在 3 台 Linux 服务器上搭建 Pulsar 集群。


一、准备资源



  • 一台主机(本文以 MacOS 为例)。

  • 3 台 Linux 裸机服务器,配置 4G,2 核。

  • JDK 8 运行环境。

  • 下载 Pulsar 最新版本安装包。


二、集群组成说明



1.  搭建 Pulsar 集群至少需要 3 个组件:ZooKeeper 集群、BookKeeper 集群和 broker 集群(Broker 是 Pulsar 的自身实例)。这三个集群组件如下:

  • ZooKeeper 集群(3 个 ZooKeeper 节点组成)

  • bookie 集群(也称为 BookKeeper 集群,3 个 BookKeeper 节点组成)

  • broker 集群(3 个 Pulsar 节点组成)


2.  Pulsar 的安装包已包含了搭建集群所需的各个组件库。无需单独下载 ZooKeeper 安装包和 BookKeeper 安装包。


3.  3 台 Linux 服务器 IP 分别为 10.0.100.60,10.0.100.70 和 10.0.100.80。

如果是在内网测试环境搭建集群,为了避免防火墙造成端口开启繁琐,可以关闭服务器防火墙。


三、安装 JDK



在 3 台 Linux 裸机服务器上安装 JDK(要求版本不低于 JDK 8)。

  1. 下载 JDK。

  2. 把安装包上传至一台 Linux 服务器中。例如:/home/admin/jdk-8u201-linux-x64.tar.gz。

  3. 用如下命令新建 java 文件夹,把 JDK 安装包(jdk-8u201-linux-x64.tar.gz)解压到该文件夹中。

cd /usr
sudo -u root mkdir java
cp /home/admin/jdk-8u201-linux-x64.tar.gz  /usr/java/

cd java/
tar -zxvf jdk-8u201-linux-x64.tar.gz


4.  编辑配置文件,配置环境变量。

# 编辑配置文件

vim /etc/profile


# 配置文件中添加以下配置信息JAVA_HOME=/usr/java/jdk1.8.0_201
CLASSPATH=$JAVA_HOME/lib/
PATH=$PATH:$JAVA_HOME/binexport PATH JAVA_HOME CLASSPATH


5.  让配置文件生效。

source /etc/profile


6.  检查 JDK 是否安装成功。若显示 JDK 版本,则安装成功。

java -version


按照以上步骤,在另外两台 Linux 服务器上安装 JDK。


四、创建集群环境



1.  在 Linux 服务器上创建三个文件夹:zookeepers、brokers、bookies。

# 在工作目录下创建三个文件夹:zookeepers、brokers、bookies

cd /home/admin
mkdir zookeepers
mkdir brokers
mkdir bookies


2.  把下载的 Pulsar 安装包上传到 Linux 服务器,解压安装包。

# 解压安装包

tar -zxvf apache-pulsar-2.x.x-bin.tar.gz


3.  把解压后的文件分别复制到 3 个文件夹。

# 把解压后的文件分别复制到3个文件夹

cp -ir  /home/admin/apache-pulsar-2.x.x/*    /home/admin/zookeepers/
cp -ir  /home/admin/apache-pulsar-2.x.x/*     /home/admin/brokers/
cp -ir  /home/admin/apache-pulsar-2.x.x/*     /home/admin/bookies/

按照以上步骤,在另外两台 Linux 服务器上创建集群环境。


五、配置部署 ZooKeeper 集群



1.   新建文件夹,并写入配置内容。

# 新建文件目录

mkdir -p data/zookeeper


# 新建文件 myid,写入 1

echo 1 > data/zookeeper/myid


注意
另外两台服务器的 myid 文件内容分别写入 2 和 3。

# 服务器 2

mkdir -p data/zookeeperecho 2 > data/zookeeper/myid

# 服务器 3

mkdir -p data/zookeeperecho 3 > data/zookeeper/myid


2.  配置 zookeeper.conf 文件。


# 指定 dataDir 目录dataDir=/home/admin/data/zookeeper


# zookeeper 节点地址

server.1=10.0.100.60:2888:3888
server.2=10.0.100.70:2888:3888
server.3=10.0.100.80:2888:3888

注意
在另外两台服务器上,对 zookeeper.conf 文件进行完全相同的配置。


3.  在 zookeepers 目录中,执行启动命令。

# 进入 zookeepers 目录

cd /home/admin/zookeepers

# 执行后台运行命令

bin/pulsar-daemon start zookeeper


4.  验证 ZooKeeper 节点是否启动成功。

# 进入 zookeepers 目录

cd /home/admin/zookeepers


# 执行 zookeeper 客户端连接命令

bin/pulsar zookeeper-shell


注意
Enter 键进入命令行界面后,可完全使用 ZooKeeper 的各种命令,如 ls、get 等命令。使用 quit 命令退出命令行界面。


5.  按照以上步骤,在另外两台服务器上部署 ZooKeeper 节点。


6.  在任一个 ZooKeeper 节点,初始化集群元数据。

# 进入 zookeepers 目录

cd /home/admin/zookeepers


# 执行命令初始化集群元数据

bin/pulsar initialize-cluster-metadata \
--cluster pulsar-cluster \
--zookeeper 10.0.100.60:2181 \
--configuration-store 10.0.100.60:2181 \
--web-service-url http://pulsar.cluster.com:8080 \
--web-service-url-tls https://pulsar.cluster.com:8443 \
--broker-service-url pulsar://pulsar.cluster.com:6650 \
--broker-service-url-tls pulsar+ssl://pulsar.cluster.com:6651


7.  查看集群元数据是否初始化成功。

# 进入 zookeepers 目录

cd /home/admin/zookeepers


# 执行 ZooKeeper 客户端连接命令

bin/pulsar zookeeper-shell


# Enter键,使用 ZooKeeper 命令查看 ls /


# 看到如下图所内容,表示初始化成功


六、配置部署 BookKeeper 集群



1.  修改配置文件 bookkeeper.conf。

# 进入bookie 配置文件目录

cd /home/admin/bookies/conf


# 编辑 bookkeeper.conf 文件

vim bookkeeper.conf


# advertisedAddress 修改为服务器对应的ip,在另外两台服务器也做对应的修改advertisedAddress=10.0.100.60


# 修改以下两个文件目录地址journalDirectories=/home/admin/bookies/tmp/journal
ledgerDirectories=/home/admin/bookies/tmp/ledger


# 修改zk地址和端口信息zkServers=10.0.100.60:2181,10.0.100.70:2181,10.0.100.80:2181


2.  初始化元数据,并启动 bookie 集群。

# 先执行初始化元数据命令;再执行启动命令


# 进入 bookies 目录

cd  /home/admin/bookies


# 执行初始化元数据命令;若出现提示,输入 Y,继续(只需在一个bookie节点执行一次)

bin/bookkeeper shell metaformat


# 以后台进程启动bookie

bin/pulsar-daemon start bookie


3.  按照以上步骤,启动另外两个 bookie 节点。


4.  验证 bookie 是否启动成功。

# 进入 bookies 目录

cd  /home/admin/bookies


# 验证是否启动成功

bin/bookkeeper shell bookiesanity


# 出现如下显示,表示启动成功Bookie 

sanity test succeeded.


七、部署配置 Broker 集群



1.  修改配置文件 broker.conf。

# 进入配置文件目录

cd /home/admin/brokers/conf


# 编辑 broker.conf 文件


# 修改集群名,和 ZooKeeper 里初始化元数据时指定的集群名(--cluster pulsar-cluster)相同clusterName=pulsar-cluster


# 修改如下两个配置,指定的都是 ZooKeeper 集群地址和端口号zookeeperServers=10.0.100.60:2181,10.0.100.70:2181,10.0.100.80:2181
configurationStoreServers=10.0.100.60:2181,10.0.100.70:2181,10.0.100.80:2181


# 修改如下参数为本服务器ip地址,另外两个 broker 节点配置文件也做对应修改advertisedAddress=10.0.100.60


2.  启动 broker 节点。

# 进入 brokers 目录

cd /home/admin/brokers


# 以后台进程启动 broker

bin/pulsar-daemon start broker


3.  按照以上步骤,对另外两个 broker 节点做对应配置,并启动 broker 节点。


4.  检查 JDK 是否安装成功。若显示 JDK 版本,则安装成功。


5.  查看集群中 brokers 节点信息,验证 broker 是否都启动成功。

# 进入任一个 broker 目录

cd /home/admin/brokers


# 查看集群 brokers 节点情况

bin/pulsar-admin brokers list pulsar-cluster


至此,集群 ZooKeeper,Broker,Bookie 节点启动完毕,集群部署成功!接下来可以进行 HelloWorld 测试!


八、测试 Pulsar



1.  依次创建集群、租户、命名空间、分区 topic,并为命名空间指定集群名。

# 进入 brokers 目录,选取任一个 broker 节点执行命令即可

cd /home/admin/brokers


# 创建集群(集群名:pulsar-cluster)

./bin/pulsar-admin clusters create --url http://pulsar.cluster.com:8080  pulsar-cluster


# 创建租户(租户名:my-tenant)

./bin/pulsar-admin tenants create my-tenant


# 创建命名空间(命名空间名:my-tenant/my-namespace,它指定了租户 my-tenant)

./bin/pulsar-admin namespaces create my-tenant/my-namespace


# 创建持久性分区topic(topic全名:persistent://my-tenant/my-namespace/my-topic;分区数为 3)

./bin/pulsar-admin topics create-partitioned-topic persistent://my-tenant/my-namespace/my-topic -p 3


# 更新命名空间为其指定集群名

./bin/pulsar-admin namespaces set-clusters my-tenant/my-namespace --clusters pulsar-cluster


2.  设置 maven 依赖。


3.  创建生产者。


4.  创建消费者。


更多关于 Pulsar 的干货和动态分享,请关注公众号 ApachePulsar。


点击“阅读原文”,查看原作者 blog。

    您可能也对以下帖子感兴趣

    文章有问题?点此查看未经处理的缓存