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或更高版本,带有pyenv和pyenv-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-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 | 容器内服务的端口池 |
许可证
项目详情
下载文件
下载适合您平台的文件。如果您不确定选择哪个,请了解更多关于 安装包 的信息。
源代码分发
构建分发
哈希值 for backend.ai_manager-24.3.10-py3-none-any.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 79488087eb296104c74a272b257d76ca8e7a136498f7d59ea8d50807de7e217a |
|
MD5 | 26e1f684f58bff6055ab575b8b19d6cd |
|
BLAKE2b-256 | 458716c64e556241115d7b33a8aec21d2064d61b7e04b2b03ecf75fb123b5e27 |