Tableau Server 컨테이너 - 이미지 사용

소개

Tableau Server 컨테이너는 Tableau의 첫 번째 컨테이너 기반 서버 제품군입니다. Tableau Server 컨테이너는 Linux Docker 컨테이너 내부에서 실행되는 올인원 Tableau Server 인스턴스입니다. 즉, Tableau Server 컨테이너 이미지는 완전히 독립된 전체 Tableau Server 응용 프로그램을 실행하는 docker 이미지입니다. Tableau Server 컨테이너는 컨테이너 기반 환경에서 실행되는 Tableau Server를 지원하기 위한 수많은 단계 중 첫 번째입니다. Tableau Server 컨테이너 개념을 이해하는 가장 쉬운 방법은 Tableau Server가 사전 설치된 VM(가상 컴퓨터)이라고 생각하는 것입니다. 이미지는 UBI 8 이미지(버전 2022.1 이하의 경우 CentOS 7.x)를 기반으로 하며 컨테이너 내부에서 systemd 대신 supervisord를 실행합니다. 컨테이너가 supervisord를 시작하면 Tableau Server가 즉시 초기화 및 시작됩니다. 여기에 있는 많은 설명서는 Tableau Server를 Docker 환경에서 실행할 수 있도록 구성을 제공하고 자동화를 활용하는 방법을 설명하는 데 목적이 있습니다.

Tableau Server 컨테이너 이미지 설정 도구를 사용하면 컨테이너 이미지를 만들고 사용자 지정 패키지와 아티팩트를 포함하도록 사용자 지정할 수 있습니다. 이 도구의 주요 기능 중 하나는 컨테이너 이미지를 만들고 사용자 지정 데이터 커넥터를 설치하는 것입니다.

개념 증명 시나리오에서 Tableau Server 컨테이너 이미지를 빠르게 테스트하려면 Tableau Server 컨테이너 - 빠른 시작을 참조하십시오.

Tableau Server 컨테이너 제한 사항

  • Tableau Server 컨테이너는 서버 ATR을 사용한 라이선스 활성화만 지원합니다. 서버 ATR을 사용한 오프라인 활성화는 2023.1 이상에서 지원됩니다. 이 기능은 컨테이너에서 사용할 수 있지만 추가 단계와 승인이 필요합니다. Air-Gapped 환경이나 오프라인 환경에서 Tableau Server 컨테이너를 실행해야 하는 경우 계정 담당자에게 자세한 내용을 문의하십시오.
  • Tableau Server 컨테이너는 현재 RMT(Resource Monitoring Tool) 에이전트를 지원하지 않습니다.
  • Tableau Server 컨테이너에서는 Kerberos가 지원되지 않습니다.

Tableau Server 컨테이너 이미지

Tableau Server 컨테이너 이미지는 Tableau Server의 모든 것을 포함하는 Docker 이미지입니다. 이 이미지는 Tableau Server 컨테이너 설정 도구의 Tableau Server를 사용하여 작성됩니다. 작성된 경우 이 이미지에 Tableau Server가 포함되지만 아직 초기화된 상태는 아닙니다. Tableau Server 컨테이너 이미지의 기본 사용자는 권한이 없는 루트가 아닌 사용자입니다.

필수 요건

configure-container-host 스크립트 실행

Tableau Server가 컨테이너 없이 설치된 경우 특정 리소스 제한과 코어 덤프 속성이 설치 프로세스의 일부로 변경됩니다. 이 작업은 Tableau Server의 성능 최적화를 지원하기 위해 수행됩니다. Tableau Server 컨테이너 이미지에는 호스트 컴퓨터에서 이러한 변경을 수행할 수 있는 기능이 없으므로 Tableau Server 컨테이너 이미지를 실행할 컴퓨터에서 Tableau Server 컨테이너 설정 도구에 제공된 configure-container-host 스크립트를 실행하는 것이 좋습니다. 이렇게 하면 Tableau Server 컨테이너 이미지의 성능을 비컨테이너 성능과 동등하게 유지하는 데 도움이 됩니다.

configure-container-host 스크립트 실행:

  1. Tableau Server 컨테이너 설정 도구의 최상위 디렉터리에서 스크립트(configure-container-host)를 찾습니다.
  2. Tableau Server를 실행할 환경에 복사합니다.

  3. Tableau Server 컨테이너 이미지의 기본 사용자로 실행될, 권한이 없는 사용자 계정/uid를 결정합니다. 이 사용자는 호스트 컴퓨터에 있어야 하며 Tableau Server 컨테이너 UNPRIVILEGED_TABLEAU_UID 환경 변수에 설정된 UID와 일치해야 합니다. Docker 이미지를 만들 때 이를 설정하지 않은 경우 컨테이너 내부의 기본 권한 없는 사용자 ID는 999입니다. Docker 사용자 매핑을 사용하는 경우 이 UID는 호스트 컴퓨터에 있는 사용자와 일치해야 합니다.

  4. 스크립트를 루트로 실행합니다.

    sudo ./configure-container-host -u <uid>

이미지 실행

Tableau Server 컨테이너 docker 이미지를 실행하는 가장 간단한 명령은 다음과 같습니다.

docker run \
-e LICENSE_KEY=<key>
-p 8080:8080
-d <Tableau Server in a Container image ID or tag>

이를 수행하면 백그라운드에서 Docker가 실행되며, 일정 시간이 지나면 Tableau Server의 인스턴스가 완전히 설치됩니다. Tableau Server는 이미지를 실행하는 컴퓨터의 하드웨어에 따라 완전히 시작하는 데 10~20분 정도 걸릴 수 있습니다. docker ps 명령을 입력하여 컨테이너가 실행 중인지 확인할 수 있습니다. Tableau Server가 작동하면 초기 Tableau Server 관리자 계정을 만들어야 합니다. 이 단계는 자동화할 수 있습니다. 자세한 내용은 초기 Tableau Server 관리자 자동화를 참조하십시오.

기본 실행 인수 요약

Docker run 명령에 사용되는 모든 옵션은 필수이며, 이미지의 다른 기능을 활용하기 위해 추가적인 옵션을 제공하는 경우가 많습니다. 지금은 Tableau Server 컨테이너를 위한 가장 간단한 Docker run 명령에 사용되는 인수만 살펴보겠습니다.

인수설명
-e LICENSE_KEY=<key>Tableau Server에는 라이선스가 부여되어야 합니다. 이 환경 변수는 서버에 라이선스를 부여하는 데 사용되는 키를 저장합니다. 이것은 초기화 프로세스의 필수 구성 요소입니다. 여러 라이선스를 쉼표로 구분하여 입력할 수 있습니다.
-p 8080:8080docker에게 컨테이너 내부에서 포트 8080을 열고 해당 포트를 호스트 컴퓨터의 포트 8080에 바인딩하라고 지시합니다. 첫 번째 8080 값을 구성할 수 있습니다. 이 값을 변경하면 호스트에서 매핑된 포트가 수정됩니다. 기본적으로 Tableau Server는 컨테이너 내부에서 포트 8080을 통해 사용자 트래픽을 수신한다고 예상합니다. 이 포트를 다른 호스트 포트를 통해 노출할지, 아니면 노출하지 않을지 선택할 수 있습니다.

 

초기 Tableau Server 관리자 자동화

Tableau Server를 처음 시작하면 Tableau Server에 대한 원격 네트워크 연결을 허용하기 전에 초기 관리자 사용자를 만들어야 합니다. 이 작업은 컨테이너 내부에서 tabcmd initialuser -s localhost:8080 -u <username> -p <password> 명령을 실행하여 수행할 수 있습니다. 환경 변수를 통해 관리자 자격 증명을 설정할 수도 있습니다. TABLEAU_USERNAMETABLEAU_PASSWORD 또는 TABLEAU_PASSWORD_FILE(기본 설정)은 초기 관리자 자격 증명을 전달하기 위해 설정할 수 있는 환경 변수입니다. 비밀번호 관리에 대한 자세한 내용은 비밀번호 관리를 참조하십시오.

tabcmd initialuser 명령에 대한 자세한 내용은 initialuser를 참조하십시오.

docker run \
-e LICENSE_KEY=<key> \
-e TABLEAU_USERNAME=<myadmin> \
-e TABLEAU_PASSWORD_FILE=/etc/tableau-admin-secret \
-v <full-path-to-pw-file>:/etc/tableau-admin-secret \
-p 8080:8080 -d <Tableau Server in a Container image ID or tag>

라이선스

컨테이너의 라이선스

Tableau Server 컨테이너 라이선스는 ATR(Server Authorization-To-Run) 서비스를 사용하여 라이선스 활성화 없이 클라우드, 컨테이너 또는 가상 환경에 배포된 Tableau Server를 활성화합니다. ATR 서비스는 제품 키 만료 날짜가 충족될 때까지 구성 가능한 기간(ATR 기간)의 단기 임대를 제공하여 활성화를 가능하게 합니다. ATR은 기본 하드웨어 변경에서 Tableau 라이선싱을 추상화하며, 이는 컨테이너 배포의 기초적인 현상입니다. 서버 ATR을 사용하려면 컨테이너가 Tableau에서 호스팅하는 ATR 서비스에 도달할 수 있어야 하므로 컨테이너는 인터넷에 연결되어 있어야 합니다. Tableau Server 컨테이너는 오프라인 또는 수동 활성화를 지원하지 않습니다. 자세한 내용은 ATR(Authorization to Run) 서비스를 사용하여 Tableau Server 활성화를 참조하십시오.

중요: LICENSE_KEY 또는 LICENSE_KEY_FILE 환경 변수를 제공해야 합니다(하나만 설정).

컨테이너에서 Tableau Server를 업그레이드할 때 최대 라이선스 활성화 수를 사용한 경우 ATR 기간이 경과할 때까지(기본적으로 4시간/14,400초) Tableau Server를 시작할 수 없습니다. ATR 기간 설정 또는 변경에 대한 자세한 내용은 ATR(Authorization to Run) 서비스를 사용하여 Tableau Server 활성화(링크가 새 창에서 열림)를 참조하십시오.

라이선스 환경 변수

Tableau Server 컨테이너는 환경 변수를 사용한 라이선스 키 설정을 지원합니다. LICENSE_KEY는 쉼표로 구분된 목록을 통해 하나 이상의 키(-e LICENSE_KEY="<key1> , <key2>")를 포함할 수 있습니다.

docker run \
-e LICENSE_KEY="<key1>, <key2>" \
-p 8080:8080 -d <Tableau Server in a Container image ID or tag>

라이선스 파일

Tableau Server 컨테이너는 또한 파일을 사용한 라이선스 키 설정을 지원합니다. 파일을 컨테이너의 기본 라이선스 키 파일 위치(/docker/config/license_file)에 마운트하거나, 환경 변수 LICENSE_KEY_FILE로 지정합니다.

docker run \
-v <full-path-to-license-file>:/docker/config/license_file \
-p 8080:8080 -d <Tableau Server in a Container image ID or tag>

요청된 라이선스 임대 시간

REQUESTED_LEASE_TIME 환경 변수를 설정하여 Tableau Server 컨테이너에서 ATR 라이선스 임대 시간을 지정할 수 있습니다. 임대 시간을 초 단위로 제공해야 하며, 최소 기간은 3,600초(또는 1시간)입니다. 활성화된 임대의 최대 한도에 도달할 가능성을 줄이기 위해 Tableau Server 실험 및 테스트 시 임대 시간을 줄이는 것이 좋습니다. 프로덕션 배포의 경우 REQUESTED_LEASE_TIME 매개 변수를 설정하지 않는 것이 좋습니다(기본값 사용). 그래야 Tableau에서 이상적인 임대 시간을 결정할 수 있습니다.

docker run \
...
-e REQUESTED_LEASE_TIME=<time-in-seconds> \
-p 8080:8080 -d <Tableau Server in a Container image ID or tag>

초기화되지 않은 이미지 실행

Tableau Server 설치는 두 단계입니다. 첫 번째 단계에서는 TSM(Tableau 서비스 관리자) 서비스를 설치합니다. 일반적인 온프레미스 설치에서 이 단계는 서버 관리자가 서버를 등록하고, 라이선스를 활성화하고, 서버를 원하는 방식으로 작동하도록 구성하는 단계입니다. 두 번째 설치 단계는 최종 사용자 트래픽 및 관련 비즈니스 논리를 처리할 Tableau Server 프로세스를 설정하고 시작하는 것입니다.

Tableau Server 컨테이너 이미지의 기본 동작은 모든 설치 단계를 자동화하여 docker run 명령을 통해 서버가 완전히 작동하도록 하는 것입니다. 그러나 Tableau Server 컨테이너 이미지를 시작하고 TSM 서비스만 실행되게 하려면(서버 관리자가 initialize-tsm만 실행하여 얻을 수 있는 상태), TSM_ONLY 플래그를 환경 변수로 전달하면 됩니다.

예를 들면 다음과 같습니다.

docker run \
-e TSM_ONLY=1 \
-p 8080:8080 -d <Tableau Server in a Container image ID or tag>

이미지 상호 작용

Tableau Server 컨테이너 이미지가 실행되고 있으면 TSM 및 tabcmd 명령을 직접 호출할 수 있습니다. 이러한 도구는 pid 1 사용자(이 경우 root)의 환경 경로에 직접 추가되어 있습니다. 즉, 다음과 같이 TSM 및 tabcmd 명령을 호출할 수 있습니다.

docker exec -it <container> tsm status -v
docker exec -it <container> tabcmd initialuser -s localhost -u <admin> -p <secret>

또한 컨테이너 내부에서 셸을 열어 보다 일반적인 작업을 수행할 수 있습니다. 하지만 이 작업은 디버깅 용도를 제외하면 권장되지 않습니다.

docker exec -it <container> bash

TSM 웹 UI 및 원격 CLI

TSM 웹 UI 및 원격 CLI는 기본적으로 액세스할 수 없습니다. 이유는 인증할 사용자 이름과 암호가 필요하지만 기본적으로 컨테이너 내부에서 Tableau Server 프로세스를 실행하는 사용자에게 암호가 입력되지 않기 때문입니다. 이렇게 하는 이유는 보안 때문입니다. 원격 액세스를 허용할 수 있으므로 내부에 기본 비밀번호가 있는 이미지를 전달하지 않는 것이 좋습니다. 경우에 따라 TSM 웹 UI와 TSM CLI를 사용하여 원격 액세스 호출을 하는 것이 유용할 수 있습니다. 이러한 기능을 사용하려면 아래에 설명된 단계에 따라 원격 액세스 사용자 계정을 만들어야 합니다.

TSM 웹 UI 및 CLI에 대한 자세한 내용은 Tableau 서비스 관리자 웹 UI에 로그인을 참조하십시오.

TSM 원격 사용자 만들기

설정 도구를 사용하여 Tableau Server 컨테이너 이미지를 작성할 때 TSM_REMOTE_UIDTSM_REMOTE_USERNAME 환경 변수를 지정하십시오. 이미지에서 TSM 사용 계정을 만들려면 런타임에 사용할 수 없는 이미지에 대한 권한 있는 액세스가 필요하며, 따라서 Tableau Server 컨테이너 설정 도구(build-image)에서 Docker 이미지를 작성하는 경우에만 가능합니다.

Tableau Server 컨테이너 설정 도구 environment 파일 예:

TSM_REMOTE_UID=1010
TSM_REMOTE_USERNAME=myuser

TSM 원격 사용자에 대한 비밀번호 설정

Tableau Server 컨테이너 이미지에는 이미지를 실행할 때 계정에 대한 비밀번호가 필요합니다. 이 계정에 대한 비밀번호를 설정하는 방법에는 두 가지가 있습니다.

암호 파일(권장)

remote-user-secret라는 파일을 만들고 파일에 비밀번호를 기록한 다음 런타임에 컨테이너에 마운트합니다. TSM_REMOTE_PASSWORD_FILE은 컨테이너에 있는 암호 파일의 예상 위치(기본 위치: /docker/config/remote-user-secret)를 결정합니다.

remote-user-secret 파일 예:

mypassword

docker run 명령 예:

docker run \
-e LICENSE_KEY=<key>
-v {absolute-path}/remote-user-secret:/docker/config/remote-user-secret
-p 8080:8080 \
-p 8850:8850 \
-d <Tableau Server in a Container image ID or tag>
환경 변수

또한 Docker 이미지를 시작할 때 TSM_REMOTE_PASSWORD 환경 변수를 설정하면 됩니다.

docker run 명령 예:

docker run \
-e LICENSE_KEY=<key>
-e TSM_REMOTE_PASSWORD=<password>
-p 8080:8080 \
-p 8850:8850 \
-d <Tableau Server in a Container image ID or tag>

보안 참고 사항

  • TSM 요청 트래픽을 수신하려면 포트 8850이 노출되어야 합니다.
  • 런타임 시 이미지에 비밀번호가 제대로 설정되지 않으면 컨테이너가 즉시 종료됩니다.
  • TSM은 이미지의 Linux 사용자 계정 시스템을 사용합니다. 이 경우 계정은 이미지 내에서 제한됩니다. 즉, 계정에 제한된 셸이 있으며 두 개의 명령(/bin/truepasswd)을 실행하는 것으로 제한됩니다.

TSM 원격 사용자 비밀번호 회전 방법

TSM 원격 사용자의 계정 비밀번호를 회전하려면 다음 옵션 중 하나를 사용하여 이 작업을 수행할 수 있습니다.

새로운 Tableau Server 컨테이너 시작

컨테이너가 시작될 때마다 계정의 비밀번호가 설정됩니다. 컨테이너 외부에서 Tableau 데이터를 유지하는 경우 새 비밀번호로 새 이미지를 시작하면 비밀번호가 효과적으로 회전합니다.

  1. 실행 중인 이미지를 종료하고 제거합니다.
  2. 이미지 구성에서 TSM_REMOTE_PASSWORD 또는 TSM_REMOTE_PASSWORD_FILE 환경 변수(위 참조)에 새 비밀번호 값을 설정합니다.
  3. 이미지를 다시 시작합니다.
실행 중인 컨테이너 내부에서 비밀번호를 수동으로 회전

이미지를 종료하지 않으려면 계속해서 비밀번호를 수동으로 회전할 수 있습니다.

  1. 실행 중인 컨테이너에서 셸을 엽니다.
  2. su 명령을 사용하여 원격 사용자 계정으로 로그인합니다.
  3. passwd 명령을 실행하여 비밀번호를 변경합니다.

    경고: 이러한 수동 회전은 컨테이너 인스턴스의 쓰기 계층이 남아 있는 한 지속됩니다. 컨테이너를 삭제하면 새 컨테이너를 시작할 때 수동 변경 내용이 적용되지 않습니다.

 

초기 구성 옵션

원하는 Tableau Server 동작을 얻으려면 Tableau Server 컨테이너를 구성해야 합니다. Tableau Server 컨테이너는 Tableau Server를 새로 설치하므로 컨테이너 외부에서 Tableau Server를 구성할 때와 동일한 정보를 컨테이너에 제공해야 합니다.

런타임 환경 변수

아래의 런타임 환경 변수는 Tableau Server를 배포하는 방법을 Tableau Server 컨테이너 이미지에 지시합니다. 일부 하위 집합은 매우 자세하게 설명합니다.

이러한 값은 모두 재정의 가능하도록 설계되므로 훨씬 유연한 구성이 가능합니다.

환경 이름기본값설명
ACCEPTEULA0Tableau Server 컨테이너 설정 도구를 사용하여 이미지를 작성하면 자동으로 1로 설정됩니다.
LICENSE_KEY 서버에 라이선스를 부여하는 데 사용되는 라이선스 키를 설정합니다. 쉼표로 구분된 여러 라이선스가 허용됩니다.
LICENSE_KEY_FILE/docker/config/license_file 라이선스 파일의 파일 경로. 라이선스 파일은 라이선스 키가 한 줄에 하나씩 있는 형식이어야 합니다.
REGISTRATION_FILE/docker/config/tableau_reg.json이미지 내의 등록 파일에 대한 파일 경로입니다. 기본적으로 이 정보에는 Tableau Server 컨테이너 이미지가 작성될 때 제공된 등록 정보가 포함됩니다. 이는 런타임에 덮어쓸 수 있습니다. 자세한 내용은 Tableau Server 활성화 및 등록을 참조하십시오.
REGISTRATION_DATA 런타임에 등록 정보를 덮어쓰는 또 다른 방법입니다. 이 환경 변수는 Tableau Server 등록 파일에서 찾을 수 있는 것과 동일한 등록 정보를 포함하는 직렬화된 JSON 문자열로 설정되어야 합니다. 자세한 내용은 Tableau Server 활성화 및 등록을 참조하십시오.
TABLEAU_USERNAME Tableau Server의 초기 관리자 계정을 나타냅니다. 이는 권장되지만 선택 사항입니다. 이 사용자가 설정되지 않은 경우 tabcmd를 사용하여 Tableau Server의 초기 관리자 계정을 설정해야 합니다. 이 변수에 값이 설정되어 있는 경우 암호도 필요합니다. 이 값은 Tableau Server가 처음 초기화될 때만 사용됩니다. 이 값을 설정하여 Tableau Server 컨테이너에 자동으로 사용자를 초기화하도록 지시합니다. 자세한 내용은 관리자 계정 추가를 참조하십시오.
TABLEAU_PASSWORD tableau 사용자의 일반 텍스트 비밀번호. Tableau Server의 초기 관리자 계정을 나타냅니다. TABLEAU_USERNAME이 지정된 경우 이 비밀번호가 필요합니다. 자세한 내용은 관리자 계정 추가를 참조하십시오.
TABLEAU_PASSWORD_FILE tableau 사용자의 암호 텍스트만 포함하는 파일의 파일 경로. Tableau Server의 초기 관리자 계정을 나타냅니다. TABLEAU_USERNAME이 지정된 경우 이 비밀번호가 필요합니다. 자세한 내용은 관리자 계정 추가를 참조하십시오.
CONFIG_FILE/docker/config/config.json

기본 TSM 구성 파일의 파일 경로. 이 파일은 Tableau Server를 구성하는 데 사용됩니다. 자세한 내용은 구성 파일 예제를 참조하십시오.

CONFIG_FILE을 사용하는 경우 CONFIG_DATA를 설정하지 마십시오.

CONFIG_DATA 이는 CONFIG_FILE의 대체 함수로 사용할 수 있습니다. 외부 파일을 마운트하지 않고 서버에 구성을 제공하려면 이 환경 변수를 TSM 구성 파일의 해당 직렬화된 콘텐츠로 설정합니다.

예: CONFIG_DATA="{\"configEntities\":{\"identityStore\":{\"_type\":\"identityStoreType\",\"type\":\"local\"}}}" 자세한 내용은 구성 파일 예제를 참조하십시오.

CONFIG_DATA를 사용하는 경우 CONFIG_FILE을 설정하지 마십시오.

IGNORE_TOPOLOGY_CONFIG00 또는 1. 1로 설정된 경우 컨테이너는 CONFIG_FILE에서 지정한 구성 파일에 있는 토폴로지 관련 구성을 무시합니다.
BACKUP_FILE/docker/config/backup/backup-file.tsbakTableau Server 백업 파일(.tsbak)의 파일 경로. 초기화 중에 입력된 경우 서버가 복원을 시도합니다.
INIT_CONTAINER00 또는 1. 1로 설정되어 있으면 Tableau Server는 TSM 초기화 및 Tableau Server 초기화만 시도하며 완료 시 컨테이너가 종료됩니다.
TSM_ONLY00 또는 1. Tableau Server rpm을 설치하고 initialize-tsm을 실행하는 것과 동등합니다. TSM(Tableau 서비스 관리자) 서비스만 시작됩니다. 초기화되는 경우에만 작동합니다(Tableau Server 컨테이너가 이전에 초기화된 서버 디렉터리에서 시작되는 경우 작동하지 않음).
BOOTSTRAP_INSTALL00 또는 1. 서버가 초기 노드인지, 아니면 추가 노드인지를 나타냅니다. 1로 설정되어 있으면 컨테이너가 $BOOTSTRAP_FILE로 지정된 위치에 부트스트랩 파일이 존재하게 될 때까지 무한정 대기합니다.
ALWAYS_WRITE_BOOTSTRAP_FILE0 0 또는 1. 1로 설정되어 있으면 컨테이너가 BOOTSTRAP_FILE에 지정된 위치에 부트스트랩 파일을 작성합니다.
WAIT_FOR_BOOTSTRAP_FILE10 또는 1. 1(기본값)로 설정된 경우, 컨테이너가 검색되면 이는 작업자 설치(BOOTSTRAP_INSTALL=1)입니다. 컨테이너는 BOOTSTRAP_FILE에 설정된 경로에 있는 파일이 검색될 때까지 무한정 대기합니다. 시작 프로세스를 실행할 때 0으로 설정하면 이 대기는 건너뛰게 됩니다. 이는 일부 디버그 경우에 유용할 수 있습니다.
BOOTSTRAP_FILE/docker/config/bootstrap/bootstrap.json부트스트랩 파일의 파일 경로. 작업자 컨테이너에만 적용됩니다. 이 파일은 부트스트랩 파일만 가리켜야 합니다. 일반적인 사용법은 대상 파일의 디렉터리(기본값: /docker/config/bootstrap)를 호스트에 마운트하는 것입니다.
BOOTSTRAP_DATABOOTSTRAP_FILE의 대체 함수로 사용할 수 있습니다. 외부 파일을 마운트하지 않고 부트스트랩 파일을 제공하려면 이 환경 변수를 TSM 부트스트랩 파일의 해당하는 직렬화된 콘텐츠로 설정합니다. BOOTSTRAP_FILE을 사용하는 경우 BOOTSTRAP_DATA를 설정하지 마십시오.
PORT_RANGE_MIN8800 성능상의 이유로, Tableau Server 온프레미스 기본값인 8000-9000 포트 범위 대신 8800-9000 범위의 200개 포트만 노출하는 것이 좋습니다. docker에서 1000개 포트를 노출하면 docker 이미지의 시작 시간에 부정적인 영향을 미칠 수 있기 때문입니다. 자세한 내용은 아래 라이선스 및 TSM 포트 노출을 참조하십시오.
PORT_RANGE_MAX9000Tableau Server 온프레미스 기본값인 8000-9000 포트 범위 대신 8800-9000 범위의 200개 포트만 노출하는 것이 좋습니다. docker에서 1000개 포트를 노출하면 docker 이미지의 시작 시간에 부정적인 영향을 미칠 수 있기 때문입니다. 자세한 내용은 아래 라이선스 및 TSM 포트 노출을 참조하십시오.
HTTP_PROXY http 요청을 프록시 서버에 전달하려면 이 환경 변수를 프록시 호스트를 가리키도록 설정합니다. 예를 들어 프록시를 example-host 포트 8080으로 설정하려면 HTTP_PROXY=http://example-host:8080/을 사용합니다.
HTTPS_PROXY https 요청을 프록시 서버에 전달하려면 이 환경 변수를 프록시 호스트를 가리키도록 설정합니다. 예를 들어 프록시를 example-host 포트 443으로 설정하려면 HTTPS_PROXY=http://example-host:443/ 을 사용합니다. HTTPS_PROXY 환경 변수의 URL을 지정할 때 'http'를 사용해야 합니다.
NO_PROXY 프록시 서버를 우회하려면 no_proxy 변수에 예외를 지정합니다. 프록시 서버가 내부 주소를 라우팅하지 않는 경우 이 변수를 사용합니다. 또한 이 프록시 구성에 예외를 추가하여 로컬 Tableau Server 클러스터(지금 하나 있고 나중에 하나를 추가하려는 경우) 모든 내부 통신이 프록시 서버로 라우팅되지 않도록 해야 합니다. 각 컴퓨터의 호스트 이름 및 IP 주소를 모두 입력하고, 컨테이너의 호스트 이름을 추가합니다. 또한 로컬 컴퓨터의 정규 호스트 이름(localhost) 및 IP 주소(127.0.0.1)를 포함합니다. 예를 들어 3노드 클러스터의 예외를 지정하려면 다음을 사용합니다. NO_PROXY="localhost,127.0.0.1,hostname1,hostname2,hostname3,IP1,IP2,IP3"
COORDINATION_SERVICE_CLIENT_PORTPORT_RANGE_MINPORT_RANGE_MAX 사이의 모든 포트조정 서비스를 위한 클라이언트 포트.
COORDINATION_SERVICE_PEER_PORTPORT_RANGE_MINPORT_RANGE_MAX 사이의 모든 포트조정 서비스를 위한 피어 포트.
COORDINATION_SERVICE_LEADER_PORTPORT_RANGE_MINPORT_RANGE_MAX 사이의 모든 포트조정 서비스를 위한 리더 포트.
LICENSE_SERVICE_VENDOR_DAEMON_PORTPORT_RANGE_MIN PORT_RANGE_MAX 사이의 모든 포트라이선스 서비스를 위한 공급업체 데몬 포트.
AGENT_FILE_TRANSFER_PORTPORT_RANGE_MINPORT_RANGE_MAX 사이의 모든 포트에이전트 서비스를 위한 파일 전송 포트.
CONTROLLER_PORTPORT_RANGE_MINPORT_RANGE_MAX 사이의 모든 포트컨트롤러 서비스를 위한 https 포트.
REQUESTED_LEASE_TIME기본값은 현재 4시간으로 설정되어 있습니다.서버 ATR 활성화에 대해 요청된 임대 시간을 설정합니다. 시간 값을 초 단위로 입력해야 하며 최소 기간은 14400초(또는 4시간)입니다. 일반적으로 프로덕션 배포에서 이 값을 변경하는 것은 권장되지 않습니다. 그러나 Tableau Server 컨테이너를 사용하여 개발하거나 프로토타입을 만들 때는 활성화 손실을 최소화하기 위해 이 값을 최소값으로 설정해야 할 수 있습니다.

읽기 전용 환경 변수

다음은 Tableau Server 컨테이너 이미지의 기본 속성 중 일부를 설명하는 환경 속성입니다. 이러한 값을 재정의하는 것은 권장하지 않습니다.

환경 이름기본값설명
PRE_INIT_COMMAND_SCRIPT${DOCKER_CONFIG}/customer-files/pre_init_commandTableau Server를 초기화하기 전에 Tableau Server에서 실행할 사용자 지정 bash/실행 파일의 경로입니다. 참고: 파일에 모든 사용자에 대한 실행 권한이 있는지 확인합니다. 그렇지 않으면 chmod +rx <path-to-pre-init-command-file>를 실행합니다.
POST_INIT_COMMAND_SCRIPT${DOCKER_CONFIG}/customer-files/post_init_command서버가 제대로 작동하고 실행된 후 Tableau Server에서 실행할 사용자 지정 bash/실행 파일의 경로입니다. 참고: 파일에 모든 사용자에 대한 실행 권한이 있는지 확인합니다. 그렇지 않으면 chmod +rx <path-to-post-init-command-file>를 실행합니다.
DATA_DIR/var/opt/tableau/tableau_serverTableau Server 비트가 기록되어야 하는 데이터 디렉터리입니다.
INSTALL_DIR/opt/tableau/tableau_serverTableau Server 설치 비트가 기록되는 설치 디렉토리입니다.
SERVICE_NAMETableau Server컨테이너에서 실행되는 응용 프로그램의 이름입니다.
SERVICE_VERSION해당 없음컨테이너에 설치된 Tableau Server 버전입니다.
DOCKER_CONFIG/dockerTableau 관련 Docker 구성을 저장하는 디렉터리입니다.
ENV_FILE${DOCKER_CONFIG}/customer-files/environment모든 사용자 환경 재정의가 포함된 파일입니다.

빌드 타임 환경 변수

   
BASE_IMAGE_URLbuild 도구 명령 사용: build-image -bbuild-image 도구와 Dockerfile에 지정된 기본 이미지는 공식적으로 지원되는 유일한 기본 이미지입니다. 이 매개 변수는 사용자 지정 Docker 이미지 리포지토리에서 이 특정 기본 이미지의 복사본을 가져오거나 사용자 지정 기본 이미지를 정의하는 데 사용할 수 있습니다. 사용자 정의 기본 이미지를 사용하도록 선택한 경우 UBI 8(버전 2022.1 이하의 경우 CentOS 또는 RHEL 7)을 기반으로 하고 Tableau Server를 올바르게 실행하는 데 필요한 리소스를 포함하는 것은 사용자의 책임입니다. 사용자 지정 기본 이미지에 대한 자세한 내용은 Tableau Server 컨테이너 - 이미지 사용를 참조하십시오.
PRIVILEGED_TABLEAU_GID997 권한이 있는 Tableau 그룹의 GID입니다.
UNPRIVILEGED_TABLEAU_GID998 권한이 없는 Tableau 그룹의 GID입니다.
UNPRIVILEGED_TABLEAU_UID999 Tableau 프로세스를 실행하는 사용자의 UID입니다(단일 사용자 배포).
UNPRIVILEGED_USERNAMEtableau 권한이 없는 사용자의 문자열 이름입니다.
UNPRIVILEGED_GROUP_NAMEtableau 권한이 없는 그룹의 문자열 이름입니다.
PRIVILEGED_GROUP_NAMEtsmadmin 권한이 있는 그룹의 문자열 이름입니다.
LANGen_US.UTF-8로캘 설정

 

Tableau Server 구성 재정의

다음 환경 변수는 Docker에서 컨테이너의 파일을 가리키는 방식으로 덮어쓸 수 있습니다. 다른 마운트 지점을 지정하려는 경우 언제든지 그렇게 할 수 있습니다.

Tableau Server를 시작하고 실행하려면 구성 파일이 필요합니다.

CONFIG_FILE=/docker/config/config.json

CONFIG_FILE은 TSM 구성 파일을 참조합니다. 형식과 사용법은 구성 파일 예제에 설명되어 있는 구성 파일과 동일합니다.

사전 초기화 및 사후 초기화 명령

Tableau Server는 서버를 사전 초기화된 상태에서 완전히 실행되도록 설계된 자동 설치 스크립트를 실행합니다. 그러나 초기화 과정에서 자체 자동화 코드를 추가할 수도 있습니다. 사전 초기화 스크립트와 사후 초기화 스크립트라는 두 가지 후크를 제공합니다.

사전 초기화 스크립트

이 스크립트는 기본 TSM 프로세스가 초기화되고 다른 TSM 설정 단계가 실행되기 전에 즉시 실행됩니다. 이는 Tableau Server를 실행하기 전에 TSM 구성 명령을 실행하는 데 유용합니다. 이 시점에서 구성 변경을 수행할 경우 스크립트가 완료된 후에 일반적인 Tableau Server 자동화가 이를 수행하므로 변경 내용을 적용할 필요가 없습니다.

사후 초기화 스크립트

이 스크립트는 다른 모든 Tableau Server 초기화 및 시작 자동화가 완료된 후에 실행됩니다. Tableau Server는 이 스크립트가 실행될 때 완벽하게 작동하고 실행됩니다. 이 시점에서 변경한 구성을 적용해야 합니다.

지침

이미지의 후크 중 하나에 사용자 지정 스크립트를 추가하려면 다음 단계를 수행하십시오.

  1. 사용자 지정 스크립트를 작성합니다.
  2. 사용자 지정 스크립트를 컨테이너의 Tableau Server 빌드 이미지 도구의 customer-files 디렉터리에 복사합니다.
  3. 스크립트를 실행할 시기에 따라 스크립트의 이름을 pre_init_command 또는 post_init_command 중 하나로 바꾸거나 변경합니다(두 후크를 서로 독립적으로 사용할 수 있음).
  4. 스크립트의 사용 권한을 다른 사용자가 실행할 수 있는지(chmod +rx <command-file>) 또는 소유권 사용 권한이 컨테이너의 권한이 없는 사용자와 일치하는지 확인합니다.

사용자 구성

Tableau Server는 권한이 없는 사용자를 사용하여 서버 프로세스를 실행합니다. 이 사용자는 Tableau Server 컨테이너가 초기화될 때 컨테이너 내부에 만들어집니다. 기본적으로 사용자의 이름은 tableau 이고 UID는 999입니다. 마운트를 사용하여 호스트 컴퓨터에서 외부에 데이터를 저장하는 Tableau Server 컨테이너를 배포한 경우 이 UID를 호스트 컴퓨터의 UID에 매핑하도록 변경할 수 있습니다. docker 사용자 네임스페이스를 사용하는 것은 같은 결과를 달성하는 또 다른 방법입니다.

Tableau Server 컨테이너 유틸리티 및 도구

모든 Tableau Server 컨테이너 유틸리티 및 도구 기능은 다음 디렉터리 아래에 있습니다.

/docker/

파일 사용 권한 관리

구성 파일을 컨테이너에 전달할 때 컨테이너 내부에서 Tableau Server 프로세스를 실행하는 사용자에게 파일에 액세스할 수 있는 사용 권한이 있는지 확인하고 싶을 것입니다. 모든 사용자에게 컨테이너에 마운트되는 파일에 대한 액세스 권한을 부여하지 않으려면 컨테이너 내부에서 Tableau Server를 실행하는 사용자의 UID 및/또는 GID를 호스트의 사용자/그룹 소유자와 일치하도록 변경할 수 있습니다. 컨테이너 사용자에게는 UNPRIVILEGED_TABLEAU_UID 환경 변수로 결정되는 UID(기본값: 999)와 UNPRIVILEGED_TABLEAU_GID 환경 변수로 결정된 GID(기본값: 998)가 있습니다. 환경 변수를 재정의하여 이러한 값을 변경하거나 Docker 사용자 네임스페이스 매핑을 사용하여 컨테이너의 UID/GID를 호스트의 다른 UID/GID에 매핑할 수 있습니다.

비밀번호 관리

일부 기능 및 옵션을 사용하려면 컨테이너에 전달되는 구성 설정으로 사용자 자격 증명을 제공해야 합니다. Tableau 초기 관리자 자격 증명은 추가적인 기능을 사용하도록 설정하는 선택적 자격 증명의 예입니다. 이러한 경우 항상 비밀번호를 설정하는 두 가지 방법이 제공됩니다. 첫 번째는, 비밀번호를 포함하는 파일을 제공하고 환경 변수에 파일 경로를 제공하는 것입니다. 두 번째는, 비밀번호를 직접 저장하도록 환경 변수를 설정하는 것입니다.

보안이 좀 더 강화된 권장 옵션은 비밀번호를 컨테이너에 파일 경로로 제공하는 것입니다. 파일의 암호를 제공하는 것은 Docker, Docker Swarm, Kubernetes 및 기타 컨테이너 오케스트레이션 시스템에서 잘 지원되는 패턴입니다. 비밀번호를 환경 변수에 직접 저장하는 것은 일반적인 패턴이므로 이를 지원하지만 비밀번호가 보안에 좀 더 취약하다는 의미이기도 합니다.

TABLEAU_USERNAME 자격 증명을 살펴보겠습니다. TABLEAU_PASSWORD 또는 TABLEAU_PASSWORD_FILE로 사용자에 대한 암호를 제공할 수 있습니다. Tableau Server 컨테이너 이미지를 실행할 때 환경 변수 중 하나를 사용하여 암호를 제공할 수 있습니다.

암호 파일 환경 변수에는 컨테이너 내부의 유효한 암호 파일에 대한 파일 경로가 필요합니다. 암호 파일은 한 줄에 암호만 있어야 합니다.

암호 파일 사용 예
docker run \
...
-e TABLEAU_USERNAME=admin \
-e TABLEAU_PASSWORD_FILE=/etc/admin-secret \
-v <full-path-to-pw-file>:/etc/admin-secret \
-d <Tableau Server in a Container image ID or tag>
암호 파일 내용 예
mypassword23879172

또한 비밀번호 환경 변수에 일반 텍스트 형식으로 비밀번호를 직접 저장할 수 있습니다. 이 방식은 보안이 취약하다고 간주되지만 훨씬 간편하기 때문에 컨테이너에서 일반적으로 사용됩니다.

docker run \
...
-e TABLEAU_USERNAME=admin \
-e TABLEAU_PASSWORD=password \
-d <Tableau Server in a Container image ID or tag>

실행 후 Tableau Server 구성

Tableau Server가 초기화되어 실행되고 있는 상태이면 서버와 상호 작용하는 가장 좋은 방법은 TSM CLI 도구를 사용하는 것입니다. 이는 관리 작업을 수행하기 위한 클래식 Tableau Server 도구입니다. 향후에는 실행 간에 CONFIG_FILE 환경 변수에 제공된 정적 구성의 변경에 대응하는 Tableau Server를 지원할 것입니다. 그러나 지금은 Tableau Server를 초기화한 후 클래식 도구를 사용하여 서버와 상호 작용해야 합니다.

TSM 명령줄에 대한 자세한 내용은 tsm 명령줄 참조를 참조하십시오.

상태

Tableau Server의 이미지에는 두 가지 기본 상태 확인이 제공됩니다. 이를 사용하여 서버의 실행 상태와 준비 상태를 확인할 수 있습니다.

실행 상태 확인

실행 상태 확인은 TSM 서비스가 실행되고 있는지 여부를 나타냅니다. 즉, Tableau Server의 오케스트레이션 서비스가 작동 및 기능하고 있는지 여부를 나타냅니다. 이 확인은 다음과 같이 호출할 수 있습니다.

/docker/alive-check

또 다른 옵션은 Tableau 컨트롤러 서비스가 웹 브라우저를 통해 관리 기능을 제공하기 위해 실행하는 포트 8850을 노출하는 것입니다. tcp 상태 확인을 통해 서비스 상태를 확인하여 주기적으로 서비스 상태를 확인할 수 있습니다.

준비 상태 확인

준비 상태 확인은 Tableau Server가 실행되고 있고 비즈니스 서비스가 트래픽을 받을 준비가 되었는지 여부를 나타냅니다. 준비 상태는 다음 스크립트를 사용하여 확인할 수 있습니다.

/docker/server-ready-check

또 다른 옵션은 포트 8080(또는 Tableau Server가 트래픽을 수신하도록 바인딩된 포트)의 tcp 상태 확인을 사용하는 것입니다. 이런 종류의 tcp 상태 확인이 서버 준비 상태 확인(server-ready-check)보다 안정적인 경우가 많습니다. 이것은 서버 준비 상태 확인이 TSM에 보고된 서비스 상태에 기반하지만 서비스 상태가 업데이트될 때 경우에 따라 이러한 상태가 지연되기 때문입니다.

영구 데이터

컨테이너를 사용할 때는 중요한 정보의 손실 없이 컨테이너를 종료한 후 다시 켤 수 있는 기능이 유용할 수 있습니다. Tableau Server 컨테이너 이미지는 특정 디렉터리를 컨테이너 외부에 마운트할 수 있으므로 이를 지원합니다. 즉, 컨테이너 인스턴스를 완전히 종료하거나 제거해도 데이터를 보존할 수 있습니다. 이 데이터를 사용하여 또 다른 컨테이너 인스턴스를 시작하고 이전 컨테이너가 중지된 지점부터 다시 시작할 수 있습니다.

다음 섹션에서는 다양한 종류의 관리 상태에 대해 설명합니다.

Tableau Server 데이터

서버 데이터는 모두 데이터 디렉터리에 저장됩니다. 데이터 디렉터리는 모든 사용자 관련 데이터 및 서비스 런타임 메타데이터가 저장되는 위치입니다. 이 데이터를 외부화하면 Tableau Server 컨테이너가 완전히 제거된 후에도 사용자 데이터를 보존할 수 있습니다.

이 데이터는 전송 가능하며 AWS EBS 볼륨과 같은 클라우드 관리형 블록 저장소 시스템에서 사용할 수 있습니다.

Tableau Server 컨테이너를 외부 파일 저장소와 함께 사용하는 경우 데이터 디렉터리는 EBS에 있어야 합니다. 네트워크 파일 시스템(예: NFS)을 데이터 디렉터리로 사용하지 마십시오. 외부 파일 저장소 디렉터리는 NFS 볼륨에 있어도 됩니다.

정적 호스트 이름

Tableau Server는 동적 호스트 이름 변경을 잘 처리하지 못하기 때문에 컨테이너의 내부 호스트 이름을 실행되는 컨테이너 간에서 일관되게 지정하는 것이 중요합니다. 컨테이너 내부의 호스트 이름은 임의적이며 어떤 값으로도 설정할 수 있습니다. --hostname 옵션을 사용하면 컨테이너의 내부 호스트 이름을 지정할 수 있습니다. 동일한 영구 데이터를 사용하는 후속 컨테이너가 동일한 호스트 이름 값을 사용하여 실행되는지 확인하십시오.

다중 노드 서버 설치와 혼동하지 마십시오. 이러한 경우 추가 노드에 각각 다른 호스트 이름이 할당되어야 합니다. 중요한 것은 단일 컨테이너가 다시 시작된 경우 해당 인스턴스에 대한 동일한 영구 데이터를 사용할 대체 컨테이너가 일치하는 호스트 이름을 가져야 한다는 것입니다.

전체 예

다음은 데이터 디렉터리가 컨테이너 외부에 마운트된 예입니다.

docker run \
-v <empty-data-dir>:/var/opt/tableau \
-e LICENSE_KEY=<key> \
--hostname=<static (internal) name of host machine> \
-p 8080:8080 -d <Tableau Server in a Container image ID or tag>

백업 및 복원

Tableau Server 컨테이너는 Tableau Server가 백업을 만들고 백업 파일(.tsbak)에서 복원하는 것을 지원합니다. 첫 번째 단계는 Tableau Server 컨테이너 이미지를 실행하고, 백업 파일(.tsbak)을 이미지에 마운트하고, 환경 변수 BACKUP_FILE을 백업 파일의 파일 경로로 설정하는 것입니다. 또한 CONFIG_FILE 환경 변수에서 백업 json 구성 파일을 제공해야 합니다. Tableau Server 컨테이너는 다중 노드 배포 시에도 복원 프로세스를 자동화합니다. 언제든지 이 자동화가 시스템을 완전히 복원하지 못하면 컨테이너를 사용하지 않는 배포 방식과 마찬가지로 클래식 Tableau Server 도구 및 Tableau Server와 상호 작용하기 위한 TSM 명령과 같은 프로세스를 언제든지 대체할 수 있습니다.

표준 Tableau Server 인스턴스의 백업 및 복원을 수행하는 방법에 대한 자세한 내용은 Tableau Server의 전체 백업 및 복원 수행을 참조하십시오.

Tableau Server 컨테이너의 백업

  1. Tableau Server 컨테이너 버전 A 내부의 셸을 엽니다. 리포지토리 백업, 토폴로지 및 구성 백업 파일을 만듭니다.

    docker exec -it my-server bash
    
    # Just providing filename automatically produces the backup file at /var/opt/tableau/tableau_server/data/tabsvc/files/backups/
    tsm maintenance backup -f <repository-backup>.tsbak -d
    
    # Any filepath where current user(UNPRIVILEGED USER) can write.
    tsm settings export -f /var/opt/tableau/tableau_server/data/tabsvc/files/backups/<topology-conf-backup>.json
  2. 이전 단계에서 만든 파일을 호스트 컴퓨터에 복사합니다. 두 파일에 대해 모두 읽기 권한이 설정되도록 파일 사용 권한을 변경합니다.

    docker cp my-server:/var/opt/tableau/tableau_server/data/tabsvc/files/backups/<repository-backup>.tsbak ./<repository-backup>.tsbak
    docker cp my-server:/var/opt/tableau/tableau_server/data/tabsvc/files/backups/<topology-conf-backup>.json ./<topology-conf-backup>.json
    chmod a+r ./<repository-backup>.tsbak ./<topology-conf-backup>.json
  3. 백업 아티팩트를 안전한 위치에 저장합니다. 필요한 경우 아래의 복원 단계를 따릅니다.

Tableau Server 컨테이너 내부에서 복원

지원되는 모든 Tableau Server 버전(컨테이너 및 비 컨테이너)의 백업은 Tableau Server 컨테이너 내부에서 복원할 수 있습니다.

필수 요건
  • Tableau Server 백업 파일
  • 구성 및 토폴로지 정보가 모두 포함된 구성 json 파일
  • 참고: 백업 파일을 전체 읽기 사용 권한으로 설정되도록 변경해야 할 수 있습니다. 백업 파일은 일반적으로 파일을 만든 사용자만 사용할 수 있도록 잠기며 이 사용자가 컨테이너에서 실행되는 Tableau 사용자와 다를 가능성이 높습니다.
docker run \
-v <full-path-to-backup-file>:/docker/config/backup/backup-file.tsbak \
-v <full-path-to-config-only-file>:/docker/config/config.json:ro \
-e LICENSE_KEY=<key> \
-p 8080:8080 -d <Tableau Server in a Container image ID or tag>

참고:

  • 다중 노드 시스템을 복원하는 경우 복원 자동화가 작동하려면 다른 노드도 시작해야 합니다. 자세한 내용은 이 문서의 다중 노드 Tableau Server 컨테이너 섹션을 참조하십시오. 초기 노드에만 백업 파일, 백업 구성 파일 및 라이선스가 필요합니다.
  • 백업 파일은 컨테이너의 첫 번째 실행에서만 제공되어야 합니다. 서버가 초기화되면 백업 파일에 계속 마운트할 필요가 없습니다.

 

Tableau Server에서 Tableau Server 컨테이너로 마이그레이션

표준 Tableau Server 설치에서 Tableau Server 컨테이너로 마이그레이션하려면 백업 및 복원 기술을 사용해야 합니다. 지원되는 모든 Tableau Server 버전(컨테이너 및 비 컨테이너)의 백업은 Tableau Server 컨테이너 내부에서 복원할 수 있습니다. 자세한 내용은 위의 Tableau Server 컨테이너 내부에서 복원 섹션을 참조하십시오.

Tableau Server 버전 업그레이드

Tableau Server를 업그레이드하는 방법은 두 가지입니다. 이 섹션에 나와 있는 upgrade-Image 메서드가 권장되는 솔루션입니다. 그러나 대체 방법으로 백업/복원을 사용하여 Tableau Server를 업그레이드할 수도 있습니다.

upgrade-Image 메서드를 통한 업그레이드

업그레이드 이미지는 Tableau Server 컨테이너 설정 도구의 build-upgrade-image 스크립트를 사용하여 구축할 수 있는 Docker 이미지입니다. 이 이미지의 목적은 오직 현재 실행 중인 Tableau Server 컨테이너를 업그레이드하는 것입니다.

업그레이드를 수행하려면 아래 단계를 따르십시오.

  1. build-upgrade-image 스크립트를 사용하여 upgrade-image를 만듭니다. 이 컨테이너를 작성하려면 새 버전의 tableau server rpm이 필요합니다.
  2. Tableau Server를 실행 중인 컨테이너를 종료합니다.
  3. 이전 단계의 컨테이너 종료와 동일한 데이터 디렉터리를 마운트하여 upgrade-image를 시작합니다.
  4. 업그레이드 프로세스는 시간이 걸리지만 Tableau Server가 업그레이드됩니다. Docker 로그에서 업그레이드 프로세스 업데이트를 확인하십시오. 업그레이드 프로세스 후 컨테이너가 종료됩니다.
  5. 최신 버전의 새 Tableau Server 컨테이너를 시작합니다. 이전 단계에서 동일한 디렉터리를 마운트합니다.

예:

Tableau Server를 실행하는 Tableau Server 컨테이너가 있다고 가정해 보겠습니다. 다음은 이 예제에서 한 몇 가지 가정입니다.

  • 중요한 데이터가 있으며 업그레이드 프로세스 중에 이 데이터를 손실하고 싶지 않습니다. 데이터 디렉터리는 컨테이너 외부에 유지되어야 합니다.
  • 컨테이너 이름은 my-server입니다. Docker 이미지의 이름은 tableau-server:versionA입니다.
  • 현재 사용 중인 my-server 서버 버전은 버전 A입니다.
  • 업그레이드하려는 서버 버전은 버전 B입니다.
  1. 버전 B에 대한 tableau server rpm을 가져오고 upgrade-image를 만듭니다.

    # For all the options available in the script
    ./build-upgrade-image -h
     
    # Frequently used command to create a upgrade-image
    ./build-upgrade-image --installer=<path to the tableau server version B> -i tableau-server:versionA -o tableau-server-upgrade:versionAB
  2. my-server 컨테이너를 중지합니다.

    docker stop my-server -t 120
  3. 새로 만든 이미지 tableau-server-upgrade:versionAB를 시작합니다. 이전에 중지된 컨테이너에서 동일한 데이터 디렉터리를 마운트합니다. 컨테이너가 버전 B로 업그레이드 프로세스를 시작합니다.

    docker run --name my-upgrade-server \
    -v <data-dir mount from previous step>:/var/opt/tableau \
    ...
    tableau-server-upgrade:versionAB
  4. 업그레이드가 완료되면 컨테이너가 중지됩니다. Docker 로그에서 업그레이드 프로세스 로그를 확인하고 업그레이드 프로세스가 성공적인지 확인합니다. Docker 컨테이너의 종료 코드를 확인하여 업그레이드 프로세스가 성공적으로 완료되었는지 확인할 수도 있습니다.

    # The log file /var/opt/tableau/tableau_server/logs/upgrade-console.log is created after 3-4 mins into the start of upgrade container. When the upgrade completes successfully, "upgrade is complete" log will be # seen.
    docker logs my-upgrade-server
    ...
    ...
    Verifying licensing state.
    Tableau Server has been upgraded to version near.20.0801.1050.
    >> The upgraded Tableau binary directory will be added to PATH for new shells. To get the
    >> updated path, either start a new session, or for bash users run:
    >> source /etc/profile.d/tableau_server.sh
    Starting service...
    Starting service...
    Job id is '12', timeout is 30 minutes.
    Service was started successfully.
    Status: RUNNING
    Tableau Server is Running
    upgrade is complete
  5. my-upgrade-server 컨테이너를 중지합니다. Tableau Server 컨테이너 이미지의 새 버전 B를 시작하고 중지된 my-upgrade-server 컨테이너에서 데이터 디렉터리를 마운트합니다.

    # Stop the server.
    docker stop my-upgrade-server -t 120
    
    
    # Run the new version Hu
    docker run --name my-upgraded-server \
    -v <data-dir mount from previous step>:/var/opt/tableau \
    ...
    ...
    tableau-server:versionB

backup-restore 메서드를 통한 업그레이드

이 문서의 백업 및 복원 섹션에 있는 단계를 따릅니다. 백업-복원 작업을 업그레이드 작업으로 변경하는 데 필요한 유일한 조정은 새 버전의 Tableau Server에서 백업을 복원하는 것입니다.

다중 노드 Tableau Server 컨테이너

다중 노드 Tableau Server 컨테이너는 다중 노드에 분산된 Tableau Server의 단일 배포를 나타냅니다. 이 컨텍스트에서 다중 노드는 특정 프로세스를 다른 노드에서 실행하여 용량, 컴퓨팅 성능 등을 늘릴 수 있다는 점에서 Tableau Server 다중 노드와 동일합니다. 이것은 각 컨테이너가 고유 데이터를 보유한 독립 서버인 Tableau Server 컨테이너를 개별적으로 여러 개 실행하는 것과는 다릅니다.

다중 노드 Tableau Server 컨테이너는 비 컨테이너 Tableau Server 다중 노드 설치처럼 작동하며 동일한 기초 메커니즘을 사용합니다. 비 컨테이너 Tableau Server 다중 노드 설치 설정에 대한 개요를 보려면 분산 및 고가용성 Tableau Server 설치를 참조하십시오.

예를 들면 다음과 같습니다.

다중 노드 기본 사용법

초기 노드

옵션 1: 서버 구성(CONFIG_FILE)이 다중 노드 토폴로지를 지정하는 경우 이 옵션을 사용합니다.

docker run \
-v <network-shared-directory>:/docker/config/bootstrap \
-v <full-path-to-config-file>:/docker/config/config.json:ro \
-e LICENSE_KEY=<key> \
-p 8080:8080 -p 8800-9000:8800-9000 -p 27000-27010:27000-27010 \
--hostname=<static (internal) name of host machine> \
-d <Tableau Server in a Container image ID or tag>

옵션 2: 서버 구성에서 다중 노드 토폴로지를 지정하지 않더라도 다중 노드 배포를 원하는 경우 이 옵션을 사용합니다.

docker run \
-v <network-shared-directory>:/docker/config/bootstrap \
-e LICENSE_KEY=<key> -e ALWAYS_WRITE_BOOTSTRAP_FILE=1 \
-p 8080:8080 -p 8800-9000:8800-9000 -p 27000-27010:27000-27010 \

--hostname=<static (internal) name of host machine> \
-d <Tableau Server in a Container image ID or tag>
추가 노드
docker run \
-v <network-shared-directory>:/docker/config/bootstrap \
-e BOOTSTRAP_INSTALL=1 \
-p 8080:8080 -p 8800-9000:8800-9000 \
--hostname=<static (internal) name of host machine> \
-d <Tableau Server in a Container image ID or tag>

라이선스 및 TSM 포트 노출

작업자 노드가 주 인스턴스와 통신할 수 있도록 추가 포트를 열어야 합니다. 다음과 같은 포트 범위에서 주 Tableau Server 컨테이너 인스턴스의 다른 노드에서 나오는 트래픽을 허용해야 합니다.

Service Ports: 8800-9000
Postgres Port: 8060
Licensing Ports: 27000-27010

여는 포트 수에 주의 필요: Docker에서 1000개의 포트를 노출하면 Docker 이미지의 성능과 시작 시간에 부정적인 영향을 줄 수 있으므로 Tableau Server 기본 포트 범위 8000~9000 대신 200개의 포트(8800~9000)만 노출하는 것이 좋습니다. 현재 Tableau Server 토폴로지의 복잡성에 따라 더 적거나 더 많은 포트 범위를 사용할 수 있습니다. 일반적으로 100개 미만의 포트만 노출하는 것은 권장하지 않습니다. 클러스터의 서비스가 특정 서비스와 통신할 수 없게 될 위험이 있기 때문입니다. 고유한 포트 범위를 지정하는 경우 포트 8850(8800-9000 범위에 묵시적으로 포함됨) 포트를 노출하는지 확인하십시오. 포트 범위는 PORT_RANGE_MINPORT_RANGE_MAX 환경 변수를 설정하여 지정합니다.

추가 노드도 서비스 포트 범위(8800~9000)를 노출해야 하지만 라이선스 포트 범위는 노출할 필요가 없습니다. 이러한 포트 범위는 Tableau Server 프로세스 간 통신만 허용한다는 것을 기억하십시오. 이러한 포트는 동일한 다중 노드 클러스터에서 Tableau Server 컨테이너를 실행하는 컴퓨터가 아닌 다른 컴퓨터 또는 사용자에게 노출되어서는 안 됩니다.

이러한 포트 규칙은 Tableau Server 방화벽 설명서에 나와 있습니다. 자세한 내용은 로컬 방화벽 구성을 참조하십시오.

호스트 이름 확인

다중 노드 Tableau Server 컨테이너가 동적 호스트 이름 변경을 처리하지 못하기 때문에 Tableau Server 컨테이너는 일관된 호스트 이름을 사용하여 실행해야 합니다. Tableau Server 다중 노드를 실행할 때 이러한 노드는 서로 통신하려고 합니다. Tableau Server 노드는 다중 노드 Tableau Server 컨테이너가 사용하도록 구성된 호스트 이름을 사용하여 서로 통신합니다. 예를 들어 호스트 이름이 "initial"인 초기 노드를 실행하는 경우 추가 노드는 "initial"라는 호스트로 트래픽을 보내려고 합니다. 호스트 이름을 다른 이미지로 확인하기 위해 이미지를 구성하는 방법은 여러 가지가 있습니다. 임의의 컨테이너 호스트 이름을 매핑하기 위해 각 컨테이너에 있는 /etc/hosts 파일(예: "initial")을 사용하여 다른 컨테이너를 실제로 실행하고 있는 IP 주소로 설정합니다.

추가 노드 부트스트랩

클러스터의 일부로 실행되는 초기 Tableau Server 컨테이너는 부트스트랩 파일을 생성하므로 이후에 노드를 추가하여 클러스터를 조인하는 데 사용해야 합니다. 클러스터의 토폴로지에 추가 노드가 등록되면 해당 노드에서 실행할 Tableau Server 프로세스를 할당할 수 있습니다. 이 프로세스는 완전히 자동화할 수 있습니다. 다중 노드 토폴로지를 지정하는 Tableau Server 구성 파일을 제공한 경우(일반적으로 기본 경로 /docker/config/config.jsonCONFIG_FILE에 지정된 파일 경로에 구성 파일을 마운트하여 제공됨), 초기 노드는 모든 추가 노드가 등록될 때까지 자동으로 대기합니다. 일단 등록되면 다중 노드 토폴로지가 클러스터 전체에 적용됩니다.

Tableau Server 컨테이너에서 초기 노드가 Tableau Server를 완전하게 실행한 후 추가 노드용 부트스트랩 파일을 생성하도록 지시할 수 있습니다.

docker exec -it <container-name> tsm topology nodes get-bootstrap-file -f $BOOTSTRAP_FILE

ALWAYS_WRITE_BOOTSTRAP_FILE의 값을 1로 설정하면 이 명령이 자동으로 실행됩니다.

보안 고려 사항

부트스트랩 파일은 초기 노드와 TSM 세션을 설정할 수 있게 하는 서버 암호를 포함합니다. 즉, 악의적인 사용자가 이 파일을 구하면 일정 기간 동안 서버에 TSM 명령을 전송할 수 있습니다. 이 파일 자체는 서버 구성 암호의 암호화를 실행할 수 있는 데이터도 포함합니다. 이 파일은 중요하게 취급해야 하며 다중 노드 배포 설정과 직접 관련된 서비스 및 시스템에서만 액세스할 수 있어야 합니다.

부트스트랩 만료

부트스트랩 파일에는 2시간 동안 유지되는 제한적인 시간 세션이 수반됩니다. 이 기간 동안 추가 노드는 추가 노드로 참가하기 위해 초기 노드에 자격 증명을 제공할 필요가 없습니다. 세션이 만료된 후에도 부트스트랩 파일을 사용할 수 있지만 초기 노드에 자격 증명을 제공하기 위해서만 사용됩니다.

부트스트랩 파일 전송

Tableau Server 컨테이너 작업자 노드에서 부트스트랩 파일을 찾고 사용할 수 있어야 합니다. 이 배포에서 작업자 노드로 사용하려는 다른 모든 Tableau Server 컨테이너 노드에서 부트스트랩 파일을 공유해야 합니다. 이렇게 하는 방법은 여러 가지입니다.

보안 네트워크를 통해 파일 전송

초기 노드에 대한 자동화의 일부로 추가 노드로 직접 파일을 전송할 수 있습니다. 이 작업은 몇 가지 보안 파일 전송 클라이언트/도구를 사용하여 수행해야 합니다. 이 기능은 초기 노드의 수명 전체에서 여러 부트스트랩 파일이 생성될 수 있는 시나리오에서 유용하게 사용할 수 있습니다(나중에 더 많은 추가 노드를 추가할 수 있음).

네트워크 파일 마운트 사용

지정된 배포 환경에서 모든 컨테이너가 공유한 네트워크 파일 마운트는 또 다른 옵션입니다.

기타

최종 목표는 한 컨테이너에서 생성된 파일을 다른 컨테이너 집합에 안전하게 전송하는 것입니다. 이 목표를 달성할 수 있고 안전성이 충분하다면 어떤 방법도 사용할 수 있습니다.

추가 노드 시작

Tableau Server 컨테이너 추가 노드를 시작하려면 BOOTSTRAP_INSTALL 환경 변수를 1로 설정하여 컨테이너를 시작하면 됩니다.

이렇게 하면 Tableau Server 컨테이너 인스턴스가 BOOTSTRAP_FILE 환경 변수(구성 가능한 환경 변수)로 지정된 경로에 부트스트랩 파일이 존재할 때까지 대기하게 됩니다. 기본 파일 경로에 대해서는 환경 변수 표를 참조하십시오. 구체적으로, "추가 노드 모드"로 Tableau Server 컨테이너 이미지를 실행하는 경우 컨테이너는 pid 1로 실행되어 5초마다 부트스트랩 파일이 존재하는지 확인하는 bash 스크립트를 제외하고 supervisord 또는 다른 모든 프로세스를 시작하지 않습니다. 파일이 존재하면 Tableau Server 컨테이너가 추가 노드 초기화를 계속 진행하게 됩니다.

추가 노드 구성

특정 토폴로지를 실행하도록 추가 노드를 구성하는 것은 일반 Tableau Server 배포에서 구성하는 것과 동일하게 작동합니다. 또한 동일한 요구 사항이 포함됩니다. 즉, 노드에 새로운 프로세스를 추가하면 클러스터 전체를 다시 시작해야 합니다. 자세한 내용은 노드 구성을 참조하십시오.

Tableau Server 기능 고려 사항

일부 Tableau Server 기능은 컨테이너에서 다르게 작동합니다. 이 섹션에서는 컨테이너 환경에 특별히 적용되거나 다른 고려 사항이 있는 특정 기능에 대해 설명합니다.

Active Directory

AD 도메인 컨트롤러 설정

Active Directory를 Tableau Server 웹 페이지 및 사이트의 ID 저장소로 사용하려는 경우 고려해야 할 추가 사항이 있습니다. Linux 환경에서 실행되는 Tableau 서버는 IP 서브넷을 검사하여 통신할 AD 도메인 컨트롤러를 동적으로 결정합니다. 컨테이너는 임의의 IP 주소를 할당받을 수 있으며 이 경우 Tableau Server는 해당 IP 주소를 사용하여 적절한 도메인 컨트롤러를 찾을 수 없습니다. 따라서 Tableau Server와 통신하기 위해 특정 도메인 컨트롤러/호스트 이름을 구성해야 할 수 있습니다. 이를 수행하려면 다음 단계를 수행합니다.

  1. Tableau Server에서 사용할 도메인 컨트롤러를 결정하고 호스트 이름을 가져옵니다.
  2. 표준 Tableau Server 관리자 구성 옵션을 사용하여 wgserver.domain.ldap.hostname 구성 키를 호스트 이름으로 설정합니다.

    • json 구성 파일 CONFIG_FILE에서 값을 설정합니다.
    • TSM 구성 명령을 사용합니다.

      tsm configuration set -k wgserver.domain.ldap.hostname -v <hostname>

AD 인증서를 Tableau Server 키 저장소로 가져오기

기본적으로 Tableau Server 컨테이너는 단순 바인딩이 사용될 때마다 StartTLS를 통해 AD와 통신합니다. 따라서 이 구성에서 컨테이너가 실행되는 경우 AD 서버 인증서를 Tableau Server 키 저장소로 가져와야 합니다. 그렇지 않으면 서버 초기화가 실패합니다. 이를 수행하려면 다음 단계를 수행합니다.

  1. pre-init-command 스크립트를 만듭니다(사전 초기화 스크립트 섹션 확인). 다음 줄을 추가하여 Tableau Server 키 저장소에 AD 인증서를 추가합니다.

    ${INSTALL_DIR}/packages/repository.${SERVICE_VERSION}/jre/bin -importcert -noprompt -alias startTlsCert -file <mounted-certificate-path> -storetype JKS -storepass changeit -keystore ${DATA_DIR}/config/tableauservicesmanagerca.jks
  2. pre-init-command 스크립트의 -file 매개 변수에 제공된 파일 경로에 AD 서버 인증서를 마운트합니다.

또는 StartTLS를 통해 AD와 통신하기 위한 기본 설정을 사용하지 않도록 설정할 수 있습니다. wgserver.domain.ldap.starttls.enabledfalse 값으로 설정하여 StartTLS를 사용하지 않도록 설정합니다. 하지만 이는 권장하지 않습니다.

배포 구성 예

Docker

Tableau Server 컨테이너 기본 사용법
docker run \
-e LICENSE_KEY=<key>
-p 8080:8080
-d <Tableau Server in a Container image ID or tag>
자동화된 초기 관리자 사용자가 있는 Tableau Server 컨테이너 기본 사용법
docker run \
-e LICENSE_KEY=<key> \
-e TABLEAU_USERNAME=<myadmin> \
-e TABLEAU_PASSWORD_FILE=/etc/tableau-admin-secret \
-v <full-path-to-pw-file>:/etc/tableau-admin-secret \
-p 8080:8080 -d <Tableau Server in a Container image ID or tag>
TSM 전용 모드
docker run \
-e TSM_ONLY=1 \
-p 8080:8080 -d <Tableau Server in a Container image ID or tag>
다중 노드 기본 사용법
초기 노드

옵션 1: 서버 구성(CONFIG_FILE)이 다중 노드 토폴로지를 지정하는 경우 이 옵션을 사용합니다.

docker run \
-v <network-shared-directory>:/docker/config/bootstrap \
-v <full-path-to-config-file>:/docker/config/config.json:ro \
-e LICENSE_KEY=<key> \
-p 8080:8080 -p 8800-9000:8800-9000 -p 27000-27010:27000-27010 \
--hostname=<static (internal) name of host machine> \
-d <Tableau Server in a Container image ID or tag>

옵션 2: 서버 구성에서 다중 노드 토폴로지를 지정하지 않더라도 다중 노드 배포를 원하는 경우 이 옵션을 사용합니다.

docker run \
-v <network-shared-directory>:/docker/config/bootstrap \
-e LICENSE_KEY=<key> -e ALWAYS_WRITE_BOOTSTRAP_FILE=1 \
-p 8080:8080 -p 8800-9000:8800-9000 -p 27000-27010:27000-27010 \
--hostname=<static (internal) name of host machine> \
-d <Tableau Server in a Container image ID or tag>
추가 노드
docker run \
-v <network-shared-directory>:/docker/config/bootstrap \
-e BOOTSTRAP_INSTALL=1 \
-p 8080:8080 -p 8800-9000:8800-9000 \
--hostname=<static (internal) name of host machine> \
-d <Tableau Server in a Container image ID or tag>
데이터 외부화 사용법
docker run \
-v <empty-data-dir>:/var/opt/tableau \
-e LICENSE_KEY=<key> \
--hostname=<static (internal) name of host machine> \
-p 8080:8080 -d <Tableau Server in a Container image ID or tag>
컨테이너 초기화 기본 사용법

컨테이너 초기화

docker run \
-v <empty-data-dir>:/var/opt/tableau \
-e LICENSE_KEY=<key> \
-e INIT_CONTAINER=1 \
--hostname=<static (internal) name of host machine> \
-p 8080:8080 -d <Tableau Server in a Container image ID or tag>

컨테이너 실행

docker run \
-v <empty-data-dir>:/var/opt/tableau \
--hostname=<static (internal) name of host machine> \
-p 8080:8080 -d <Tableau Server in a Container image ID or tag>
백업 단일 노드에서의 기본 복원
docker run \
-v <full-path-to-backup-file>:/docker/config/backup/backup-file.tsbak \
-v <full-path-to-config-only-file>:/docker/config/config.json:ro \
-e LICENSE_KEY=<key> \
-p 8080:8080 -d <Tableau Server in a Container image ID or tag>

Docker-Compose

version: '3.2'
services:
    tableau-server:
         hostname: localhost
         volumes:
              - <your-tsm-command-file>:/docker/config/tsm-commands:ro
              - <your-config-file >:/docker/config/config.json:ro
         ports:
              - "8080:8080"
         image: ${IMAGE_NAME}
         environment:
              - LICENSE_KEY=<license-key>

 

 

피드백을 제공해 주셔서 감사합니다!귀하의 피드백이 제출되었습니다. 감사합니다!