117人参与 • 2025-02-14 • 云虚拟主机
确保您的系统中已安装docker和docker compose。如果还没有安装,可以参考以下链接进行安装:
pulsar的官方docker镜像可以通过docker hub获取。首先,拉取最新的pulsar镜像:
docker pull apache/pulsar
为了更容易管理和启动多个服务,建议使用docker compose。创建一个名为 docker-compose.yml 的文件,内容如下:
version: '3'  # 使用的docker compose版本
services:
  # pulsar 服务定义,负责消息传递的主要工作
  pulsar:
    image: apache/pulsar  # 使用官方的pulsar镜像
    environment:
      # 配置jvm内存大小
      - pulsar_mem="-xms2g -xmx2g"  # 设置pulsar的堆内存大小
      # 设置pulsar的租户和集群名称
      - pulsar_tenant=public  # 设置默认的租户
      - pulsar_cluster=standalone  # 设置集群名称为"standalone"
      # 配置zookeeper服务的地址,pulsar依赖zookeeper来管理集群元数据
      - pulsar_zookeeper_servers=zookeeper:2181  # 指定zookeeper的服务地址
      # 配置pulsar的客户端、http、管理服务端口
      - pulsar_broker_service_port=6650  # pulsar的客户端服务端口
      - pulsar_http_service_port=8080  # pulsar的http接口服务端口(用于web ui)
      - pulsar_management_service_port=8090  # pulsar的管理接口服务端口
    ports:
      # 绑定本地端口到容器端口
      - "6650:6650"  # 映射pulsar客户端连接端口
      - "8080:8080"  # 映射web ui端口(用于访问pulsar dashboard)
      - "8090:8090"  # 映射管理接口端口
    depends_on:
      # pulsar依赖于zookeeper和bookkeeper服务启动
      - zookeeper
      - bookkeeper
    command: >
      bin/pulsar standalone  # 启动pulsar的standalone模式(适合单机部署)
    networks:
      - pulsar-net  # 使用名为pulsar-net的网络
  # zookeeper 服务定义,pulsar集群的协调服务
  zookeeper:
    image: wurstmeister/zookeeper  # 使用wurstmeister提供的zookeeper镜像
    environment:
      - zookeeper_client_port=2181  # zookeeper的客户端连接端口
    ports:
      - "2181:2181"  # 映射zookeeper客户端连接端口
    networks:
      - pulsar-net  # 同样使用pulsar-net网络,以便服务之间通信
  # bookkeeper 服务定义,pulsar的持久化存储
  bookkeeper:
    image: apache/pulsar  # 使用pulsar官方镜像,因为bookkeeper是pulsar的一部分
    environment:
      - pulsar_mem="-xms2g -xmx2g"  # 设置bookkeeper的jvm内存大小
      - pulsar_zookeeper_servers=zookeeper:2181  # 配置zookeeper地址(bookkeeper也需要zookeeper来协调)
      - pulsar_metrics_provider=org.apache.pulsar.broker.pulsarmetricsprovider  # 配置性能度量提供者
    depends_on:
      # bookkeeper依赖于zookeeper服务启动
      - zookeeper
    networks:
      - pulsar-net  # 同样使用pulsar-net网络
# 定义网络
networks:
  pulsar-net:
    driver: bridge  # 使用桥接网络驱动程序,确保容器能够相互通信
这个docker-compose.yml文件定义了三个服务:
version: '3':
services::
pulsar、zookeeper和bookkeeper。pulsar服务:
image: apache/pulsar: 使用官方的pulsar镜像。environment:: 设置环境变量来配置pulsar容器。包括内存大小、集群名称、zookeeper地址、端口等。ports:: 将pulsar的容器端口映射到主机的端口上。6650用于客户端连接,8080用于web ui,8090用于管理服务。depends_on:: 定义pulsar服务依赖于zookeeper和bookkeeper服务启动,确保这些服务在pulsar启动前已经运行。command:: 指定启动容器时的命令,这里使用bin/pulsar standalone来启动pulsar的单机模式。zookeeper服务:
image: wurstmeister/zookeeper: 使用wurstmeister/zookeeper镜像,这个镜像提供了一个zookeeper容器实例。ports:: 将zookeeper的端口2181暴露到主机上,pulsar会通过该端口与zookeeper进行通信。bookkeeper服务:
image: apache/pulsar: bookkeeper与pulsar共享同一个镜像,因为它是pulsar的一部分。depends_on:: bookkeeper依赖zookeeper服务,因此必须在zookeeper启动之后再启动。networks::
pulsar-net的网络,确保所有的服务能够在同一网络下相互通信。此网络使用bridge驱动,它是docker的默认网络驱动。docker-compose up -d 启动服务。docker-compose ps 检查容器状态。http://localhost:8080,进入pulsar的web ui。在docker-compose.yml文件所在的目录中执行以下命令启动pulsar集群:
docker-compose up -d
这个命令会拉取镜像并启动pulsar、zookeeper和bookkeeper服务。
您可以通过以下命令检查docker容器的运行状态:
docker-compose ps
如果所有容器的状态是“up”,则表示服务已经成功启动。
pulsar提供了一个web ui界面,可以用于管理和查看集群状态。您可以通过访问 http://localhost:8080 来查看pulsar的web控制台。
您可以使用pulsar提供的命令行工具测试集群是否正常工作。首先进入pulsar容器:
docker exec -it <pulsar_container_id> bash
然后,您可以使用pulsar-client命令来发送和接收消息。例如,发送一个简单的消息:
bin/pulsar-client produce my-topic --messages "hello pulsar"
接收消息:
bin/pulsar-client consume my-topic -n 1
对于生产环境,您可能需要配置多节点pulsar集群。在此情况下,您需要:
对于多节点集群配置,您需要在docker-compose.yml中配置不同的节点,并设置正确的环境变量。也可以在多个主机上部署容器实例。
在客户端应用中,您需要使用pulsar的客户端连接到您的pulsar集群。以下是c#客户端代码示例,使用apache pulsar c#客户端库:
using pulsar.client;
class program
{
    static async task main(string[] args)
    {
        var client = await pulsarclient.createasync(new clientconfiguration
        {
            serviceurl = "pulsar://localhost:6650"
        });
        var producer = await client.newproducer()
            .topic("my-topic")
            .createasync();
        await producer.sendasync(encoding.utf8.getbytes("hello pulsar"));
        var consumer = await client.newconsumer()
            .topic("my-topic")
            .subscriptionname("my-subscription")
            .subscribeasync();
        var message = await consumer.receiveasync();
        console.writeline(encoding.utf8.getstring(message.data));
        await client.closeasync();
    }
}
如果您需要停止并清理pulsar集群,可以运行:
docker-compose down
使用docker部署pulsar集群非常适合开发和测试环境。通过上述步骤,您可以快速搭建一个单节点或多节点的pulsar集群,并使用web ui、命令行客户端或编程接口进行消息传递。
到此这篇关于docker中安装和配置apache pulsar实现的文章就介绍到这了,更多相关docker安装配置apache pulsar内容请搜索代码网以前的文章或继续浏览下面的相关文章希望大家以后多多支持代码网!
您想发表意见!!点此发布评论
版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。
发表评论