Looker アプリケーションのインストール

このページでは、セルフホスト型デプロイ用に Looker アプリケーションをインストールする方法について説明します。

Looker アプリケーションのホスティングは、データが存在する場所に関係なく行われます。データは常にデータベースに保持され、Looker インスタンスにはコピーされません。

デプロイの仕様

インターネットに接続していないネットワークで Looker を実行する場合、Looker のライセンス サーバーと通信するようにプロキシ サーバーを設定するか、BigQuery などのウェブ呼び出しのみを行うサーバーレス ウェブサービスを使用するようにプロキシ サーバーを設定しなければならないことがあります。

次の最小要件を満たす専用マシンに Looker アプリケーションをインストールします。

  • 1.2 GHz CPU。Looker では 2 つ以上のコアをおすすめします。
  • 8 GB の空き RAM。
  • 10 GB の空きディスク容量。
  • 2 GB のスワップ ファイル スペース
  • Linux。Google では社内の Looker ホスティングに Ubuntu Linux(LTS リリース)を使用しています。Linux をご希望でないお客様にはこれをおすすめします。ただし、RedHat、CentOS、Amazon Linux など、主要なすべてのエンタープライズ Linux ディストリビューションのリリース バージョンでは Looker がサポートされています。Looker は、x64 の命令セットを搭載する Linux バージョンでのみサポートされています。
  • Java OpenJDK 11.0.12 以降、OpenJDK 8.0.181 以降、または HotSpot 1.8 アップデート 161 以降。Looker では、パフォーマンスとメモリ使用量を改善するために OpenJDK(バージョン 11)を使用しています。Looker では、追加のトラブルシューティング ツールを活用するために、JRE ではなく JDK を推奨しています。また、新しい Java アップデートがリリースされたら、それに移行することをおすすめします。現時点では、Java、Oracle JDK、OpenJDK の他のバージョンはサポートされていません

  • libssllibcrypt.so がシステム上に存在している必要があります。

  • TCP ポート 9999 を介した Looker インスタンスへの受信トラフィックを許可する必要があります。

  • ユーザーが API アクセスを必要とする場合、TCP ポート 19999 を介した Looker インスタンスへの受信トラフィックを許可する必要があります。

  • Looker が AWS VCP プライベート ネットワークから AWS Redshift に接続する場合は、MTU を 1500 に設定する必要があります。この設定の詳細については、アマゾン ウェブ サービスの記事インスタンスの MTU を構成するをご覧ください。データベース接続テスト中に MTU 設定が 1,500 を超えていることが検出されると、次のエラーが表示されます。

    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 キープアライブ設定。再起動後も接続を保持するには、/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 という名前のユーザー。

  • 4096 以上の looker ユーザーの ulimit。/etc/security/limits.conf に次の行を追加します。

    looker     soft     nofile     4096
    looker     hard     nofile     4096
    
  • NTP または同等のプロトコルによる時刻の同期。

  • /tmp フォルダは、noexec オプションを使用してマウントしないでください

  • looker ホーム ディレクトリを NFS ボリュームにマウントしないでください

  • サーバーのタイムゾーンを UTC に設定することをおすすめしますが、必須ではありません。

  • Looker 23.6 以降には Git 2.39.1 以降が必要です。

  • 必須ではありませんが、Netcat を使用するとネットワーク接続の問題のトラブルシューティングに役立ちます。Ubuntu ベースのサーバーなどに Netcat をインストールするには、次の一般的なコマンドを使用します。

    sudo apt-get install netcat
    
  • 必要に応じて、Looker が localhost の「core」に対して実行する必要がある HTTP(S) リクエストを処理するようにプロキシ サーバーを設定できます。Looker のローカル プロキシ サーバーと通信するには、lookerstart.cfg にいくつかの特別な引数を追加する必要があります。プロキシを経由せずに Looker の localhost にアクセスできるようにするには、http.nonProxyHosts=localhost を追加します。

メンテナンスやリソースの競合を避けるため、Looker サーバーを使用して他のアプリケーションをホストしないでください。

ntpd または chronyd を有効にする

NTP は、ネットワーク タイム プロトコル(Network Time Protocol)の略です。これにより、ホストのシステム クロックは常に正しい時刻を保つことができます。これは、Looker が正しく機能うえで必要なことです。Looker では、時刻が同期されている限り、特定の時刻同期ソフトウェアを使用する必要はありません。NTP サーバーを実行する必要はなく、必要なのは NTP クライアントのみです。NTP の代わりに chronyd を使用することもできます。

ntpd または chronyd を有効にする方法については、ご使用の OS ベンダーのドキュメントをご覧ください。

暗号鍵の作成

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 を作成したら、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_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 アプリケーションをインストールする

  1. グループ looker を作成します。

    sudo groupadd looker
    
  2. ユーザー looker とそのホーム ディレクトリを作成します。

    sudo useradd -m  -g looker  looker
    
  3. looker ユーザーに切り替えます。Looker を root として実行しないでください

    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. Looker-open-source GitHub リポジトリで最新の起動スクリプトをダウンロードします。Looker をシステムの起動時に実行したい場合は、looker_init スクリプトをダウンロードし、systemdinit の両方のスクリプト オプションを使用できます。

  9. 起動スクリプト(looker)と Looker JAR ファイル(looker-x.x.x.jarlooker-dependencies-x.x.x.jarx.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 ユーザーとしてシェルから Looker プロセスを開始します。

    ./looker start
    
  14. 起動フラグのヘルプを表示するには、次のコマンドを使用します。

    java -jar looker.jar --help
    

    または、起動コマンドのヘルプを表示するには、次のコマンドを使用します。

    java -jar looker.jar help
    
  15. ブラウザで https://hostname:9999 を開きます。ここで、hostname は Looker を実行しているホストの DNS 名です。

    URL に https を使用すると、セキュリティ警告が表示され、バイパスが必要になります。この警告は、有効な SSL 証明書がサーバーにインストールされるまで表示されます。

  16. Looker アナリストから取得したライセンスキーを入力します。

  17. 名前、メールアドレス、パスワードを入力し、最初のアカウントを作成します。

DNS レコードを作成する

サーバーの looker.[yourdomain].com DNS レコードを追加します。この手順は省略可能ですが、行うことをおすすめします。

Looker の自動デプロイ

Looker は、Ansible や Chef などの構成管理ツールを使用してデプロイできます。自動デプロイ用の Ansible ロールの例については、構成管理ツールのドキュメント ページをご覧ください。

ハイパーバイザの調整

Looker は Java 仮想マシンとして動作します。Looker インスタンスが VMware ゲスト上にある場合は、パフォーマンスの調整が必要になることがあります。VMware の Java ベスト プラクティス ガイドをご覧ください。

他の仮想化プラットフォームでは、ハイパーバイザから Looker ホストのメモリを予約するとパフォーマンスが向上する場合があります。Amazon EC2 ではパフォーマンスを制御できませんが、その他のベンダーについては、そのベンダーのドキュメントをご覧ください。

オプションの MySQL バックエンド データベースの設定

デフォルトでは、Looker は HyperSQL のインメモリ データベースを使用し、構成やユーザーなどのデータを保存しています。外部の MySQL データベースを使用して Looker の内部情報を格納することもできます。MySQL バックエンド データベースの構成と調整については、MySQL への移行のページをご覧ください。

次のステップ

Looker をインストールしたら、Looker の起動オプションを設定できます。