部署到 AWS

Video Tutorial

观看如何在您的 AWS 基础设施中部署 OpenReplay (English)

如果您不喜欢阅读,您可以跟随这个视频教程,了解如何在 AWS 中部署 OpenReplay

Play

OpenReplay 堆栈可以安装在单台机器上,而 AWS EC2 是理想的选择。

  1. 前往 AWS EC2 仪表板
  2. ‘启动一个新实例’
  3. 选择您的 AMI。对于本指南,我们将使用 Ubuntu Server 20.04 LTS
  4. 选择您的实例类型。最低配置为 2 vCPU、8 GB RAM、50 GB 存储空间,否则 OpenReplay 后端服务将无法启动。因此,我们至少推荐使用 t3.large(或等效型号),这对于低/中等流量来说足够了。如果您预期流量高,应该从这里开始扩展。
  5. 配置实例详情:根据需要调整网络/子网参数或简单地保留默认设置
  6. 添加存储:设置大小为 50 GB(通用 SSD (gp2))
  7. 添加标签:调整参数或保留默认设置
  8. 安全组:保留现有的 SSH 规则并为 HTTP (80) 和 HTTPS (443) 添加两个(源:0.0.0.0/0)
  9. 点击‘审查和启动’
  10. 创建/下载 SSH 密钥,然后点击‘启动实例’
  1. 确保您的实例正在运行,然后连接到它:
## From your terminal
SSH_KEY=~/Downloads/openreplay-key.pem #! wherever you've saved the SSH key
INSTANCE_IP=REPLACE_WITH_INSTANCE_PUBLIC_IP
chmod 400 $SSH_KEY
ssh -i $SSH_KEY ubuntu@$INSTANCE_IP
  1. 通过提供将运行 OpenReplay 的域来安装 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 您将无法重放用户会话。

在 AWS 中处理 SSL 的最简单方法是设置负载均衡器(ELB)并在其后运行 OpenReplay。另一个选项是生成或使用您自己的 SSL 证书,并将您的子域(即 openreplay.mycompany.com)指向 OpenReplay 实例。以下是关于这两个选项的更多信息。

设置 AWS 负载均衡器(选项 1)

Section titled 设置 AWS 负载均衡器(选项 1)
  1. 转到 ‘EC2’ > ‘负载均衡器’
  2. ‘创建负载均衡器’并选择应用程序负载均衡器
  3. 添加一个 HTTPS 监听器(仅保留此项),确保选择运行 OpenReplay 实例的相同子网。
  4. 选择一个现有的证书(例如 *.mycompany.com)或从 AWS 证书管理器(ACM)生成一个新的。您也可以导入您自己的证书。
  5. 配置安全组:选择之前为 OpenReplay 实例创建的安全组(您可以在 ‘EC2 控制面板’的 ‘安全’ 标签下找到它)
  6. 配置监听器和路由:保持默认协议和端口(HTTP:80)。现在,创建一个新的目标组。给它一个名称并在目标类型中选择 IP 地址。确保健康检查路径设置为 /healthz 同时保留其他默认参数。点击‘下一步’注册目标,添加 OpenReplay 实例的私有 IPv4(端口 80)然后将目标添加到列表中(私有 IP 可在 EC2 仪表板中找到)。检查然后点击‘创建目标组’。
  7. 现在,返回到 LB 创建页面,并将这个新的目标组转发给 LB 监听器。
  8. 审查然后‘创建负载均衡器’

创建后,前往 Route 53(或您的 DNS 服务提供商),创建一个指向负载均衡器的 A 记录,使用其 DNS 名称(可以在 ELB 控制面板中找到)。

最后,在 /var/lib/openreplay/vars.yaml 中的 ingress-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. 首先,前往 Route 53(或您的其他 DNS 服务提供商)并创建一个 A 记录。使用您在安装步骤中之前提供的域名,并将其指向使用其公共 IP(可以在 EC2 控制面板中找到)的实例。

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

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

  1. 如果您希望启用 http 到 https 的重定向(推荐),则取消以下块的注释,在 ingress-nginx 部分中,位于 /var/lib/openreplay/vars.yaml
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 并从我们的社区获得帮助。