前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >pulsar-7:aws上部署生产级别的5节点pulsar集群

pulsar-7:aws上部署生产级别的5节点pulsar集群

作者头像
千里行走
发布2021-11-18 13:41:11
8530
发布2021-11-18 13:41:11
举报
文章被收录于专栏:千里行走千里行走

集群概述:

5台,8c16g,400G SSD/台,选择高性能机型c5.2xlarge。每天各自部署一个zk, broker, bookie。

使用openjdk11

目录:

(1).aws上制作pulsar节点镜像

1.制作模版机

1.1.创建EC2实例

1.2.配置pulsar模版机

1.2.1.新建用户pulsar

1.2.2.安装基本软件

1.2.3.配置pulsar

1.2.3.1.前置准备

1.2.3.2.zookeeper配置文件

1.2.3.3.bookeeper配置文件

1.2.3.4.broker配置文件

2.制作镜像

(2).通过镜像开启5台aws实例

(3).永久修改每台机器的hostname

(4).配置ssh免密方便配置文件同步

(5).修改配置文件写入实际IP

1.zookeeper配置修改

2.修改bookkeeper配置

3.修改broker配置

4.同步修改后的配置

4.1.sync-files.sh

4.2.pulsar-biz-cluster-node-ip.txt

4.3.执行同步

5.每个节点单独配置项

(6).启动pulsar集群

1.启动zookeeper集群

2.初始化集群元数据

3.启动bookie集群

4.启动broker集群

(1).aws上制作pulsar节点镜像

1.制作模版机

1.1.创建EC2实例

登陆后挂应用/数据盘:

mkfs -t xfs /dev/nvme1n1

建立挂载点目录:

mkdir /app

创建的目录挂载卷。

mount /dev/nvme1n1 /app

加到/etc/fstab中:(磁盘被手动挂载之后都必须把挂载信息写入/etc/fstab这个文件中,否则下次开机启动时仍然需要重新挂载)

/dev/nvme1n1 /app xfs defaults 1 1

1.2.配置pulsar模版机

1.2.1.新建用户pulsar

禁止用root用户操作。

useradd app

将挂载点/app完整权限赋予给app。

chown -R app:app /app

1.2.2.安装基本软件

sudo hostnamectl set-hostname --static pulsar-biz-cluster-node-1

sudo yum -y install https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm

yum update -y

yum install -y lsof telnet lrzsz nc

sudo amazon-linux-extras install java-openjdk11

yum install java-11-openjdk-11.0.12.0.7-0.amzn2.0.2.x86_64

yum install java-11-openjdk-devel-11.0.12.0.7-0.amzn2.0.2.x86_64

/etc/profile增加环境变量:

export JAVA_HOME=/usr/lib/jvm/java-11-openjdk-11.0.12.0.7-0.amzn2.0.2.x86_64

source /etc/profile使其生效。

1.2.3.配置pulsar

全部在用户app下操作。

1.2.3.1.前置准备

mkdir -p /app/3rd

mkdir -p /app/logs

mkdir -p /app/data

mkdir -p /app/download

下载:

wget https://archive.apache.org/dist/pulsar/pulsar-2.8.0/apache-pulsar-2.8.0-bin.tar.gz

tar -xzvf apache-pulsar-2.8.0-bin.tar.gz

mv apache-pulsar-2.8.0 /app/3rd/

1.2.3.2.zookeeper配置文件

mkdir -p /app/data/pulsar-2.8.0-zookeeper

mkdir -p /app/logs/pulsar-2.8.0

cd apache-pulsar-2.8.0

vim conf/zookeeper.conf

增加配置:

server.1=zookeeper-1-ip:2888:3888

server.2=zookeeper-2-ip:2888:3888

server.3=zookeeper-3-ip:2888:3888

修改配置:

metricsProvider.httpPort=8000

dataDir=/app/data/pulsar-2.8.0-zookeeper

zk1-ip到zk3-ip是占位符。

echo n > /app/data/pulsar-2.8.0-zookeeper/myid

n是占位符

修改日志存放路径:pulsar的所有组件都用的同一个日志目录

vim /app/3rd/apache-pulsar-2.8.0/bin/pulsar-daemon

PULSAR_LOG_DIR=/app/logs/pulsar-2.8.0

1.2.3.3.bookeeper配置文件

mkdir -p /app/data/pulsar-2.8.0-bookkeeper/journal

mkdir -p /app/data/pulsar-2.8.0-bookkeeper/ledgers

vim conf/bookkeeper.conf:

修改

zkServers=zookeeper-1-ip:2181,zookeeper-2-ip:2181,zookeeper-3-ip:2181

由于是集群,自动恢复功能必须开(HA):默认是true

autoRecoveryDaemonEnabled=true

# The http server port to listen on. Default value is 8080.

# Use `8000` as the port to keep it consistent with prometheus stats provider

#原值8000

httpServerPort=8001

# Default port for Prometheus metrics exporter,原值是8000

prometheusStatsHttpPort=8001

修改数据存储位置:

journalDirectory=/app/data/pulsar-2.8.0-bookkeeper/journal

ledgerDirectories=/app/data/pulsar-2.8.0-bookkeeper/ledgers

1.2.3.4.broker配置文件

Broker 配置中有一些非常重要的参数,这些参数可以确保每个Broker 连接到已部署的 ZooKeeper 集群。需要确认 zookeeperServers 和 configurationStoreServers 配置项的值是正确的。在当前情况下,由于只有一个集群,没有单独用来存储配置的 Zookeeper 集群,那么配置项configurationStoreServers和zookeeperServers 是一样的值。

vim conf/broker.conf

zookeeperServers=zookeeper-1-ip:2181,zookeeper-2-ip:2181,zookeeper-3-ip:2181

configurationStoreServers=zookeeper-1-ip:2181,zookeeper-2-ip:2181,zookeeper-3-ip:2181

你必须配置集群的名字( 初始化集群元数据 提供的集群名字必须和这个配置项匹配):

clusterName=pulsar-biz-cluster

开启prometheus的所有metrics:

# Enable topic level metrics

exposeTopicLevelMetricsInPrometheus=true

# Enable consumer level metrics. default is false

exposeConsumerLevelMetricsInPrometheus=true

# Enable producer level metrics. default is false

exposeProducerLevelMetricsInPrometheus=true

# Enable managed ledger metrics (aggregated by namespace). default is false

exposeManagedLedgerMetricsInPrometheus=true

# Enable cursor level metrics. default is false

exposeManagedCursorMetricsInPrometheus=true

# Enable expose the precise backlog stats.

# Set false to use published counter and consumed counter to calculate, this would be more efficient but may be inaccurate.

# Default is false.

exposePreciseBacklogInPrometheus=false

如果不设置为本机ip,会使用hostname:

advertisedAddress=要写broker所在机器的ip

#关闭自动创建topic的功能

allowAutoTopicCreation=false

2.制作镜像

(2).通过镜像开启5台aws实例

统一选择高性能机型c5.2xlarge:

(3).永久修改每台机器的hostname

sudo hostnamectl set-hostname --static pulsar-biz-cluster-node-n

n从1到5。

(4).配置ssh免密方便配置文件同步

每台机器都要执行:在app用户下执行

ssh-keygen

在~/.ssh目录下生成两个文件(id_rsa id_rsa.pub)文件,再把每台机器的id_rsa.pub文件内容放到pulsar-biz-cluster-node-1的对pulsar用户下的.ssh目录的authorized_keys里,格式形如:

ssh-rsa xxx hadoop@pulsar-biz-cluster-node-1

注意:authorized_keys的权限是600。

所有机器都要更改。

同时要把hosts也改了,否则ssh找不到主机名。

10.0.32.239 pulsar-biz-cluster-node-1

10.0.39.6 pulsar-biz-cluster-node-2

10.0.36.175 pulsar-biz-cluster-node-3

10.0.40.248 pulsar-biz-cluster-node-4

10.0.38.216 pulsar-biz-cluster-node-5

(5).修改配置文件写入实际IP

在pulsar-biz-cluster-node-1上进行配置,然后通过脚本文件scp同步到其余4台node。

1.zookeeper配置修改

/app/3rd/apache-pulsar-2.8.0/conf/zookeeper.conf

server.1=zookeeper-1-ip:2888:3888

server.2=zookeeper-2-ip:2888:3888

server.3=zookeeper-3-ip:2888:3888

2.修改bookkeeper配置

/app/3rd/apache-pulsar-2.8.0/conf/bookkeeper.conf

zkServers=zookeeper-1-ip:2181,zookeeper-2-ip:2181,zookeeper-3-ip:2181

3.修改broker配置

/app/3rd/apache-pulsar-2.8.0/conf/broker.conf

zookeeperServers=zookeeper-1-ip:2181,zookeeper-2-ip:2181,zookeeper-3-ip:2181

configurationStoreServers=zookeeper-1-ip:2181,zookeeper-2-ip:2181,zookeeper-3-ip:2181

4.同步修改后的配置

4.1.sync-files.sh

#!/bin/bash

list=`cat $1`

for ip in $list

do

echo $ip

scp /app/3rd/apache-pulsar-2.8.0/conf/zookeeper.conf pulsar@$ip:/app/3rd/apache-pulsar-2.8.0/conf/zookeeper.conf

scp /app/3rd/apache-pulsar-2.8.0/bin/pulsar-daemon pulsar@$ip:/app/3rd/apache-pulsar-2.8.0/bin/pulsar-daemon

scp /app/3rd/apache-pulsar-2.8.0/conf/bookkeeper.conf pulsar@$ip:/app/3rd/apache-pulsar-2.8.0/conf/bookkeeper.conf

scp /app/3rd/apache-pulsar-2.8.0/conf/broker.conf pulsar@$ip:/app/3rd/apache-pulsar-2.8.0/conf/broker.conf

done

4.2.pulsar-biz-cluster-node-ip.txt

10.0.32.239

10.0.39.6

10.0.36.175

10.0.40.248

10.0.38.216

4.3.执行同步

sh ./sync-files.sh pulsar-biz-cluster-node-ip.txt

5.每个节点单独配置项

每个节点的zk-id不同,依次配置:

echo 1 > /app/data/pulsar-2.8.0-zookeeper/myid

echo 2 > /app/data/pulsar-2.8.0-zookeeper/myid

echo 3 > /app/data/pulsar-2.8.0-zookeeper/myid

echo 4 > /app/data/pulsar-2.8.0-zookeeper/myid

echo 5 > /app/data/pulsar-2.8.0-zookeeper/myid

如果不设置为本机ip,会使用hostname:我们设置成本机ip

advertisedAddress=ip

(6).启动pulsar集群

1.启动zookeeper集群

5台节点依次启动zookeeper:

/app/3rd/apache-pulsar-2.8.0/bin/pulsar-daemon start zookeeper

2.初始化集群元数据

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

--cluster 集群名字

--zookeeper ZooKeeper集群的“本地”连接字符串。该连接字符串只需包含ZooKeeper集群任一台机器。

--configuration-store 整个集群实例的配置存储连接字符串。和--zookeeper标记一样,该连接字符串只需包含ZooKeeper集群中的任一台机器即可。

--web-service-url 集群 web 服务的URL以及端口,这个URL应该是标准的DNS名称,默认的端口是8080(官方不建议使用其他端口)。broker端口。

--web-service-url-tls 如果使用TLS,你必须为集群指定一个 TLS web 服务URL。默认端口是8443(官方不建议使用其他端口)。broker端口。

--broker-service-url Broker服务的URL,用于与集群中的brokers进行交互。这个 URL 不应该使用和 web 服务 URL 同样的 DNS名称,而应该是用pulsar方案。默认端口是6650(官方不建议使用其他端口)。broker端口。

--broker-service-url-tls 如果使用TLS,你必须为集群指定一个 TLS web 服务URL,以及用于集群中 broker TLS 服务的URL。默认端口是6651(官方不建议使用其他端口)。broker端口。

把ip换成一个节点的即可。

3.启动bookie集群

/app/3rd/apache-pulsar-2.8.0/bin/pulsar-daemon start bookie

你可以通过运行BookKeeper shell上的bookiesanity命令验证 bookie 是否正常工作:

$ bin/bookkeeper shell bookiesanity

这个命令会在本地的 bookie 创建一个临时的 BookKeeper ledger,往里面写一些条目,然后读取它,最后删除这个 ledger。

4.启动broker集群

/app/3rd/apache-pulsar-2.8.0/bin/pulsar-daemon start broker

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2021-11-11,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 千里行走 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
Prometheus 监控服务
Prometheus 监控服务(TencentCloud Managed Service for Prometheus,TMP)是基于开源 Prometheus 构建的高可用、全托管的服务,与腾讯云容器服务(TKE)高度集成,兼容开源生态丰富多样的应用组件,结合腾讯云可观测平台-告警管理和 Prometheus Alertmanager 能力,为您提供免搭建的高效运维能力,减少开发及运维成本。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档