【pulsar学习】pulsar集群部署及可视化监控部署
最好的学习一个组件的方法就是先用起来,遇见问题再去查找资料。但是往往就卡在了装软件、配置组件这一步。本文主要记录自己在装分布式pulsar时遇到的问题,希望能对读者有所帮助。
最好的学习一个组件的方法就是先用起来,遇见问题再去查找资料。但是往往就卡在了装软件、配置组件这一步。本文主要记录自己在装分布式pulsar时遇到的问题,希望能对读者有所帮助。
1 先验知识
Apache Pulsar安装有两种模式:
本地local模式
:最简单的安装方式, 此种方式仅适用于测试学习使用, 并无法作为开发中使用。Pulsar可用于64位macOS、Linux和Windows。使用Pulsar需要安装64位JRE/JDK 8或更高版本分布式集群模式
:实际生产中用到的模式。
本文主要介绍分布式集群模式安装。搭建 Pulsar 集群至少需要 3 个组件:ZooKeeper 集群
、BookKeeper 集群
和 broker 集群
(Broker 是 Pulsar 的自身实例)。这三个集群组件如下:
- ZooKeeper 集群(3 个 ZooKeeper 节点组成)
- bookie 集群(也称为 BookKeeper 集群,3 个BookKeeper 节点组成)
- broker 集群(3 个 Pulsar 节点组成)
安装方式有:
- 6台机器:3台用于zookeeper,3台用于bookie集群和broker集群。
- 3台机器:每台机器上同时部署zookeeper、bookie和broker。
- 9台机器:分别用3台机器部署zookeeper、bookie和broker集群。
奈何我的小电脑通过虚拟机构建三个机器就已经够呛了,所以采用第二个安装方案。
2 部署流程
我的电脑配置,三台centos7.5机器,8G运存,已安装JDK8,zookeeper3.5.7。
- hadoop100:IP地址196.168.10.100
- hadoop102:IP地址196.168.10.102
- hadoop103:IP地址196.168.10.103
2.1 安装zookeeper
Pulsar 的安装包已包含了搭建集群所需的各个组件库。无需单独下载 ZooKeeper 安装包和 BookKeeper 安装包。(在实际中,zookeeper我们并不仅仅应用在pulsar上, 包括HBase等其他的组件也需要依赖, 所以我们此处zookeeper使用外置zk集群环境)
zookeeper的安装和基本原理可以看我之前的文章:zookeeper原理与实操
但是,zookeeper部署后, 3.5以后的版本, 会自动占用8080端口. 需要修改配置文件。这会和后边的端口有冲突,因此需要将这个改掉。具体做法为:
vim /opt/module/zookeeper-3.5.7/conf/zoo.cfg
然后添加或修改内容:admin.serverPort=8887
这个很重要,否则后面会报错。
2.2 bookie与broker配置
下载最新版本pulsar
官方下载地址:https://pulsar.apache.org/download/
本文下载的是:apache-pulsar-2.8.1-bin.tar.gz
(1)上传解压、构建软连接
tar -zxvf apache-pulsar-2.8.1-bin.tar.gz -C /opt/module
ln -s apache-pulsar-2.8.1-bin puslar_2.8.1
(2)修改bookkeeper配置文件
vim /opt/module/puslar_2.8.1/conf/bookkeeper.conf
修改其第56行:修改本地ip地址
advertisedAddress=hadoop100
修改其39行:
journalDirectory=/opt/module/pulsar_2.8.1/tmp/journal
修改其389行:
ledgerDirectories=/opt/module/pulsar_2.8.1/tmp/ledger
修改602行:
zkServers=hadoop100:2181,hadoop102:2181,hadoop103:2181
(3)修改broker集群配置文件
vim /opt/module/puslar_2.8.1/conf/broker.conf
修改第98行: 修改集群的名称
clusterName=pulsar-cluster
修改第23行: 配置zookeeper地址
zookeeperServers=hadoop100:2181,hadoop102:2181,hadoop103:2181
修改第26行: 配置zookeeper地址
configurationStoreServers=hadoop100:2181,hadoop102:2181,hadoop103:2181
修改第44行: 更改为本地ip地址
advertisedAddress=hadoop100
(4)将puslar_2.8.1这个文件夹分配到另外两台机器。我用的是xsync
脚本,但是也可以用scp -r apache-pulsar-2.8.1/ node2:$PWD
进行分发
(5)修改第二台和第三台的broker地址和bookie地址。
2.3 集群启动
(1)先启动zookeeper集群,详细的看我之前的博客:zookeeper原理与实操。
(2)初始化元数据,在pulsar_2.8.1/bin目录下执行一下内容:
./pulsar initialize-cluster-metadata \
--cluster pulsar-cluster \
--zookeeper hadoop100:2181,hadoop102:2181,hadoop103:2181 \
--configuration-store hadoop100:2181,hadoop102:2181,hadoop103:2181 \
--web-service-url http://hadoop100:8080,hadoop102:8080,hadoop103:8080 \
--web-service-url-tls https://hadoop100:8443,hadoop102:8443,hadoop103:8443 \
--broker-service-url pulsar://hadoop100:6650,hadoop102:6650,hadoop103:6650 \
--broker-service-url-tls pulsar+ssl://hadoop100::6651,hadoop102:6651,hadoop103:6651
集群元数据说明
- cluster 集群名称
- zookeeper
- ZooKeeper
集群连接参数,仅需要包含ZooKeeper集群中的一个节点即可,在哪个机器初始化,就写那个集群的zookeeper地址,我这里在hadoop01local初始化的元数据。- configuration-store
Pulsar实例的配置存储集群(ZooKeeper),多集群部署时才会发挥作用,需要另外部署ZooKeeper集群,但是单集群部署时可以和–zookeeper参数设置一样,只需要包含ZooKeeper集群中的一个节点即可- web-service-url
集群Web服务的URL+端口,URL是一个标准的DNS名称,默认端口8080,不建议修改。- web-service-url-tls
集群Web提供TLS服务的URL+端口,端口默认8443,不建议修改。- broker-service-url
集群brokers服务URL,URL中DNS的名称和Web服务保持一致,URL使用pulsar替代http/http,端口默认6650,不建议修改。- broker-service-url-tls
集群brokers提供TLS服务的URL,默认端口6551,不建议修改。
ps:如果没有DNS服务器,也可以使用多主机(multi-host)格式的service-url设置web-service-url,web-service-url-tls,broker-service-url,broker-service-url-tls
bin/pulsar zookeeper-shell进入zk控制台,通过ls /查看所有zk节点。能看到bookies,ledgers等节点,则说明初始化成功了。
(3)启动bookkeeper服务和启动broker,这里通过脚本实现,因为不想一台一台机器去启动。
#!/bin/bash
case $1 in
"start"){
for i in hadoop100 hadoop102 hadoop103
do
echo ---------- zookeeper $i 启动 ------------
ssh $i "/opt/module/pulsar_2.8.1/bin/pulsar-daemon start bookie"
sleep 1s
ssh $i "/opt/module/pulsar_2.8.1/bin/pulsar-daemon start broker"
done
};;
"stop"){
for i in hadoop100 hadoop102 hadoop103
do
echo ---------- zookeeper $i 停止 ------------
ssh $i "/opt/module/pulsar_2.8.1/bin/pulsar-daemon stop bookie"
sleep 3s
ssh $i "/opt/module/pulsar_2.8.1/bin/pulsar-daemon stop broker"
done
};;
"status"){
for i in hadoop100
do
echo ---------- zookeeper $i 状态 ------------
ssh $i "/opt/module/pulsar_2.8.1/bin/pulsar-admin brokers list pulsar-cluster"
done
};;
esac
测试结果如下,启动后:
可以看到每台机器上对开起了broker进程和bookkeeper服务。由以上脚本可以看到/opt/module/pulsar_2.8.1/bin/pulsar-admin brokers list pulsar-cluster
可以判断broker是否启动成功。如果成功,会出现类似于下图的结果:
当时我这里一直报错404。原因是zookeeper占用了8080端口,上面已经介绍了该怎么处理这个问题。注意,需要先改完端口后,再重启zk。
还需要说明一下,需要修改vim /etc/hosts
将localhost映射为本机静态IP。
3 可视化监控部署
(1)下载
下载地址:https://dist.apache.org/repos/dist/release/pulsar/pulsar-manager/pulsar-manager-0.2.0/apache-pulsar-manager-0.2.0-bin.tar.gz
(2)解压
解压操作:
tar -zxf apache-pulsar-manager-0.2.0-bin.tar.gz -C /opt/module/
cd /opt/module/pulsar-manager
# 接着再次解压:
tar -xvf pulsar-manager.tar
(3)拷贝dist包到 pulsar-manager目录下并更名为ui
cd /opt/module/pulsar-manager/pulsar-manager
cp -r ../dist ui
(4)启动
cd /export/server/pulsar-manager/pulsar-manager
./bin/pulsar-manager
启动之后这是一个SpringBoot的前台进程,会出现:
(5)初始化超级用户密码
因为是前台进程,所以我们需要新建一个shell连接执行初始化操作。在新建的shell连接下,直接将下面的代码改成你安装的信息,运行就好了。
CSRF_TOKEN=$(curl http://hadoop100:7750/pulsar-manager/csrf-token)
curl \
-H "X-XSRF-TOKEN: $CSRF_TOKEN" \
-H "Cookie: XSRF-TOKEN=$CSRF_TOKEN;" \
-H 'Content-Type: application/json' \
-X PUT http://hadoop100:7750/pulsar-manager/users/superuser \
-d '{"name": "hhhSir", "password": "***", "description": "hhh", "email": "abc@qq.com"}'
运行成功会出现下图信息。
(6)访问主页:http://hadoop100:7750/ui/index.html。注意这里的hadoop100需要改成你的服务器IP。使用刚刚设置的用户名和密码登录,之后进行如下设置:
① 新建环境,连接pulsar。设置pulsar集群名字,这里是配置文件中的集群名。以及链接URL,这里也是初始化时配置的url。
然后就可以进行topic的监控和管理了。可以查看租户、名称空间、topic等信息。
个人认为这个可视化监控管理还是有必要安装的,特别是对于初学者来说,会方便很多。
总结
学会从繁杂的事情中静下来学点东西。
更多推荐
所有评论(0)