Docker中安装和配置Apache Pulsar

1. 安装Docker和Docker Compose

确保您的系统中已安装Docker和Docker Compose。如果还没有安装,可以参考以下链接进行安装:

2. 拉取Pulsar镜像

Pulsar的官方Docker镜像可以通过Docker Hub获取。首先,拉取最新的Pulsar镜像:

docker pull apache/pulsar

3. 创建Pulsar的Docker Compose文件

为了更容易管理和启动多个服务,建议使用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文件定义了三个服务:

  • Pulsar: 作为Pulsar broker,提供消息服务。
  • Zookeeper: 用于协调Pulsar集群的元数据和状态。
  • Bookkeeper: 用于持久化消息。
注释解释:
  1. version: '3':

    • 指定了Docker Compose的版本。这是Compose文件的标准格式版本,通常与Docker引擎的版本兼容。
  2. services::

    • 定义了一个或多个服务,每个服务都是一个Docker容器。在这个配置中,我们定义了三个主要服务:pulsarzookeeperbookkeeper
  3. pulsar服务

    • image: apache/pulsar: 使用官方的Pulsar镜像。
    • environment:: 设置环境变量来配置Pulsar容器。包括内存大小、集群名称、Zookeeper地址、端口等。
    • ports:: 将Pulsar的容器端口映射到主机的端口上。6650用于客户端连接,8080用于Web UI,8090用于管理服务。
    • depends_on:: 定义Pulsar服务依赖于zookeeperbookkeeper服务启动,确保这些服务在Pulsar启动前已经运行。
    • command:: 指定启动容器时的命令,这里使用bin/pulsar standalone来启动Pulsar的单机模式。
  4. zookeeper服务

    • image: wurstmeister/zookeeper: 使用wurstmeister/zookeeper镜像,这个镜像提供了一个Zookeeper容器实例。
    • ports:: 将Zookeeper的端口2181暴露到主机上,Pulsar会通过该端口与Zookeeper进行通信。
  5. bookkeeper服务

    • image: apache/pulsar: Bookkeeper与Pulsar共享同一个镜像,因为它是Pulsar的一部分。
    • depends_on:: Bookkeeper依赖Zookeeper服务,因此必须在Zookeeper启动之后再启动。
  6. networks::

    • 定义了一个名为pulsar-net的网络,确保所有的服务能够在同一网络下相互通信。此网络使用bridge驱动,它是Docker的默认网络驱动。
运行时步骤:
  • 使用 docker-compose up -d 启动服务。
  • 使用 docker-compose ps 检查容器状态。
  • 使用浏览器访问 http://localhost:8080,进入Pulsar的Web UI。

4. 启动Pulsar集群

docker-compose.yml文件所在的目录中执行以下命令启动Pulsar集群:

docker-compose up -d

这个命令会拉取镜像并启动Pulsar、Zookeeper和Bookkeeper服务。

5. 验证Pulsar集群是否正常运行

您可以通过以下命令检查Docker容器的运行状态:

docker-compose ps

如果所有容器的状态是“Up”,则表示服务已经成功启动。

6. 访问Pulsar Web UI(可选)

Pulsar提供了一个Web UI界面,可以用于管理和查看集群状态。您可以通过访问 http://localhost:8080 来查看Pulsar的Web控制台。

7. 使用Pulsar命令行客户端进行测试

您可以使用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

8. 配置多节点Pulsar集群

对于生产环境,您可能需要配置多节点Pulsar集群。在此情况下,您需要:

  • 部署多个Pulsar、Zookeeper和Bookkeeper实例。
  • 配置Pulsar的集群和分区设置,以确保高可用性和扩展性。

对于多节点集群配置,您需要在docker-compose.yml中配置不同的节点,并设置正确的环境变量。也可以在多个主机上部署容器实例。

9. 配置Pulsar客户端连接

在客户端应用中,您需要使用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();
    }
}

10. 清理和停止Pulsar集群

如果您需要停止并清理Pulsar集群,可以运行:

docker-compose down

总结

使用Docker部署Pulsar集群非常适合开发和测试环境。通过上述步骤,您可以快速搭建一个单节点或多节点的Pulsar集群,并使用Web UI、命令行客户端或编程接口进行消息传递。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值