本页介绍了如何为客户托管的部署安装 Looker 应用。
托管 Looker 应用与数据所在的位置无关;数据始终保留在数据库中,不会复制到 Looker 实例。
部署规范
如果您要在未连接到互联网的网络上运行 Looker,可能需要设置代理服务器以与 Looker 许可服务器通信,或者使用仅进行 Web 调用的无服务器 Web 服务,例如 BigQuery。
在满足以下最低要求的专用机器上安装 Looker 应用:
- 1.2 GHz CPU;Looker 建议使用双核或更多内核。
- 8 GB 可用 RAM。
- 10 GB 可用磁盘空间。
- 2 GB 交换文件空间。
- Linux。我们使用 Ubuntu Linux(LTS 版本)进行内部 Looker 托管,并建议没有 Linux 偏好的客户使用此版本。不过,我们支持在所有主要企业 Linux 发行版的发布版本上运行 Looker,包括 RedHat、CentOS 和 Amazon Linux。Looker 仅在具有 x64 指令集的 Linux 版本上受支持。
Java OpenJDK 11.0.12+ 或 HotSpot 1.8 update 161+。Looker 使用 OpenJDK(版本 11)来提升性能和内存用量。Looker 建议使用 JDK 而不是 JRE,以利用额外的问题排查工具。此外,Looker 建议您在新的 Java 更新发布后过渡到这些更新。目前,我们 不 支持其他版本的 Java、Oracle JDK 和 OpenJDK。
系统上必须存在
libssl和libcrypt.so。语言区域和字符编码:为确保 Looker 正确处理和显示应用所有部分的国际字符,服务器环境必须配置为使用 UTF-8 语言区域。这对于处理包含多字节字符集(例如日语、中文和许多其他语言中使用的字符集)的数据至关重要。 我们建议在运行 Looker 应用的机器或容器中设置以下环境变量:
export LANG=en_US.UTF-8 export LC_ALL=en_US.UTF-8您可以将这些命令添加到 shell 配置文件(例如
~/.bashrc、~/.profile)或部署的环境配置文件中。如果未配置 UTF-8 语言区域,可能会导致字符编码问题,特殊字符可能会在 Looker 界面、下载内容和 API 响应中显示为问号、方框或其他不正确的符号。您必须允许通过 TCP 端口
9999向 Looker 实例发送入站流量。如果用户需要 API 访问权限,您必须允许通过 TCP 端口
19999向 Looker 实例发送入站流量。如果 Looker 从 AWS VPC 私有网络连接到 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 应用。looker用户的 ulimit 为4096或更高。您可以通过将以下行添加到/etc/security/limits.conf来实现此目的:looker soft nofile 4096 looker hard nofile 4096通过 NTP 或等效方式进行时间同步。
不得使用 noexec 选项装载
/tmp文件夹。不得在 NFS 卷上装载
looker主目录。建议将服务器的时区设置为 UTC,但这不是必需的。
Looker 23.6 及更高版本需要 Git 2.39.1 或更高版本。
虽然不是必需的,但 Netcat 有助于排查网络连接问题。例如,如需在基于 Ubuntu 的服务器上安装 Netcat,常用的命令是:
sudo apt-get install netcat如果需要,您可以设置代理服务器来处理 Looker 需要向 localhost 上的“核心”发出的 HTTP(S) 请求。如需与 Looker 本地代理服务器通信,您需要在
lookerstart.cfg中添加一些特殊参数:添加http.nonProxyHosts=localhost以启用对 Looker localhost 的访问,而无需通过代理。
为避免维护和资源冲突,您不应使用 Looker 服务器来托管其他应用。
启用 ntpd 或 chronyd
NTP 代表网络时间协议。它使主机系统时钟始终保持正确的时间,这是 Looker 正常运行所必需的。只要时间保持同步,Looker 就不要求使用任何特定的时间同步软件。没有必要运行 NTP 服务器,只需要 NTP 客户端。 您可以将 chronyd 替换为 NTP。
如需了解如何启用 ntpd 或 chronyd,请参阅操作系统供应商的文档。
创建加密密钥
Looker 使用 AES-256 Galois/Counter Mode (GCM) 加密来加密内部存储的敏感数据,包括:
- Looker 内部数据库的备份
- 数据库和服务连接信息
- 用户身份验证信息
- 用户属性值
- 缓存或准备交付的客户数据
如需查看 Looker 加密的数据的详细列表,请提交支持请求。
数据使用唯一的数据密钥进行加密,并包含已签名且已进行版本控制的加密信封,以确保验证。此模式需要使用外部客户主密钥 (CMK)。CMK 用于派生、加密和解密密钥加密密钥 (KEK),而 KEK 又用于派生、加密和解密数据密钥。
加密仅用于 Looker 内部数据库和缓存。客户数据库不会以任何方式受到 Looker 加密的影响。此外,只有静态数据(存储在磁盘上的数据)会以这种方式加密。
客户托管的安装可以使用自己的 AWS KMS 账号或自己的自定义密钥管理系统。所有数据密钥和 KEK 都在客户托管的 Looker 安装中进行加密和内部使用。如果您未使用 AWS KMS,则应将外部 CMK 保存在安全且永久的位置!在加密内部数据库后丢失 CMK 可能会导致实例丢失。
如果您使用的是 AWS KMS
如果您使用的是 AWS KMS,请使用 AWS 管理控制台或 API 创建 CMK。
创建 CMK 后,Looker 建议您创建新的 IAM 角色,该角色对于您的 CMK 是唯一的,并将其与 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,请生成 Base64、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 应用
创建组
looker。sudo groupadd looker创建用户
looker及其主目录。sudo useradd -m -g looker looker切换到
looker用户;请勿以 root 身份运行 Looker。sudo su - looker在主目录中创建
looker子目录。mkdir ~/looker更改为
looker子目录。cd ~/looker确保您位于正确的目录中。
pwd如果您的用户目录位于
/home下,则此命令的输出应为/home/looker/looker。通过 下载 Looker JAR 文件 文档页面上的方法之一下载所选的 Looker JAR 文件。确保这两个 JAR 文件是同一版本;使用不同版本的核心 JAR 文件和依赖项 JAR 文件可能会导致 Looker 安装不稳定。
在 looker-open-source GitHub 代码库中下载最新的启动脚本。如果您希望 Looker 在系统启动时运行,可以下载 looker_init 脚本,并同时使用
systemd和init脚本选项。将启动脚本(名为
looker)和 Looker JAR 文件(名为looker-x.x.x.jar和looker-dependencies-x.x.x.jar,其中x.x.x是版本号)移到新的~/looker目录。将
looker-x.x.x.jar重命名为looker.jar,并将looker-dependencies-x.x.x.jar重命名为looker-dependencies.jar。启动脚本会自动确定要为 Looker 分配多少 Java 内存。如果您想手动自定义此值,请参阅建议的 Java 内存设置文档页面了解详情。
使 Looker 启动脚本可执行(将权限设置为
0750)。chmod 0750 looker以
looker用户的身份从 shell 启动 Looker 进程。./looker start如需获取启动标志帮助,请使用:
java -jar looker.jar --help或者,如需获取启动命令帮助,请使用:
java -jar looker.jar help打开浏览器,访问
https://hostname:9999,其中hostname是运行 Looker 的主机的 DNS 名称。您应在网址中使用
https,这将创建一个安全警告,您需要绕过该警告。在服务器上安装有效的 SSL 证书之前,此警告将一直存在。输入从 Looker 分析师处获得的许可密钥。
输入名称、电子邮件地址和密码,以创建您的第一个账号。
创建 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 启动选项了。