部署到 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,否则 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 才能运行。这是必需的,否则跟踪器根本不会开始记录。dashboard 也是如此,没有 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 服务提供商),并创建一个指向该负载均衡器 IP 的 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,或查看我们的 论坛,从我们的社区获取帮助。