集群部署

架构
在新版本 SeaTable 集群中,将由 api-gateway 处理对外的 dtable-db 和 dtable-server 请求, 具体架构参考:
域名配置
在新版本下,如不考虑高可用,所有节点通过集群内网访问,那么只需要一个域名或公网 IP (如 seatable-cluster.example.com),用于绑定最外层的负载均衡器,同时该负载均衡器应当能够实现对 /api-gateway/ 以及 /api-gateway/socket.io/ 地址的反向代理(详情见后面的 api-gateway 节点部分,这里要注意尾部添加了 /)。
节点分配
部署 SeaTable 集群应当准备:
  • 需要提前准备好一些基础服务,如 nginx, mariadb, redis 以及 s3 等
  • 若干个前端节点,每个节点都应包含一个 dtable-web,一个 dtable-events(用于前端服务)以及一个 seaf-server 服务,其中 dtable-web 的 80 端口应对外暴露
  • 一个 api-gateway 节点,用于启动 api-gateway 服务,其中 7780 端口应当暴露
  • 一个 dtable-db 节点,用于启动 dtable-db 服务,其中 7777 端口应当暴露
  • 一个 dtable-events 后端服务节点,不需要额外暴露端口
  • 一个 dtable-inner-proxy 节点,用于启动 dtable-inner-proxy 服务,7778 端口应当暴露
  • 一个 cluster-manager 节点,用于分配 dtable-server 服务,5555 端口应当暴露
  • 若干个 ETCD 节点,用于启动处理 dtable-server 节点注册的 etcd 服务,开放 2379 端口。奇数节点部署,该服务属于基础服务范畴,不属于 SeaTable 内建组件,因此可以参考 ETCD部署
  • 若干个 dtable-server 节点,用于启动 dtable-server 服务,其中 5000 端口应当暴露。
理论最小化集群部署节点数说明(这里只讨论极限情况):
  • 上述的 "若干个" 可选最小数目均为 1 个,由于每个服务端口号不冲突,因此理论最少 1 个节点即可部署集群。但是出于运行效率的考虑测试环境外不建议采用单一节点部署 seatable 集群。
  • 其中 dtable-db, dtable-events 和 api-gateway 服务使用的配置文件并不冲突,在最小化集群中可以合并在一起。
服务器IP分配示例
集群配置示例(这里的所有服务均可独立单节点使用):
  • 基础服务, mariadb/redis/nginx :10.0.0.138
  • SeaTable 前端节点:10.0.0.28/10.0.0.40
  • SeaTable server 节点:10.0.0.60/10.0.0.9
  • ETCD 节点:10.0.0.60/10.0.0.9/10.0.0.109
  • SeaTable 其它服务节点(含 dtable-inner-proxy/ api-gateway/ dtable-db/ dtable-events/ cluster-manager ):10.0.0.109
服务名
依赖配置文件
服务器IP
nginx (负载均衡,外部域名解析指向地址)
nginx.conf(或 seatable-cluster.conf)
10.0.0.138
mariadb
/etc/mysql/mysql.conf.d/mysqld.cnf, 可以部署时通过 mysql_secure_installation 命令设置
10.0.0.138
redis
/etc/redis/redis.conf
10.0.0.138
etcd-1
/etc/default/etcd
10.0.0.60
etcd-2
/etc/default/etcd
10.0.0.9
etcd-3
/etc/default/etcd
10.0.0.109
frontend-1
dtable_web_settings.py seafile.conf dtable-events.conf dtable-storage-server.conf
10.0.0.40
frontend-2
与 frontend-1 节点一致
10.0.0.28
dtable-server-1
dtable_server_config.json dtable-storage-server.conf
10.0.0.60
dtable-server-2
与 dtable-server-1 节点一致
10.0.0.9
api-gateway
api-gateway.conf
10.0.0.109
dtable-db
dtable-db.conf dtable-storage-server.conf
10.0.0.109
dtable-events
dtable-events.conf dtable-storage-server.conf
10.0.0.109
dtable-inner-proxy
dtable-inner-proxy.conf
10.0.0.109
cluster-manager
dtable-cluster-manager.yml
10.0.0.109
  • SeaTable 相关服务的节点(除基础服务节点10.0.0.138)需要使用 Docker 启动服务,因此这些节点上也需要提前安装好 Docker。
  • 目前集群部署计划采用一个共享目录去共享配置文件( 即假设 /opt/seatable-server 是在所有节点是共享的 ,注意存放 docker compose 的文件的 /opt/seatable 目录不是共享的,因为每个节点的环境变量是不一样的)