基于Docker的pulsar集群部署方法

GitHub链接

docker-sample/pulsar at master · perayb/docker-sample · GitHub

准备工作

  1. 安装最新版本的docker
  2. 拉取pulsarpulsar-manager镜像
docker pull apachepulsar/pulsar:2.7.2

docker pull apachepulsar/pulsar-manager:v0.2.0

部署流程

standalone方式部署

启动容器

sh startStandalone.sh

等待pulsar-manager启动完成后,初始化管理员信息:

sh initAccount.sh

显示以下内容说明管理员信息初始化成功:

> sh initAccount.sh
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100 36 100 36 0 0 130 0 --:--:-- --:--:-- --:--:--   130
{"message":"Add super user success, please login"}%

管理员信息初始化完成后,可从以下地址登入:

pulsar-manager: http://127.0.0.1:9527/#

username: admin, password: pulsar

构建成功后,点击 Clusters -> Cluster Name: standalone -> BROKERS ,可看到broker列表说明standalone方式部署完成

删除容器:

sh stopStandalone.sh

standalone方式容器说明

pulsar-standalone容器

- 配置了集群url地址为`pulsar-standalone`(便于`pulsar-manager`容器管理)
- 未挂载数据盘,每次启动均为新实例

docker run -itd \
    --name pulsar-standalone \
    -p 6650:6650 \
    -p 8080:8080 \
    apachepulsar/pulsar:2.7.2 \
    sh -c  "bin/pulsar standalone > pulsar.log 2>&1 & \
            sleep 30 && bin/pulsar-admin clusters update standalone \
            --url http://pulsar-standalone:8080 \
            --broker-url pulsar://pulsar-standalone:6650 & \
            tail -F pulsar.log"

pulsar-manager容器

- 配置了默认集群环境
- 修改容器日志为`后端日志`

docker run -itd \
    --name pulsar-manager \
    -p 9527:9527 -p 7750:7750 \
    -e SPRING\_CONFIGURATION\_FILE=/pulsar-manager/pulsar-manager/application.properties \
    --link pulsar-standalone \
    --entrypoint="" \
    apachepulsar/pulsar-manager:v0.2.0 \
    sh -c  "sed -i '/^default.environment.name/ s|.\*|default.environment.name=pulsar-standalone|' /pulsar-manager/pulsar-manager/application.properties & \
            sed -i '/^default.environment.service\_url/ s|.\*|default.environment.service\_url=http://pulsar-standalone:8080|' /pulsar-manager/pulsar-manager/application.properties & \
            /pulsar-manager/entrypoint.sh & \
            tail -F /pulsar-manager/pulsar-manager/pulsar-manager.log"

cluster方式部署

启动集群(自动新建初始化数据目录data):

sh startCluster.sh

等待pulsar-manager启动完成后,初始化管理员信息:

sh initAccount.sh

显示以下内容说明管理员信息初始化成功:

> sh initAccount.sh

  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current

                                 Dload  Upload   Total   Spent    Left  Speed

100 36 100 36 0 0 130 0 --:--:-- --:--:-- --:--:--   130

{"message":"Add super user success, please login"}%

管理员信息初始化完成后,可从以下地址登入:

  • Pulsar Manager
> http://127.0.0.1:9527/#_   

> username: `admin`, password: `pulsar`

  • BookKeeper Visual Manager
> http://127.0.0.1:7750/bkvm/#/login_  

> username: `admin`, password: `admin`

构建成功后,以下两个页面正常说明cluster方式部署完成

  • 点击 Clusters -> Cluster Name: pulsar-cluster-1 -> BROKERS ,可看到broker列表

  • 进入BookKeeper Visual Manager可看到3个BookKeeper节点

删除集群(删除容器,保留数据目录):

sh stopCluster.sh

停止和启动集群(保留容器):

# 停止容器
docker compose -f docker-compose-cluster.yml stop
# 启动容器
docker compose -f docker-compose-cluster.yml start

cluster方式容器说明

容器启动流程如下:

    Zookeeper节点(zk1, zk2, zk3) 
    -> 初始化集群元数据(init-metadata) 
    -> Bookeeper节点(bookie1, bookie2, bookie3)
    -> puslar broker节点(broker1, broker2, broker3)
    -> 反向代理节点(pulsar-proxy)
    -> pulsar manager节点(dashboard)

配置文件参考conf目录,数据目录为data,具体参考docker-compose-cluster.yml

所有容器的重启策略为失败后重启

 restart: on-failure

日志均可通过docker logs <container-name>查看

使用客户端与 pulsar 交互测试验证

pulsar 支持多种语言的 Client API, 不过个人推荐使用基于 Python 的 Client API, 可以通过编写简短的代码,即可完成与 pulsar 的交互和测试验证。地址: client-libraries-python

Producer example script

import pulsar

client = pulsar.Client('pulsar://localhost:6650')

producer = client.create_producer('my-topic')

for i in range(10):
    producer.send(('Hello-%d' % i).encode('utf-8'))

client.close()

Consumer example script

import pulsar

client = pulsar.Client('pulsar://localhost:6650')

consumer = client.subscribe('my-topic', 'my-subscription')

while True:
    msg = consumer.receive()
    try:
        print("Received message '{}' id='{}'".format(msg.data(), msg.message_id()))
        # Acknowledge successful processing of the message
        consumer.acknowledge(msg)
    except Exception:
        # Message failed to be processed
        consumer.negative_acknowledge(msg)

client.close()

 

参考资料

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
你可以通过以下步骤使用docker-compose来部署Ceph集群: 1. 创建一个新的文件夹,用于存docker-compose文件和Ceph配置文件。 2. 在该文件夹中创建一个名为`docker-compose.yml`的文件,并添加以下内容: ```yaml version: '3' services: mon: image: ceph/daemon:latest container_name: ceph-mon command: mon environment: - MON_IP=<mon_IP> - CEPH_PUBLIC_NETWORK=<public_network> volumes: - ./ceph:/etc/ceph networks: - ceph-net osd: image: ceph/daemon:latest container_name: ceph-osd command: osd privileged: true environment: - OSD_DEVICE=/dev/sdb - OSD_TYPE=disk - OSD_FORCE_ZAP=1 volumes: - /dev:/dev - ./ceph:/etc/ceph networks: - ceph-net networks: ceph-net: ``` 请确保将`<mon_IP>`替换为mon节点的IP地址,并将`<public_network>`替换为Ceph集群的公共网络CIDR。 3. 在该文件夹中创建一个名为`ceph.conf`的文件,并添加以下内容: ``` [global] fsid = $(uuidgen) mon_initial_members = mon mon_host = <mon_IP> auth_cluster_required = cephx auth_service_required = cephx auth_client_required = cephx [mon] log file = /var/log/ceph/ceph-mon.log chdir = "" [osd] log file = /var/log/ceph/ceph-osd.log chdir = "" osd_journal_size = 100 ``` 请确保将`<mon_IP>`替换为mon节点的IP地址。 4. 在终端中导航到该文件夹,并运行以下命令来启动Ceph集群: ``` docker-compose up -d ``` 这将使用docker-compose启动一个名为`ceph-mon`的容器作为mon节点,以及一个名为`ceph-osd`的容器作为osd节点。 5. 确保Ceph集群已成功启动,可以使用以下命令来检查: ``` docker exec -it ceph-mon ceph -s ``` 这将显示Ceph集群的状态信息。 以上是使用docker-compose部署Ceph集群的基本步骤。你可以根据自己的需求进行自定义配置和扩展。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值