安装 Looker 应用

本页面介绍了如何为客户托管的部署安装 Looker 应用。

Looker 应用的托管与数据所在的位置无关;数据始终位于数据库中,并且不会复制到 Looker 实例中。

部署规范

如果您要在未连接到互联网的环境中运行 Looker,则可能需要设置代理服务器以与 Looker 的许可服务器通信,或使用仅进行网络调用的无服务器网络服务(如 BigQuery)。

在满足以下要求的专用机器上安装 Looker 应用:

  • 1.2 GHz CPU;Looker 建议使用两个或更多核心。
  • 8 GB 可用 RAM。
  • 10 GB 可用磁盘空间。
  • 2 GB 交换文件空间。
  • Linux。我们使用 Ubuntu Linux(LTS 版本)来托管内部 Looker,建议没有 Linux 偏好设置的客户使用。不过,对于所有主要的企业 Linux 发行版(包括 RedHat、CentOS 和 Amazon Linux),我们都支持 Looker。
  • Java OpenJDK 11.0.12+、OpenJDK 8.0.181+ 或 HotSpot 1.8 更新 161+。Looker 使用 OpenJDK(版本 11)来提升性能和内存用量。Looker 推荐 JDK(而不是 JRE),以便利用额外的问题排查工具。此外,Looker 建议您在新的 Java 更新发布后过渡到这些更新。目前支持其他版本的 Java、Oracle JDK 和 OpenJDK。
  • 系统中必须存在 libssllibcrypt.so
  • 您必须允许通过 TCP 端口 9999 向 Looker 实例发送入站流量。
  • 如果用户需要 API 访问权限,您必须允许通过 TCP 端口 19999 向 Looker 实例发送入站流量。
  • 如果 Looker 从 AWS VCP 专用网络连接到 AWS Redshift,则必须将 MTU 设置为 1500。如需详细了解此设置,请参阅这篇 Amazon Web Services 文章中的配置实例的 MTU 部分。在数据库连接测试期间,如果 Looker 检测到 MTU 设置大于 1500,则会显示以下错误:

    MTU of network interface eth0 is too large (> 1500).
    If Looker instance and Redshift cluster are within the same VPC,
    this warning can be ignored.
    
  • 以下 TCP keepalive 设置。如需通过重新启动来保留数据,应在 /etc/sysctl.conf/etc/sysctl.d 目录中的文件中设置:

    net.ipv4.tcp_keepalive_time=200
    net.ipv4.tcp_keepalive_intvl=200
    net.ipv4.tcp_keepalive_probes=5
    
  • 群组 looker 中名为 looker 的用户,用于运行 Looker 应用。

  • 4096looker 用户的 ulimit。为此,请将以下行添加到 /etc/security/limits.conf 中:

    looker     soft     nofile     4096
    looker     hard     nofile     4096
    
  • 通过 NTP 或等效函数同步时间。

  • /tmp 文件夹不得使用 noexec 选项装载。

  • looker 主目录不应装载到 NFS 卷上。

  • 建议将服务器的时区设置为世界协调时间 (UTC),但不强制。

  • 需要 Git 1.8 或更高版本。虽然不一定需要最新的稳定版 Git,但这对于排查 Git 问题会很有帮助。

  • Netcat 不是必需的,但有助于排查网络连接问题。例如,如需在基于 Ubuntu 的服务器上安装 Netcat,常用命令如下:

    sudo apt-get install netcat
    
  • 如有需要,您可以设置代理服务器以处理 Looker 需要能够向本地主机的 &core 发出的 HTTP(S) 请求。要与 Looker 的本地代理服务器通信,您必须在 lookerstart.cfg 中添加一些特殊参数:添加 http.nonProxyHosts=localhost 即可访问 Looker 的本地主机,而无需通过代理。通过网络代理社区主题将 Looker 连接到 BigQuery 的示例展示了如何创建这样的连接。

为避免维护和资源冲突,不应使用 Looker 服务器来托管其他应用。

启用 ntpd 或 chronyd

NTP 代表网络时间协议。它可让主机的系统时钟始终保持正确时间,而 Looker 需要此时间才能正常运行。只要时间保持同步,Looker 就不需要使用任何特定的时间同步软件。不需要运行 NTP 服务器,只需 NTP 客户端。您可以用 chronyd 替换 NTP。

如需了解如何启用 ntpd 或 chronyd,请参阅操作系统供应商的文档。

创建加密密钥

Looker 使用 AES-256 Galois/计数器模式 (GCM) 加密来加密内部存储的敏感数据,包括:

  • Looker 的内部数据库的备份
  • 数据库和服务连接信息
  • 用户身份验证信息
  • 用户属性值
  • 缓存或准备传送的客户数据

如需查看 Looker 加密的数据的详细列表,请与您的 Looker 客户经理联系,或者点击与我们联系,在 Looker 的帮助中心内打开支持请求。

数据是使用唯一数据密钥加密的,并且包含经过签名和版本控制的加密信封,以确保验证。此模式需要使用外部客户主密钥 (CMK)。CMK 用于派生、加密和解密密钥加密密钥 (KEK),而密钥加密密钥又用于派生、加密和解密数据密钥。

加密功能仅适用于 Looker 的内部数据库和缓存,客户数据库不会以任何方式受到 Looker 的加密的影响。此外,只有静态数据(存储在磁盘中的数据)会以这种方式加密。

客户托管的安装可以使用自己的 AWS KMS 帐号或自定义密钥管理系统。在客户托管的 Looker 安装过程中,所有数据密钥和 KEK 都会经过加密并在内部使用。如果您未使用 AWS KMS,则外部 CMK 应存放在安全且永久的位置!在加密内部数据库后丢失 CMK 可能会导致实例丢失。

如果您使用的是 AWS KMS

如果您使用的是 AWS KMS,请使用 AWS 管理控制台或 API 创建 CMK

创建 CMK 后,Looker 建议您为 CMK 创建一个新的 IAM 角色,并将其关联到您的 Looker 实例

以下是包含 CMK 所需的最低权限的 IAM 角色示例:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "VisualEditor0",
            "Effect": "Allow",
            "Action": "kms:GenerateRandom",
            "Resource": "*"
        },
        {
            "Sid": "VisualEditor1",
            "Effect": "Allow",
            "Action": [
                "kms:Decrypt",
                "kms:Encrypt",
                "kms:Generate*",
            ],
            "Resource": "arn:aws:kms:*:*:key/*"
        }
    ]
}

创建 CMK 和新的 IAM 角色后,请将 AWS_REGION 环境变量设置为您的 AWS 区域,并将 LKR_AWS_CMK 环境变量设置为 CMK 的别名:

export AWS_REGION=<AWS_region>
export LKR_AWS_CMK=alias/<CMK_alias>

(可选)您还可以设置 LKR_AWS_CMK_EC 环境变量以设置自定义 AWS 加密上下文。如果您未设置此环境变量,Looker 将使用默认的加密上下文字符串 Looker_Encryption_Context

export LKR_AWS_CMK_EC=<My_Encryption_Context>

如果您未使用 AWS KMS

如果您未使用 AWS KMS,请生成 64 位、32 字节的 CMK。您可以将 CMK 存储在环境变量或文件中:

  • 如需生成 CMK 并将其存储在环境变量中,您可以使用以下命令生成 CMK:

    openssl rand -base64 32
    

    生成 CMK 后,将其复制并使用以下命令将 CMK 存储在 LKR_MASTER_KEY_ENV 环境变量中(其中 <CMK_value> 是您使用上一个命令生成的 CMK):

    export LKR_MASTER_KEY_ENV=<CMK_value>
    
  • 如需生成 CMK 并将其存储在文件中,您可以使用以下命令(其中 <path_to_key_file> 是用于存储 CMK 的路径和文件名):

    openssl rand -base64 32 > <path_to_key_file>
    

    生成 CMK 文件后,将密钥文件权限设置为当前只读用户:

    chmod 0400 <path_to_key_file>
    

生成 CMK 后,请务必将其存储在安全永久位置,然后再继续!在加密内部数据库后丢失 CMK 可能会导致实例丢失。

生成并存储 CMK 后,请设置 LKR_MASTER_KEY_ENV 环境变量:

  • 如果您要将 CMK 存储在环境变量中,请将 LKR_MASTER_KEY_ENV 环境变量设置为 CMK 的值:

    export LKR_MASTER_KEY_ENV=<CMK_value>
    
  • 如果您要将 CMK 存储在文件中,请将 LKR_MASTER_KEY_FILE 环境变量设置为 CMK 文件的路径:

    export LKR_MASTER_KEY_FILE=<path_to_key_file>
    

生成 CMK 后,请务必将其存储在安全永久位置,然后再继续!在加密内部数据库后丢失 CMK 可能会导致实例丢失。

安装 Looker 应用

  1. 创建群组“looker”。

    sudo groupadd looker
    
  2. 创建用户 looker 及其主目录。

    sudo useradd -m  -g looker  looker
    
  3. 切换到 looker 用户;请勿以根用户身份运行 Looker

    sudo su - looker
    
  4. 在主目录中创建 looker 子目录。

    mkdir ~/looker
    
  5. 切换到 looker 子目录。

    cd ~/looker
    
  6. 确保您位于正确的目录中。

    pwd
    

    如果您的用户目录位于 /home 下,则此命令的输出应为 /home/looker/looker

  7. 通过下载 Looker JAR 文件文档页面上的一种方法下载所需的 Looker JAR 文件。确保两个 JAR 文件是相同的版本;使用不同版本的核心 JAR 文件和依赖项 JAR 文件可能会导致 Looker 安装不稳定。

  8. 此 GitHub 代码库下载最新的启动脚本。如果您希望 Looker 在系统启动时运行,可以下载,同时使用 systemdinit 脚本选项。

  9. 将启动脚本(名为 looker)和 Looker JAR 文件(名为 looker-x.x.x.jarlooker-dependencies-x.x.x.jar,其中 x.x.x 是版本号)移至新的 ~/looker 目录。

  10. looker-x.x.x.jar 重命名为 looker.jar,并将 looker-dependencies-x.x.x.jar 重命名为 looker-dependencies.jar

  11. 启动脚本会自动确定要分配给 Looker 的 Java 内存量。如果您想手动自定义此值,请参阅推荐的 Java 内存设置文档页面,以了解详情。

  12. 将 Looker 启动脚本设为可执行文件(将权限设置为 0750)。

    chmod 0750 looker
    
  13. looker 用户身份从 shell 启动 Looker 进程。

    ./looker start
    
  14. 如需启动标志帮助,请使用以下命令:

    java -jar looker.jar --help
    

    或者,如需启动命令帮助,请使用以下命令:

    java -jar looker.jar help
    
  15. 打开浏览器并转到 https://hostname:9999,其中 hostname 是运行 Looker 的主机的 DNS 名称。

    您应该在网址中使用 https,这样会创建需要绕过的安全警告。在服务器上安装有效的 SSL 证书之前,此警告会一直显示。

  16. 输入从 Looker 分析师处获取的许可密钥。

  17. 输入名称、电子邮件地址和密码以创建您的第一个帐号。

创建 DNS 记录

为服务器添加 looker.[yourdomain].com DNS 记录。这是可选步骤,但建议您执行此步骤。

自动部署 Looker

Looker 可以使用配置管理工具(例如 Ansible 或 Chef)进行部署。如需了解自动部署的 Ansible 角色示例,请参阅配置管理工具文档页面。

Hypervisor 微调

Looker 作为 Java 虚拟机运行。如果您的 Looker 实例位于 VMware 客户机上,您可能需要进行一些性能调整。请参阅 VMware Java 最佳做法指南

在其他虚拟化平台上,通过 Hypervisor 预留 Looker 主机的内存可能会提高性能。这在 Amazon EC2 上是无法控制的;但是,对于其他供应商,您应参阅其文档了解详情。

设置可选的 MySQL 后端数据库

默认情况下,Looker 使用 HyperSQL 内存数据库来存储其配置、用户和其他数据。不过,您可以使用外部 MySQL 数据库来存储 Looker 的内部信息。如需了解如何配置和优化 MySQL 后端数据库,请参阅迁移到 MySQL 文档页面。

后续步骤

安装 Looker 后,您就可以配置 Looker 启动选项了。