의 후속 조치 첫 번째 블로그 게시물에서 엔드포인트 구성과 몇 가지 .NET 코드를 계속 진행하여 Couchbase 노드에 대한 연결을 테스트해 보겠습니다.
엔드포인트 구성이란 정확히 무엇인가요?
기본적으로 Azure는 가상 머신(VM)에 대한 대부분의 외부 연결을 차단합니다. 기본 예외는 PowerShell(포트: 5986) 및 원격 데스크톱(포트: 59548)입니다.
다른 포트에 대한 연결 시도는 엔드포인트 보호에 "통과"로 추가되지 않는 한 Azure 엔드포인트 보호에 의해 차단됩니다. 엔드포인트 보호를 "클라우드 방화벽" 또는 DMZ 영역의 포트 포워딩으로 생각할 수 있습니다.
어쨌든, 클라이언트와 노드가 통신할 수 있도록 엔드포인트 보호에 카우치베이스 클라이언트에서 사용하는 모든 포트를 추가해야 합니다.
Couchbase 서버/클라이언트의 전체 포트 목록은 여기에서 확인할 수 있습니다:
클라이언트/서버("예/아니오") 헤더에 유의하세요..
https://docs.couchbase.com/admin/admin/Install/install-networkPorts.html
클라이언트가 사용하거나 필요로 하는 것보다 더 많은 포트를 열 필요가 없습니다.
이 샘플/데모에서는 SSL을 사용하지 않으므로 11207 포트는 SSL 등에만 사용되므로 열 필요가 없습니다.
.NET 클라이언트가 노드에 연결하기 위해 엔드포인트 보호에 추가해야 하는 포트는 다음과 같습니다.:
8091 - 웹 관리자
8092 - API
11210 - 버킷(SSL 없음)
참고: N1QL(문서용 SQL)을 사용하려는 경우 포트 8093도 추가해야 합니다!
엔드포인트 구성, 포트 추가
다음으로 이동 https://manage.windowsazure.com
을 클릭하고 '1부'에서 생성한 가상 머신으로 이동합니다.

"추가" 버튼을 누르고 화면의 안내에 따라 3개의 포트를 엔드포인트 구성에 추가합니다.
현재 Azure Portal에서는 한 번에 하나의 포트만 추가할 수 있으므로 시간이 다소 소요되며 향후 변경될 예정입니다.
관리자 콘솔
엔드포인트 구성의 일부로 포트 8091, 즉 Couchbase 서버 콘솔을 추가했습니다.
로 이동합니다:
https://{your-cb-server-node-dns-name}.cloudapp.net:8091
이제 Couchbase 콘솔 로그인 페이지가 표시되어야 합니다. "시간 초과" 또는 "알 수 없는 페이지" 오류가 발생하면 Couchbase 서버가 실행 중이고 포트 8091이 엔드포인트 구성에 성공적으로 추가되었는지 확인하시기 바랍니다.
모든 것이 계획대로 진행되었고 브라우저에 Couchbase 콘솔 로그인 페이지가 표시되었다고 가정하고, 계속해서 노드에 연결할 .NET 클라이언트를 빌드해 보겠습니다.
NET SDK - .NET으로 테스트 클라이언트 빌드하기
카우치베이스용 공식 .NET SDK는 오픈 소스이며 Github(https://github.com/couchbase/couchbase-net-client)에서 다운로드, 편집, 변경 등을 할 수 있습니다.
편의를 위해 Nuget(https://www.nuget.org/packages/CouchbaseNetClient/)에서도 SDK를 사용할 수 있습니다.
SDK를 쉽게 사용할 수 있으므로 작은 테스트 프로젝트를 코딩하는 단계만 남았습니다.
Visual Studio를 열고 새 콘솔 앱을 만듭니다.
솔루션 탐색기에서 솔루션을 마우스 오른쪽 버튼으로 클릭하고 이 솔루션에 대한 Nuget 패키지 관리를 클릭합니다.

아래 그림과 같이 "Couchbase SDK"를 검색하여 패키지를 설치합니다.

네트워크 속도에 따라 패키지 다운로드 + 종속성에 다소 시간이 걸릴 수 있습니다.

Couchbase SDK는 "System.Configuration"을 구성의 일부로 사용하고 코드에서 연결 uris를 설정합니다. 따라서 이 DLL에도 참조를 추가해야 합니다.

이제 실제 C# 코드를 작성하고 하나의 노드 Couchbase 클러스터에 연결할 준비가 되었습니다.
Couchbase .NET SDK로 클러스터에 연결하기!
program.cs를 열고 기존 코드를 아래 코드(모든 코드 줄)로 바꿉니다:
서버 구성이 자체 Couchbase 클러스터를 가리키도록 업데이트해야 하지만, 변경이 완료되면 코드를 실행할 준비가 된 것입니다.
메인 메서드는 진입점이자 cmd 앱에서 실행되는 첫 번째 사용자 코드입니다.
먼저 클러스터 헬퍼를 "멀티톤" 버킷 참조가 있는 싱글톤으로 초기화합니다. 이것은 버킷 및 클러스터 구성에 액세스하는 권장 방법입니다.
클러스터 도우미 는 애플리케이션의 수명 동안 공유할 수 있는 버킷 인스턴스(스레드 안전)가 하나만 존재하도록 합니다.
코드 및 Couchbase .NET SDK에 대한 자세한 내용은 다음을 참조하세요. 여기.
다음에는...
3부에서는 프라이빗 가상 네트워크 내에 여러 노드를 보유하도록 클러스터를 확장해 보겠습니다.
읽어 주셔서 감사합니다.
Martin
Martin, Azure 및 Couchbase에 대한 훌륭한 블로그 항목을 게시해 주셔서 감사합니다. Couchbase를 평가하는 데 큰 도움이 되었습니다.
위의 간단한 테스트 앱이 실패합니다. 이 오류와 함께 업서트 50 줄에서 충돌합니다:
\"Couchbase.NetClient.dll\"에서 처리되지 않은 \'System.NullReferenceException\' 유형의 예외가 발생했습니다."
'bucket\' 개체를 살펴보면 \"IsSecure\" 속성에서 이 오류를 발견할 수 있습니다:
\"\">\"
엔드포인트(https://xxxxxxxxxxx.cloudapp.ne...:8091/pools)는 정상이며 데이터를 사용할 수 있거나 반환합니다.
왜 이런 예외가 발생하는지 알 수 있을까요?
안녕하세요 Aj,
시리즈를 구독해 주셔서 감사드리며 샘플 코드에 문제가 있다니 안타깝습니다.
방금 샘플을 오류 없이 다시 테스트했는데 코드에서 변경한 사항이 있나요? 아마도 UseSsl일까요?
전혀 걱정하지 마세요. 그래서 오늘 더 자세히 살펴본 결과 로컬 Mac의 netstat를 통해 문제를 발견했습니다. 제 VM(Azure)에 할당된 가상 IP 주소가 Mac에서 완전히 다른 IP 주소와 포트에 매핑되고 있었습니다.
예. Azure
DNS 이름: mycouchbasevm.cloudapp.net
가상 IP 주소: 192.xxx.yy.zzz
내 Mac의 netstat를 통해 다음과 같은 항목이 있었습니다:
tcp4 0 0 111.21.xxx.yyy.67911 192.xxx.yy.zzz.8081 ESTABLISHED
예제에서 azure 엔드포인트를 111.21.xxx.yyyy, 포트 67911을 사용하도록 변경하면 정상적으로 작동하기 시작했고 Azure에서 실행되는 Couchbase 서버 인스턴스에서 즉시 결과를 반환받았습니다. 완전성을 위해 다음과 같이 설명합니다.
새로운 Uri(\"https://111.21.xxx.yyy:67911/pools\")
안녕하세요 마틴, 전혀 걱정하지 마세요. 물론 제 설정 클라이언트 측에서 뭔가 엉망이 될 것입니다.
테스트 C# 코드 블록의 경우, Azure VM의 엔드포인트를 제외하고는 전혀 변경되지 않았습니다. 좀 더 조사해보고 구체적인 질문이 있으면 다시 여기로 돌아오겠습니다.
엔드포인트 보호는 필요한 포트를 모두 열었나요? 포트를 놓친 경우 시간 초과 또는 노드를 찾을 수 없음 예외가 발생할 수 있습니다.
언제든지 이메일(martin (at))을 보내주세요. couchbase.com) 코드/설정 디버깅을 도와드리고 싶으신 경우.
좋아, 문제가 해결되었습니다. azure vm의 호스트 파일에서 사소한 오타를 추적했습니다. 사과드립니다. 앞으로 나아갑니다! :-)