카우치베이스 서버

Azure ARM 템플릿이 포함된 카우치베이스

이 블로그 게시물에서는 Azure 리소스 관리자 템플릿(일명 ARM 템플릿)을 사용하여 자체 Couchbase 클러스터를 설정하는 방법에 대해 설명합니다.

전제 조건:

이 기능을 사용하려면 몇 가지가 필요합니다:

  1. Azure 구독을 사용하려면 여기에서 등록하세요. 무료 평가판.
  2. 시스템에 설치된 Azure CLI, 설치 방법.
  3. Github 계정나만의 ARM 템플릿으로 실험하고 싶다면 선택 사항입니다.

배포할 내용

이 블로그 게시물에서는 Microsoft Azure에서 자체 Couchbase Server 4.1 클러스터를 배포하는 데 필요한 단계를 안내합니다. 클러스터의 크기는 구성할 수 있지만, 최소한 하나의 노드에 복제하는 3노드 클러스터 설정으로 구성됩니다. 클러스터의 데이터 센터 위치는 Microsoft Azure 구독으로 액세스할 수 있는 모든 위치 중에서 선택할 수도 있습니다.

Couchbase를 Azure에 배포하는 과정에서 Azure 리소스 관리자 템플릿과 필요에 맞게 편집하는 방법에 대해 배우게 됩니다. 이를 통해 Couchbase ARM 템플릿의 기본값을 변경할 수 있으며, Microsoft Azure를 사용할 때 다른 경우에 ARM 템플릿을 사용하는 방법도 이해할 수 있습니다.

Azure 리소스 관리자 템플릿

Azure 리소스 관리자를 사용하면 선언적 템플릿을 사용하여 Microsoft Azure에 애플리케이션을 프로비저닝할 수 있습니다. 하나의 템플릿으로 여러 서비스를 종속성과 함께 배포할 수 있습니다. 또한 ARM 템플릿을 각각 개별 리소스를 설명하는 여러 템플릿으로 분할하는 옵션도 있습니다. 동일한 템플릿을 개별적으로 또는 별도로 사용하여 애플리케이션 수명 주기의 모든 단계에서 애플리케이션/리소스를 반복적으로 배포할 수 있습니다.

ARM 템플릿을 다음과 같은 다른 리소스 설명 기술과 비교할 수 있습니다. chef.io 또는 기타.

다음은 가장 간단한 ARM 템플릿의 예입니다:

ARM 템플릿은 변수 및/또는 메서드 호출에 대한 참조로 작동할 수 있는 특수 형식의 문자열을 사용할 수 있는 옵션과 함께 JSON으로 작성됩니다.

아래 ARM 템플릿 스니펫은 가상 네트워크를 정의하는 방법과 다음을 사용하는 방법을 보여줍니다. 변수 그리고 매개변수 를 ARM 템플릿에 추가합니다.

ARM 템플릿을 작성하는 방법에 대한 자세한 내용은 Microsoft Azure 설명서.

설정 프로세스의 일부로 셸 스크립트 등의 외부 코드를 실행하여 가상 머신에서 직접 사용자 지정 구성 및 설치가 가능하도록 할 수도 있습니다.

이 모든 것을 조합하면 Azure에서 리소스를 매우 세밀하게 구성하고 설정할 수 있습니다.

위의 ARM 템플릿 스니펫은 다음에서 가져온 것입니다. 카우치베이스 클러스터 ARM 템플릿 에서 확인하세요.

VM에서 스크립트를 실행하는 옵션은 각 개별 VM에 Couchbase Server를 설치 및 구성한 다음 마지막으로 개별 Couchbase 노드 간에 Couchbase 클러스터를 설정하는 데 사용됩니다.

위의 코드 조각은 다음을 사용하여 외부 스크립트를 ARM 템플릿의 일부로 구성하고 명령줄 인수를 전달하는 방법을 보여줍니다. 매개변수.

ARM 템플릿에 대해서는 나중에 자세히 설명하겠습니다.

Azure CLI

이전 섹션에서는 ARM 템플릿에 대해 간략하게 알아보고 이를 사용하여 Azure에서 리소스를 설명하는 방법을 살펴봤습니다. 리소스에 대한 레시피와 특정 설정에 필요한 개별 구성에 대해 설명합니다.

이 섹션에서는 ARM 템플릿을 사용하는 방법 또는 Azure 전문 용어로 ARM 템플릿을 배포하는 방법을 중점적으로 설명합니다. 몇 가지 배포 옵션이 있으므로 간단히 살펴보겠습니다.

Azure 포털 사용, 옵션 1

새로운 Azure 포털에서는 포털 자체에서 '템플릿 배포'를 수행할 수 있는 옵션이 제공됩니다.
로 이동합니다: Microsoft.Template
를 클릭하면 포털에 ARM 템플릿을 복사/붙여넣고 실행할 수 있습니다. UI는 커스텀 파라미터 등을 지원합니다.

단점은 하나의 ARM 템플릿만 포털에 복사/붙여넣을 수 있고 모든 리소스가 이 단일 '파일'에 있어야 한다는 점입니다.

Azure 포털 사용, 옵션 2

이 기능은 "옵션 1"과 매우 유사하지만 몇 가지 차이점이 있습니다. Azure에 외부 소스에서 ARM 템플릿을 다운로드하도록 지시할 수 있으며, 모든 리소스(템플릿, 스크릿 등)가 공개적으로 사용 가능해야 한다는 조건만 충족하면 됩니다.

이 기능은 GitHub의 Microsoft 공식 Azure 빠른 시작 템플릿 리포지토리에서 보고 테스트할 수 있습니다, Azure 빠른 시작 템플릿

이 특정 템플릿을 방문하면101-vm-simple-windows 를 클릭하면 파란색 버튼(Azure에 배포)이 표시됩니다. 이 버튼을 누르면 Azure 포털 템플릿 배포로 리디렉션되지만, 이제 템플릿이 포털에 미리 붙여넣어져 있습니다.

참고!

그리고 Azure 빠른 시작 템플릿 는 ARM 템플릿에 대해 자세히 알아볼 수 있는 훌륭한 리소스입니다.

Azure PowerShell

Azure PowerShell은 PowerShell에서 Azure에 대한 명령을 실행할 수 있는 액세스 권한을 제공하는 PowerShell용 모듈입니다. ARM 템플릿 배포를 포함하여 솔루션 및 서비스를 만들고, 테스트하고, 배포하고, 관리할 수 있습니다.

PowerShell은 Windows 플랫폼을 위한 훌륭한 명령줄 도구로 IT 전문가와 개발자 모두가 널리 사용하지만, Windows에서만 사용할 수 있습니다.

자세히 보기 PowerShell

하지만 모든 사람이 Windows를 실행하는 것은 아닙니다! 그래서 Microsoft는 Azure CLI 도구를 개발했습니다.

Azure CLI

Azure CLI는 Microsoft Azure 작업을 위한 명령줄 도구로, Mac, Linux 및 Windows용으로 빌드됩니다.
Azure CLI와 같은 x-플랫폼 도구로 작업하면 모든 플랫폼에서 지식을 사용할 수 있다는 큰 이점을 얻을 수 있습니다.

저는 광범위한 사용자를 보유하고 있고 대부분의 플랫폼에서 사용할 수 있는 것 같아서 Azure CLI를 선택했습니다.

이 게시물의 나머지 부분에서는 Azure CLI를 사용한다고 가정하지만, 많은(전부는 아니더라도) 명령이 Azure PowerShell에도 존재합니다.

Azure CLI 설치

기본 설정에 따라 플랫폼 전용 설치 패키지에서 Azure CLI를 설치하거나 다음을 사용하여 설치할 수 있습니다. npm전체 지침은 여기에서 확인할 수 있습니다, Azure CLI 설치.

Mac이 있고 npm 가 이미 시스템에 설치되어 있는 경우 Azure CLI를 설치하는 것은 한 줄로 끝납니다:

글로벌 설치 인수의 사용에 유의하세요. -g를 사용하면 시스템에서 Azure CLI를 전 세계에서 사용할 수 있습니다.

Azure CLI 사용

이제 Azure CLI를 설치했으니 이 도구를 사용하여 ARM 템플릿으로 Azure 리소스를 배포하고 관리하는 방법을 살펴보기로 하죠.

인증

Azure CLI를 사용하기 전에 Microsoft Azure에 대해 인증해야 합니다. Azure에서 CLI를 인증하는 방법에는 여러 가지가 있으며, 자세한 가이드는 다음을 참조하세요. Azure에 연결.

이 가이드에서는 이 명령을 사용합니다:

화면의 지시에 따라 Azure CLI를 인증하세요.

사용할 Azure 구독 계정 설정

Azure 구독이 여러 개 있는 경우 사용할 구독을 선택해야 합니다.

이 명령을 사용하여 계정에 사용 가능한 구독을 나열할 수 있습니다:

사용하려는 구독을 설정합니다. 기본값 계정은 Azure CLI 인스턴스의 모든 인스턴스에 대한 계정입니다.

Azure 계정 설정 "Azure Pass"

Azure 리소스 관리자 모드 설정

Azure CLI는 클래식과 ARM의 두 가지 모드로 작동할 수 있습니다. 선택한 모드에 따라 해당 리소스 유형으로만 작업하도록 제한됩니다(나중에 언제든지 모드를 변경할 수 있음).

Azure 리소스 관리자 템플릿으로 작업하고 있으므로 모드를 다음과 같이 전환해야 합니다. arm.

Azure CLI의 기본 모드는 다음과 같습니다. 클래식를 클릭하고 다음 명령을 사용하여 Azure 리소스 관리자 모드를 사용하도록 설정합니다:

리소스 그룹 만들기

Azure 리소스 관리자로 작업할 때는 항상 "리소스 그룹" 내에서 작업합니다. 리소스 그룹은 리소스를 위한 버킷, 컨테이너 또는 논리적 영역으로 생각할 수 있습니다. 리소스 그룹은 애플리케이션에 필요한 모든 리소스를 캡슐화하며 리소스 간의 경계를 쉽게 정의할 수 있게 해줍니다.

리소스 그룹은 한 위치(Azure 지역) 내에 만들어야 합니다.

구독에 따라 사용 가능한 위치가 다를 수 있습니다. 구독의 전체 목록을 보려면 다음 명령을 실행하세요:

리소스 그룹의 위치를 선택하고 리소스 그룹을 만듭니다:

배포를 생성하고 성공할 때까지 기다리기

리소스 그룹이 생성되면 ARM 템플릿을 리소스 그룹에 '배포'할 수 있습니다. 이렇게 하면 ARM 템플릿에 정의된 모든 리소스가 리소스 그룹에 생성됩니다.

아래 명령은 ARM 템플릿을 Azure로 "전송"하고 지정된 리소스 그룹에 정의된 리소스의 배포를 시작합니다.

중요!

이 명령은 구독에 3노드 클러스터를 생성하고 이를 통해 Azure 구독에서 사용/사용을 시작합니다. 구독 유형, 레벨 등에 따라 나중에 요금이 청구될 수 있는 구독에 요금이 부과될 수 있습니다!

명령어를 좀 더 자세히 설명해 드리겠습니다.
그리고 는 콘솔에서 한 줄 명령에 줄 바꿈을 허용하기 위해서만 추가됩니다. 이는 Azure CLI에만 해당되는 것은 아닙니다.

첫 번째 줄은 Azure CLI에 새 배포를 만들도록 지시합니다.

두 번째 줄은 ARM 템플릿에 대한 참조이며, 이 값은 로컬 파일일 수도 있고 (이 경우처럼) 공개 위치에 대한 참조일 수도 있습니다.

ARM 템플릿에는 매개 변수와 변수가 필요하며, 세 번째 줄은 Azure CLI에서 매개 변수를 찾을 수 있는 위치를 알려줍니다. 명령줄에서 직접 매개 변수를 추가할 수도 있지만 저는 파일을 사용하는 것이 더 편리하다고 생각합니다.
매개변수 파일을 사용할 때는 해당 파일이 내 컴퓨터에 로컬로 저장되어 있어야 한다는 점에 유의하세요. 이 제한은 보안과 민감한 데이터의 실수로 인한 공유를 방지하기 위해 Microsoft에서 시행하는 것으로 알고 있습니다.

위 명령의 실행 시간은 약 10~25분 정도 소요됩니다. 따라서 커피 한 잔이 필요하다면 지금이 바로 실행하기 좋은 시기입니다.)

리소스 그룹용 공용 IP

배포가 완료되고 성공했다면 이제 결과를 검사할 차례입니다.

언제든지 Azure 포털 를 사용하여 배포된 내용을 시각적으로 확인할 수 있지만 Azure CLI를 사용할 수도 있습니다.

Couchbase ARM 템플릿은 실제로 4개의 가상 머신을 생성합니다! 3개의 카우치베이스 노드가 단일 클러스터로 결합되고 하나의 가상 머신이 다음과 같이 설정됩니다. 점프 박스. 이 설정은 Couchbase에서 권장하는 모범 사례로, Couchbase 클러스터가 방화벽 뒤에 보호되고 점프박스 머신을 통해서만 "직접" 액세스할 수 있도록 합니다.

실제로 ARM 템플릿의 보안 구성 설정은 매우 우아하며, Couchbase 노드 중 어느 것도 공인 IP를 가지고 있지 않습니다. 즉, 점프 박스를 통하지 않고는 노드에 액세스할 수 있는 방법이 없습니다! 완벽하죠.

리소스 그룹에 할당된 모든 공용 IP를 반환하도록 Azure CLI에 요청하여 이를 확인할 수 있습니다.

이제 이 IP를 사용하여 Couchbase 클러스터에 대한 ssh 터널을 만들 수 있습니다.

정보:

기본 매개 변수를 사용한 경우
사용자: couchadmin
비밀번호: P@ssword1

ssh 명령은 Azure의 점프 박스 머신에 대한 프록시 연결을 엽니다.

모든 네트워크 트래픽에 프록시를 사용하도록 네트워크 연결을 설정하면 Couchbase 클러스터에 연결할 수 있습니다!

[MAC 전용]
프록시를 설정합니다:

  1. "시스템 환경설정"을 엽니다.
  2. "네트워크"로 이동합니다.
  3. "고급"을 선택합니다.
  4. '프록시' 탭을 클릭합니다.
  5. "SOCKS 프록시"를 선택합니다.
    1. SOCKS 프록시 서버 주소입니다: 127.0.0.1
    2. 포트: 8080
  6. "확인"을 클릭합니다.
  7. '적용'을 클릭합니다.
  8. 즐겨찾는 브라우저를 열고 다음으로 이동합니다. https://10.0.0.10:8091
  9. Couchbase 설치를 검사합니다(사용자: couchbaseadmin비밀번호를 입력합니다: P@ssword1 )

image

참고:

테스트가 끝나면 프록시 변경 사항을 실행 취소하는 것을 잊지 마세요.

리소스 그룹 삭제

이 배포가 환경을 테스트하기 위해서만 수행된 경우, 어느 시점에 Couchbase 클러스터를 중단하고 모든 리소스를 릴리스(서비스 및 리소스 중단)하고 싶다고 가정하는 것이 안전합니다.

모든 리소스가 단일 리소스 그룹으로 생성되므로 해당 리소스 그룹을 삭제하면 모든 서비스 및 리소스가 제거됩니다. Azure CLI를 사용하면 이 작업은 매우 쉽습니다:

이 명령은 완료하는 데 몇 분 정도 걸립니다.

카우치베이스 ARM 템플릿

지금까지 Couchbase ARM 템플릿 자체에 대해서는 자세히 다루지 않았습니다. 이 섹션에서는 템플릿의 몇 가지 중요한 측면과 Couchbase에 특화된 측면을 다룰 것입니다.

전체 소스, 템플릿 및 모든 종속성은 GitHub에서 찾을 수 있습니다, couchbase-azure.

로 이동하여 템플릿 폴더를 클릭하면 11개의 개별 파일이 표시됩니다:

azuredeploy.json

ARM 템플릿의 주요 진입점입니다. 이 템플릿은 템플릿에 사용되는 모든 매개변수와 변수를 정의합니다. 네트워크 닉부터 가상 머신 크기까지 모든 리소스가 이 파일 내에 지정됩니다:

이 코드 조각은 '티셔츠 사이즈 미디엄'에 대한 속성을 정의합니다.

"tshirtSizeMedium": {
"저장소 계정 수": 1,
"클러스터사이즈마이너스원": 3,
"lastNodeId": 3,
"클러스터 크기": 4,
"couchbaseRamQuota": 22000,
"vmSize": "Standard_A6",
"maxNumberOfDataDisksForVmSizeNotUsedButHereForReference": 8,
"vmTemplate": "[concat(variables('templateBaseUrl'), 'cluster-nodes-A6.json')]",
"백엔드IP컨피규레이션": [
{
"id": "[concat(resourceId('Microsoft.Network/networkInterfaces', 'nic0'),'/ipConfigurations/ipconfig1')]"
},
{
"id": "[concat(resourceId('Microsoft.Network/networkInterfaces', 'nic1'),'/ipConfigurations/ipconfig1')]"
},
{
"id": "[concat(resourceId('Microsoft.Network/networkInterfaces', 'nic2'),'/ipConfigurations/ipconfig1')]"
},
{
"id": "[concat(resourceId('Microsoft.Network/networkInterfaces', 'nic3'),'/ipConfigurations/ipconfig1')]"
}
]
},

파일을 탐색하여 구조와 구성 방식을 더 잘 파악할 수 있습니다.

azuredeploy.parameters.json

이 파일에는 템플릿에 대해 미리 정의된 모든 기본 매개변수가 포함되어 있습니다. 이 파일은 필수는 아니지만 배포를 시작할 때 유용합니다.

비밀번호를 변경하려면 여기에서 비밀번호를 변경할 수 있습니다.

클러스터 노드-A2.json

A2 VM을 사용하여 구성하기 위한 부분적인 ARM 템플릿입니다. 이 파일은 실제 가상 머신 리소스, 네트워크, 디스크 등을 구성하는 파일이기도 합니다.

cluster-nodes-A6.json

A2와 동일한 A6 VM을 사용하는 구성을 위한 부분적인 ARM 템플릿입니다.

클러스터 노드-D14.json

A2와 동일한 D14 VM을 사용하는 구성을 위한 부분 ARM 템플릿입니다.

couchbase-azure-install.sh

이 셸 스크립트는 가상 머신을 다운로드하기 위해 다운로드되며, 노드에 Couchbase Server를 설치하고 클러스터를 설정하는 데 필요한 모든 작업을 수행합니다.

스크립트의 마지막 부분은 클러스터 구성을 담당합니다. 클러스터를 설정하려면 버킷 명령줄을 추가할 수 있는 곳입니다.

jumpbox-resources-disabled.json

설정에서 점프 상자가 비활성화되었을 때 사용할 셸 스크립트입니다.

jumpbox-resources-enabled.json

점프 박스 머신 설정을 위한 셸 스크립트입니다.

메타데이터.json

변경 사항을 추적하는 데 사용되는 파일로, 원본 소스인 couchbase-on-ubuntu에서 상속되었습니다.

shared-resources.json

원본 소스에서 상속된 공유 리소스로, couchbase-on-ubuntu에 있습니다.

vm-disk-utils-0.1.sh

Linux 디스크 활용.

여름

이 블로그 게시물에서는 Azure 리소스 관리자(ARM) 템플릿과 그 사용법에 대해 배웠습니다. 또한 Couchbase ARM 템플릿에 대한 구체적인 세부 사항과 Azure와 상호 작용하고 ARM 템플릿을 배포하는 다양한 방법에 대해서도 간략하게 살펴봤습니다.

행복한 배포!

이 문서 공유하기
받은 편지함에서 카우치베이스 블로그 업데이트 받기
이 필드는 필수 입력 사항입니다.

Author

Posted by 마틴 에스만

Martin Esmann은 Couchbase의 .NET 개발자 옹호자입니다. 그는 .NET과 같은 Microsoft 기술에 깊은 관심을 가지고 있는 열정적인 개발자입니다.

댓글 남기기

카우치베이스 카펠라를 시작할 준비가 되셨나요?

구축 시작

개발자 포털에서 NoSQL을 살펴보고, 리소스를 찾아보고, 튜토리얼을 시작하세요.

카펠라 무료 사용

클릭 몇 번으로 Couchbase를 직접 체험해 보세요. Capella DBaaS는 가장 쉽고 빠르게 시작할 수 있는 방법입니다.

연락하기

카우치베이스 제품에 대해 자세히 알고 싶으신가요? 저희가 도와드리겠습니다.