文件编号:GZ-DEV-PULSAR-INSTALL

文件版本:1.0

保密级别:保密

 

 

 

 

 

 

 

安管集群部署方案
(跨主机基于Docker Swarm 集群)

 

 

 

 

文件创建人 陈宗朗 文件创建时间 2023-07-01
文件最后编辑人 陈宗朗 文件最后编辑时间 2023-07-11
文件审阅人 文件审阅时间
文件批准人 文件批准时间
文件发布范围 内部研发&运维

 

 

 

 

版权信息
本文涉及之信息,属广州竞远安全技术股份有限公司所有
未经广州竞远安全技术股份有限公司允许,文件中的任何部分都不能以任何形式向第三方散发

 


 

 

文档修订记录

版本号 修订日期 修订人 修订说明 修订状态 审核人 批准人
V1.0 2023-07-01 陈宗朗 初版 A
V1.1 2023-07-01 陈宗朗 修订 M

 

 

修订状态:A--增加,M--修改,D--删除

日期格式:YYYY-MM-DD

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

安管集群部署(跨主机基于Docker Swarm 集群)

跨主机基于Docker 部署 Pulsar 集群。

 

方案

 

准备

操作系统

 

角色分配

 

软件包裹

 

frewalld配置

在所有主机上按照如下规则修改 firewalld 的配置:

 

注意事项

需要注意在网卡配置中是否存在 ZONE=docker ,否则不生效。端口策略可按照如下思路设计:

注意:严禁直接暴露端口在公网环境。

 

部署Swarm集群

创建Swarm集群

node-01 执行命令:

可看到返回加入 Swarm 集群的命令:

注意,此时的 token 是用于加入 worker 节点,并非我们需要加入 manager 节点的 token。

node-01 获取加入管理节点命令:

如果想要获取加入 worker 节点的 token,将命令改成 docker swarm join-token worker 即可。

可看到返回加入管理节点的命令:

分别在 node-02node-03 执行加入管理节点的命令:

如无意外,可看到添加成功的信息:

回到 node-01 执行 docker node ls 命令查看节点情况:

可看到 node-01MANAGER 标注了 *Leader,说明此时的管理和领导节点均是 node-01

  • ID:节点 ID,节点的唯一标识符。

  • HOSTNAME:节点的主机名。

  • STATUS:节点状态。

  • AVAILABILITY:表示调度程序是否可以将任务分配给节点。

    • Active:可以将任务分配给该节点。

    • Pause:调度程序不向该节点分配新任务,但现有任务仍然运行。

    • Drain:调度程序不向该节点分配新任务,已经存在的任务也将被调用到 Active 节点上。

  • MANAGER STATUS:表示是否参与集群的管理(没有值则代表不参与)。

    • Leader:代表为集群做出所有的集群管理和编排决策。

    • Reachable:表示该节点为参与 Raft 仲裁的 manager 节点。如果 Leader 节点不可用,则该节点有资格成为新的 Leader 节点。

    • Unavailable:表示该节点是一个无法与其他 manager 通信的节点。如果 manager 节点变为此状态,则应该添加一个新的 manager 节点到集群中,或者将一个工作节点提升为一个 manager

 

创建Overlay网络

在任一管理节点执行如下命令创建名为 myapp 的 overlay 网络:

--attachable 声明当前创建的网络为:其他节点可以访问的网络。

网络创建完成后,在任一管理节点执行 docker network ls 可以看到创建完成的 myapp 网络:

 

 

部署Pulsar集群

本章节的部署,基于 Swarm 集群网络实现,并非直接部署在 Swarm 集群上面。

 

创建用户

为便于管理,创建 pulsar 用户用于安装 Pulsar 集群:

为便于使用,给数据库用户添加 sudo 权限:

root ALL=(ALL) ALL 增加如下内容并保存:

将新添加的用户添加到 docker 用户组,并重启 docker 服务:

 

创建目录

为便于数据管理,切换到 pulsar 用户创建数据目录:

 

Zookeeper集群

启动容器

分别在三台节点启动 zookeeper 容器:

注意:3 个 zookeeper 启动命令,--hostnamemyid 是根据节点来对应角色规划来设置的,并非是一致的。

如果将容器日志输出到文件,在启动命令前加上 export PULSAR_LOG_APPENDER=RollingFile 即可。

 

 

初始化集群元数据

在任一节点执行初始化元数据操作:

等待一会可看到如下信息输出,说明初始化完毕:

 

Bookkeeper集群

启动容器

在三台节点上启动 bookkeeper 容器:

在三台节点都启动后,在任一节点执行 docker logs -f bookkeeper 可看到类似如下关键日志输出:

初始化元数据

在任一节点执行初始化元数据操作:

等待执行过程中,根据提示输入 Y 即可看到如下 Successfully formatted BookKeeper metadata 日志信息:

 

Broker集群

启动容器

在三台节点上启动 broker 容器:

等待启动完成后,可看到 pulsar 服务已启动完成的日志输出:

 

验证

查看Bookkeeper集群

可执行命令验证是否启动集群:

如果不出意外,会看到成功的提示:

 

查看Broker节点

完成启动后,即可通过 pulsar-admin 命令查看集群的节点情况:

如不出意外,可看到终端显示的 broker 节点:

 

查看Cluster

获取 Pulsar Cluster 的部署信息:

等待返回结果:

查看 Cluster 列表:

等待返回结果,可看到刚刚创建的集群:

 

Hello Pulsar

到此,Pulsar 集群已搭建完成,可以进行测试了,使用 pulsar-client 命令生产并消费消息。

首先开启一个终端,执行消费监听,这样就可以实时查看到生产的消息,例如计划消费 100 条消息,可在 node-01 上面执行如下命令:

再开一个终端,执行生产消息,例如在 node-02 上面执行如下命令:

此时可看到在生产端看到如下输出信息,表示已生产了一条消息:

回到消费监听端,可看到已经消费了一条消息:

至此,已完成 Pulsar 集群的搭建及测试。

 

部署Nginx(应用参考示例)

配置首页

新建一个 HTML 页面 index.html

创建配置 homepage

创建 Nginx 配置文件 site.conf

创建配置 nginx_config

 

启动容器