Looker 애플리케이션 설치

이 페이지에서는 고객 호스팅 배포를 위해 Looker 애플리케이션을 설치하는 방법을 설명합니다.

Looker 애플리케이션 호스팅은 데이터의 위치와 무관합니다. 데이터는 항상 데이터베이스 내에 유지되며 Looker 인스턴스에 복사되지 않습니다.

배포 사양

인터넷에 연결되지 않은 네트워크에서 Looker를 실행하려면 Looker의 라이선스 서버와 통신하도록 프록시 서버를 설정하거나 BigQuery와 같이 웹 호출만 수행하는 서버리스 웹 서비스를 사용해야 할 수 있습니다.

다음 최소 요구사항을 충족하는 전용 머신에 Looker 애플리케이션을 설치합니다.

  • 1.2GHz CPU, Looker는 2개 이상의 코어 권장
  • 8GB 여유 RAM
  • 10GB의 여유 디스크 공간
  • 2GB 스왑 파일 공간
  • Linux. Google은 내부 Looker 호스팅에 Ubuntu Linux(LTS 출시 버전)를 사용하며 Linux 환경설정이 없는 고객에게 권장됩니다. 하지만 RedHat, CentOS, Amazon Linux를 비롯한 모든 주요 엔터프라이즈 Linux 배포판의 출시 버전에서 Looker를 지원합니다. Looker는 x64 명령 집합이 있는 Linux 버전에서만 지원됩니다.
  • Java OpenJDK 11.0.12 이상 또는 HotSpot 1.8 업데이트 161 이상이 필요합니다. Looker는 성능 및 메모리 사용량 개선을 위해 OpenJDK(버전 11)를 사용합니다. 추가 문제 해결 도구를 활용할 수 있도록 JRE 대신 JDK를 사용하는 것이 좋습니다. 또한 새로운 Java 업데이트가 출시되면 해당 업데이트로 전환하는 것이 좋습니다. 다른 버전의 Java, Oracle JDK, OpenJDK는 현재 지원되지 않습니다.

  • 시스템에 libssllibcrypt.so가 있어야 합니다.

  • 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 연결 유지 설정입니다. 재부팅 중에도 지속하려면 /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에서 '코어'에 대해 수행할 수 있어야 하는 HTTP(S) 요청을 처리하도록 프록시 서버를 설정할 수 있습니다. Looker 로컬 프록시 서버와 통신하려면 lookerstart.cfg에 몇 가지 특수 인수를 추가해야 합니다. 프록시를 통하지 않고 Looker localhost에 액세스할 수 있도록 http.nonProxyHosts=localhost를 추가하세요.

유지보수 및 리소스 충돌을 방지하려면 Looker 서버를 사용하여 다른 애플리케이션을 호스팅하면 안 됩니다.

ntpd 또는 chronyd 사용 설정

NTP는 네트워크 시간 프로토콜을 나타냅니다. 이를 통해 호스트 시스템 시계가 항상 올바른 시간을 유지할 수 있으며 이는 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를 만든 후 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를 사용하지 않는 경우 Base64, 32바이트 CMK를 생성합니다. 환경 변수 또는 파일에 CMK를 저장할 수 있습니다.

  • CMK를 생성하고 환경 변수에 저장하려면 다음 명령어를 사용해서 CMK를 생성할 수 있습니다.

    openssl rand -base64 32
    

    CMK를 생성한 후 이를 복사하고 다음 명령어를 사용해서 LKR_MASTER_KEY_ENV 환경 변수에 CMK를 저장합니다. 여기서 <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 파일을 사용하면 Looker가 불안정한 상태에서 설치될 수 있습니다.

  8. 최신 시작 스크립트를 looker-open-source GitHub 저장소에서 다운로드합니다. 시스템 시작 시 Looker를 실행하려면 looker_init 스크립트를 다운로드하고 systemdinit 스크립트 옵션을 모두 사용하면 됩니다.

  9. 시작 스크립트(looker) 및 Looker JAR 파일 (looker-x.x.x.jarlooker-dependencies-x.x.x.jar, 여기서 x.x.x는 버전 번호)을 새 ~/looker 디렉터리로 이동합니다.

  10. looker-x.x.x.jarlooker.jar로, looker-dependencies-x.x.x.jarlooker-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 자동 배포

Ansible 또는 Chef와 같은 구성 관리 도구를 사용하여 Looker를 배포할 수 있습니다. 자동 배포용 Ansible 역할의 예는 구성 관리 도구 문서 페이지에서 확인할 수 있습니다.

하이퍼바이저 조정

Looker는 Java 가상 머신으로 실행됩니다. Looker 인스턴스가 VMware 게스트에 있는 경우 일부 성능 조정이 필요할 수 있습니다. VMware Java 권장사항 가이드를 참조하세요.

다른 가상화 플랫폼의 경우 하이퍼바이저에서 Looker 호스트의 메모리를 예약하도록 성능을 개선할 수 있습니다. Amazon EC2에서는 제어할 수 없습니다. 다른 공급업체의 경우 해당 문서에서 자세한 내용을 확인해야 합니다.

MySQL 백엔드 데이터베이스(옵션) 설정

기본적으로 Looker는 HyperSQL 인메모리 데이터베이스를 사용하여 구성, 사용자, 기타 데이터를 저장합니다. 하지만 외부 MySQL 데이터베이스를 사용하여 Looker 내부 정보를 저장할 수 있습니다. MySQL 백엔드 데이터베이스 구성 및 조정에 대한 자세한 내용은 MySQL로 마이그레이션 문서 페이지를 참조하세요.

다음 단계

Looker를 설치한 후에는 Looker 시작 옵션을 구성할 수 있습니다.