OpenResty XRay™ 自主部署版 (docker-compose)

名称

OpenResty XRay 自主部署 docker-compose 版本安装与部署说明

目录

概览

xray-arch

其中控制台服务端运行在 docker 容器中,使用 docker-compose 进行管理,所有服务运行在单台物理或虚拟机上,而 Agent 端则是运行在目标机器上。

XRay 的服务端分为三个组件,其中每个组件中又有一些子服务

  • OpenResty XRay Console:
    • xray-console: console 的 web 服务,提供 XRay 的管理界面
    • xray-console-pg: console 的数据库,作为 web 服务的数据库后端
  • OpenResty XRay BuildBox:
    • build-box-[dist]: 构建 XRay 工具的后端服务。其中 dist 代表对应的操作系统发行版。
    • xray-tenant-db: 对 xray-console 服务和 build-box-[dist] 提供查询接口,会按照 ‘私有库 -> 公共库’ 的顺寻进行查询。该服务只会向公共库发起查询请求,而不会有数据上传到公有库
    • xray-tenant-db-pl: 提供客户私有的软件数据库
    • xray-tenang-db-pg: 作为客户私有软件数据库的数据库后端

安装

控制台服务

1. 硬件需求

  • 网络:不必具有公网 IP 或暴露监听端口,但需要能够访问互联网,并且运行 Agent 的机器可以访问该机器
  • 内存: >= 4G,推荐 16GB
  • CPU: >= 2C,推荐 4核
  • 硬盘: >= 500GB,推荐 1TB 以上。持久化数据存储在 /data 目录下,会随着使用时长不断增长。

关于硬盘使用量的说明:根据目前的经验,1 台 Agent 周期采样的数据,30 天的数据增长量约为 10GB

2. 访问公网的说明

控制台服务需要连接互联网,用来访问 XRay PkgDB 服务。该服务提供了对常见 Linux 发行版软件仓库的查询与下载服务,从而使 XRay 支持对系统中绝大部分开源软件和开源库的分析。

特别说明:访问公网过程中仅涉及查询和下载的动作,没有任何私有数据会被控制台服务上传到公网的服务端。

3. OS

因为使用了 docker 服务,这里推荐使用原生支持 docker 的 linux 发行版,如下:

  • ubuntu >= 16.04
  • centos >= 7
  • fedora >= 28
  • debian >= 8
  • rhel == 7

4. docker-compose

关于 docker 的安装文档,详见:https://docs.docker.com/engine/install/

安装 docker 后,记得启用 docker 服务

关于 docker-compose 的安装文档,详见:https://docs.docker.com/compose/install/

5. 部署证书(可选)

如果需要使用自定义的证书,则需执行此步骤。如果跳过此步骤,console会使用内置的自签证书。

将 XRay 服务端对应域名的证书放在 /data/orxray-console/cert/ssl.crt/data/orxray-console/cert/ssl.key 路径,此证书将用于:

  • 使用浏览器通过 https 访问控制台服务
  • Agent 端与控制台服务通信

配置控制端服务端访问域名,修改 docker-compose.yml 文件的 services -> xray-console -> environment -> CONSOLE_HOST 字段为访问域名。

大致结构如下,替换其中的 example.com 即可:

# ...

services:
  # ...
  xray-console:
    # ...
    environment:
      # ...
      CONSOLE_HOST: example.com

也可以使用 sed 命令进行替换,假设要使用的域名为 example.com,则执行:

sed -i 's/\bCONSOLE_HOST:\s*\S\+/CONSOLE_HOST: example.com/g' /opt/orxray/docker-compose.yml

6. 部署与启动

首先,使用邮件中提供的 docker-registry 用户名密码,登录我们提供的私有 docker registry。

docker login registry.openresty.com.cn

这里使用邮件附件中提供的 docker-compose.yml 作为配置文件,推荐放在 /opt/orxray/docker-compose.yml 位置。

启动命令:

$ cd /opt/orxray && docker-compose config -q && docker-compose up -d

检查启动状态,执行下列命令,查看输出的 State 字段是否都为 UP

$ cd /opt/orxray && docker-compose ps

至此,控制台服务端部署完毕,可以使用配置好的域名进行访问了。如:https://example.com

注意:如果通过反向代理服务器访问管理后台,需要做如下改动:

  1. 需要在反向代理服务上开启 websocket 支持,不然会影响 Agent 和控制台服务端的通信。
  2. 需要在反向代理服务器上启用 X-Real-IP 来传递访问 IP 地址给后端,这样可以让控制台服务端获取到 Agent 端 IP 地址。

Agent

XRay Agent 端运行在目标机器上,Agent 安装后与自主部署的控制台服务端进行通信,而 Agent 安装也是由控制台服务端配合完成的:

在浏览器访问控制端服务端后台,使用邮件中提供的用户名密码来进行登录。登录后,可以看到安装向导,及支持的操作系统,按照安装向导的提示,进行 Agent 的安装即可。

安装 Agent 后可在左侧 User 页签修改密码及新增用户。

运维

控制台服务日志查看

$ cd /opt/orxray && docker-compose logs -t

检查配置文件合法性

$ cd /opt/orxray && docker-compose config -q

升级服务

升级服务会通过邮件发送附件 docker-compose.upgrade.yml,执行以下操作:

$ cp docker-compose.upgrade.yml /opt/orxray/docker-compose.yml
$ cd /opt/orxray && docker-compose config -q && docker-compose up -d

检查服务状态

$ cd /opt/orxray && docker-compose ps

此租户不存在

如果使用浏览器访问 console 发现其提示“此租户不存在”,请检查访问域名或 IP 是否于 docker-compose.yml 中的 CONSOLE_HOST 变量值一致。

如访问地址为 http://xray.example.comCONSOLE_HOST 的值不是 xray.example.com 则会有此提示。