Linux 컨테이너용 Bridge 설치

Linux용 Bridge는 컨테이너형 워크로드의 확장성과 간소화된 관리 기능을 제공합니다. 다음 지침에서는 사용자가 Docker에 대한 기본 지식과 Linux 에코시스템에서 사용되는 주요 용어를 알고 있다는 전제하에 Linux용 Bridge를 실행하는 간단한 방법을 설명합니다.

Docker 컨테이너에서 Bridge 설치 및 실행

Linux에서 Bridge를 사용하려면 사용자 지정된 Docker 이미지를 만들고 RPM 패키지를 설치한 다음 컨테이너 이미지 내부에서 Bridge를 실행해야 합니다.

필수 요건

  • Docker 엔진 설치. Docker 컨테이너의 기본 이미지의 경우 Linux 기반 Bridge는 다음에서 지원됩니다.
    • Amazon Linux 2
    • Red Hat 7.3.x 이상, 8.3 이상
    • CentOS 7

      참고: CentOS 7 distro에 대한 지원은 2024.3 릴리스로 종료됩니다.

  • Tableau Bridge RPM 패키지
  • Linux 운영 체제에 대한 경험
  • 기본 셸 스크립팅 및 Docker에 대한 경험
  • Tableau 사이트 관리자 PAT(개인용 액세스 토큰) Tableau에서는 클라이언트당 하나의 PAT 토큰을 사용할 것을 권장합니다.

1단계: Bridge 컨테이너 이미지 만들기

다음 단계는 Linux 기본 이미지에서 Bridge를 구축하기 위한 기본 지침입니다. 자세한 내용은 Docker 개요(영문)를 참조하십시오.

Docker가 설치되면 명령을 실행할 권한이 있는 유일한 사용자는 루트 사용자입니다. sudo 권한으로 Docker 명령을 실행하거나 Docker 그룹에 속한 사용자가 수행할 수 있습니다.

  1. Tableau 웹 사이트의 다운로드(링크가 새 창에서 열림) 페이지에서 Bridge .rpm 패키지를 다운로드합니다.
  2. (선택 사항) 구성 설정을 편집하여 클라이언트 실행 방법을 변경할 수 있습니다. 자세한 내용은 Bridge 클라이언트 설정 변경을 참조하십시오.
  3. 작업 디렉터리를 생성하고 .rpm 패키지를 해당 디렉터리로 이동합니다.

    cd ~

    $ mkdir Docker

    $ cd Docker

    $ mv <RPM_location>.rpm .

  4. 작업 디렉터리에 Docker 파일을 만듭니다. 예를 들면 다음과 같습니다.

    $ touch Dockerfile

  5. Docker 파일을 편집하고 다음을 실행할 명령을 추가합니다. yum update.

    Red Hat 예

    Red Hat 8의 경우:

    FROM registry.access.redhat.com/ubi8/ubi:latest

    RUN yum -y update

    Red Hat 7의 경우:

    FROM registry.access.redhat.com/ubi7/ubi:latest

    RUN yum -y update

    Centos 예

    Centos 7의 경우:

    FROM centos:7

    RUN yum -y update

  6. Docker 파일을 편집하고 Bridge RPM 패키지를 복사하는 명령을 추가하고 설치한 다음 이미지에서 제거합니다.

    COPY <your_bridge_rpm>.rpm /<path_of_container>

    RUN ACCEPT_EULA=y yum install -y $(find . -name *.rpm) && rm -rf *.rpm

  7. docker build 명령을 사용하여 새 컨테이너 이미지를 작성합니다. 다음 명령은 현재 디렉터리에 이미지를 만들고​"bridge_base"라는 단어로 태그를 지정합니다.

    docker buildx build --platform=linux/amd64 -t bridge_base .

  8. 생성한 기본 이미지가 이미지 목록에 표시되는지 확인합니다.

    docker images | grep bridge

2단계: 드라이버 설치

Bridge 클라이언트에는 사설망 데이터와 Tableau Cloud 간의 연결을 촉진하기 위한 드라이버가 필요합니다. 드라이버를 받으려면 드라이버 다운로드로 이동하여 데이터 원본을 선택한 다음 운영 체제로 Linux를 선택합니다.

  1. 기본 이미지가 시작된 후 대화형으로 설치를 수행하거나, 기본 이미지 위에 별도의 계층으로 Dockerfile을 작성할 수 있습니다.

    MySQL 드라이버 RPM을 디렉터리에 복사하면 다음 Dockerfile을 사용하여 MySQL 드라이버 계층화를 위한 별도의 작업 디렉터리를 생성할 수 있습니다.

    # Using previously built bridge_base image

    FROM bridge_base COPY mysql-connector-odbc-8.0.26-1.el7.x86_64.rpm .

    RUN yum install -y mysql-connector-odbc-8.0.26-1.el7.x86_64.rpm

    Postgres JDBC 드라이버를 설치합니다. 이는 별도의 Dockerfile에서도 수행할 수 있습니다.

    # Using previously built bridge_base image

    FROM bridge_base COPY postgresql-42.3.3.jar /opt/tableau/tableau_driver/jdbc/

    Amazon Redshift 드라이버를 설치합니다.

    # Using previously built bridge_base image

    FROM bridge_base

    yum install -y unixODBC

    yum --nogpgcheck localinstall -y

    AmazonRedshiftODBC-64-bit-1.4.59.1000-1.x86_64.rpm

    odbcinst -i -d -f /opt/amazon/redshiftodbc/Setup/odbcinst.ini

  2. 새 이미지를 만듭니다.
  3. docker image build -t bridge_final .

    bridge_final 이미지는 이전 단계의 캐시된 이미지를 사용하고 모든 Bridge 인스턴스에 대한 드라이버 설치를 자동화합니다. 이미지 리포지토리가 있는 경우 이미지를 리포지토리에 게시하고 Bridge를 실행하려는 모든 컴퓨터에 이미지를 배포할 수 있습니다.

3단계: Bridge 컨테이너 실행

이제 기본 이미지가 구축되었으므로 다양한 방법을 사용하여 배포할 수 있습니다. 기본 단계는 다음과 같습니다.

  1. Bridge 컨테이너의 인스턴스를 시작합니다.
  2. 로그인하고 작업자를 시작합니다.
  3. 에이전트를 풀에 할당합니다.

참고: Linux용 Bridge는 Bridge(레거시 일정)를 지원하지 않습니다. 자세한 내용은 Bridge(레거시) 일정을 Online 일정으로 마이그레이션을 참조하십시오.

  1. 컨테이너 배포를 시작하기 전에 PAT(개인용 액세스 토큰)를 만듭니다. 에이전트에 로그인하려면 PAT가 필요합니다. Tableau Cloud는 사용자당 104개의 PAT를 지원합니다. Tableau에서는 클라이언트당 하나의 PAT 토큰을 사용할 것을 권장합니다.

    참고: patTokenId(TabBridgeClientWorker 명령 실행 시 사용됨), JSON 파일의 토큰 이름, Tableau Cloud에서 PAT를 생성할 때의 토큰 이름이 일치해야 합니다.

  2. ENV LC_ALL en_US.UTF-8을 사용하여 Docker에서 로캘을 설정합니다. /etc/profile 파일을 추가하여 로캘을 설정할 수도 있습니다.
  3. export LANG="en_US.utf8"

    export LANGUAGE="en_US.utf8"

    export LC_ALL="en_US.utf8"

  4. Bridge 컨테이너의 인스턴스를 시작합니다. 컨테이너 이미지를 설정하고 시작하는 방법에는 여러 가지가 있습니다. 다음 대화형 방법은 작업자를 시작하는 데 필요한 단계를 보여줍니다. 종료하면 컨테이너 실행이 중지됩니다.
    1. root 자격으로 컨테이너에 대한 셸 프롬프트로 이동하려면 다음 방법을 사용합니다. 나머지 명령은 컨테이너의 대화형 세션 컨텍스트에서 실행됩니다.

      docker container run -it bridge_final /bin/bash

    2. JSON 형식의 플랫 파일에 PAT 토큰을 추가합니다. 예를 들면 다음과 같습니다.

      /home/jSmith/Documents/MyTokenFile.txt

    3. 토큰 구문 예:

      {"MyToken" : "uLICC7e8SUS8ZNGe8RIFn4u==:lRihmYHI0XBKle7e8S4uSORXGqAkAl4"}

    4. 파일 사용 권한을 변경하여 현재 사용자의 액세스를 제한합니다. 예를 들면 다음과 같습니다.

      chmod 600 MyTokenFile.txt

    5. TabBridgeClientWorker 명령을 사용하여 작업자를 시작하고 다음 명령 옵션을 제공합니다.

      명령설명
      --patTokenIdPAT의 ID입니다. 자세한 내용은 개인용 액세스 토큰을 참조하십시오.
      --userEmailPAT에 연결된 사용자 이메일입니다.
      --client작업자에게 부여할 이름입니다.
      --siteURI에 나타나는 사이트 이름입니다. URI 경로를 포함하지 마십시오.
      --patTokenFilePAT 텍스트 파일의 파일 이름 및 경로입니다.
      -e(선택 사항) 기본적으로 Bridge 클라이언트 작업자는 백그라운드 서비스로 실행됩니다. 작업자를 포그라운드에서 실행하려면 -e 인수를 포함해야 합니다.
      --poolId(선택 사항) 클라이언트에 할당된 풀 ID입니다. 풀 ID 사용을 참조하십시오.

      명령 예

      /opt/tableau/tableau_bridge/bin/TabBridgeClientWorker -e --patTokenId="Mytoken" --userEmail="admin@tableau.com" --client="myBridgeAgent" --site="mySite" --patTokenFile="/home/jSmith/Documents/MyTokenFile.txt" --poolId="1091bfe4-604d-402a-b41c-29ae4b85ec94"
  5. “Service started: ...”는 에이전트가 시작되었음을 나타내는 메시지입니다.

    Control-C를 사용하여 작업자를 중지합니다. 작업자를 다시 시작하는 대신 컨테이너 이미지에 대한 새 작업자를 시작할 수 있습니다.

    명령 옵션 --poolId를 사용하여 풀을 할당하지 않은 경우 클라이언트는 기본 풀에 할당됩니다. 특정 도메인 또는 VConn과 함께 클라이언트를 사용하려는 경우 UI를 사용하여 명명된 풀에 클라이언트를 할당할 수 있습니다. Tableau Cloud의 > 설정 > Bridge에서 관련 메뉴를 확인할 수 있습니다. 자세한 내용은 Bridge 클라이언트 풀 구성을 참조하십시오.

풀 ID 사용

TabBridgeClientWorker 명령으로 Bridge 작업자를 시작할 때 poolId 인수는 선택 사항입니다. 그러나 클라이언트의 동작은 클라이언트가 사이트에 등록되었는지 여부와 클라이언트가 풀에 할당되었는지 여부에 따라 달라집니다. Tableau Bridge는 한 번에 하나의 Tableau Cloud 사이트에만 연결하거나 등록할 수 있습니다. 클라이언트는 로그오프했다가 다시 로그인하면 사이트에 등록됩니다.

풀 ID가 제공되지 않은 경우

  • Bridge 클라이언트가 등록된 경우 클라이언트 상태는 동일하게 유지됩니다.
    • 클라이언트가 풀에 할당된 경우 명명된 풀인지, 기본 풀인지에 관계없이 풀에 할당된 상태로 유지됩니다.
    • 클라이언트가 풀에 할당되지 않은 경우 할당되지 않은 상태로 유지됩니다.
  • Bridge 클라이언트가 새 클라이언트인 경우(Tableau Cloud에 로그인한 적이 없는 경우) 해당 클라이언트는 기본 풀에 할당됩니다.

풀 ID가 제공된 경우

  • 풀 ID가 제공되고 올바른 경우, Bridge 클라이언트가 명명된 풀에 할당됩니다.
  • 풀 ID가 제공되었지만 올바르지 않은 경우:
    • Bridge 클라이언트가 등록되지 않은 경우 클라이언트가 기본 풀에 할당됩니다.
    • Bridge 클라이언트가 등록된 경우 명명된 풀, 기본 풀 또는 할당되지 않은 풀에 관계없이 클라이언트 상태는 동일하게 유지됩니다.

풀 ID 찾기

풀 ID를 찾으려면 설정 > Bridge 페이지에서 풀 이름을 클릭합니다. 예를 들면 다음과 같습니다.

문제 해결

작업자 시작 오류

경우에 따라 TabBridgeClientWorker 명령 실행 후 다음 오류가 표시됩니다.

Missing log in parameters. Aborting the attempt to start service worker.

대부분의 경우 원래 옵션 및 -e 옵션과 함께 명령을 다시 실행하면 문제가 해결되었습니다. -e 옵션은 포그라운드에서 Bridge 작업자 서비스를 실행합니다.

로그 파일 작업

로그 파일은 사용자의 My_Tableau_Bridge_Repository/Logs 폴더에 저장됩니다. tmp 폴더에 로그를 저장하려면 다음 명령을 실행합니다.

docker container run --volume /tmp/bridge_logs:/root/Documents/My_Tableau_Bridge_Repository/Logs -it bridge_final /bin/bash

이 예에서 위치는 /tmp/bridge_logs로 지정됩니다. docker 명령을 사용하면 로그 파일 저장이 단순해지고 Bridge 로그 파일을 수동으로 컨테이너에서 로컬 파일 시스템으로 복사할 필요가 없습니다.

MySQL 드라이버 실패

LC_MESSAGESUTF-8 로캘로 설정되어 있지 않으면 읽기 및 표시 문제가 발생할 수 있습니다. /etc/profile 파일을 편집하거나 다음을 사용하여 작업자를 다시 시작할 수 있습니다.

LC_ALL=en_US.UTF-8 /opt/tableau/tableau_bridge/bin/TabBridgeClientWorker -e

개인용 액세스 토큰 만료로 인해 Bridge 클라이언트가 예기치 않게 중지됨

PAT(개인용 액세스 토큰)가 만료되면 Bridge 클라이언트가 Tableau Cloud에서 연결이 끊어지고 컨테이너가 종료될 수 있습니다. Bridge 클라이언트에서 포그라운드에서 시작 명령을 실행하여 PAT가 만료되었는지 확인할 수 있습니다. PAT가 만료된 경우 다음 오류가 나타날 수 있습니다.

The client credentials are invalid. To complete the request, reset the credentials, and sign in to the Tableau Bridge client.

원래 PAT 소유자인 경우 Tableau Cloud에서 계정 관리 설정으로 이동하여 PAT가 만료되었는지 확인할 수도 있습니다. 이 문제를 해결하려면 새 PAT를 생성하고 위의 3단계: Bridge 컨테이너 실행 단계를 따라야 합니다.

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