OpenResty XRay™ 自主部署版 (docker-compose)
名称
OpenResty XRay 自主部署 Docker-Compose 版本安装与部署指南
目录
概览

在此架构中,控制台服务端运行在 Docker 容器中,并通过 docker-compose 进行管理。所有服务运行在单台物理或虚拟机上,而 Agent 端则运行在目标机器上。
XRay 的服务端分为三个组件,每个组件中又有一些子服务:
- OpenResty XRay Console:
- xray-console: 提供 XRay 的管理界面的 web 服务
- xray-console-pg: 作为 web 服务的数据库后端
- OpenResty XRay BuildBox:
- build-box-[dist]: 构建 XRay 工具的后端服务。其中
dist代表对应的操作系统发行版
- build-box-[dist]: 构建 XRay 工具的后端服务。其中
- OpenResty XRay Tenant DB:
- xray-tenant-db: 对
xray-console服务和build-box-[dist]提供查询接口,会按照 ‘私有库 -> 公共库’ 的顺序进行查询。该服务只会向公共库发起查询请求,而不会有数据上传到公有库 - xray-tenant-db-pl: 提供客户私有的软件数据库
- xray-tenant-db-pg: 作为客户私有软件数据库的数据库后端
- xray-tenant-db: 对
安装
控制台服务
1. 硬件需求
- 网络:不必具有公网 IP 或暴露监听端口,但需要能够访问互联网,并且运行 Agent 的机器可以访问该机器
- 内存:建议至少 4GB,推荐 16GB
- CPU:建议至少 2C,推荐 4 核
- 硬盘:建议至少 500GB,推荐 1TB 以上。持久化数据存储在
/data目录下,会随着使用时长不断增长
注意:根据目前的经验,1 台 Agent 周期采样的数据,30 天的数据增长量约为 10GB
2. 访问公网的说明
控制台服务需要连接互联网,用来访问 XRay PkgDB 服务。该服务提供了对常见 Linux 发行版软件仓库的查询与下载服务,从而使 XRay 支持对系统中绝大部分开源软件和开源库的分析。
特别说明:访问公网过程中仅涉及查询和下载的动作,没有任何私有数据会被控制台服务上传到公网的服务端。
3. 操作系统
由于使用了 Docker 服务,我们推荐使用原生支持 Docker 的 Linux 发行版,包括:
Ubuntu >= 18.04CentOS >= 7Fedora >= 32Debian >= 10RHEL == 7
4. Docker-Compose
关于 Docker 的安装文档,请参阅:https://docs.docker.com/engine/install/
安装 Docker 后,记得启用 Docker 服务
关于 Docker-Compose 的安装文档,请参阅:https://docs.docker.com/compose/install/
5. 部署证书(可选)
如果需要使用自定义的证书,请将 XRay 服务端对应域名的证书放置在 /data/orxray-console/cert/ssl.crt 和 /data/orxray-console/cert/ssl.key 路径下。这些证书将用于:
- 使用浏览器通过 HTTPS 访问控制台服务
- Agent 端与控制台服务之间的通信
如果跳过此步骤,控制台服务将使用内置的自签证书。
6. IP 白名单访问控制 (可选)
如果你需要针对 Console Web 服务,加上 IP 白名单用作访问控制的话,你可以按照下面的步骤进行操作。请在 /data/orxray-console 创建目录,/data/orxray-console/acl,并将 whitelist.conf 置于该目录下。该配置文件的格式如下(可以在 https://nginx.org/en/docs/http/ngx_http_access_module.html 查看详细说明):
allow 10.0.0.3;
allow 192.168.1.0/24;
# 可以写更多 IP 或者 CIDR
deny all; # 别忘了这个,它会拒绝所有非白名单的 IP 的访问
注意:如果修改该配置,需要重启 console 来生效
7. 配置文件详解
在 config.env 文件中,有一些重要的环境变量需要配置,下面是各个环境变量的详解:
XRay Console 配置
XRAY_CONSOLE_HOST:设置为你的 XRay 控制台的主机名,例如xray.example.com。XRAY_CONSOLE_PORT:设置为你的 XRay 控制台的端口号,默认为443。你可以通过修改此环境变量来调整docker-compose暴露出来的监听端口。
XRay HTTP Proxy 配置 (可选)
如果你的网络环境要求配置 HTTP 代理才能连接互联网,那么你需要配置下面的变量:
XRAY_HTTP_PROXY: 这个环境变量是用来配置 HTTP 和 HTTPS 流量的 HTTP 代理服务器,例如http://proxyserver.example.com:8080。XRAY_HTTP_PROXY_AUTHORIZATION: 这个环境变量是用来配置 HTTP 和 HTTPS 流量的 HTTP 代理服务器的验证头部,即Proxy-Authorization的值。
XRay Tenant Database 配置
XRAY_TENANT_DB_PORT:设置为你的 XRay tenant 数据库的端口号,默认为80。你可以通过修改此环境变量来调整docker-compose暴露出来的监听端口。
Time Series Database 清理策略配置
TSDB_CLEANUP_PERIOD_DAYS:设置 Time Series Database 清理周期,单位为天。例如,设置为90,表示 Time Series Database 应在 90 天后进行清理。TSDB_ARCHIVE_RETENTION_DAYS:设置 Time Series Database 保留归档数据的天数。例如,设置为10,表示 Time Series Database 应保留 10 天的归档数据。
日志保留策略配置
LOG_RETENTION_DAYS:设置日志保留的天数。例如,设置为15,表示应保留 15 天的日志。LOG_ARCHIVE_CLEANUP_DAYS:设置清理归档日志的天数。例如,设置为30,表示应在 30 天后清理归档日志。
这些环境变量的配置应根据你的实际需求进行调整。
8. 部署与启动
首先,使用邮件中提供的 Docker-Registry 用户名密码,登录我们提供的私有 Docker Registry。
docker login registry.openresty.com.cn
然后,使用邮件附件中提供的 docker-compose.yml 作为配置文件,推荐放在 /opt/orxray/docker-compose.yml 位置,并将附件中的 config.env 文件
放在 /opt/orxray/config.env 位置。
启动命令:
$ docker-compose -f /opt/orxray/docker-compose.yml --env-file /opt/orxray/config.env -p orxray config -q \
&& docker-compose -f /opt/orxray/docker-compose.yml --env-file /opt/orxray/config.env -p orxray up -d
检查启动状态,执行下列命令,查看输出的 State 字段是否都为 UP
$ docker-compose -f /opt/orxray/docker-compose.yml --env-file /opt/orxray/config.env -p orxray ps
至此,控制台服务端部署完毕,可以使用配置好的域名进行访问了。如:https://example.com
注意:如果通过反向代理服务器访问管理后台,需要做如下改动:
- 需要在反向代理服务上开启 websocket 支持,不然会影响 Agent 和控制台服务端的通信。
- 需要在反向代理服务器上启用
X-Real-IP来传递访问 IP 地址给后端,这样可以让控制台服务端获取到 Agent 端 IP 地址。
9. Arm64 支持 (可选)
如果您需要 OpenResty XRay 支持 arm64 架构,您可以使用 docker-compose-arm.yml 文件进行部署。
请确保在 x86_64 架构的机器上已经部署了 docker-compose.yml 服务,并对内网开放 XRAY_CONSOLE_PORT (默认值为 80) 及 XRAY_TENANT_DB_PORT (默认值为 443) 端口。
在同一个内网的 arm64 架构的机器上部署 docker-compose-arm.yml,并按以下步骤进行配置:
- 打开
config.env文件。 - 添加或修改以下环境变量:
XRAY_CONSOLE_IP:设置为 x86_64 机器的内网 IP 地址。XRAY_CONSOLE_PORT:设置为你的 XRay 控制台的端口号,默认为443。你可以通过修改此环境变量来调整docker-compose暴露出来的监听端口。XRAY_TENANT_DB_IP:设置为 x86_64 机器的内网 IP 地址。XRAY_TENANT_DB_PORT:设置为你的 XRay tenant 数据库的端口号,默认为80。你可以通过修改此环境变量来调整docker-compose暴露出来的监听端口。
例如:
# config.env file
# ...
XRAY_CONSOLE_IP=192.168.1.100
XRAY_CONSOLE_PORT=443
XRAY_TENANT_DB_IP=192.168.1.100
XRAY_TENANT_DB_PORT=80
在 arm64 服务器上执行以下命令完成该部署:
$ docker-compose -f /opt/orxray/docker-compose-arm.yml \
--env-file /opt/orxray/config.env -p orxray up -d
部署完成后,就完成了 OpenResty XRay 对 arm64 架构的支持。
Agent
XRay Agent 端运行在目标机器上,Agent 安装后与自主部署的控制台服务端进行通信,而 Agent 安装也是由控制台服务端配合完成的:
在浏览器访问控制端服务端后台,使用邮件中提供的用户名密码来进行登录。登录后,可以看到安装向导,及支持的操作系统,按照安装向导的提示,进行 Agent 的安装即可。
安装 Agent 后可在左侧 User 页签修改密码及新增用户。
运维
控制台服务日志查看
$ docker-compose -f /opt/orxray/docker-compose.yml --env-file /opt/orxray/config.env -p orxray logs -t
检查配置文件合法性
$ docker-compose -f /opt/orxray/docker-compose.yml --env-file /opt/orxray/config.env -p orxray config -q
升级服务
升级服务会通过邮件发送附件 docker-compose.upgrade.yml,执行以下操作:
$ cp docker-compose.upgrade.yml /opt/orxray/docker-compose.yml
$ docker-compose -f /opt/orxray/docker-compose.yml --env-file /opt/orxray/config.env -p orxray config -q \
&& docker-compose -f /opt/orxray/docker-compose.yml --env-file /opt/orxray/config.env -p orxray up -d
检查服务状态
$ docker-compose -f /opt/orxray/docker-compose.yml --env-file /opt/orxray/config.env -p orxray ps
数据持久化与备份
** /data 目录详解**
/data 目录是挂载在宿主机上的持久化数据卷。该目录中存储了 XRay 服务运行过程中的持久化数据,包括数据库文件、日志文件、归档文件等。即使 XRay 相关的容器发生重启,只要宿主机上的 /data 目录没有被删除,其中的数据就会被保留。
需要特别说明的是 /data/orxray-console/archive 子目录,该目录存储了数据库和 job 的归档数据文件。系统会在每天定时备份前一天的这些数据。归档文件超过指定的保存天数后会被自动清除,以下两个环境变量可以配置归档数据的保存时间:
TSDB_ARCHIVE_RETENTION_DAYS: 配置数据库归档数据的保存天数,默认为 10 天LOG_ARCHIVE_CLEANUP_DAYS: 配置 job 归档文件的保存天数,默认为 30 天
建议根据实际的磁盘空间和数据保留需求,合理设置这两个参数的值。
另外,建议定期对 /data 目录进行备份,尽量使用专门的磁盘来挂载该目录,避免 XRay 的持久化数据过多而耗尽系统盘的空间。