部署到 Google Cloud

在 Google Cloud 上部署 OpenReplay 的分步指南。

部署到 Google Cloud

Video Tutorial

观看如何在你的 GCP 基础设施中部署 OpenReplay

如果你不喜欢阅读,可以观看这个视频教程,它会向你展示如何在 GCP 中部署 OpenReplay

OpenReplay 技术栈可以安装在单台机器上,而 Google Cloud 是一个理想的选择。

  1. 进入 ‘Compute Engine’ 控制台,并从左侧菜单栏选择 ‘VM Instances’
  2. 点击 ‘Create Instance’
  3. 选择你偏好的 ‘region’ 和 ‘zone’
  4. 选择你的机器类型。最低配置为 2 vCPUs, 8 GB of RAM, 50 GB of storage,且需采用 x86 架构,否则 OpenReplay 的后端服务将无法启动。因此,我们建议至少使用 n2-standard-2(或同等配置——请注意,e2-standard-2 已知在部署过程中会出现问题),这对于低/中等流量来说已经足够。如果你预计会有高流量,则应在此基础上进行扩展。
  5. 将启动盘更改为 Ubuntu 20.04 LTS 或更高版本,然后为启动盘类型选择 SSD persistent disk,并将大小设置为 50 GB。
  6. 在 Firewall 中同时勾选 ‘Allow HTTP traffic’ 和 ‘Allow HTTPS traffic’
  7. 点击 ‘Create’

当你的实例处于 Running 状态后,点击 SSH 按钮连接到它,然后通过提供它将要运行的域名来安装 OpenReplay(例如 DOMAIN_NAME=openreplay.mycompany.com):

sudo wget https://raw.githubusercontent.com/openreplay/openreplay/main/scripts/helmcharts/openreplay-cli -O /bin/openreplay 
sudo chmod +x /bin/openreplay
openreplay -i DOMAIN_NAME

OpenReplay 会处理敏感的用户数据,因此运行时需要 HTTPS。这是强制性的,否则追踪器根本不会开始录制。控制台也是如此——没有 HTTPS,你将无法回放用户会话。

在 Google Cloud 中处理 SSL 最简单的方法是设置一个负载均衡器(Google Load Balancing),并在其后运行 OpenReplay。另一种方法是生成或使用你自己的 SSL 证书,并将你的子域名(即 openreplay.mycompany.com)指向 OpenReplay 实例。下面详细介绍这两种方法。

设置 Google 负载均衡器(方法 1)

Section titled 设置 Google 负载均衡器(方法 1)

第一步是添加一个实例组,稍后负载均衡器会用到它:

  1. 进入 ‘Compute Engine’ > ‘Instance Groups’
  2. ‘Create Instance Group’ 并选择 New unmanaged instance group
  3. 选择你偏好的 ‘Location’,然后选择 ‘Network’ 并选定 OpenReplay 虚拟机实例
  4. 点击 ‘Create’

现在是时候创建负载均衡器了:

  1. 进入 ‘Network Services’ > ‘Load Balancing’
  2. ‘Create Load Balancer’ 并选择 HTTP(S) Load Balancing
  3. 选择 ‘From Internet to my VMs’,然后点击 ‘Continue’
  4. 从 ‘Backend configuration’ 开始,点击 ‘Backend services’ > ‘Create a backend service’
  5. 为 ‘Backend type’ 选择 Instance group。在 ‘Backends’ > ‘New backend’ 中,选择你之前创建的实例组,将端口设置为 80,然后点击 ‘Done’。
  6. 向下滚动到 ‘Health Check’ 并点击 ‘Create a health check’。为 ‘Protocol’ 选择 HTTP,将 ‘Port’ 设置为 80,然后将 ‘Request path’ 更改为 /healthz。保留其他默认值,然后点击 ‘Save’。
  7. 点击 ‘Create’
  8. 在 ‘Frontend configuration’ 中,为 ‘Protocol’ 选择 HTTPS,然后在 ‘Certificate’ 中创建一个新证书(由 Google 管理)或使用你自己的证书。点击 ‘Done’。
  9. 检查后点击 ‘Create’

创建完成后,进入 Cloud DNS(或你的 DNS 服务提供商),创建一条 A Record,使用负载均衡器的 IP(可在 Load Balancing 控制台中找到)指向它。

最后,通过取消注释 /var/lib/openreplay/vars.yamlingress-nginx 部分下方的以下行来启用 use-forwarded-headers

ingress-nginx: &ingress-nginx
  controller:
    config:
      use-forwarded-headers: true

现在一切就绪,OpenReplay 应该可以在你刚刚设置的子域名上安全访问。你可以通过访问 /signup 页面(即 openreplay.mycompany.com/signup)来创建一个账户。

使用/生成你自己的 SSL 证书(方法 2)

Section titled 使用/生成你自己的 SSL 证书(方法 2)

作为创建负载均衡器的替代方案,你可以使用(或生成)你自己的 SSL 证书。

  1. 首先,进入 Cloud DNS(或你的其他 DNS 服务提供商),创建一条 A Record。使用你在安装步骤中之前提供的域名,并使用虚拟机的公网 IP(可在 Compute Engine 控制台中找到)将其指向该虚拟机。

  2. 如果你使用自己的证书,请使用以下命令创建一个 SSL secret:kubectl create secret tls openreplay-ssl -n app --key="private_key_file.pem" --cert="certificate.crt"

注意: 如果你没有证书,请使用 Let’s Encrypt 为你的子域名(安装期间提供的那个)生成一个可自动续期的证书。只需连接到 OpenReplay 实例,运行 cd /var/lib/openreplay/openreplay/scripts/helmcharts && bash certmanager.sh 并按照步骤操作即可。

  1. 如果你希望启用 http 到 https 的重定向(推荐),请取消注释 /var/lib/openreplay/vars.yamlingress-nginx 部分下方的以下代码块:
ingress-nginx: &ingress-nginx
  controller:
    config:
      ssl-redirect: true
      force-ssl-redirect: true

值得一提的是,我们的 ingress-nginx 默认在 80|443 端口上运行,但如有需要,可以在 vars.yaml 中轻松更改:

ingress-nginx: &ingress-nginx
  controller:
    service:
      ports:
        http: 80
        https: 443
  1. 最后,重新安装 OpenReplay NGINX:
openreplay -R

现在一切就绪,OpenReplay 应该可以在你的子域名上访问。你可以通过访问 /signup 页面(即 openreplay.mycompany.com/signup)来创建一个账户。

如果你遇到任何问题,请加入我们的 Slack 或查看我们的论坛,从我们的社区获取帮助。