Azure 네이티브 Virtual Machine(VM) 기반 Mattermost 배포
Mattermost v11.8Mattermost는 Azure Marketplace 솔루션으로 제공되며, 컴퓨팅, 데이터베이스, 공유 파일 스토리지, 로드 밸런싱을 위한 Azure 관리형 서비스를 사용하여 사용자 고유의 구독에 프로덕션 수준의 Mattermost 스택을 프로비저닝합니다.
Mattermost는 Azure Marketplace 솔루션으로 제공되며, 컴퓨팅, 데이터베이스, 공유 파일 스토리지, 로드 밸런싱을 위한 Azure 관리형 서비스를 사용하여 사용자 고유의 구독에 프로덕션 수준의 Mattermost 스택을 프로비저닝합니다. 이 옵션은 기존 Azure 테넌트 내에서 확장 및 운영할 수 있는 복원력 있는 Mattermost 배포를 원하는 조직을 위해 설계되었습니다.
사전 요구사항#
* 구독에 대한 Owner 또는 Contributor 역할(Azure Marketplace 솔루션을 구매 및 배포하는 데 필요), 리소스 그룹을 생성할 권한, 그리고 해당 오퍼에 대한 Azure Marketplace 청구 조건에 동의할 권한이 있는 활성 Azure 구독.
* Azure 포털(리소스 그룹, 네트워킹, 가상 머신, Application Gateway)에 대한 기본적인 이해.
* 다중 노드 배포(애플리케이션 인스턴스 2개 이상)의 경우 유효한 Mattermost Enterprise 라이선스 파일. 단일 노드 배포에서는 라이선스가 선택 사항입니다.
* 배포 시 HTTPS를 활성화하려는 경우:
* PFX (PKCS#12) 인증서 번들과 비밀번호. * 배포 후 Application Gateway를 연결할 커스텀 도메인(FQDN).배포되는 구성 요소#
템플릿은 선택한 리소스 그룹에 다음을 포함하는 독립적인 프로덕션 수준 스택을 프로비저닝합니다:
- Virtual Machine Scale Set (Linux): Mattermost에서 게시한 Ubuntu Pro 24.04 LTS 이미지에서 Mattermost를 실행합니다. 인스턴스 수와 VM 크기는 선택한 스케일링 티어에 의해 결정됩니다.
- 공용 IP가 있는 Application Gateway: Mattermost 트래픽의 진입점 역할을 하며, HTTPS가 활성화된 경우 선택적 HTTPS 리스너(PFX 인증서 사용) 및 HTTP-to-HTTPS 리디렉션을 지원합니다.
- Azure Database for PostgreSQL Flexible Server: Mattermost 데이터를 저장하는 관리형 PostgreSQL 서비스로, 선택적 동일 영역 또는 영역 중복 고가용성(HA), 백업 보존 및 지역 중복성을 지원합니다.
- 프라이빗 엔드포인트가 있는 Azure Files (NFS): 가상 네트워크 내부에서만 접근 가능한 Mattermost 데이터(업로드, 플러그인, 기타 공유 파일)를 위한 공유 스토리지.
- 가상 네트워크 및 서브넷: 배포를 위한 전용 VNet으로, Application Gateway, Mattermost 애플리케이션 인스턴스, 데이터베이스, 스토리지 프라이빗 엔드포인트를 위한 별도 서브넷이 포함됩니다.
- NAT 게이트웨이: 애플리케이션 인스턴스의 제어된 아웃바운드 인터넷 접근을 제공합니다(예: 패키지 및 Mattermost 구성 스크립트를 가져오기 위해).
- 프라이빗 DNS 영역: VNet 내부에서 PostgreSQL Flexible Server와 Azure Files 프라이빗 엔드포인트를 확인하는 데 사용됩니다.
1단계: 플랜 선택 및 생성 시작#
Azure Marketplace에서 Mattermost - Azure-Native (VM-based) 오퍼를 열고, 지금 받기를 클릭한 후 플랜을 선택하고 만들기를 클릭하여 배포 마법사를 엽니다.
2단계: 기본 설정#
기본 설정 탭에서 다음을 구성합니다:
- 구독: 배포가 위치할 Azure 구독을 선택합니다.
- 리소스 그룹: 기존 리소스 그룹을 선택하거나 새로 만듭니다. 새 리소스 그룹을 사용하면 프로덕션 스택을 더 쉽게 관리하고 정리할 수 있습니다.
- 지역: 배포 지역을 선택합니다. 사용하려는 PostgreSQL Flexible Server SKU를 지원하는 지역을 선택하고, PostgreSQL 고가용성을 활성화하려는 경우 필요한 가용성 영역이 있는 지역을 선택합니다.
- 리소스 이름 접두사: 템플릿이 생성하는 Azure 리소스 이름에 사용되는 짧은 접두사(소문자, 숫자, 하이픈으로 구성된 2~12자)(예:
mm-prod).

3단계: 애플리케이션#
애플리케이션 탭에서 Mattermost 애플리케이션의 크기 설정 방법과 관리자의 VM 접근 방법을 구성합니다.
- 스케일링 티어: 계획 중인 사용자 규모를 선택합니다. 마법사는 이를 사용하여 VMSS 인스턴스 수, VM 크기, PostgreSQL SKU에 대한 적절한 기본값을 제안하고, 데이터베이스에 읽기 복제본을 생성할지 여부를 결정합니다. 드롭다운에는 각 티어에 권장되는 노드 수와 VM SKU가 표시됩니다. 기본 크기 설정 근거는 사용 가능한 참조 아키텍처를 참조하세요.
- VMSS 인스턴스 수: Mattermost 애플리케이션 노드 수(1~5개). 선택한 스케일링 티어의 권장값으로 기본 설정됩니다. 필요에 따라 조정할 수 있습니다.
- Enterprise 라이선스 파일: 인스턴스 수가 1개를 초과하는 경우(다중 노드 고가용성 클러스터링) 필수입니다. Mattermost Enterprise 라이선스 파일을 업로드합니다. 단일 노드 배포에서는 라이선스가 선택 사항입니다.
- VM SKU: 각 VMSS 인스턴스의 크기. 마법사는 권장 Linux 크기를 먼저 표시하며, 해당 지역에서 사용 가능한 지원되는 Linux 크기를 선택할 수 있습니다.
- 관리자 사용자 이름: VM 인스턴스에 로그인하는 데 사용되는 Linux 관리자 계정.
- 인증 유형: Linux 로그인을 위한 비밀번호 또는 SSH 공개 키를 선택합니다. 프로덕션 배포에는 SSH 공개 키가 권장됩니다.
- Mattermost 버전: 설치할 Mattermost 버전(예:
11.6.2). 지원 버전은 Mattermost 릴리즈 정책을 참조하세요.

4단계: 데이터베이스#
데이터베이스 탭에서 관리형 PostgreSQL 서비스와 공유 NFS 파일 공유를 구성합니다.
- PostgreSQL 컴퓨팅 SKU: 메모리 최적화 Flexible Server SKU. 선택한 스케일링 티어에 권장되는 SKU로 기본 설정됩니다. 해당 지역에서 지원되는 SKU를 선택합니다. 사용 가능한 선택지는
Standard_E2ds_v5,Standard_E4ds_v5,Standard_E8ds_v5입니다. - PostgreSQL 고가용성: PostgreSQL의 복원력 구성 방법을 선택합니다:
- 기본 가용성 영역 및 대기 가용성 영역: HA가 활성화된 경우 표시됩니다. 영역 중복 HA의 경우 기본 영역과 대기 영역이 달라야 합니다. 선택한 PostgreSQL SKU에 대해 해당 지역에서 지원되는 영역을 선택합니다.
- PostgreSQL 관리자 사용자 이름 및 비밀번호: Flexible Server의 관리자 자격 증명.
azure_superuser와 같은 예약된 이름은 피하세요. 비밀번호는 Azure Flexible Server 비밀번호 복잡성 요구사항을 충족해야 합니다. - Mattermost 데이터베이스 사용자 비밀번호: Mattermost 데이터베이스 연결 섹션에서 애플리케이션 노드가 PostgreSQL에 연결하는 데 사용하는 전용 Mattermost 데이터베이스 사용자의 비밀번호를 설정합니다. 이는 PostgreSQL 관리자 자격 증명과 별개입니다. 비밀번호는 관리자 비밀번호와 동일한 복잡성 규칙을 충족해야 합니다.
- 지역 중복 백업: PostgreSQL 백업을 Azure의 페어링된 지역에 복제하여 교차 지역 재해 복구를 지원합니다. 이 설정은 배포 후 변경할 수 없습니다.
- NFS 공유 크기(GiB): Mattermost가 공유 애플리케이션 데이터에 사용하는 Azure Files (NFS) 공유의 크기. 최소 100 GiB.
* 비활성화: 단일 기본 인스턴스. 소규모 배포에 적합합니다.
* 동일 영역: 동일한 가용성 영역에 기본 및 대기 인스턴스 배치. * 영역 중복: 서로 다른 가용성 영역에 기본 및 대기 인스턴스 배치. Flexible Server SKU와 HA 모드에 대한 지역 지원은 Azure regions for PostgreSQL Flexible Server를 참조하세요.PostgreSQL의 백업 보존 기간은 배포 시 35일로 설정됩니다. 배포가 완료된 후 Azure 포털에서 보존 기간을 변경할 수 있습니다.

5단계: 네트워킹#
네트워킹 탭에서 가상 네트워크와 Mattermost를 사용자에게 노출하는 방법을 구성합니다.
- VNet 주소 공간(CIDR): 템플릿이 생성하는 가상 네트워크의 주소 공간. 기본값은
10.0.0.0/22입니다. 피어링할 다른 VNet과 겹치지 않는 범위를 선택합니다. - 공용 IP DNS 레이블: Azure 퍼블릭 클라우드 전체에서 전역적으로 고유한 DNS 접두사(레이블)를 설정해야 합니다. 이는 URL의 일부를 구성하며 워크스페이스에 대한 공용 접근을 허용합니다. 레이블이 이미 사용 중인 경우 배포가 실패합니다.
- Application Gateway에서 HTTPS 활성화: 활성화하면 Application Gateway가 PFX 인증서를 사용하여 TLS를 종료하고 HTTP 트래픽이 HTTPS로 리디렉션됩니다. 비활성화하면 Mattermost가 Azure 할당 호스트명에서 HTTP로 제공됩니다(테스트에는 적합하지만 프로덕션 환경에는 권장하지 않습니다).
- PFX 인증서 및 PFX 비밀번호: HTTPS가 활성화된 경우 표시됩니다. PKCS#12 번들을 업로드하고 보호에 사용된 비밀번호를 입력합니다.
- 커스텀 도메인(FQDN): HTTPS가 활성화된 경우 표시됩니다. Mattermost가 사용할 공개 호스트명(예:
mattermost.example.com). 배포 후 이 호스트명을 Application Gateway 공용 IP의 Azure 할당 DNS 이름으로 연결합니다(일반적으로 서브도메인에는 CNAME 레코드 사용).

6단계: 검토 및 만들기#
설정을 검토하고, 메시지가 표시되면 Marketplace 조건에 동의한 후 만들기를 선택합니다. 프로비저닝은 PostgreSQL 구성에 따라 일반적으로 20~50분이 소요됩니다. Azure에서 배포가 성공으로 보고된 후 애플리케이션에 접근 가능해지기까지 몇 분 더 기다려야 할 수 있습니다.
배포 완료 후:
* Azure 포털에서 사용한 리소스 그룹을 엽니다.
* Application Gateway에 연결된 공용 IP 리소스(일반적으로 <prefix>-ag-pip라고 이름이 지정됨)를 엽니다. 필수 항목에서 DNS 이름(Azure 할당 FQDN)을 확인합니다.
* HTTPS 없이 배포한 경우 사이트 URL은 다음과 같습니다:
http://<dns-label>.<region>.cloudapp.azure.com
* HTTPS로 배포한 경우 커스텀 도메인을 Application Gateway 공용 IP의 Azure 할당 DNS 이름으로 연결하는 DNS 레코드를 만듭니다(서브도메인에는 일반적으로 CNAME; 루트 도메인을 사용하는 경우에는 제공업체의 apex 호환 레코드 유형을 사용). DNS가 전파되면 사이트 URL은 다음과 같습니다:
https://<your-custom-domain>
축하합니다! Azure에 프로덕션 수준의 Mattermost 스택을 성공적으로 배포했습니다.
다음 단계#
* 크기 설정 가이드 및 참조 아키텍처는 고가용성 클러스터 기반 배포 및 서버 아키텍처를 참조하세요.
* 지속적인 운영(업그레이드, 백업, 모니터링)은 표준 Mattermost 서버 관리 문서를 따르세요.
런북#
Mattermost 서버 업그레이드#
VM Scale Set은 3단계에서 선택한 버전과 일치하는 Mattermost Marketplace VM 이미지를 실행합니다. Mattermost는 지원되는 각 릴리즈에 대해 새 이미지 버전을 게시합니다. 업그레이드하려면 배포 지역의 최신 이미지 버전으로 VMSS를 업데이트합니다. 애플리케이션 데이터는 PostgreSQL과 Azure Files 공유에 유지되며, 업그레이드 시 애플리케이션 인스턴스가 업데이트된 이미지로 빌드된 VM으로 롤링 교체됩니다.
업그레이드 전 준비#
* 타깃 버전에 대한 중요 업그레이드 참고사항 및 업그레이드 준비를 검토합니다.
* PostgreSQL 백업이 최신 상태인지, 필요한 경우 복원할 수 있는지 확인합니다.
* Mattermost 릴리즈 정책에서 타깃 버전을 선택합니다.
업그레이드 단계#
- 새 이미지 버전으로 VMSS를 업데이트합니다:
- Azure 포털에서 롤아웃을 모니터링합니다: VMSS → 인스턴스(또는 롤링 업그레이드)를 열고 모든 인스턴스가 정상 상태로 새 모델을 실행할 때까지 기다립니다.
- Mattermost 검증: System Console → About에서 새 버전을 사용하는지 확인합니다.
az vmss update \
--resource-group <resource-group> \
--name <resource-name-prefix>-vmss \
--set virtualMachineProfile.storageProfile.imageReference.version=<new-version>
VMSS는 **롤링** 업그레이드 정책과 ``/api/v4/system/ping``에 대한 애플리케이션 상태 프로브를 사용하므로, Application Gateway가 정상 노드에 계속 트래픽을 제공하는 동안 인스턴스가 배치 단위로 교체됩니다.