作者:高天赐

编辑: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)。

下载 JDK。

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

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

cd /usrsudo -u root mkdir javacp /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_201CLASSPATH=$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/adminmkdir zookeepersmkdir brokersmkdir 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:3888server.2=10.0.100.70:2888:3888server.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/journalledgerDirectories=/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 的干货和动态分享,请关注公众号 StreamNative。

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

微信公众号 多台服务器,在多台 Linux 服务器上搭建 Pulsar 集群相关推荐

  1. 微信公众号开发--开通测试号及验证消息来自服务器

    微信公众号开发--开通测试号及验证消息来自服务器 一.服务器配置 1.开通测试号 2.域名申请(ngrok) 2.1.注册 2.2.下载客户端 二.验证消息来自服务器 一.服务器配置 1.开通测试号 ...

  2. Linux服务器搭建Pulsar集群

    目录 1. 准备环境 2. 部署JDK环境(要求版本不低于JDK8) 3. 下载Pulsar最新安装包 4. Zookeeper集群部署 4.1 搭建pulsar集群至少需要三个组件 4.2 创建文件 ...

  3. 基于SENPARC盛派微信sdk的.net WebService微信公众号的相关开发(包含从零开始本机测试环境搭建//token验证//获取微信推送消息//向微信推送消息)

    前言: 由于微信公众号正式号,一直在被使用,所以在研发的时候,本机测试环境,就显得非常重要. 而且在自己闲暇之余,可以自己尝试更深程度的微信公众号的研发工作. 1.首先,必要的网站 http://sd ...

  4. 走进微信公众号实现关注之后推送一条服务器自定义的消息给用户

    下面是tp3.2实现的代码: <?php namespace Home\Controller; use Think\Controller; class IndexController exten ...

  5. 微信公众号录音文件保存到自己开发的服务器(amr文件转mp3)

    音频转码工具,主要用于将微信语音 amr 格式转换为 mp3 格式以便在 html5 的 audio 标签中进行播放 1.调用微信提供的接口获取录音的InputStream字节流 public Inp ...

  6. 华为服务器微信公众号,记录:华为配置小程序后台服务器

    # 记录:华为配置小程序后台服务器 ## 零.前言 之前做个一个RSS阅读器的微信小程序,还取了个名字:**真简阅读器**,后端由腾讯云驱动,最近刚好到期了,就迁移到了华为云.最明显的不同就是华为云默 ...

  7. 在一台Linux机器上安装Zookeeper集群

    一.安装jdk.并配置环境变量,安装jdk就不再叙述.需要注意的是,jdk的版本和zookeeper的版本要匹配,自己在安装的过程中,使用Zookeeper3.5.4时,发现jdk7不支持,然后下载了 ...

  8. 多个微信公众号同时对接一台服务器接口的疑问

    一个公众号对一台服务器这个我们都知晓 但多个微信公众号同时需要访问和配置在同一个服务器配置接口上时,以下有几个问题: 1. 在微信服务器验证 接口这边时,不知道对面发过来的是哪个微信公众号的Token ...

  9. 虚拟主机搭建微信公众号服务器

    一.前言 搭建微信公众号服务器的方式不只一种,可以用java等其他语言或是其他云空间来搭建服务器,这里总结的是用虚拟主机(主机公园中的虚拟主机)搭建微信公众号服务器的大概思路.不管用什么方式,配置微信 ...

最新文章

  1. 轮播图html_【技术篇前端】用html+css实现小米首页部分内容(含源码,不含轮播图)...
  2. bookstrap 怎么用ajax,bootstrap里怎么用ajax请求数据到table里
  3. web3.js(三)查询智能合约币数量(erc20)
  4. 语义化,让你的网页更好的被搜索引擎理解
  5. 你所需要的java异常的处理和设计及深入理解,看这篇就差不多了
  6. [转]轻松掌握Ajax.net系列教程十五:使用AutoCompleteExtender
  7. python变量类型函数_python中的变量和数据类型
  8. Redis内部数据结构详解之简单动态字符串(sds)
  9. java程序设计教程实验报告_java程序设计课程--实验报告-实验13.doc
  10. 获取该字符串第N次出现的位置
  11. 5G边缘计算:开源架起5G MEC生态发展新通路
  12. fd抓包数据类型_fiddler——抓包中的王者
  13. IE8 打开速度慢的解决办法
  14. 如何用计算机完成一篇文稿制作步骤,第5章 计算机一级演示文稿制作经典教程.ppt...
  15. MIPS微程序CPU设计
  16. Leetcode 61~80
  17. jack server 常见错误解决方法
  18. k-means算法及python实现
  19. Materia Design(一)--将 Materia Design 兼容到5.0之前的设备
  20. [硕士毕业论文]word交叉引用

热门文章

  1. 动物电子耳标阅读器|识读器|读卡器L8600系列Modbus RTU通讯协议与二次开发说明
  2. 关于浏览器部分JS失效原因
  3. 李子柒为什么可以火爆全球
  4. c语言种子数使用方法,C语言中的srand的用法,什么是种子?
  5. 第二章 编程初步 Ivor Horton
  6. CPT203 软件工程开发 笔记
  7. 滴滴Uber又打起来了!外卖领域C位花落谁家?
  8. Error:间接寻址级别不同——C++真的魔鬼
  9. 网桥,交换机,hub,路由器到底是什么,怎么区别
  10. 【场景削减】拉丁超立方抽样方法场景削减(Matlab代码实现)