跳转到主要内容

Backend.AI Manager

项目描述

带有API网关的Backend.AI Manager

包结构

  • ai.backend.manager:使用公共API的计算机资源和工作负载管理

安装

请访问安装指南

内核/系统配置

推荐资源限制

/etc/security/limits.conf

root hard nofile 512000
root soft nofile 512000
root hard nproc 65536
root soft nproc 65536
user hard nofile 512000
user soft nofile 512000
user hard nproc 65536
user soft nproc 65536

sysctl

fs.file-max=2048000
net.core.somaxconn=1024
net.ipv4.tcp_max_syn_backlog=1024
net.ipv4.tcp_slow_start_after_idle=0
net.ipv4.tcp_fin_timeout=10
net.ipv4.tcp_window_scaling=1
net.ipv4.tcp_tw_reuse=1
net.ipv4.tcp_early_retrans=1
net.ipv4.ip_local_port_range="10000 65000"
net.core.rmem_max=16777216
net.core.wmem_max=16777216
net.ipv4.tcp_rmem=4096 12582912 16777216
net.ipv4.tcp_wmem=4096 12582912 16777216

开发中

先决条件

  • Python 3.6或更高版本,带有pyenvpyenv-virtualenv(可选但推荐)
  • Docker 18.03或更高版本,带有docker-compose(推荐18.09或更高版本)

常规步骤

克隆元仓库并安装一个“halfstack”配置。halfstack配置会在后台安装并运行一些依赖守护进程,例如etcd。

$ git clone https://github.com/lablup/backend.ai halfstack
$ cd halfstack
$ docker-compose -f docker-compose.halfstack.yml up -d

然后按照以下步骤准备代理的源克隆。首先安装当前工作副本。

$ git clone https://github.com/lablup/backend.ai-manager manager
$ cd manager
$ pyenv virtualenv venv-manager
$ pyenv local venv-manager
$ pip install -U pip setuptools
$ pip install -U -r requirements/dev.txt

从现在起,假设所有shell命令都在virtualenv内部执行。

Halfstack(单节点开发与测试)

推荐目录结构

  • backend.ai-dev

backend.ai-common作为可编辑包安装到manager(和代理)virtualenv中,以保持代码库更新。

$ cd manager
$ pip install -U -e ../common -r requirements/dev.txt

步骤

复制(或创建符号链接)halfstack配置

$ cp config/halfstack.toml ./manager.toml
$ cp config/halfstack.alembic.ini ./alembic.ini

设置Redis

$ backend.ai mgr etcd put config/redis/addr 127.0.0.1:8110

ℹ️ 注意:如果您的PATH不可修改,您可以将backend.ai mgr替换为python -m ai.backend.manager.cli

设置公共Docker注册库

$ backend.ai mgr etcd put config/docker/registry/index.docker.io "https://registry-1.docker.io"
$ backend.ai mgr etcd put config/docker/registry/index.docker.io/username "lablup"
$ backend.ai mgr image rescan index.docker.io

设置vfolder路径

$ mkdir -p "$HOME/vfroot/local"
$ backend.ai mgr etcd put volumes/_mount "$HOME/vfroot"
$ backend.ai mgr etcd put volumes/_default_host local

设置vfolder允许的类型。允许的值是"user"或"group"。如果没有指定,则隐式设置"user"类型。

$ backend.ai mgr etcd put volumes/_types/user ""   # enable user vfolder
$ backend.ai mgr etcd put volumes/_types/group ""  # enable group vfolder

设置数据库

$ backend.ai mgr schema oneshot
$ backend.ai mgr fixture populate sample-configs/example-keypairs.json
$ backend.ai mgr fixture populate sample-configs/example-resource-presets.json

然后运行它(对于调试,请添加一个--debug标志)

$ backend.ai mgr start-server

要运行测试

$ python -m flake8 src tests
$ python -m pytest -m 'not integration' tests

现在您已经准备好安装代理。请参阅Backend.AI Agent的README

注意:要运行包括集成测试在内的测试,您首先需要在同一主机上安装并运行代理。

部署

配置

将TOML格式的manager配置文件(见config/sample.toml中的示例)放置在以下位置之一

  • manager.toml(当前工作目录)
  • ~/.config/backend.ai/manager.toml(用户配置目录)
  • /etc/backend.ai/manager.toml(系统配置目录)

只有第一个找到的配置被守护进程使用。

此外,许多由manager和agent共享的配置存储在etcd中。如您在上面所注意到的,manager提供了一个CLI接口来访问和操作etcd数据。查看我们etcd命令集的帮助页面

$ python -m ai.backend.manager.cli etcd --help

如果您以Docker容器的形式运行etcd(例如,通过halfstack),您也可以使用原生客户端。在这种情况下,请务必注意,您必须手动以"/sorna/{namespace}"为前缀。

$ docker exec -it ${ETCD_CONTAINER_ID} /bin/ash -c 'ETCDCTL_API=3 etcdctl ...'

从命令行运行

执行的最小命令

python -m ai.backend.gateway.server

有关更多参数和选项,请使用--help选项运行命令。

编写包装脚本

要与其他系统级守护进程(如systemd、crontab)一起使用,您可能需要编写一个shell脚本,该脚本执行Backend.AI模块提供的特定CLI命令。

以下示例展示了如何为脚本本地环境设置pyenv和virtualenv。如果没有提供任何参数,它将运行网关服务器;如果有任何参数,它将以shell命令的形式执行这些参数。例如,您可能可以像这样获取/设置配置:run-manager.sh python -m ai.backend.manager.etcd ...其中脚本名称为run-manager.sh

#! /bin/bash
if [ -z "$HOME" ]; then
  export HOME="/home/devops"
fi
if [ -z "$PYENV_ROOT" ]; then
  export PYENV_ROOT="$HOME/.pyenv"
  export PATH="$PYENV_ROOT/bin:$PATH"
fi
eval "$(pyenv init -)"
eval "$(pyenv virtualenv-init -)"
pyenv activate venv-bai-manager

if [ "$#" -eq 0 ]; then
  exec python -m ai.backend.gateway.server
else
  exec "$@"
fi

网络

manager和agent应在同一本地网络或可通过VPN访问的不同网络中运行,而manager的API服务必须暴露给公共网络或用户可以访问的另一个私有网络。

manager需要访问etcd、PostgreSQL数据库和Redis服务器。

用户到Manager的TCP端口 用法
manager:{80,443} Backend.AI API访问
Manager到X的TCP端口 用法
etcd:2379 etcd API访问
postgres:5432 数据库访问
redis:6379 Redis API访问

管理者还必须能够访问默认配置下代理的TCP端口6001、6009以及30000到31000。当然,您可以在配置中更改这些端口号和范围。

管理器到代理的TCP端口 用法
6001 基于ZeroMQ的从管理器到代理的RPC调用
6009 HTTP监视器API
30000-31000 容器内服务的端口池

许可证

GNU Lesser General Public License 依赖项

项目详情


发布历史 发布通知 | RSS源

下载文件

下载适合您平台的文件。如果您不确定选择哪个,请了解更多关于 安装包 的信息。

源代码分发

backend_ai_manager-24.3.10.tar.gz (1.7 MB 查看哈希值)

上传时间 源代码

构建分发

backend.ai_manager-24.3.10-py3-none-any.whl (1.8 MB 查看哈希值)

上传时间 Python 3

支持

AWS AWS 云计算和安全赞助商 Datadog Datadog 监控 Fastly Fastly CDN Google Google 下载分析 Microsoft Microsoft PSF 赞助商 Pingdom Pingdom 监控 Sentry Sentry 错误日志 StatusPage StatusPage 状态页面