指南需求

本文介绍了协作服务器本地部署顺利运行所需的满足的条件。

安装协作服务器本地部署需要有效的许可证密钥。
联系我们 获取试用版许可证密钥。

# 协作服务器本地部署

# 硬件需求

无法提供适用于所有用例的单一基础架构设置。在本节中,我们提供了有关确保协作服务器本地部署的高可用性和高性能的建议。由于每个用例都不同,因此您需要监控您的应用程序并根据您的需求调整基础架构。

本地部署的性能受使用功能的影响。目前,我们可以考虑 2 种情况

  • 与文档协作相关的基本功能,
  • 需要 编辑器包 的功能。

基本功能,例如:创建文档、在文档中写入、向用户广播更改、添加评论、创建建议或发送 Webhooks 不需要大量的硬件资源。本地部署服务器的性能可以定义为每个 CPU 内核每秒处理的请求数量。

在具有 1 个内核的服务器上运行的本地部署的单个实例可以每秒处理 20 个请求。此数字对于您的用例可能会有所不同,建议您监控负载并在需要时调整基础架构。要衡量本地部署服务器处理的请求数量,您可以打开 度量日志 部分,在那里您可以查看服务器处理的请求并检查这些请求的处理时间(duration 属性)。

根据对请求数量及其处理时间的观察,可以确定是否应该增加本地部署实例的数量或对基础架构的其他部分进行更改(例如数据库)。详细了解我们关于监控日志和资源的 建议

# 需要编辑器包的功能

协作功能(使用上传的 编辑器包)具有较高的 CPU 消耗。上面提到的每秒 20 个请求的吞吐量可能会大幅下降。因此,如果使用了需要编辑器包的功能,并且预期会频繁使用这些功能,我们建议您使用 协作工作者

在具有 2 个 CPU 和 2GB RAM 的服务器上运行的协作工作者的单个实例平均可以每分钟处理 30 个文档转换。此外,我们建议每个协作工作者的单个实例(Docker 容器)都应位于专用服务器上,因为同一服务器上的 2 个实例将互相争夺服务器资源。这意味着同步文档处理的数量不会翻倍。

转换处理时间可能会根据编辑器包中使用的插件和内容的大小而变化。因此,为了为用户提供良好的体验,有必要监控请求的处理时间,并在出现延迟时间的情况下扩展协作工作者实例。详细了解我们关于监控日志和资源的建议 此处

# 高可用性

为了确保高可用性,我们建议运行至少 3 个 CKEditor 协作服务器本地部署实例。

CKEditor 协作服务器本地部署可以使用 Docker 容器在单个主机上进行扩展。但是,我们建议在至少三个主机上进行扩展以提供系统的可靠性。

为了在多台机器上进行扩展,需要使用负载均衡器,例如 HAProxy 或 NGINX(请参阅 反向代理 指南中的负载均衡器配置示例)。当然,也可以使用任何云提供商进行扩展,例如 Amazon ECS、Azure 容器实例或 Kubernetes。

# 软件需求

目前,我们只为 CKEditor 协作服务器提供基于 Linux 的 Docker 镜像。我们强烈建议在具有 Linux 的机器上运行它们,但您也可以使用 Docker Desktop 在其他操作系统上运行我们的 Docker 镜像。

应用程序默认情况下以 Docker 镜像形式提供。

它可以使用任何 Open Container 运行时工具运行,例如 KubernetesOpenShiftPodmanDocker 等等。

对于 Windows 机器,您需要启用 WSL 2 后端并切换到 Linux 容器。确保您的操作系统支持此选项。有关详细信息,请参阅 Docker Desktop 安装指南

# 数据库

有关数据库需求的信息。

# 硬件需求

支持多达 8,000 个并发用户的最小数据库服务器需求(用于 MySQL 和 Redis 安装)是 2 个内核和 4GB RAM(在 Amazon EC2 上相当于 a1.large)。

如果您的安装需要支持超过 8,000 个用户,请 联系我们 讨论最适合您需求的硬件设置。

# 容器

数据库可以作为容器启动,但这需要高度的意识和响应能力。由于每家公司都有不同的政策和安排,我们不推荐任何方法,并由您决定如何启动数据库。

但是,我们鼓励您在做出决定之前阅读这篇文章 “在 Kubernetes 上运行还是不运行数据库:需要考虑哪些因素”

# 软件需求

数据库引擎的需求:Redis 和 MySQL/Postgres。

# Redis

  • 版本 3.2.6 或更高版本。
  • Redis 存储所有与协作相关的临时数据,并用作缓存。Redis 的存储需求取决于活动文档的数量。
  • 一个文档的平均大小在 Redis 中约为 500KB 内存。此大小取决于许多因素,包括文档长度、用户数量、更改数量等等,并且可以增长到几兆字节。
  • 如果应用程序需要处理大量活动用户,请使用 Redis 集群。如果是这种情况,请 联系我们

# MySQL

  • 版本 8.0(推荐)或 5.7(最低支持版本)。
  • 创建数据库和用户,并授予以下权限:ALTER, CREATE, DELETE, DROP, INDEX, INSERT, SELECT, TRIGGER, UPDATE, LOCK TABLES, REFERENCES。示例数据库创建脚本
    CREATE DATABASE `cs-on-premises`
      DEFAULT CHARACTER SET utf8mb4
      DEFAULT COLLATE utf8mb4_bin;
    
  • 更改 max_allowed_packet 设置以允许将文档存储功能(编辑器包、文档内容等)的二进制大型对象保存在数据库中
    set global max_allowed_packet = 209715200;
    
  • MySQL 存储所有持久性数据,例如评论、用户、环境信息等等。MySQL 的存储需求取决于许多因素。
  • 如果您想使用其他 SQL 数据库,例如 Microsoft SQL Server 等,请 联系我们

如果在没有 SUPER 权限的情况下启用了二进制日志记录,请确保启用了 log_bin_trust_function_creators。检查您的配置,尤其是在使用托管数据库服务(DBaaS)时,例如 AWS RDS/Aurora、Azure 数据库、Google Cloud SQL 或 DigitalOcean 托管数据库。

# PostgreSQL

  • PostgreSQL 版本 14(推荐)或 12(最低支持版本)
  • 数据库和用户至少应具有以下权限:SELECT, INSERT, UPDATE, DELETE, REFERENCES, CREATE, USAGE
  • 在运行协作服务器本地部署之前,应创建包含模式的数据库。示例数据库和模式创建脚本(用于 psql
    CREATE DATABASE "cksource";
    \connect "cksource";
    CREATE SCHEMA "cs-on-premises";