Em seguida, o primeira postagem no blogVamos continuar com a configuração do endpoint e com algum código .NET para testar a conexão com o nó do Couchbase.
Configuração de endpoint, o que é isso exatamente?
Por padrão, o Azure bloqueia a maioria das conexões externas com a máquina virtual (VM). As exceções padrão são o PowerShell (porta: 5986) e a Área de Trabalho Remota (porta: 59548).
As tentativas de conexão com outras portas são bloqueadas pelo Azure Endpoint Protection, a menos que sejam adicionadas ao Endpoint Protection como uma "passagem". Você pode pensar no Endpoint Protection como um "Cloud Firewall" ou talvez como um encaminhamento de porta em uma zona DMZ.
Independentemente disso, todas as portas usadas pelo cliente do Couchbase precisam ser adicionadas à proteção do endpoint para permitir que o cliente e o nó se comuniquem.
A lista completa de portas do Couchbase Server/Client pode ser encontrada aqui:
Observe o cabeçalho Cliente/servidor ("sim/não").
https://docs.couchbase.com/admin/admin/Install/install-networkPorts.html
Não há necessidade de abrir mais portas do que o cliente está usando/precisa.
Neste exemplo/demo, não usaremos SSL e, portanto, não há necessidade de abrir a porta 11207, pois ela é usada somente para SSL etc.
As portas que precisamos adicionar ao Endpoint Protection para que o cliente .NET se conecte ao nó são:
8091 - Administrador da Web
8092 - API
11210 - Balde (sem SSL)
Observação: Se estiver planejando usar o N1QL (SQL for Documents), também precisará adicionar a porta 8093!
Endpoint Configuration, adicionando as portas
Ir para https://manage.windowsazure.com
e navegue até a máquina virtual criada na "parte 1".

Pressione o botão "Add" e siga o guia na tela para adicionar as 3 portas à configuração do endpoint.
No Portal do Azure atual, só é possível adicionar uma única porta por vez, o que consome um pouco de tempo e, espera-se, mudará no futuro.
Console do administrador
Como parte da configuração do ponto de extremidade, adicionamos a porta 8091, o console do Couchbase Server.
Navegue até:
https://{your-cb-server-node-dns-name}.cloudapp.net:8091
Agora você deve ver a página de login do Console do Couchbase. Se receber um erro de "tempo limite" ou "página desconhecida", verifique se o Couchbase Server está em execução e se a porta 8091 foi adicionada com êxito à configuração do ponto de extremidade.
Supondo que tudo correu como planejado e que o navegador mostrou a página de login do console do Couchbase, vamos continuar a criar um cliente .NET para se conectar ao Node.
O SDK do .NET - Criando um cliente de teste com o .NET
O SDK oficial do .NET para o Couchbase é de código aberto e pode ser baixado, editado, alterado etc. no Github, https://github.com/couchbase/couchbase-net-client
Por conveniência, o SDK também está disponível no Nuget, https://www.nuget.org/packages/CouchbaseNetClient/
Com o SDK em mãos, a única etapa que falta é codificar um pequeno projeto de teste.
Abra o Visual Studio e crie um novo aplicativo Console.
Clique com o botão direito do mouse na solução no Solution Explorer e clique em Manage Nuget Packages for this Solution.

Procure por "Couchbase SDK" e instale o pacote, conforme mostrado na figura abaixo.

Dependendo da velocidade da rede, o download do pacote + dependências pode levar algum tempo.

O Couchbase SDK usa "System.Configuration" como parte da configuração e da definição dos URLs de conexão no código. Portanto, você precisará adicionar uma referência a essa DLL também.

Agora estamos prontos para executar algum código C# real e nos conectar ao nosso cluster Couchbase de um nó.
Conectando-se ao cluster com o SDK do Couchbase .NET!
Abra o arquivo program.cs e substitua o código existente pelo código abaixo (todas as linhas de código):
Observe que você precisa atualizar a configuração do servidor para apontar para o seu próprio cluster do Couchbase, mas com essa alteração feita, estamos prontos para executar o código.
O método Main é o ponto de entrada e a primeira parte do código do usuário executada no aplicativo cmd.
Ele começa inicializando o ClusterHelper como Singleton com referências de Bucket "multi-tons". Essa é a maneira recomendada de acessar o Bucket e a configuração do cluster.
Ajudante de cluster garante que haja apenas uma instância de um bucket (thread safe) que possa ser compartilhada durante o tempo de vida do aplicativo.
Você pode ler mais sobre os detalhes do código e o Couchbase .NET SDK aqui.
Da próxima vez...
Na parte 3, dimensionaremos o cluster para ter vários nós em uma rede virtual privada.
Obrigado pela leitura
Martin
Martin, obrigado por postar essas excelentes entradas de blog sobre o Azure e o Couchbase. É de grande ajuda quando estamos avaliando o Couchbase.
O aplicativo de teste simples acima não funciona para nós. Ele trava na linha 50 do upsert, com este erro:
\"Ocorreu uma exceção não tratada do tipo \'System.NullReferenceException\' no Couchbase.NetClient.dll\"
Observando o objeto \"bucket\", notamos esse erro na propriedade \"IsSecure\":
\"\"
Nosso ponto de extremidade (https://xxxxxxxxxxx.cloudapp.ne...:8091/pools) está correto e disponível / retorna dados.
Alguma ideia de por que estamos vendo essa exceção?
Oi Aj,
Obrigado por acompanhar a série e lamento saber que você teve problemas com o código de exemplo.
Acabei de testar a amostra novamente sem nenhum erro. Você alterou alguma coisa no código, talvez o UseSsl?
Não se preocupe, Martin. Hoje fiz mais pesquisas e encontrei o problema via netstat no meu Mac local. O endereço IP virtual atribuído à minha VM (Azure) estava sendo mapeado no meu Mac para um endereço IP e uma porta totalmente diferentes.
por exemplo. Azure
Nome DNS: mycouchbasevm.cloudapp.net
Endereço IP virtual: 192.xxx.yy.zzz
Através do netstat em meu mac, havia uma entrada parecida com esta :
tcp4 0 0 111.21.xxx.yyy.67911 192.xxx.yy.zzz.8081 ESTABLISHED
Se eu alterasse o endpoint do Azure em seu exemplo para usar 111.21.xxx.yyy, porta 67911, ele começaria a funcionar bem e eu estaria recebendo imediatamente os resultados da instância do servidor Couchbase em execução no Azure. Para ser mais completo, quero dizer :-
novo Uri(\"https://111.21.xxx.yyy:67911/pools\")
oi Martin, não se preocupe e, é claro, deve ser algo complicado em minha configuração no lado do cliente.
Em termos do bloco de código de teste C#, nenhuma alteração foi feita, a não ser, é claro, o endpoint da minha VM do Azure. Farei mais algumas pesquisas e voltarei aqui se tiver alguma dúvida específica.
E quanto ao Endpoint Protection, você abriu todas as portas necessárias? Se você não tiver aberto uma porta, poderá receber uma exceção de tempo limite ou de nó não encontrado.
Sinta-se à vontade para me enviar um e-mail (martin (at) couchbase.com) Se quiser que eu ajude a depurar seu código/configuração.
Tudo bem, problema resolvido. localizei um pequeno erro de digitação em meu arquivo de hosts na vm do Azure. :-)