Em muitas de minhas postagens e exemplos no blog, uso um único nó do Couchbase Server. Faço isso porque é fácil, e muito do que demonstro pode ser feito com um único nó. No entanto, o Couchbase Server é normalmente executado em vários nós na produção (às vezes 3, às vezes 3000). Para simular isso localmente, posso usar alguns contêineres leves do Docker.
Enquanto isso, vou mostrar a você como começar com um site ASP.NET Core, também em execução no Docker.
O que você precisa para começar
- Docker para Windows. Você pode usar o Docker em qualquer plataforma, mas, neste exemplo, estou usando o Windows.
- Visual Studio 2015 (ou posterior). Você não precisa do Visual Studio para usar o ASP.NET Core ou o Docker, mas estou usando uma extensão do Visual Studio para facilitar as coisas.
- Visualização 2 das ferramentas do .NET Core VS 2015 ou superior. Essas são as ferramentas do .NET Core para o Visual Studio.
- Ferramentas do Visual Studio para o Docker (visualização). Mais ferramentas VS para facilitar o trabalho.
Depois de instalar todos os itens acima, certifique-se de ativar o compartilhamento de unidades no Docker. Caso contrário, você receberá um erro como A tarefa "PrepareForLaunch" falhou inesperadamente mais tarde. (Eu precisei ativar o compartilhamento nas unidades C e D, mas sua configuração pode variar).

Configurar o servidor Couchbase no Docker
Comece executando uma imagem do Docker do Couchbase. Como o site ASP.NET Core será executado no Docker, só precisamos expor a porta 8091 (para usar o Console do Couchbase de um navegador da Web em localhost:8091).
docker run -d --name db -p 8091:8091 couchbase
Eu o chamei de db mas você pode dar o nome que quiser. Eu especifiquei couchbase como a imagem, que é o Couchbase Server 4.5.1 no momento em que estou escrevendo este artigo.
Em seguida, execute pelo menos mais um contêiner com o Couchbase. Não há necessidade de mapear nenhuma porta para eles. Vou criar apenas dois:
docker run -d --name db2 couchbase
docker run -d --name db3 couchbase
Anote os endereços IP desses dois contêineres usando docker inspeciona o banco de dados / docker inspecionar db2 / etc... e procurando por Endereço IPA na saída.
Agora, aponte seu navegador da Web para localhost:8091 para configurar o cluster do Couchbase. Se você não tiver feito isso antes, pode dar uma olhada em esta postagem do blog sobre como configurar o Couchbase Server ou você pode Assista a este vídeo sobre o passo a passo da configuração do Couchbase Server.
Quando você configurar e criar um bucket (eu criei um bucket chamado "default"), vá em frente e ative a replicação, já que vamos adicionar mais alguns nós.

Vá para a guia Server Nodes (Nós do servidor) e clique em "Add Server" (Adicionar servidor). Digite o endereço IP do db2 e clique em "Add Server" (Adicionar servidor). Repita o procedimento para o db3 e quaisquer outros nós que você tenha criado. Nesse ponto, você deverá ver um número ao lado de "Pending Rebalance" (Reequilíbrio pendente). Isso significa que os nós estão prontos para fazer parte do cluster.

Clique em "rebalance". Isso levará um pouco de tempo, mas, quando terminar, você terá um cluster do Couchbase Server em execução no Docker. É importante observar que, mesmo durante a operação de rebalanceamento, o cluster permanece funcional.

Enquanto estiver no Console do Couchbase, vá em frente e crie um índice primário. Executar CREATE PRIMARY INDEX on na guia Query (Consulta). O aplicativo ASP.NET Core precisará disso.default
Criar um aplicativo ASP.NET Core
No Visual Studio, crie um novo aplicativo ASP.NET Core. Ou você pode usar o aplicativo Código-fonte do ASP.NET Core que já preparei para este exemplo no GitHub. É um site muito simples com duas operações: listar todos os presentes e adicionar um novo presente aleatório à lista. (É aquela época do ano e estou pensando em presentes!)

Adicione a dependência do CouchbaseNetClient com o NuGet. Usaremos o .NET Core SDK, que está atualmente na visualização para desenvolvedores. Portanto, você precisará executar Instalar o pacote CouchbaseNetClient -Pre no console do Package Manager. Se você não usar o -Préo NuGet tentará instalar o SDK do .NET em vez do SDK do .NET Core.
Em seguida, adicione o suporte do Docker ao projeto. Clique com o botão direito do mouse no projeto, clique em Add e, em seguida, clique em "Docker Support". Isso adicionará alguns arquivos do Docker ao seu projeto. Se você não vir essa opção, precisará instalar Ferramentas do Visual Studio para o Docker.

No aplicativo ASP.NET Core, configure o Ajudante de cluster para apontar para o cluster do Couchbase usando um ou mais endereços IP dos contêineres db/db2/db3.
|
1 2 3 |
var client = new ClientConfiguration(); client.Servers = new List {new Uri("couchbase://172.17.0.2")}; ClusterHelper.Initialize(client); |
Confira o código-fonte completo no GitHub, especialmente HomeController.cs e Presente.cs. Aqui está o Índice ação e o GetAllGifts que ele está chamando.
|
1 2 3 4 5 6 7 8 9 10 11 12 13 |
public IActionResult Index() { var gifts = Gift.GetAllGifts(); return View(gifts); } public static List GetAllGifts() { var bucket = ClusterHelper.GetBucket("default"); var query = QueryRequest.Create("SELECT g.* FROM `default` g"); query.ScanConsistency(ScanConsistency.RequestPlus); return bucket.Query(query).Rows; } |
Como você tem as ferramentas do Docker instaladas, há um novo botão de implantação para o Docker.

Clique aqui para executar seu aplicativo ASP.NET Core no Docker. Observe que, quando você executa isso pela primeira vez, pode demorar mais porque está baixando o arquivo aspnetcore do Docker Hub.
Depois que o contêiner é implantado, há mais uma etapa. Por algum motivo, a imagem do Docker do aspnetcore não se conecta à rede Docker "bridge". Portanto, o aplicativo ASP.NET Core não consegue ver o cluster do Couchbase. Para adicionar a "ponte", execute docker network connect bridge dockernetcore_dockernetcore_1 (o nome do seu contêiner pode variar). Pode haver outra maneira de fazer isso alterando a variável Dockerfile ou docker-compose.ymlmas não sei o que é (ainda).
Execute o aplicativo ASP.NET Core novamente (com o Docker). O site deve aparecer em seu navegador. Neste ponto, você tem quatro contêineres em execução no host do Docker: um servidor Web executando o ASP.NET Core e três nós do Couchbase Server.

Resumo
Quando seu site estiver em execução e você tiver adicionado alguns presentes, volte ao Console do Couchbase e abra a guia Server Nodes (Nós do servidor). Dê uma olhada na coluna "Items" e observe a divisão Active/Replica. À medida que você adiciona presentes, observe que os documentos estão sendo automaticamente divididos entre os nós e as réplicas estão sendo armazenadas nos outros nós.
Outra coisa que você pode tentar por diversão: ative o failover automático (Settings → Auto-Failover → Enable) e, em seguida, desligue um dos nós do Couchbase (docker stop db2 por exemplo). Em seguida, observe o Console do Couchbase enquanto o nó é desativado e os outros nós são compensados. Por fim, coloque o nó novamente on-line (docker start db2) e observe que o cluster lhe dá algumas opções para adicionar o nó novamente.

Sou muito novo no Docker e no ASP.NET Core, portanto, se você tiver alguma dica ou sugestão, gostaria de ouvi-la. Por favor, deixe um comentário ou encontrar @mgroves no Twitter.