Azure 네이티브 VM에 Mattermost 배포
Mattermost v11.10요약
Mattermost는 Azure Marketplace 솔루션으로 게시되며, 컴퓨팅, 데이터베이스, 공유 파일 스토리지, 로드 밸런싱을 위한 Azure 관리형 서비스를 사용하여 사용자 자신의 구독 내에 프로덕션 준비가 완료된 Mattermost 스택을 프로비저닝합니다.
Mattermost는 Azure Marketplace 솔루션으로 게시되며, 컴퓨팅, 데이터베이스, 공유 파일 스토리지, 로드 밸런싱을 위한 Azure 관리형 서비스를 사용하여 사용자 자신의 구독 내에 프로덕션 준비가 완료된 Mattermost 스택을 프로비저닝합니다. 이 옵션은 기존 Azure 테넌트 내에서 확장하고 운영할 수 있는 복원력 있는 Mattermost 배포를 원하는 조직을 위한 것입니다.
전제 조건#
* Azure Marketplace 솔루션을 구매하고 배포하는 데 필요한 구독에 대한 Owner 또는 Contributor 역할을 가진 활성 Azure 구독, 리소스 그룹을 생성할 수 있는 권한, 그리고 해당 오퍼에 대한 Azure Marketplace 청구 조건을 수락할 수 있는 권한.
* Azure 포털(리소스 그룹, 네트워킹, 가상 머신, Application Gateway)에 대한 친숙도.
* 다중 노드 배포(애플리케이션 인스턴스가 두 개 이상인 경우)의 경우, 유효한 Mattermost Enterprise 라이선스 파일. 단일 노드 배포의 경우 라이선스는 선택 사항입니다.
* 배포 시 HTTPS를 활성화하려는 경우:
* PFX(PKCS#12) 인증서 번들 및 해당 비밀번호. * 배포 후 Application Gateway를 가리킬 커스텀 도메인(FQDN).배포되는 항목#
이 템플릿은 선택한 리소스 그룹 내에 다음을 포함하여 독립적이고 프로덕션 준비가 완료된 스택을 프로비저닝합니다.
- 가상 머신 확장 집합(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 서비스로, 선택적 동일 영역 또는 영역 중복 고가용성, 백업 보존, 지역 중복을 제공합니다.
- 프라이빗 엔드포인트가 있는 Azure Files(NFS): Mattermost 데이터(업로드, 플러그인, 기타 공유 파일)를 위한 공유 스토리지로, 가상 네트워크 내부에서만 도달 가능합니다.
- 가상 네트워크 및 서브넷: 이 배포를 위한 전용 VNet으로, Application Gateway, Mattermost 애플리케이션 인스턴스, 데이터베이스, 스토리지 프라이빗 엔드포인트를 위한 별도의 서브넷을 포함합니다.
- NAT 게이트웨이: 애플리케이션 인스턴스에 제어된 아웃바운드 인터넷 액세스를 제공합니다(예: 패키지 및 Mattermost 설정 스크립트를 가져오기 위해).
- 프라이빗 DNS 영역: VNet 내부에서 PostgreSQL Flexible Server 및 Azure Files 프라이빗 엔드포인트를 확인하는 데 사용됩니다.
Step 1: 플랜 선택 및 생성 시작#
Azure Marketplace에서 Mattermost - Azure-Native (VM-based) 오퍼를 열고, Get it now를 클릭한 다음 플랜을 선택하고 Create를 클릭하여 배포 마법사를 엽니다.
Step 2: 기본 사항#
Basics 탭에서 다음을 구성합니다.
- Subscription: 배포가 위치할 Azure 구독을 선택합니다.
- Resource group: 기존 리소스 그룹을 선택하거나 새로 만듭니다. 새 리소스 그룹을 사용하면 프로덕션 스택을 관리하고 정리하기 쉽습니다.
- Region: 배포 지역을 선택합니다. 사용하려는 PostgreSQL Flexible Server SKU를 지원하는 지역을 선택하고, PostgreSQL 고가용성을 활성화하려면 필요한 가용성 영역이 있는 지역을 선택하세요.
- Resource name prefix: 템플릿이 생성하는 Azure 리소스의 이름을 지정하는 데 사용되는 짧은 접두사(소문자, 숫자, 하이픈 2~12자, 예:
mm-prod).

Step 3: 애플리케이션#
Application 탭에서 Mattermost 애플리케이션의 크기와 관리자가 VM에 액세스하는 방법을 구성합니다.
- Scaling tier: 계획 중인 사용자 규모를 선택합니다. 마법사는 이를 사용하여 VMSS 인스턴스 수, VM 크기, PostgreSQL SKU에 대한 합리적인 기본값을 제안하고, 데이터베이스에 대해 읽기 복제본을 생성할지 여부를 결정합니다. 드롭다운에는 각 티어에 권장되는 노드 수와 VM SKU가 표시됩니다. 기본적인 크기 산정 근거는 사용 가능한 참조 아키텍처를 참조하세요.
- VMSS instance count: Mattermost 애플리케이션 노드 수(1~5개). 스케일링 티어에 제안된 값으로 기본 설정되며, 필요한 경우 조정할 수 있습니다.
- Enterprise license file: 인스턴스 수가 1보다 큰 경우(다중 노드 고가용성 클러스터링) 필수입니다. Mattermost Enterprise 라이선스 파일을 업로드합니다. 단일 노드 배포의 경우 라이선스는 선택 사항입니다.
- VM SKU: 각 VMSS 인스턴스의 크기입니다. 마법사는 권장 Linux 크기를 먼저 표시하며, 사용자 지역에서 지원되는 모든 Linux 크기를 선택할 수 있습니다.
- Admin username: VM 인스턴스에 로그인하는 데 사용되는 Linux 관리자 계정입니다.
- Authentication type: Linux 로그인을 위해 Password 또는 SSH public key 중에서 선택합니다. 프로덕션 배포에는 SSH public key를 권장합니다.
- Mattermost version: 설치할 Mattermost 버전입니다(예:
11.6.2). 지원되는 버전은 Mattermost 릴리즈 정책을 참조하세요.

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

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

Step 6: 검토 및 생성#
설정을 검토하고, 메시지가 표시되면 Marketplace 약관을 수락한 다음 Create를 선택합니다. 프로비저닝은 PostgreSQL 구성에 따라 일반적으로 20~50분이 소요됩니다. Azure가 배포를 Succeeded로 보고한 후 애플리케이션에 접근할 수 있을 때까지 몇 분 더 기다리세요.
배포가 완료된 후:
* Azure 포털에서 사용한 리소스 그룹을 엽니다.
* Application Gateway에 연결된 공용 IP 리소스(일반적으로 <prefix>-ag-pip라는 이름)를 엽니다. Essentials에서 DNS name(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 서버 관리 문서를 따르세요.
Runbooks(운영 절차)#
Mattermost 서버 업그레이드#
VM 확장 집합은 3단계에서 선택한 버전에 해당하는 Mattermost Marketplace VM 이미지를 실행합니다. Mattermost는 지원되는 각 릴리즈에 대해 새 이미지 버전을 게시합니다. 업그레이드하려면 배포 지역에서 VMSS가 더 새로운 이미지 버전을 가리키도록 설정합니다. 애플리케이션 데이터는 PostgreSQL과 Azure Files 공유에 남아 있으며, 업그레이드는 애플리케이션 인스턴스를 업데이트된 이미지로 빌드된 VM으로 롤링합니다.
업그레이드하기 전에#
* 중요 업그레이드 참고 사항을 검토하고, 대상 버전에 대해 업그레이드 준비를 진행하세요.
* PostgreSQL 백업이 최신 상태이며 필요한 경우 복원할 수 있는지 확인하세요.
* Mattermost 릴리즈 정책에서 대상 버전을 선택하세요.
업그레이드 단계#
- VMSS를 업데이트하여 새 이미지 버전으로 변경합니다.
- 롤아웃 모니터링: Azure 포털에서 VMSS를 열고 Instances(또는 Rolling upgrades)로 이동하여 모든 인스턴스가 정상이고 새 모델을 실행할 때까지 기다립니다.
- Mattermost 확인: System Console → About에서 Mattermost가 새 버전을 사용하는지 확인합니다.
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가 정상 노드에 트래픽을 계속 제공하는 동안 인스턴스가 배치 단위로 교체됩니다.