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

2021-11-18 13:41:11 浏览数 (1)

集群概述:

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

0 人点赞