# 在 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) 文档所述。