# 在 Docker Swarm 上部署 Typesense 集群
要在运行 Docker Swarm (opens new window) 模式的多台主机上部署 Typesense 集群,请按照以下步骤操作:
初始化 Docker Swarm。 例如,在 4 节点的 Docker Swarm 设置中(Node1 作为 docker
manager
,Node2、Node3、Node4 作为 dockerworker
),在 dockermanager
节点上运行docker swarm init
。在 docker
manager
节点上创建用户定义的overlay
网络用于 typesense 服务通信。 在 dockermanager
节点上运行以下命令。记下
subnet
值。相同的subnet
值将用于下面的docker-stack.yml --peering-subnet
标志。将其他 Docker 节点上的 Docker 实例作为
worker
添加到现有的 Docker Swarm 中。 记得更改token
或使用命令docker swarm join-token worker
获取token
,并在所有 docker 节点上重复以下命令。在 docker
manager
节点上运行以下命令验证docker swarm
节点的状态和角色。在 swarm 中的每个 docker
worker
节点上创建新的nodes
文件。连接到每个 Docker
worker
节点并创建data
文件夹。在 docker
manager
节点上创建docker-stack.yml
文件。该文件将用于在所有 dockerworker
节点上部署 Typesense 服务。#
docker-stack.yml
文件内容重要提示
在
Docker swarm
设置中,--peering-subnet
标志应与默认或用户定义的overlay
网络中的subnet
相同。--peering-subnet
是在typesense/typesense:0.23.0
(opens new window) 中引入的。有关Overlay
网络的更多信息,请阅读官方 Docker 文档 此处 (opens new window)。version: "3.8" services: typesense-1: image: typesense/typesense:0.23.0 hostname: typesense-1 volumes: - /var/lib/typesense-data-1/:/data - ./nodes:/nodes ports: - 7108:7108 - 7107:7107 command: ["--peering-subnet","10.11.0.10/16","--data-dir", "/data","--api-key", "xyz","--nodes","/nodes","--peering-port","7107","--api-port","7108","--enable-cors"] deploy: replicas: 1 labels: feature.description: “typesense-1” restart_policy: condition: any placement: constraints: [node.hostname == node2] networks: - ts_net typesense-2: image: typesense/typesense:0.23.0 hostname: typesense-2 volumes: - /var/lib/typesense-data-2/:/data - ./nodes:/nodes ports: - 8108:8108 - 8107:8107 command: ["--peering-subnet","10.11.0.10/16","--data-dir", "/data","--api-key", "xyz","--nodes","/nodes","--peering-port","8107","--api-port","8108","--enable-cors"] deploy: replicas: 1 labels: feature.description: “typesense-2” restart_policy: condition: any placement: constraints: [node.hostname == node3] networks: - ts_net typesense-3: image: typesense/typesense:0.23.0 hostname: typesense-3 volumes: - /var/lib/typesense-data-3/:/data - ./nodes:/nodes ports: - 9108:9108 - 9107:9107 command: ["--peering-subnet","10.11.0.10/16","--data-dir", "/data","--api-key", "xyz","--nodes","/nodes","--peering-port","9107","--api-port","9108","--enable-cors"] deploy: replicas: 1 labels: feature.description: “typesense-3” restart_policy: condition: any placement: constraints: [node.hostname == node4] networks: - ts_net networks: ts_net: external: true
从 docker
manager
节点运行以下命令部署 stack。从
manager
节点列出服务和任务在 dockerworker
节点上的分布情况。docker stack ps
命令将显示 typesense 服务在所有 dockerworker
节点上的分布。通过连接到任何 docker
worker
节点验证 typesense 服务是否成功clustered
。注意: 对于成功的 docker swarm 设置,您可以通过
/debug
端点响应中的state
字段值确定容器节点是leader
还是follower
。至少一个容器节点的 state 值应为1
,如 多节点部署 (opens new window) 文档所述。