7부 - 유효성 검사, 도구 및 문제 해결

이 부에는 설치 후 검증 단계 및 문제 해결 지침이 수록되어 있습니다.

장애 조치 시스템 검증

배포를 구성한 후에는 간단한 장애 조치 테스트를 실행하여 시스템 이중화를 검증하는 것이 좋습니다.

다음 단계를 실행하여 장애 조치 기능을 검증하는 것이 좋습니다.

  1. 독립 게이트웨이(TSIG1)의 첫 번째 인스턴스를 종료합니다. 모든 인바운드 트래픽은 독립 게이트웨이(TSIG2)의 두 번째 인스턴스를 통해 라우팅되어야 합니다.
  2. TSIG1을 다시 시작한 다음 TSIG2를 종료합니다. 모든 인바운드 트래픽은 TSIG1을 통해 라우팅되어야 합니다.
  3. TSIG2를 다시 시작합니다.
  4. Tableau Server 노드 1을 종료합니다. 모든 Vizportal/응용 프로그램 서비스 트래픽이 노드 2로 장애 조치됩니다.

    참고: 2022년 9월부터 Tableau Server 2021.4 이상의 특정 버전에서는 노드 1 고가용성이 저하됩니다. 노드 1이 중단되면 클라이언트 연결이 실패합니다. 이 문제는 다음 유지 관리 버전에서 해결되었습니다.

    - 2021.4.15 이상
    - 2022.1.11 이상
    - 2023.1.3 이상

    ATR 활성화를 사용하는 Tableau Server 설치에 초기 노드 오류가 발생한 후 72시간의 유예 기간을 가지려면 이러한 버전 중 하나를 설치하거나 업그레이드하십시오. 자세한 내용은 Tableau 기술 자료에서 ATR을 사용하는 Tableau Server HA에 초기 노드 오류 후 유예 기간이 없음(링크가 새 창에서 열림)을 참조하십시오.

  5. 노드 1을 다시 시작하고 노드 2를 종료합니다. 모든 Vizportal/응용 프로그램 서비스 트래픽이 노드 1로 장애 조치됩니다.
  6. 노드 2를 다시 시작합니다.

이 맥락에서 "종료" 또는 "다시 시작"은 응용 프로그램을 미리 정상적으로 종료하지 않고 운영 체제 또는 가상 컴퓨터를 끄는 방식으로 수행합니다. 이 작업의 목표는 하드웨어 또는 가상 컴퓨터 장애를 시뮬레이션하는 것입니다.

각 장애 조치 테스트의 최소 검증 단계는 사용자를 인증하고 기본적인 보기 작업을 수행하는 것입니다.

장애를 시뮬레이션한 후 로그인을 시도할 때 "잘못된 요청" 브라우저 오류가 발생할 수 있습니다. 브라우저에서 캐시를 지우는 경우에도 이 오류가 나타날 수 있습니다. 이 문제는 주로 브라우저가 이전 IdP 세션의 데이터를 캐싱할 때 발생합니다. 로컬 브라우저 캐시를 지워도 이 오류가 계속되면 다른 브라우저로 연결하여 Tableau 시나리오의 유효성을 검사하십시오.

초기 노드 자동 복구

Tableau Server 버전 2021.2.4 이상에는 스크립트 디렉터리(/app/tableau_server/packages/scripts.<version>)에 자동화된 초기 노드 복구 스크립트인 auto-node-recovery가 포함되어 있습니다.

초기 노드에 문제가 있고 노드 2에 중복 프로세스가 있는 경우 Tableau Server가 계속 실행된다는 보장이 없습니다. Tableau Server는 초기 노드 장애 발생 후 최장 72시간 동안 계속 실행될 수 있으며, 그 이후에는 라이선스 서비스가 부족하여 다른 프로세스에 영향을 미칠 수 있습니다. 이러한 경우 사용자는 초기 노드에 장애가 발생한 후에도 계속 로그인하고 자신의 콘텐츠를 보고 사용할 수 있지만 관리 컨트롤러에 액세스할 수 없기 때문에 Tableau Server를 다시 구성할 수 없습니다.

중복 프로세스로 구성된 경우에도 초기 노드에 장애가 발생한 후 Tableau Server가 계속 작동하지 않을 수 있습니다.

Tableau 초기 노드(노드 1) 오류를 복구하려면:

  1. Tableau Server 노드 2에 로그인합니다.

  2. 스크립트 디렉터리로 변경합니다.

    cd /app/tableau_server/packages/scripts.<version>
  3. 다음 명령을 실행하여 스크립트를 시작합니다.

    sudo ./auto-node-recovery -p node1 -n node2 -k <license keys>

    여기서 <license keys>는 배포의 쉼표로 구분된(공백 없음) 라이선스 키 목록입니다. 라이선스 키에 액세스할 수 없는 경우 Tableau 고객 포털(링크가 새 창에서 열림)을 방문하여 해당 키를 검색하십시오. 예를 들면 다음과 같습니다.

    sudo ./auto-node-recovery -p node1 -n node2 -k TSB4-8675-309F-TW50-9RUS,TSNM-559N-ULL6-22VE-SIEN

auto-node-recovery 스크립트는 약 20단계를 실행하여 서비스를 노드 2로 복구합니다. 스크립트가 진행됨에 따라 각 단계가 터미널에 표시됩니다. 자세한 상태는 /data/tableau_data/logs/app-controller-move.log에 기록됩니다. 대부분의 환경에서 스크립트를 완료하는 데 35분에서 45분 정도 걸립니다.

초기 노드 복구 문제 해결

노드 복구가 실패하면 대화형으로 스크립트를 실행하여 유용한 프로세스에서 개별 단계를 허용하거나 허용하지 않을 수 있습니다. 예를 들어 스크립트가 프로세스 도중에 실패할 경우 로그 파일을 검토하고 구성을 변경한 다음 스크립트를 다시 실행할 수 있습니다. 대화형 모드로 실행하면 실패한 단계에 도달할 때까지 모든 단계를 건너뛸 수 있습니다.

대화형 모드로 실행하려면 script 인수에 -i 스위치를 추가합니다.

장애가 발생한 노드를 다시 구축

스크립트를 실행한 후에는 이전에 장애가 발생한 노드 1 호스트에 있었던 모든 서비스가 노드 2에서 실행됩니다. 4노드에서 추가하려면 부트스트랩 파일을 사용하여 새로운 Tableau Server 호스트를 배포하고 4부에 명시된 대로 원래 노드 2에 했던 것과 동일하게 구성합니다. 자세한 내용은 노드 2 구성을 참조하십시오.

switchto

switchto는 창 간 전환을 손쉽게 하는 Tim의 스크립트입니다.

  1. 배스천 호스트의 홈 디렉터리에 있는 switchto 파일에 다음 코드를 복사합니다.
  2. #!/bin/bash
    #-------------------------------------------------------------------
    # switchto
    #
    # Helper function to simplify SSH into the various AWS hosts when
    # following the Tableau Server Enterprise Deployment Guide (EDG).
    #
    # Place this file on your bastion host and provide your AWS hosts' 
    # internal ip addresses or machine names here.
    # Example: readonly NODE1="10.0.3.187"
    #
    readonly NODE1=""
    readonly NODE2=""
    readonly NODE3=""
    readonly NODE4=""
    readonly PGSQL=""
    readonly PROXY1=""
    readonly PROXY2=""
    				
    usage() {
    echo "Usage: switchto.sh [ node1 | node2 | node3 | node4 | pgsql | proxy1 | proxy2 ]"
    }
    
    
    ip=""
    
    case $1 in
    	node1)
    		ip="$NODE1"
    		;;
    	node2)
    		ip="$NODE2"
    		;;
    	node3)
    		ip="$NODE3"
    		;;
    	node4)
    		ip="$NODE4"
    		;;
    	pgsql)
    		ip="$PGSQL"
    		;;
    	proxy1)
    		ip="$PROXY1"
    		;;
    	proxy2)
    		ip="$PROXY2"
    		;;
    	?)
    		usage
    		exit 0
    		;;
    	*)
    		echo "Unkown option $1."
    		usage
    		exit 1
    		;;
    esac
    
    if [[ -z $ip ]]; then
    echo "You must first edit this file to provide the ip addresses of your AWS hosts."
    exit 1
    fi
    
    ssh -A ec2-user@$ip
  3. 스크립트의 IP 주소를 업데이트하여 EC2 인스턴스에 매핑한 후 파일을 저장합니다.
  4. 스크립트 파일에 사용 권한을 적용합니다.
  5. sudo chmod +x switchto

사용법:

호스트를 전환하려면 다음 명령을 실행합니다.

./switchto <target>

예를 들어 노드 1로 전환하려면 다음 명령을 실행합니다.

./switchto node1

Tableau Server 독립 게이트웨이 문제 해결

Tableau Server에서 독립 게이트웨이, Okta, Mellon 및 SAML을 구성하는 프로세스에서는 오류가 많이 발생할 수 있습니다. 실패의 가장 일반적인 근본 원인은 문자열 오류입니다. 예를 들어 구성 중에 지정된 Okta URL의 후행 슬래시(/)로 인해 SAML 어설션 관련 불일치 오류가 발생할 수 있습니다. 이 오류는 한 가지 예입니다. 구성 중에 어떤 응용 프로그램에서든 잘못된 문자열을 입력하게 될 가능성이 많습니다.

tableau-tsig 서비스 다시 시작

항상 독립 게이트웨이 컴퓨터에서 tableau-tsig 서비스를 다시 시작하는 것으로 문제 해결 작업을 시작합니다. 이 서비스는 빠르게 다시 시작되며 다시 시작하면 Tableau Server에서 업데이트된 구성이 로드됩니다.

독립 게이트웨이 컴퓨터에서 다음 명령을 실행합니다.

sudo su - tableau-tsig
systemctl --user restart tsig-httpd
exit

잘못된 문자열 찾기

문자열 오류(복사/붙여넣기 실수, 문자열 잘림 등)가 있는 경우 구성한 각 설정을 검토하십시오.

  • Okta 사전 인증 구성. 설정한 URL을 주의 깊게 검토합니다. 후행 슬래시가 있는지 확인합니다. HTTP와 HTTPS를 비교하여 확인합니다.
  • 노드 1의 SAML 구성에 대한 셸 기록. 실행한 tsm authentication saml configure 명령을 검토합니다. 모든 URL이 Okta에 구성된 것과 일치하는지 확인합니다. 노드 1에서 셸 기록을 검토하는 동안 Mellon 구성 파일 경로를 지정하는 tsm configuration set 명령이 독립 게이트웨이에서 파일을 복사한 파일 경로에 정확히 매핑되는지 확인합니다.
  • 독립 게이트웨이의 Mellon 구성. 셸 기록을 검토하여 Okta 및 Tableau SAML에서 구성한 것과 동일한 URL 문자열로 메타데이터를 만들었는지 확인합니다. /etc/mellon/conf.d/global.conf에 지정된 모든 경로가 올바르고 MellonCookieDomain이 Tableau 하위 도메인이 아닌 루트 도메인으로 설정되어 있는지 확인합니다.

관련 로그 검색

모든 문자열이 올바르게 설정된 것으로 보이면 로그에서 오류를 검사해야 합니다.

Tableau Server는 수십 개의 서로 다른 로그 파일에 오류 및 이벤트를 기록합니다. 독립 게이트웨이는 로컬 파일 집합에도 로그를 기록합니다. 이러한 로그를 검사할 때는 다음 순서를 따르는 것이 좋습니다.

독립 게이트웨이 로그 파일

독립 게이트웨이 로그 파일의 기본 위치는 /var/opt/tableau/tableau_tsig/logs입니다.

  • access.log: 이 로그는 Tableau Server 노드의 연결을 보여주는 항목이 있는 경우 유용합니다. TSM을 시작하려고 할 때 게이트웨이 오류가 발생해 시작되지 않는 경우 access.log 파일에 항목이 없다면 코어 연결 문제가 있는 것입니다. 항상 AWS 보안 그룹 구성을 첫 번째 단계로 확인합니다. 다른 일반적인 문제로는 tsig.json의 입력 오류가 있습니다. tsig.json을 업데이트하는 경우 tsm topology external-services gateway update -c tsig.json을 실행하기 전에 tsm stop을 실행합니다. tsig.json이 업데이트되면 tsm start를 실행합니다.
  • error.log: 다른 항목 중에서 이 로그에는 SAML 및 Mellon 오류가 포함됩니다.

Tableau Server tabadminagent 로그 파일

tabadminagent(tabadmincontroller가 아님) 파일 집합은 독립 게이트웨이 관련 오류를 해결하는 것과 관련된 로그 파일만 모아 놓은 것입니다.

독립 게이트웨이 오류가 tabdminagent에 기록된 위치를 찾아야 합니다. 이러한 오류는 아무 노드에서나 발생할 수 있지만 노드 1개에만 존재합니다. Tableau Server 클러스터의 각 노드에서 다음 단계를 수행하면서 "independent" 문자열을 찾습니다.

  1. EDG 설정의 Tableau Server 노드 1~4에서 tabadminagent 로그 파일 위치를 찾습니다.

    cd /data/tableau_data/data/tabsvc/logs/tabadminagent
  2. 다음과 같은 이름의 최신 로그를 엽니다.

    less tabadminagent_nodeN.log

    (N을 노드 번호로 바꾸기)

  3. 다음 검색 문자열을 사용하여 "Independent" 및 "independent"가 나오는 모든 경우를 검색합니다.

    /ndependent

    일치하는 항목이 없는 경우 다음 노드로 이동하고 1~3단계를 반복합니다.

  4. 일치하는 항목이 발견되면 Shift + G를 눌러 맨 아래로 이동하고 마지막 오류 메시지를 확인합니다.

httpd stub 파일 다시 로드

독립 게이트웨이는 Apache의 httpd 구성을 관리합니다. 일시적인 문제를 해결하는 일반적인 작업은 기초 Apache 구성을 채우는 httpd stub 파일을 다시 로드하는 것입니다. 독립 게이트웨이의 두 인스턴스 모두에서 다음 명령을 실행합니다.

  1. stub 파일을 httpd.conf에 복사합니다.

    cp /var/opt/tableau/tableau_tsig/config/httpd.conf.stub /var/opt/tableau/tableau_tsig/config/httpd.conf
  2. 독립 게이트웨이 서비스를 다시 시작합니다.

    sudo su - tableau-tsig
    systemctl --user restart tsig-httpd
    exit

로그 파일 삭제 또는 이동

독립 게이트웨이는 모든 액세스 이벤트를 기록합니다. 디스크 공간이 가득 차는 것을 방지하기 위해 로그 파일 저장소를 관리해야 합니다. 디스크가 가득 차면 독립 게이트웨이가 액세스 이벤트를 기록할 수 없으며 서비스가 실패합니다. 다음 메시지가 독립 게이트웨이의 error.log에 기록됩니다.

(28)No space left on device: [client 10.0.2.209:54332] AH00646: Error writing to /var/opt/tableau/tableau_tsig/logs/access.%Y_%m_%d_%H_%M_%S.log

이 오류는 Tableau 노드 1에서 tsm status -v를 실행할 때 external 노드에 대해 DEGRADED 상태를 초래합니다. 상태 출력의 external 노드는 독립 게이트웨이를 참조합니다.

이 문제를 해결하려면 access.log 파일을 삭제하거나 디스크에서 옮기십시오. Access.log 파일은 /var/opt/tableau/tableau_tsig/logs에 저장됩니다. 디스크를 지운 후 tableau-tsig 서비스를 다시 시작하십시오.

브라우저 오류

잘못된 요청: 이 시나리오의 일반적인 오류는 Okta의 "잘못된 요청" 오류입니다. 이 문제는 주로 브라우저가 이전 Okta 세션의 데이터를 캐싱할 때 발생합니다. 예를 들어 Okta 관리자 자격으로 Okta 응용 프로그램을 관리하고 다른 Okta 지원 계정을 사용하여 Tableau에 액세스하려고 하면 관리자 데이터의 세션 데이터가 "잘못된 요청" 오류를 발생시킬 수 있습니다. 로컬 브라우저 캐시를 지워도 이 오류가 계속되면 다른 브라우저로 연결하여 Tableau 시나리오의 유효성을 확인해 보십시오.

“Bad Request” 오류의 또 다른 원인은 Okta, Mellon 및 SAML 구성 프로세스 중에 입력한 많은 URL 중 하나의 입력 오류입니다. 이 모든 것을 오류 없이 입력했는지 확인합니다.

오류를 야기한 URL은 주로 독립 게이트웨이 서버의 error.log 파일에 명시됩니다.

찾을 수 없음 - 요청한 URL을 이 서버에서 찾지 못했습니다: 이 오류는 많은 구성 오류 중 하나를 나타냅니다.

사용자가 Okta로 인증된 후 이 오류가 발생하면 SAML을 구성할 때 Okta 사전 인증 응용 프로그램을 Tableau Server에 업로드한 것일 수 있습니다. Okta 사전 인증 응용 프로그램 메타데이터가 아니라 Tableau Server에 Okta Tableau Server 응용 프로그램 메타데이터가 구성되어 있는지 확인합니다.

다른 문제 해결 단계:

  • Okta 사전 인증 응용 프로그램 설정을 검토합니다. HTTP와 HTTPS 프로토콜이 이 항목에서 지정한 대로 설정되어 있는지 확인하십시오.
  • 두 독립 게이트웨이 서버에서 Restart tsig-httpd를 다시 시작합니다.
  • 두 독립 게이트웨이 모두에서 sudo apachectl configtest가 "Syntax OK"를 반환하는지 확인합니다.
  • 테스트 사용자가 Okta의 두 응용 프로그램에 모두 할당되었는지 확인합니다.
  • 부하 분산 장치 및 연결된 대상 그룹에 연결 유지가 설정되어 있는지 확인합니다.

Tableau Server에서 독립 게이트웨이로의 TLS 연결 확인

wget 명령을 사용하여 Tableau Server에서 독립 게이트웨이로의 연결 및 액세스를 확인합니다. 이 명령의 변형을 사용하면 인증서 문제가 연결 문제를 일으키는지 여부를 확인하는 데 도움이 될 수 있습니다.

예를 들어 다음 wget 명령을 사용하여 Tableau Server의 HK(하우스키핑) 프로토콜을 확인합니다.

wget https://ip-10-0-1-38.us-west-1.compute.internal:21319

tsig.json 파일의 호스트 옵션에 포함한 것과 동일한 호스트 주소를 사용하여 URL을 구성합니다. https 프로토콜을 지정하고 URL에 HK 포트 21319를 추가합니다.

연결을 확인하고 인증서 확인을 무시하려면

wget https://ip-10-0-1-38.us-west-1.compute.internal:21319 --no-check-certificate

TSIG의 루트 CA가 유효한지 확인하려면

wget https://ip-10-0-1-38.us-west-1.compute.internal:21319 --ca-certificate=tsigRootCA.pem

Tableau에서 통신할 수 있는 경우에는 콘텐츠 관련 오류가 계속해서 발생할 수 있지만 연결 관련 오류는 발생하지 않습니다. Tableau에서 전혀 연결할 수 없는 경우 방화벽/보안 그룹의 프로토콜 구성을 확인하는 것으로 시작합니다. 예를 들어 독립 게이트웨이가 상주하는 보안 그룹의 인바운드 규칙은 TCP 21319를 허용해야 합니다.

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