이 페이지는 Azure AKS 배포에만 적용됩니다. 가상 머신 배포에 대해서는 설치 가이드를 참조하세요.
이 가이드는 Azure CLI와 ARM 템플릿을 사용하여 ABBYY Vantage에 필요한 Azure 인프라를 생성하는 방법을 설명합니다. 인프라는 Vantage 설치 컨테이너 내에서 생성됩니다.
시작하기 전에 다음을 준비했는지 확인합니다.
- 리소스를 생성하고 관리할 수 있는 권한이 있는 Azure 구독
- 로컬 머신에 설치된 Docker
- 컨테이너 이미지를 다운로드할 수 있는 인터넷 연결
- 고가용성 구성을 사용하는 경우: VM에 배포된 Redis 클러스터(시스템 요구 사항 참조)
인프라를 생성하는 동안에도 컨테이너 이미지를 미리 다운로드해 둘 수 있습니다. 이 작업에는 상당한 시간이 소요됩니다.
다음 Azure 리소스가 생성됩니다.
Azure Subscription
└── Resource Group
├── AKS Cluster
│ ├── Services Node Pool (Standard_D8as_v5)
│ └── Workers Node Pool (Standard_D16as_v5)
├── Storage Accounts (5)
│ ├── Skills (Premium/Hot)
│ ├── Processing (Standard/Hot)
│ ├── Temporary (Standard/Hot)
│ ├── Shared Folders (Premium FileStorage)
│ └── Archive (Standard/Cool)
├── Azure SQL Server
│ └── Elastic Pool Database
└── Public IP Address
먼저 Vantage 설치 이미지를 다운로드하여 컨테이너 레지스트리에 푸시합니다.
# Vantage Docker 레지스트리에 로그인
docker login abyvtgonprm27.azurecr.io -u <username> -p <password>
# Pull the installer image
docker pull abyvtgonprm27.azurecr.io/vantage-azure:2.7.1
# Tag for your registry
docker tag abyvtgonprm27.azurecr.io/vantage-azure:2.7.1 \
registry.yourdomain.tld/vantage/vantage-azure:2.7.1
# Push to your registry
docker push registry.yourdomain.tld/vantage/vantage-azure:2.7.1
구매 시 제공받은 자격 증명 정보로 <username> 및 <password>를 바꾸세요.
설치 프로그램 컨테이너를 시작합니다. 이 가이드의 이후 모든 명령은 이 컨테이너 내부에서 실행됩니다.
docker run -it registry.yourdomain.tld/vantage/vantage-azure:2.7.1
컨테이너 내부에서 Azure 계정에 로그인합니다.
# Azure에 로그인 (인증을 위해 브라우저가 열립니다)
az login
# 구독 설정
az account set --subscription <subscription_id>
<subscription_id>를 Azure 구독 ID로 바꿉니다.
원하는 Azure 지역에서 리소스 그룹을 생성합니다.
az group create --location <location> --resource-group <resource_group_name>
예제:
az group create --location eastus --resource-group vantage-prod-rg
주로 사용하는 Azure 지역: eastus, eastus2, westus2, westeurope, northeurope
먼저 어떤 리소스가 생성되는지 확인합니다:
az deployment group what-if --name aks-cluster \
--resource-group <resource_group_name> \
--template-file files/infrastructure/azure/arms/Cluster.Manual.json \
--parameters kubernetesClusterName=<cluster_name>
az deployment group create --name aks-cluster \
--resource-group <resource_group_name> \
--template-file files/infrastructure/azure/arms/Cluster.Manual.json \
--parameters kubernetesClusterName=<cluster_name> \
--parameters enableFIPS=false
이 명령은 8시간 동안 50,000페이지를 처리할 수 있는 고가용성 없음(Without high availability) 구성을 사용하여 클러스터를 생성합니다. 다른 구성이 필요한 경우, 클러스터 생성 후 Performance Guide를 참고하여 노드 풀 설정을 수정하십시오.
FIPS 규정을 준수하는 배포 환경의 경우 enableFIPS=true로 설정하십시오. 추가 구성은 FIPS Compliance를 참조하십시오.
배포 미리보기
az deployment group what-if --name storage \
--resource-group <resource_group_name> \
--template-file files/infrastructure/azure/arms/StorageAccounts.Template.json
az deployment group create --name storage \
--resource-group <resource_group_name> \
--template-file files/infrastructure/azure/arms/StorageAccounts.Template.json \
--parameters kubernetesClusterName=<cluster_name> \
--parameters enableFIPS=false
env_specific.yml의 s3storage 섹션을 채우기 위해 access key와 secret key를 조회합니다:
az deployment group show --name storage \
--resource-group <resource_group_name> \
--query properties.outputs -o yaml
출력 결과를 저장해 두십시오. env_specific.yml 구성 파일에 이 값들이 필요합니다.
az deployment group what-if --name dbservers \
--resource-group <resource_group_name> \
--template-file files/infrastructure/azure/arms/Databases/DB.Server.Template.json \
--parameters serverBaseName=<cluster_name> \
--parameters dbAdminLogin=<db_username> \
--parameters dbAdminPassword=<db_password>
az deployment group create --name dbservers \
--resource-group <resource_group_name> \
--template-file files/infrastructure/azure/arms/Databases/DB.Server.Template.json \
--parameters serverBaseName=<cluster_name> \
--parameters dbAdminLogin=<db_username> \
--parameters dbAdminPassword=<db_password>
dbAdminLogin 및 dbAdminPassword Parameter는 데이터베이스에 액세스하는 데 사용되는 자격 증명입니다. 이 값은 env_specific.yml 구성에 저장해 두세요.
8단계: Azure SQL Database 만들기
배포 미리보기
az deployment group what-if --name databases \
--resource-group <resource_group_name> \
--template-file files/infrastructure/azure/arms/Databases/SQL.Databases.Template.json \
--parameters serverBaseName=<cluster_name>
az deployment group create --name databases \
--resource-group <resource_group_name> \
--template-file files/infrastructure/azure/arms/Databases/SQL.Databases.Template.json \
--parameters serverBaseName=<cluster_name>
AKS 클러스터의 노드 리소스 그룹 이름을 확인합니다.
az aks show --name <cluster_name> -g <resource_group_name> \
--query nodeResourceGroup -o tsv
이 값을 저장해 두세요. 나중에 이 리소스 그룹에 Public IP 주소를 생성할 때 사용합니다.
-
9단계에서 만든 노드 리소스 그룹에 Azure 공용 IP(표준 정적 IPv4)를 만들거나, 기존 공용 IP를 해당 리소스 그룹으로 이동합니다.
-
env_specific.yml 구성을 위해 IP 주소를 확인해 둡니다:
loadbalancer:
external_ip: <your_public_ip_address>
-
도메인이 이 IP 주소를 가리키도록 DNS A 레코드를 생성합니다.
11단계: GPU 드라이버 설치 (선택 사항)
Deep Learning을 사용해 스킬을 학습할 GPU 워커를 배포할 계획이라면:
ansible-playbook -i inventories/azure -v \
playbooks/infrastructure/azure/02_install_gpu_driver.yml
GPU 배포 요구 사항에 대해서는 시스템 요구 사항을 참조하세요.
이 단계를 완료하면 다음 리소스가 생성됩니다:
| Resource | Purpose |
|---|
| Resource Group | 모든 Vantage 리소스의 컨테이너 |
| AKS Cluster | Vantage를 실행하는 Kubernetes 클러스터 |
| Services Node Pool | Vantage 플랫폼 서비스를 실행하는 노드 풀 |
| Workers Node Pool | 문서 처리 워커를 실행하는 노드 풀 |
| Skills Storage Account | 스킬 정의 및 구성을 저장 |
| Processing Storage Account | 처리 중인 문서를 저장 |
| Temporary Storage Account | 임시 트랜잭션을 저장 |
| Shared Folders Storage Account | 가져오기/내보내기용 공유 폴더에 대한 액세스 제공 |
| Archive Storage Account | 장기 문서 보관 |
| Azure SQL Server | 데이터베이스 서버 |
| Azure SQL Database | Vantage 운영 데이터베이스 |
| Public IP Address | Vantage에 대한 외부 액세스 제공 |
인프라를 생성한 후 다음 단계를 진행합니다:
-
env_specific.yml 구성 - 이 가이드에서 제공된 값으로 설정합니다. 전체 구성 형식은 Installation을 참조하세요.
-
컨테이너 이미지 다운로드 - Vantage 이미지를 컨테이너 레지스트리와 동기화합니다.
-
설치 실행 - 플레이북을 사용하여 설치를 완료합니다.
전체 설치 절차는 Installation 문서를 참조하세요.
Azure 계정에 다음 권한이 있는지 확인하세요.
- 구독 또는 리소스 그룹에 대한 기여자(Contributor) 역할
- AKS 클러스터, 스토리지 계정 및 SQL 데이터베이스를 생성할 수 있는 권한
클러스터 이름은 15자 이하여야 합니다. 더 짧은 이름을 사용하세요.
Azure Storage 계정 이름은 전 세계에서 고유해야 합니다. ARM 템플릿은 클러스터 이름을 기반으로 계정 이름을 생성합니다. 충돌이 발생하면 다른 클러스터 이름을 사용해 보십시오.
Azure SQL Database 방화벽 규칙이 AKS 클러스터의 아웃바운드 IP 주소에서의 연결을 허용하도록 설정되어 있는지 확인하세요. 가상 네트워크 규칙을 추가하거나 Azure 서비스 허용 옵션을 활성화해야 할 수도 있습니다.