RMT 업그레이드: 기술 참조
이 섹션은 업그레이드 프로세스 중에 검사되는 작동 임계값, 시스템 경로 및 네트워크 포트에 대한 기술 참조 가이드입니다. 다음 테이블을 사용하여 유효성 검사 오류를 신속하게 진단하고 환경을 필요한 RMT 기준선에 맞게 조정할 수 있습니다.
참고: '평등'이라는 회사 가치에 부합하기 위해 RMT 마스터라는 명칭을 RMT 서버로 업데이트했습니다. 일부 경우 RMT 서버 설치 경로 및 명령에서 '서버' 대신 '마스터'라는 용어를 사용할 수 있습니다. 따라서 CLI 명령 및 옵션, 설치 폴더, 구성 파일 및 기타 인스턴스에는 계속해서 이러한 용어가 표시될 수 있습니다. 자세한 내용은 Tableau 도움말 정보(링크가 새 창에서 열림)를 참조하십시오.
업그레이드 전 상태 검사
업그레이드 전 상태 검사는 기존 설치가 아직 존재하는 동안 RMT 서버 또는 Agent 호스트를 검사하여 서비스가 실행 중인지, 데이터베이스에 액세스할 수 있는지 등을 확인하고 자세한 PASS/FAIL/WARN 보고서를 생성합니다. 시스템 리소스, 계정, 파일 사용 권한, PostgreSQL, RabbitMQ, 네트워킹, 구성 파일 및 RMT 서비스 전반에 걸쳐 80개 이상의 개별 검사를 실행합니다. 다음 표에는 업그레이드 전에 수행되는 검사가 나와 있습니다. FAIL 상태(Exit Code 2)를 반환하는 항목이 있으면 업그레이드가 취소됩니다.
시스템 및 하드웨어
| 검사 ID | 이름 | 플랫폼 | 실패(FAIL)/경고(WARN) 조건 |
| #1 | 운영 체제 | Linux, Windows | WARN OS 버전이 사전 검사 허용 목록에 없습니다. 지원되는 목록은 RHEL 8.x/9.x, Ubuntu 20.04/22.04/24.04, CentOS Stream 8/9, Oracle Linux 8.x/9.x, AlmaLinux 8.x/9.x, Rocky Linux 8.x/9.x, Amazon Linux 2023, Windows Server 2019/2022입니다. |
| #2 | 디스크 공간 | Linux, Windows | FAIL 여유 공간이 RMT 서버에서 20GB 미만이거나 Agent에서 5GB 미만인 경우 실패. WARN 여유 공간이 RMT 서버에서 50GB 미만이거나 Agent에서 10GB 미만인 경우 경고 |
| #2a | 디스크 유형 | Linux, Windows | INFO 드라이브가 SSD인지 HDD인지를 보고함 |
| #3 | RAM | Linux, Windows | WARN RMT 서버가 8GB(최소) 미만인 경우 또는 Agent가 4GB(최소) 미만인 경우 경고 |
| #4 | CPU 코어 | Linux, Windows | WARN RMT 서버가 8GB(최소) 미만인 경우 또는 Agent가 4GB(최소) 미만인 경우 경고 |
| #4a | CPU 명령어 | Linux, Windows | FAIL(Linux): sse4_2 또는 popcnt가 없는 경우 실패. WARN(Windows): 오래된 CPU가 감지된 경우 경고. |
| #4b | VC++ Redist | Windows | FAIL Visual Studio 2022 C++ Redistributable 가능 패키지가 없는 경우 실패. |
| #4c | OpenSSL DLLs | Windows | INFO libcrypto-3-x64.dll 및 libssl-3-x64.dll을 확인함 |
| #5 | 시스템 가동 시간 | Linux, Windows | INFO: 10분 미만인 경우(최근 재부팅) 또는 90일 초과인 경우(패치 대기 중) 알림 |
| #6 | Systemd 실행 중 | Linux | FAIL systemd가 실행되고 있지 않은 경우 실패, PASS: 실행 중이거나 성능이 저하된 경우 통과 |
| #7 | FIPS 모드 | Linux, Windows | FAIL(Windows): 레지스트리에서 사용하는 경우 실패, PASS FIPS를 사용 안 하는 경우 통과. WARN(Linux) config.json과 일치하지 않는 경우 경고. PASS OS 및 구성이 일치하는 경우 통과 |
| #7a | PowerShell 버전 | Windows | INFO PowerShell 버전 |
| #7b | 시스템 로캘 | Windows | INFO 시스템 로캘 정보 |
| #7c | WMI 상태 | Windows | WARN WMI 리포지토리가 일관되지 않는 경우 경고 |
계정 및 사용 권한
| 검사 ID | 이름 | 플랫폼 | 실패(FAIL)/경고(WARN) 조건 |
| #8 | 서비스 계정 | Linux, Windows | FAIL RMT 서비스 계정 또는 Windows 서비스를 찾을 수 없는 경우 실패 |
| #9 | 그룹 멤버십 | Linux | FAIL 필수 서비스 그룹(예: rmtmasterapp, rmtmasterconfig 등)이 없는 경우 실패 |
| #10 | 사용자 Systemd | Linux | FAIL 사용자 systemd daemon/링거가 활성 상태가 아닌 경우 실패 |
| #44 | pamtester 설치됨 | Linux | WARN 설치되지 않은 경우 경고. 이 문제를 해결하려면 yum install pamtester 또는 apt install libpam-runtime을 설치해야 함 |
Linux에 대한 디렉터리 소유권 및 사용 권한
| 검사 ID | 디렉터리 | Expected Owner:Group | 예상 모드 |
| #11 | 구성 디렉터리 | tabrmt-master:rmtmasterconfig | 2775 |
| #12 | 로그 디렉터리 | tabrmt-master:rmtmasterlogs | 2775 |
| #13 | 데이터 디렉터리(+ PG/RMQ 하위 디렉터리) | 구성 요소별로 다름 | 2775 |
| #14 | 필수 요건 디렉터리 | root 또는 구성 요소 사용자 | 755 |
| #14a | rabbitmq-defaults 파일 | 그룹 쓰기 가능 권한 필요 | g+w |
| #15 | SSL 인증서 디렉터리 | tabrmt-master:rmtopenssl | 2775 |
| #15a | 홈 디렉터리 | 구성 요소 사용자 | 770 |
| #15b | /etc/profile.d/tabrmt-*.sh | root | 기본값 |
| #15c | 구성 디렉터리 setgid 비트 | -- | 2xxx 필수 |
| #16 | environment.bash | 구성 요소 사용자 | group-writable |
심각도: 데이터 디렉터리 집합(#13 및 #15)에 대한 소유권에만 FAIL이 발생합니다. 다른 모든 Linux 디렉터리 검사(#11, #12, #14, #14a, #15a–c, #16)는 설치 프로그램의 사후 설치 단계에서 업그레이드 중에 소유권을 다시 적용하기 때문에 소유권/모드 불일치 시 WARN이 발생합니다. 사용 권한 모드가 잘못되었지만 소유권이 올바른 경우 WARN이 발생합니다.
Windows에 대한 디렉터리 소유권 및 사용 권한
| 검사 | 이름 | 심각도 |
| #11 | 구성 디렉터리 ACL | FAIL 서비스 사용자에게 FullControl이 없는 경우 실패 |
| #12 | 로그 디렉터리 ACL | FAIL 서비스 사용자에게 수정 권한이 없는 경우 실패 |
| #13 | 데이터 디렉터리 ACL(RMT 서버) | FAIL 서비스 사용자에게 PG/RMQ 데이터 디렉터리에 대한 FullControl이 없는 경우 실패 |
| #14 | 필수 요건 디렉터리 ACL(RMT 서버) | WARN ReadAndExecute가 없는 경우 경고(권고 - 모든 업그레이드는 필수 요건 MSI를 다시 설치하고 설치 후 동작은 ACL을 다시 적용함) |
| #15 | SSL 인증서 디렉터리 ACL(RMT Server) | FAIL 서비스 사용자에게 FullControl이 없는 경우 실패 |
| #16a | 서비스 사용자 ID | PASS(정보 제공용 -- 서비스를 실행하는 사용자를 표시) |
| #16b | SeServiceLogonRight 권한 | 있는 경우 INFO를 제공하고, 없거나 secedit가 실패하는 경우 WARN 경고가 발생 |
| #16c | RMT 디렉터리의 서비스 사용자 ACL | FAIL 서비스 사용자에게 필요한 권한이 없는 경우 실패 |
데이터베이스(PostgreSQL)
모든 PostgreSQL 검사는 RMT 서버에서만 실행됩니다.
| 검사 ID | 이름 | --db-password 옵션 필요 | 실패(FAIL)/경고(WARN) 조건 |
| #17 | PG 서비스 | 아니요 | FAIL 로컬 서비스가 중지되어 사용 안 함으로 설정된 경우 실패 |
| #18 | 포트 5555 수신 대기 | 아니요 | WARN(보안 그룹 / VPC / RDS 힌트) 수신 대기 안 하는 경우 경고 |
| #19 | DB Connection | 예 | WARN 내부 DB에 연결할 수 없는 경우 경고(SSL, 비밀번호 또는 네트워크 문제) |
메시징(RabbitMQ)
메시징(RabbitMQ) 검사는 RMT 서버에서만 실행됩니다.
| 검사 ID | 이름 | 실패(FAIL)/경고(WARN) 조건 |
| #22 | RMQ 서비스 | FAIL 로컬 서비스가 중지되어 사용 안 함으로 설정된 경우 실패 |
| #24 | 큐 백로그 | WARN 메시지가 10,000개를 초과하는 큐가 있는 경우 경고 |
| #25 | RabbitMQ 사용자 | WARN 기본 guest 사용자가 여전히 존재하는 경우 경고 |
| #26 | 활성 연결 | INFO만 해당. 활성 연결 수를 보고함 |
| #27 | Erlang 쿠키 액세스 가능 | WARN 쿠키 파일이 없는 경우, 사용 권한이 잘못된 경우 경고(모드 400 또는 600이어야 함) |
| #27a | ERLANG_HOME 집합 | WARN(Windows만 해당) `ERLANG_HOME`가 설정되지 않았거나 경로가 없는 경우 경고. |
| #27b | SSL 유효성 | FAIL 인증서가 만료된 경우 실패 |
| #27c | 디스크 경보 | FAIL RMQ 파티션에 여유 공간이 10GB 미만인 경우 실패(업그레이드 중단됨) |
| #45 | 인증서 디렉터리가 채워짐 | WARN 인증서 디렉터리가 있지만 비어 있는 경우 또는 필요한 인증서 파일(서버 인증서, 키, CA 인증서)이 없는 경우 경고 |
네트워크 및 구성
| 검사 ID | 이름 | 실패(FAIL)/경고(WARN) 조건 |
| #28a/b | Agent-마스터 통신 | WARN Agent가 5671, 5672, 80 또는 443에서 마스터에 연결할 수 없는 경우 경고 |
| #33-35 | JSON/Bash Config | FAIL config.json, setup.json 또는 environment.bash가 없거나 잘못된 경우 실패 |
| #36a | 알려진 결함이 있는 버전 | FAIL 현재 버전은 2025.3.0임(회귀 문제로 인한 업그레이드 차단) |
서비스 및 백업
| 검사 ID | 이름 | 실패(FAIL)/경고(WARN) 조건 |
| #38 | 모든 RMT 서비스가 실행 중임 | WARN 중지된 각 서비스에 대해 경고 |
| #38a | 중단된 프로세스 | FAIL 서비스가 중지된 후에도 남아 있는 tabrmt-* 프로세스가 있는 경우 실패 |
| #39 | 백그라운드 프로세서 실행 중 | WARN 호스트 프로세스가 실행되고 있지 않는 경우 경고 |
| #40 | 업그레이드 전 백업 미리 알림 | WARN 업그레이드 전에 구성을 백업하도록 미리 알림으로 경고 |
| #41 | 토폴로지 | INFO만 해당. 마스터/Agent 노드 유형 및 활성 에이전트 수(DB 포함)를 보고함 |
| #42 | 구성 요소 버전 인벤토리 | INFO만 해당. RMT, PostgreSQL, RabbitMQ, OpenSSL 버전을 보고함 |
| #43 | 컴퓨터 사양 요약 | INFO만 해당. OS, CPU 코어, RAM, 디스크 여유 공간을 보고함 |
업그레이드 후 상태 검사
이러한 검사는 업그레이드 후에 실행됩니다. 이는 차단되지 않으며 실패가 발생해도 업그레이드가 중지되지는 않지만 설치 후 문제가 발생함을 나타냅니다.
| 검사 ID | 이름 | 구성 요소 | 실패(FAIL)/경고(WARN) 조건 |
| #1a-d | 서비스 및 프로세스 | RMT Server, Agent | FAIL 주, PG 또는 RMQ 서비스가 실행되고 있지 않는 경우 실패 |
| #2 | 호스트 프로세스 감독자 | RMT Server, Agent | WARN 호스트 감독자 프로세스가 없는 경우 경고(자동 복구 없음) |
| #3a-b | 구성 파일 무결성 | RMT Server, Agent | FAIL JSON이 없거나 잘못된 경우 실패 |
| #4a-b | 파일 사용 권한 | RMT Server, Agent | FAIL 서비스 계정으로 구성/로그 디렉터리를 읽거나 쓸 수 없는 경우 실패 |
| #5a-d | 포트 수신 대기 | RMT Server | FAIL Web(443), AMQP(5672) 또는 DB(5555)가 수신 대기 중에 있지 않는 경우 실패 |
| #6 | PostgreSQL 연결 | RMT Server | FAIL PostgreSQL이 연결을 허용하지 않는 경우 실패 |
| #7 | RabbitMQ 상태 | RMT 서버 | SKIP 외부인 경우 건너뜁니다. FAIL 모든 재시도가 소진된 후 실패합니다. |
| #8a | 큐 소비자 | RMT Server | WARN 백로그가 있지만 활성 소비자가 없는 경우 경고(마스터 작업자 연결 끊김) |
| #9 | RMQ 경보 | RMT Server | FAIL 활성 메모리 또는 디스크 리소스 경보가 감지되는 경우 실패 |
| #10 | RabbitMQ SSL 인증서 | RMT 서버 | FAIL 인증서가 만료된 경우 실패. WARN 인증서가 30일 이내에 만료되는 경우 경고 |
| #11 | FIPS 일치 | RMT Server, Agent | FAIL OS FIPS 상태가 isFIPSEnabled 구성과 불일치하는 경우 실패 |
| #12 | 웹 서버 HTTP 응답 | RMT 서버 | HTTP GET을 `https://localhost:<port>/authentication/login`으로 설정합니다. PASS 200 또는 302인 경우 통과. FAIL 연결 거부/시간 초과인 경우 실패. WARN 그 외 다른 오류인 경우 경고. |
| #13 | HTTPS 인증서 유효성 | RMT Server | FAIL 웹 서버 TLS 인증서가 만료된 경우 실패 |
| #14a-d | 디스크 공간 | RMT Server, Agent | FAIL 여유 공간이 1GB 미만인 경우 실패. WARN: 여유 공간이 5GB 미만인 경우 경고 |
| #15 | 최근 로그 오류 | RMT Server, Agent | FAIL 로그에 FATAL 오류가 있는 경우 실패. WARN: CRITICAL 오류가 있는 경우 경고 |
| #16 | RMT 상태 | RMT Server, Agent | FAIL rmtadmin 상태가 오류 패턴을 반환하면 실패 |
| #17 | Agent 로그 기록 | Agent | Agent 데이터 디렉터리에서 로그 추적 파일(.history, .json)을 검사합니다. WARN 파일을 읽을 수 없거나 손상된 경우 경고 |
| #18a-f | 인벤토리 버전 | RMT Server, Agent | INFO RMT 버전, PostgreSQL 버전, RabbitMQ 버전, Erlang/OTP 버전, .NET Runtime(Windows) / OS(Linux), OS 버전(Windows) / 커널(Linux)에 대한 정보 제공 |
상태 검사 종료 코드
다음 종료 코드를 사용하여 업그레이드 전 및 업그레이드 후 상태 검사 스크립트의 결과를 해석할 수 있습니다.
업그레이드 전 스크립트
| 종료 코드 | 상태 | 업그레이드 동작 |
| 0 | READY TO UPGRADE | 업그레이드 진행 |
| 1 | UPGRADE WITH CAUTION | 업그레이드가 진행되지만 경고를 검토해야 함 |
| 2 | Do not upgrade | 업그레이드가 취소됨 |
| 3 | Script Error | 실행 환경 검사 |
업그레이드 후 스크립트
| 종료 코드 | 상태 |
| 0 | ALL PASSED |
| 1 | WARNINGS PRESENT |
| 2 | CRITICAL FAILURES |
InstallerContext 심각도 변경
자동 Windows MSI 업그레이드 중에 -InstallerContext를 사용하여 실행하는 경우 다음 검사는 수동 기본값과 다르게 동작합니다. 기본(InstallerContext가 아닌) 동작은 'stopped but not Disabled' / 'port not listening' 상태에 대해 *이미* WARN으로 설정되어 있으며, FAIL은 `Stopped+Disabled` 상태에 한해 사용됩니다. `-InstallerContext`에서는 'Disabled' 분기조차도 WARN으로 보고되므로, 설치 프로그램이 곧 수정할 일시적인 상태 때문에 진행 중인 설치 프로그램 기반 업그레이드가 차단되는 일은 절대 없습니다.
| 검사 | 이름 | 기본값 | InstallerContext |
| #17 | PG 서비스 | WARN 중지된 경우 경고, FAIL 중지 및 비활성화된 경우 실패, INFO 모두 중지된 경우 정보 제공 | WARN |
| #18 | PG 포트 | WARN 수신 대기 중이 아닌 경우 경고, INFO 모든 서비스가 중지된 경우 정보 제공 | WARN |
| #22 | RabbitMQ 서비스 | WARN 중지된 경우 경고, FAIL 중지+비활성화된 경우 실패, INFO 모두 중지된 경우 정보 제공 | WARN |
| #23 | Port 5672 (AMQP) | WARN 수신 대기 중이 아닌 경우 경고, INFO 모든 서비스가 중지된 경우 정보 제공 | WARN |
| #38a | 중단된 RMT 프로세스 | (검사 설명 참조) | SKIP(설치 프로그램이 프로세스 수명 주기를 관리함) |
업그레이드 전 임계값
| 임계값 | RMT Server | Agent | 단위 |
| 디스크 공간 FAIL | 20 | 5 | GB 여유 공간 |
| 디스크 공간 WARN | 50 | 10 | GB 여유 공간 |
| 임시 디렉터리 FAIL | 5 | 5 | GB 여유 공간 |
| 임시 디렉터리 WARN | 10 | 10 | GB 여유 공간 |
| RAM FAIL | 8 | 4 | GB |
| RAM WARN | 16 | 8 | GB |
| CPU FAIL | 4 | 2 | 코어 |
| CPU WARN | 8 | 4 | 코어 |
| 데이터베이스 크기 FAIL | 500 | - | GB |
| 데이터베이스 크기 WARN | 200 | - | GB |
| Hangfire 스키마 FAIL | 10 | - | GB |
| Hangfire 스키마 WARN | 1 | - | GB |
| WAL 디렉터리 FAIL(Windows) | 10 | - | GB |
| WAL 디렉터리 FAIL(Windows) | 2 | - | GB |
| WAL 디렉터리 FAIL(Linux) | 10 | - | GB |
| Mnesia 디렉터리 WARN | 5 | - | GB |
| RabbitMQ 디스크 경보 FAIL | 10 | - | GB 여유 공간 |
| 큐 백로그 WARN | 10,000 | - | 메시지 |
| 인증서 만료 WARN | 30 | 30 | 일 |
| 정리 보존 WARN | 180 | - | 일 |
| 데드 튜플 비율 WARN | 20 | - | 퍼센트 |
| Agent 하트비트 시간 경과 | 15 | - | 분 |
| 네트워크 드라이버 사용 기간 WARN | 3 | - | 년 |
| 로그 디렉터리 크기 WARN | 5 | 5 | GB |
| 로그 디렉터리 크기 WARN(심각) | 20 | 20 | GB |
업그레이드 후 임계값
| 임계값 | 값 | 단위 |
| 디스크 공간 FAIL | 1 | GB 여유 공간 |
| 디스크 공간 WARN | 5 | GB 여유 공간 |
| 인증서 만료 WARN | 30 | 일 |
| 큐 백로그 WARN | 10,000 | 메시지 |
| 로그 검사 기간 | 60 | 분 |
| RabbitMQ 시작 재시도 | 6회 시도 x 5초 | 총 30초 |
지원되는 최소 구성 요소 버전
| 구성 요소 | 최소 버전 |
| RabbitMQ | 3.10.10 이상 |
| Agent 버전 | 2023.1.0 이상 |
자동화 및 CI/CD 통합
Linux의 경우:
```base
# Linux
sudo bash rmt-pre-upgrade-check.sh --component master --db-password "$DB_PASSWORD"
EXIT_CODE=$?
if [ $EXIT_CODE -eq 2 ]; then
echo "BLOCKED: Fix critical issues before upgrading"
exit 1
fi
```
Windows의 경우:
```powershell
# Windows
.\rmt-pre-upgrade-check.ps1 -Component master
if ($LASTEXITCODE -eq 2) {
Write-Error "BLOCKED: Fix critical issues before upgrading"
exit 1
}
```
설치 디렉터리 참조서
기초 진단 유틸리티를 수동으로 호출하거나 설치 구조를 확인하려면 플랫폼별 디렉터리 경로를 참조하십시오.
Linux 디렉터리 구조
```
/opt/tableau/tabrmt/ # Install root
+-- master/ # Master application binaries
+-- agent/ # Agent application binaries
+-- prerequisites/ # Bundled dependencies
/var/opt/tableau/tabrmt/ # Data root
+-- master/config/ # config.json, setup.json
+-- master/logs/ # Application logs
+-- data/postgresql15/ # PostgreSQL data files
+-- data/rabbitmq313/ # RabbitMQ data/mnesia
+-- data/ssl/ # TLS certificates
/etc/opt/tableau/tabrmt/
+-- master/environment.bash # Master environment variables
+-- agent/environment.bash # Agent environment variables
```
Windows 디렉터리 구조
```
C:\Program Files\Tableau\Tableau Resource Monitoring Tool\ # Install root
C:\ProgramData\Tableau\Tableau Resource Monitoring Tool\ # Data root
```
필수 네트워크 포트
| 포트 | 서비스 | 방향 |
| 80 | RMT 웹 UI(HTTP) | 인바운드 |
| 443 | RMT 웹 UI(HTTPS) | 인바운드 |
| 5672 | RabbitMQ AMQP | RMT 서버에서 인바운드 |
| 5671 | TLS를 통한 RabbitMQ AMQP | RMT 서버에서 인바운드 |
| 15672 | RabbitMQ 관리 UI | 로컬 |
| 25672 | RabbitMQ 상호 노드 | 로컬 |
| 5555 | 내부 PostgreSQL | 로컬 |
