# 安装 Reorc-agent

Reorc 的数据面（Data Plane）由多个 Worker Hosts 构成，用于运行由控制面（Control Plane）协调的数据任务。

每个 Worker 上都包含一个称为 Reorc-agent 的服务，它与控制面通信，并管理 Worker 上的执行环境。设置 Worker 的规则如下：

* 可设置多个 Workers 以实现横向扩展。
* &#x20;Workers 可以安装在不同的网络位置。
* 专用于某个环境的 Workers 之间必须能够相互通信。因此，建议将相同环境的 Workers 放置在同一局域网络中，以最大程度地稳定连接并降低延迟。

本指南将向您展示如何设置 Reorc Agent。

## 要求

您的 Worker Hosts 需满足以下要求：

**硬件：**

根据实际使用情况，您可以参考以下配置范围，以优化Reorc的性能表现。

<table data-full-width="true"><thead><tr><th width="161"></th><th>Worker 数量</th><th>CPU（核心数 / Worker）</th><th>内存（GB/ Worker）</th><th>磁盘（GB/ Worker）</th></tr></thead><tbody><tr><td>最低配置</td><td>1</td><td>2</td><td>8</td><td>20</td></tr><tr><td>推荐配置</td><td>2+</td><td>4</td><td>16</td><td>100</td></tr></tbody></table>

**软件：**

* 操作系统：Linux（已测试 RHEL 和 Ubuntu ）。
* Python：3.9+，建议使用更新版本，并在可行情况下使用虚拟环境。
* [Docker](https://docs.docker.com/engine/) : 20.10.0+，需安装 Docker Compose。

{% hint style="info" %}
确保运行 Reorc Agent 的用户有权限访问 Docker CLI。可以使用以下命令授予用户权限。在修改用户组后，可能需要注销并重新登录终端会话。

```bash
sudo usermod -aG docker $USER 
```

{% endhint %}

## 设置 Reorc Agent

请按照以下步骤进行操作：

1. 在 Reorc 左侧边栏中，点&#x51FB;**“组织/ Organization”**&#x56FE;标并选&#x62E9;**“环境和 Workers/ Environment & Workers”**。
2. 点&#x51FB;**“部署 Agent/ Deploy Agent”**&#x5E76;按照屏幕上的指示完成 Agent 的部署。

   或者，您也可以按照以下步骤操作。

<details>

<summary>在命令行界面（CLI）中安装 Reorc Agent</summary>

1. 在 Worker Host 上：安装 Agent 包。

```bash
pip install -U reorc-agent
```

您可以通过运行以下命令来验证安装是否成功： `reorc version`

2. 在 Worker Host 上：将 Host 注册到控制面。

```bash
reorc login
```

3. &#x5728;**“环境和 Workers/ Environments & workers”**&#x9875;面中，点&#x51FB;**“部署 Agent/ Deploy Agent”**，复制API密钥，并粘贴到 Host 上。
4. 在 Worker Host 上：启动 Agent，Agent 将持续向控制面发送心跳信号。

```bash
reorc agent start
```

</details>

3. 刷新页面以查看新部署的 Host，状态应显示&#x4E3A;**“在线/ Online”**。
4. 将 Agent 分配到环境。

   当 Agent 运行并显&#x793A;**“在线/ Online”**&#x72B6;态后，点&#x51FB;**“操作/ action”**>**“加入环境/ Join Environment”**，选择要分配的环境。当 Agent 成功加入环境后，您应会看到状态变&#x4E3A;**“活动中/ Active”**。

{% hint style="info" %}
**注意事项**

* `reorc agent start` 命令会在前台启动 Agent ，当终端会话关闭时，Agent 也会终止。对于生产部署，您应让 Agent 在后台运行。更多详细信息，请参考： [在后台运行 Agent](#zai-hou-tai-yun-xing-agent)。
* `dev` 和`prod` 环境必须至少各有一个 Agent 在运行。
  {% endhint %}

## Agent 的操作

当 Agent 启动并运行后，您可以执行一些关键操作。

点击 Agent 的 ***操作/action*** 按钮即可：

<figure><img src="/files/x003EPa4QxnpEsOcrQbz" alt=""><figcaption></figcaption></figure>

可以执行以下操作：

* **重启服务：**&#x91CD;启 Agent 服务，重启后 Agent 仍会加入环境。
* **停止服务：**&#x505C;止 Agent 服务， Agent 将变为非活动状态。
* **离开环境：**&#x5C06; Agent 服务从当前环境中移除。

## 在后台运行 Agent&#x20;

有多种方式可以将 Agent 在后台运行，例如，使用 [systemd](https://systemd.io/) 或 [Supervisor](http://supervisord.org) 等工具。

<details>

<summary>systemd</summary>

1. 创建配置文件

创建 `/etc/systemd/system/reorc-agent.service` 文件，并添加以下内容：

```systemd
[Unit]
Description=ReOrc Agent Service
After=network.target

[Service]
User=<os_user>
Group=<os_user>
ExecStart=/path/to/python/bin/reorc agent start
Restart=on-failure
Environment=PYTHONUNBUFFERED=1
StandardOutput=append:/var/log/reorc/agent.log
StandardError=append:/var/log/reorc/agent.log

[Install]
WantedBy=multi-user.target
```

2. 准备日志文件夹和权限

```bash
sudo mkdir -p /var/log/reorc
sudo chown <os_user>:<os_user> /var/log/reorc
```

3. 启动服务

```bash
sudo systemctl daemon-reload
sudo systemctl start reorc-agent
sudo systemctl enable reorc-agent
```

</details>

<details>

<summary>Supervisor</summary>

**安装 Supervisor**

1. 安装 Supervisor

```bash
# Install on Ubuntu 
sudo apt install supervisor

# Install on CentOS (RHEL)
sudo dnf install supervisor

# or
sudo yum install supervisor
```

2. 创建用户组和用户

```bash
sudo groupadd supervisor
sudo usermod -aG supervisor $USER
```

3. 创建配置文件

安装后，`/etc/supervisord.conf` 中应该已经有一个配置文件。做一些修改以允许`supervisor` 中的用户运行访问 supervisord。

```editorconfig
[unix_http_server]
file=/run/supervisor/supervisor.sock   ; (the path to the socket file)
chmod=770
chown=root:supervisor
```

4. 启用并启动 supervisord

```bash
sudo systemctl enable supervisord
sudo systemctl start supervisord
```

现在，您应该能够运行 `supervisorctl` （supervisord 的控制命令行界面）。

**添加 reorc-agent**

1. 将一个配置文件添加到 `/etc/supervisord.d/reorc-agent.ini`，其内容如下：

```editorconfig
[program:reorc-agent]
command = /path/to/python/bin/reorc agent start
autorestart = true
stopasgroup = true
killasgroup = true
umask = 000
user = <os_user>
redirect_stderr = true
stdout_logfile = /var/log/reorc/agent.log
```

请注意：

* 将 `command` 替换为 `reorc` 二进制文件的绝对路径。通常是 Python 环境（或虚拟环境）的 `bin` 文件夹。
* 替换 `user`。
* 替换日志路径 `stdout_logfile`，用户应该具有对该文件夹的写访问权限。

2. 通过 `supervisorctl` 管理进程

```bash
# Reload config and add/remove as necessary, and will restart affected programs
supervisorctl update

# start, stop, and restart reorc-agent
supervisorctl start reorc-agent
supervisorctl stop reorc-agent
supervisorctl restart reorc-agent
```

</details>

## 升级 Agent&#x20;

始终建议保持 Reorc Agent 的更新。

要升级 Agent ，请按照以下步骤操作：

1. 停止 Agent 服务

   根据您管理服务的方式，您可能需要运行以下命令之一来停止该进程：

```bash
# if managed by Systemd
sudo systemctl stop reorc-agent

# if managed by Supervisor
supervisorctl stop reorc-agent
```

2. 升级并重新登录

```bash
# Upgrade to the latest version
pip install -U reorc-agent

reorc login
```

3. 启动 Agent&#x20;

```bash
# if managed by Systemd
sudo systemctl start reorc-agent

# if managed by Supervisor
supervisorctl start reorc-agent
```


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.reorc.com/cn-reorc-help-center/she-zhi-yu-bu-shu/an-zhuang-reorcagent.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
