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.04
CentOS >= 7
Fedora >= 32
Debian >= 10
RHEL == 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 的持久化資料過多而耗盡系統盤的空間。