.NET

카우치베이스 서버를 사용한 Docker 및 ASP.NET Core

많은 블로그 게시물과 샘플에서 저는 단일 Couchbase Server 노드를 사용합니다. 쉽고 제가 시연하는 대부분의 작업을 단일 노드로 수행할 수 있기 때문입니다. 하지만 Couchbase Server는 일반적으로 프로덕션 환경에서 여러 노드(때로는 3개, 때로는 3000개)에서 실행됩니다. 이를 로컬에서 시뮬레이션하기 위해 몇 가지 경량 Docker 컨테이너를 사용할 수 있습니다.

이왕 하는 김에 Docker에서 실행되는 ASP.NET Core 웹사이트를 시작하는 방법도 보여드리겠습니다.

시작하기 위해 필요한 사항

  • Windows용 도커. 모든 플랫폼에 Docker를 사용할 수 있지만 이 샘플에서는 Windows를 사용하고 있습니다.
  • Visual Studio 2015(이상). ASP.NET Core 또는 Docker를 사용하기 위해 Visual Studio가 필요하지는 않지만, 저는 작업을 더 쉽게 하기 위해 Visual Studio 확장 프로그램을 사용하고 있습니다.
  • NET Core VS 2015 툴링 미리보기 2 이상입니다. 이것은 Visual Studio용 .NET Core 도구입니다.
  • Docker용 Visual Studio 도구 (미리 보기). 더 많은 VS 도구로 더 쉽게 작업할 수 있습니다.

위의 모든 것을 설치했으면 Docker에서 드라이브 공유를 사용 설정해야 합니다. 그렇지 않으면 다음과 같은 오류가 발생합니다. "PrepareForLaunch" 작업이 예기치 않게 실패했습니다. 를 클릭합니다. (저는 C 드라이브와 D 드라이브 모두에서 공유를 사용하도록 설정해야 했지만 설정은 다를 수 있습니다).

Enable shared drives in Docker for Windows

Docker에서 Couchbase 서버 설정하기

먼저 Couchbase Docker 이미지를 실행합니다. ASP.NET Core 사이트는 Docker 내에서 실행되므로 포트 8091만 노출하면 됩니다(웹 브라우저에서 로컬 호스트:8091로 Couchbase 콘솔을 사용하려면).

도커 실행 -d --이름 db -p 8091:8091 카우치베이스

제가 이름을 지었습니다. db 하지만 원하는 이름을 지정해도 좋습니다. 저는 카우치베이스 를 이미지로 사용하며, 이 글을 작성하는 시점은 Couchbase Server 4.5.1입니다.

다음으로, Couchbase로 컨테이너를 하나 이상 더 실행하세요. 여기에는 포트를 매핑할 필요가 없습니다. 그냥 두 개만 생성하겠습니다:

도커 실행 -d --이름 DB2 카우치베이스

도커 실행 -d --이름 DB3 카우치베이스

다음을 사용하여 이 두 컨테이너의 IP 주소를 기록해 두세요. 도커 인스펙트 DB / 도커 인스펙트 DB2 / 등... 그리고 IP주소 를 출력에 입력합니다.

이제 웹 브라우저에서 localhost:8091 를 클릭하여 Couchbase 클러스터를 설정합니다. 이전에 이 작업을 수행한 적이 없는 경우 다음을 참조하세요. 카우치베이스 서버 설정에 대한 이 블로그 게시물 또는 카우치베이스 서버 설정 단계별 안내 동영상 보기.

버킷을 설정하고 만들 때(저는 'default'라는 이름의 버킷을 만들었습니다) 노드를 더 추가할 것이므로 복제를 활성화하세요.

Enable replication when creating a bucket

서버 노드 탭으로 이동하여 "서버 추가"를 클릭합니다. db2의 IP 주소를 입력하고 "서버 추가"를 클릭합니다. db3 및 생성한 다른 노드에 대해 이 과정을 반복합니다. 이 시점에서 "보류 중인 재조정" 옆에 숫자가 표시되어야 합니다. 이는 노드가 클러스터의 일부가 될 준비가 되었음을 의미합니다.

Rebalance pending in Couchbase Console

'재조정'을 클릭합니다. 이 작업에는 약간의 시간이 걸리지만, 완료되면 Docker 내에서 모두 실행되는 Couchbase Server 클러스터를 갖게 됩니다. 재밸런싱 작업 중에도 클러스터는 계속 작동한다는 점에 유의하세요.

Couchbase Cluster in Docker

Couchbase 콘솔에 있는 동안 계속해서 기본 인덱스를 생성합니다. 실행 기본값에 기본 인덱스 만들기 을 클릭합니다. ASP.NET Core 앱에는 이 항목이 필요합니다.

ASP.NET Core 앱 만들기

Visual Studio에서 새 ASP.NET Core 앱을 만듭니다. 또는 이 예제를 위해 이미 준비한 ASP.NET Core 소스 코드는 GitHub에 있습니다.. 모든 선물을 나열하고 새로운 무작위 선물을 목록에 추가하는 두 가지 작업으로 구성된 매우 간단한 웹사이트입니다. (연말이 다가오니 선물이 생각나는군요!)

New ASP.NET Core project in Visual Studio

NuGet으로 CouchbaseNetClient 종속성을 추가합니다. 현재 개발자 프리뷰 버전인 .NET Core SDK를 사용할 것입니다. 따라서 다음 코드를 실행해야 합니다. 설치-패키지 카우치베이스넷클라이언트 -Pre 를 클릭합니다. 사용하지 않는 경우 -사전를 선택하면 NuGet이 .NET Core SDK 대신 .NET SDK를 설치하려고 시도합니다.

다음으로 프로젝트에 Docker 지원을 추가합니다. 프로젝트를 마우스 오른쪽 버튼으로 클릭한 다음 추가를 클릭하고 "Docker 지원"을 클릭합니다. 그러면 프로젝트에 일부 Docker 파일이 추가됩니다. 이 옵션이 표시되지 않으면 다음을 설치해야 합니다. Docker용 Visual Studio 도구.

Add Docker support with Visual Studio Tools for Docker

ASP.NET Core 앱에서 다음을 설정합니다. 클러스터 도우미 를 사용하여 db/db2/db3 컨테이너의 IP 주소 중 하나 이상을 사용하여 Couchbase 클러스터를 가리키도록 설정합니다.

특히 GitHub에서 전체 소스 코드를 확인하세요. HomeController.cs 그리고 Gift.cs. 다음은 색인 액션과 GetAllGifts 메서드를 호출합니다.

Docker 도구가 설치되었으므로 Docker용 배포 버튼이 새로 생겼습니다.

Docker deploy button in Visual Studio

Docker에서 ASP.NET Core 앱을 실행하려면 이 버튼을 클릭합니다. 처음 실행할 때는 다운로드 중이므로 시간이 오래 걸릴 수 있습니다. aspnetcore 이미지에서 가져옵니다.

컨테이너가 배포되면 한 단계가 더 있습니다. 어떤 이유에서든 aspnetcore Docker 이미지는 '브리지' Docker 네트워크에 연결되지 않습니다. 따라서 ASP.NET Core 앱은 Couchbase 클러스터를 볼 수 없습니다. 'bridge'를 추가하려면 도커 네트워크 연결 브리지 도커넷코어_도커넷코어_1 (컨테이너 이름은 다를 수 있음). 이 작업을 수행하는 다른 방법이 있을 수 있습니다. 도커파일 또는 docker-compose.yml가 무엇인지 (아직) 모르겠습니다.

ASP.NET Core 앱을 다시 실행합니다(Docker 사용). 웹사이트가 브라우저에 표시되어야 합니다. 이 시점에서 Docker 호스트에서 4개의 컨테이너가 함께 실행되고 있습니다: ASP.NET Core를 실행하는 웹 서버와 3개의 Couchbase Server 노드.

ASP.NET Core website using Couchbase Server

요약

사이트가 실행 중이고 몇 가지 선물을 추가했으면 Couchbase 콘솔로 돌아가서 서버 노드 탭을 엽니다. "항목" 열을 살펴보고 활성/복제본 분할을 확인합니다. 선물을 추가할 때 문서가 노드 간에 자동으로 샤딩되고 복제본이 다른 노드에 저장되는 것을 확인할 수 있습니다.

재미로 시도해 볼 수 있는 다른 방법: 자동 장애 조치(설정 → 자동 장애 조치 → 사용)를 켠 다음 Couchbase 노드 중 하나를 종료합니다(도커 스톱 DB2 예를 들어). 그런 다음 노드가 다운되고 다른 노드가 보상 상태를 유지하는 것을 Couchbase 콘솔에서 지켜보세요. 마지막으로 노드를 다시 온라인 상태로 전환합니다(도커 시작 DB2)를 클릭하고 클러스터에서 노드를 다시 추가할 수 있는 몇 가지 옵션을 제공하는 것을 확인합니다.

Options for recovering a Couchbase node

저는 Docker와 ASP.NET Core를 모두 처음 사용하므로 팁이나 제안이 있으면 듣고 싶습니다. 댓글을 남기거나 트위터에서 @mgroves 찾기.

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

작성자

게시자 매튜 그로브스

Matthew D. Groves는 코딩을 좋아하는 사람입니다. C#, jQuery, PHP 등 무엇이든 풀 리퀘스트를 제출할 정도로 코딩을 좋아합니다. 90년대에 부모님의 피자 가게를 위해 QuickBASIC POS 앱을 만든 이후로 전문적으로 코딩을 해왔습니다. 현재 Couchbase의 선임 제품 마케팅 관리자로 일하고 있습니다. 여가 시간에는 가족과 함께 축구 경기를 관람하고 개발자 커뮤니티에 참여하며 시간을 보냅니다. 그는 .NET의 AOP, .NET의 프로 마이크로서비스, Pluralsight 저자, Microsoft MVP의 저자이기도 합니다.

댓글 남기기

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

구축 시작

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

카펠라 무료 사용

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

연락하기

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