概念

系统概览

Anaconda Enterprise Notebooks 平台由 3 个主要服务组组成:AEN 服务器、AEN 网关和 AEN 计算,它们被称为“节点”:

  • 服务器节点- 系统的管理前端,用户登录、用户帐户存储和管理员管理系统。
  • 网关节点— 一种反向代理,用于对用户进行身份验证并将他们定向到其项目的正确计算节点。安装后用户不会注意到此节点,因为它会自动路由它们。
  • 计算节点——项目存储和运行的地方。
../../../_images/aen-install-components.png

这些服务可以在一台机器上运行,也可以分布在多台服务器上。

../../../_images/aen-install-network-diagram.png

从组织上讲,每个 AEN 安装都恰好有 1 个服务器实例和 1 个或多个网关实例。每个计算节点只能连接到一个网关。由单个网关服务的计算节点的集合称为数据中心。您可以随时将数据中心添加到 AEN 安装中。

示例:具有 2 个数据中心的 AEN 部署,其中 1 个网关具有 20 台物理计算机的集群,第二个网关具有 30 个虚拟机,必须安装并运行以下服务:

  • 1 个 AEN 服务器实例
  • 2个AEN网关实例
  • 50 个 AEN 计算实例 (20 + 30)

节点必须单独配置和维护。

服务器节点

服务器节点控制登录、帐户、管理员、项目创建和管理以及与数据库的接口。它是所有用户进入 AEN 的主要入口点。服务器节点处理项目设置并确保将用户发送到正确的项目数据中心。

由于 AEN 是基于 Web 的,因此它使用服务器上的标准 HTTP 端口 80 或 HTTPS 端口 443。

AEN 使用 MongoDB 来实现其内部数据持久性。它通常与服务器运行在同一台主机上,但也可以 安装在单独的主机上。

服务器节点使用 NGINX 来处理面向用户的 AEN Web 界面。NGINX 充当实际服务器 Web 进程的请求代理,该进程在仅侦听本地主机的高编号端口上运行。NGINX 还负责静态内容。

服务器安装在/opt/wakari/wakari-server 目录中。

服务器进程

当您查看服务器进程的状态时,您可能会看到下面解释的进程。

主管 细节
描述 管理wakari-worker,多个进程wk-server
用户 wakari
配置 /opt/wakari/wakari-server/etc/supervisord.conf
日志 /opt/wakari/wakari-server/var/log/supervisord.log
控制 service wakari-server
港口 没有任何
周服务器 细节
描述 处理用户交互并将作业传递到 wakari 网关。对它的访问由 NGINX 管理。
用户 wakari
命令 /opt/wakari/wakari-server/bin/wk-server
配置 /opt/wakari/wakari-server/etc/wakari/
控制 service wakari-server
日志 /opt/wakari/wakari-server/var/log/wakari/server.log
港口 不用于 4.1.2 之后的版本 *

* AEN 4.1.2 及更早版本使用端口 5000。此端口仅用于本地主机。更高版本的 AEN 改为使用 Unix 套接字。Unix 套接字路径是: unix:/opt/wakari/wakari-server/var/run/wakari-server.sock

瓦卡里工人 细节
描述 异步执行来自wk-server.
用户 wakari
日志 /opt/wakari/wakari-server/var/log/wakari/worker.log
控制 service wakari-server
nginx 细节
描述 提供静态文件并充当传递给 wk-server 进程的所有其他请求的代理。*
用户 nginx
配置 /etc/nginx/nginx.conf /opt/wakari/wakari-server/etc/conf.d/www.enterprise.conf
日志 /var/log/nginx/woc.log /var/log/nginx/woc-error.log
控制 service nginx status
港口 80

* 在 AEN 4.1.2 及更早版本中,wk-server 进程仅在本地主机上的端口 5000 上运行。在更高版本的 AEN 中, wk-server 进程使用 Unix 套接字路径unix:/opt/wakari/wakari-server/var/run/wakari-server.sock

NGINX 至少运行两个进程:

  • 以 root 用户身份运行的主进程。
  • 以 nginx 用户身份运行的工作进程。

网关节点

网关节点充当给定计算节点组的访问点。它充当代理服务并管理 URL 和端口到在这些节点上运行的服务的授权和映射。网关节点为用户提供一致的统一接口。

注意:网关也可以称为数据中心,因为它充当计算节点集合的代理。

您可以以分层横向扩展的方式在每个数据中心放置一个网关。

AEN网关安装在/opt/wakari/wakari-gateway 目录中。

网关进程

当您查看服务器进程的状态时,您可能会看到下面解释的进程。

主管 细节
描述 管理wk-gateway流程。
用户 wakari
配置 /opt/wakari/wakari-gateway/etc/supervisord.conf
日志 /opt/wakari/wakari-gateway/var/log/supervisord.log
控制 service wakari-gateway
港口 没有任何
瓦卡里网关 细节
描述 将请求从 AEN 服务器传递到计算节点。
用户 wakari
配置 /opt/wakari/wakari-gateway/etc/wakari/wk-gateway-config.json
日志 /opt/wakari/wakari-gateway/var/log/wakari/gateway.application.log /opt/wakari/wakari-gateway/var/log/wakari/gateway.log
工作目录 / (根)
港口 8089(网络缓存)

计算节点

计算节点是 Jupyter Notebook 和 Workbench 等应用程序实际运行的地方。它们也是用户在使用终端应用程序或使用 SSH 访问节点时看到的主机。计算节点包含所有用户可见的程序。

计算节点只需要与网关通信,就可以被防火墙完全隔离。

每个项目都与作为单个数据中心一部分的一个或多个计算节点相关联。

AEN 计算节点安装在该 /opt/wakari/wakari-compute目录中。

AEN 系统中的每个计算节点都需要一个计算启动器服务来调解对服务器和网关的访问。

计算过程

当您查看服务器进程的状态时,您可能会看到下面解释的进程。

主管 细节
描述 管理wk-compute流程。
用户 wakari
配置 /opt/wakari/wakari-compute/etc/supervisord.conf
日志 /opt/wakari/wakari-compute/var/log/supervisord.log
控制 service wakari-compute
工作目录 /opt/wakari/wakari-compute/etc
港口 没有任何
周计算 细节
描述 启动计算进程。
用户 wakari
配置 /opt/wakari/wakari-compute/etc/wakari/wk-compute-launcher-config.json /opt/wakari/wakari-compute/etc/wakari/scripts/config.json
日志 /opt/wakari/wakari-compute/var/log/wakari/compute-launcher.application.log /opt/wakari/wakari-compute/var/log/wakari/compute-launcher.log
工作目录 / (根)
控制 service wakari-compute
港口 5002(射频)

Wk-compute 按以下顺序加载以下每个配置文件:

  • /etc/wakari/config.json.
  • /etc/wakari/compute-launcher-config.json.
  • ./compute-launcher-config.json.
  • -c选项指定的任何配置文件。

如果在多个文件中指定了一个选项,则遇到的最后一个优先。

主管和主管

AEN 使用称为“Supervisor”的过程控制系统来运行其服务。Supervisor 由 AEN 服务帐户用户运行,通常是 wakari 或 aen_admin。

Supervisor 守护进程称为“supervisord”。它在后台运行,应该很少需要重新启动。

服务帐号

AEN 必须由称为 AEN 服务帐户的 Linux 帐户安装和执行。AEN 服务帐户的用户名称为 AEN 功能 ID (NFI)。AEN 服务帐户是在 AEN 安装期间创建的(如果不存在),用于运行所有 AEN 服务。

默认的 NFI 用户名是wakari. 另一个流行的选择是 aen_admin

警告:服务帐户只能用于管理任务,不应像普通用户那样用于操作 AEN。如果服务账号创建或启动项目,AEN包缓存上的权限将被重置以匹配服务账号,这会干扰所有其他用户的AEN正常运行。

蟒蛇环境

每个项目都有一个关联的 conda 环境,其中包含该项目所需的包。当项目第一次启动时,AEN 将一个名为“default”的默认环境克隆到项目目录中。

AEN 4 的每个版本都包含经过特定测试的 conda 版本和 AEN 随附的 conda 包。这些经过测试的 conda 包包括 Python、R 和其他包,这些经过测试的 conda 包包括 Anaconda 中的所有包。

如果您升级或安装不同版本的 conda 或任何这些 conda 软件包的不同版本,则新软件包将不会作为 AEN 4 版本的一部分进行测试。

这些不同的软件包通常可以工作,特别是如果它们是较新的版本,但它们没有经过测试或保证可以工作,并且在某些情况下它们可能会破坏产品功能。

在将包安装到现有环境中之前,您可以使用新的 conda 环境来测试包的新版本。

如果使用 conda 更改包的版本破坏了产品功能,您可以使用 conda 将包的版本更改回已知可用的版本。

有关环境的更多信息,请参阅 使用环境

项目和权限

AEN 用户主要通过项目与系统交互 。

项目与 AEN 环境中的单个数据中心相关联。用户团队包括一个所有者,即创建项目的用户。

项目位于projectRoot计算节点上的文件夹中——默认情况下为/projects.

项目目录是在第一次启动项目时创建的。该start-project脚本从/opt/wakari/wakari-compute/lib/node_modules/wakari-compute-launcher/skeleton.

项目目录权限为:

owner: rwx, user who created the project
group: rwx, group of the owner
other: --x, to allow access to the Public folder
ACL: rwx for any other team members

项目目录中的文件和子目录与项目目录具有相同的权限,除了:

  • 公共文件夹及其中的所有内容对任何人开放。
  • 任何硬链接到 root anaconda 环境的文件/opt/wakari/anaconda——都归 root 或 wakari 用户所有。

项目文件和目录权限由start-project脚本维护 。项目启动时,项目中的所有文件和目录都将设置其权限,root 或 AEN_SRVC_ACCT 用户拥有的文件除外——默认情况下为 wakari 或 aen_admin。

为 root 或 AEN_SRVC_ACCT 用户拥有的文件设置的权限不会更改,以避免更改/opt/wakari/anaconda目录中任何链接文件的权限设置。

注意:不要以 AEN_SRVC_ACCT 用户身份启动项目。权限系统未正确管理此用户拥有的项目文件。