Sin categoría

Alojar Couchbase Server en Windows Azure (Parte 2)

A raíz del primera entrada en el blogContinuemos con la configuración del Endpoint y algo de código .NET para probar la conexión con el nodo Couchbase.

Configuración de puntos finales, ¿qué es eso exactamente?

Por defecto, Azure bloquea la mayoría de las conexiones externas a la máquina virtual (VM). Las excepciones predeterminadas son PowerShell (puerto: 5986) y Escritorio remoto (puerto: 59548).
Los intentos de conexión a otros puertos son bloqueados por Azure Endpoint Protection, a menos que se añadan a Endpoint Protection como "pass through". Puede pensar en Endpoint Protection como un "cortafuegos en la nube" o quizás como un reenvío de puertos en una zona DMZ.
En cualquier caso, todos los puertos utilizados por el cliente Couchbase necesitan ser añadidos a la protección del Endpoint para permitir que el cliente y el nodo se comuniquen.
La lista completa de puertos para Couchbase Server/Client puede encontrarse aquí:
Tenga en cuenta el encabezado Cliente/servidor ("sí/no").
https://docs.couchbase.com/admin/admin/Install/install-networkPorts.html

No es necesario abrir más puertos de los que el cliente utiliza/necesita.
En este ejemplo/demo no usaremos SSL y por lo tanto no hay necesidad de abrir el puerto 11207 ya que este solo se usa para SSL etc.

Los puertos que debemos añadir a Endpoint Protection para que el cliente .NET se conecte al nodo son los siguientes:

8091 - Administración web
8092 - API
11210 - Cubo (sin SSL)

Nota: Si tiene previsto utilizar N1QL (SQL para documentos), también deberá añadir el puerto 8093. 

Configuración del punto final, añadiendo los puertos

Ir a https://manage.windowsazure.com 
y navegue hasta la Máquina Virtual creada en la "parte 1".

Pulsa el botón "Añadir" y sigue la guía en pantalla para añadir los 3 puertos a la Configuración del Endpoint.
En el actual Azure Portal sólo se puede añadir un único puerto a la vez, esto es un poco lento y es de esperar que cambie en el futuro.

Consola de administración

Como parte de la Configuración del Endpoint añadimos el puerto 8091, la Consola del Servidor Couchbase.
Navega hasta:
https://{nombre-dns-de-su-servidor-cb}.cloudapp.net:8091

Ahora deberías ver la página de inicio de sesión de la consola de Couchbase. Si aparece un error de "timeout" o "unknown page", comprueba que el servidor Couchbase está funcionando y que el puerto 8091 se ha añadido correctamente a la configuración del punto final.

Asumiendo que todo salió como lo planeamos y el navegador mostró la página de Login de la Consola de Couchbase, continuemos construyendo un Cliente .NET para conectarnos al Nodo.

El SDK .NET - Creación de un cliente de prueba con .NET

El SDK .NET oficial para Couchbase es de código abierto y puede descargarse, editarse, modificarse, etc. desde Github, https://github.com/couchbase/couchbase-net-client.

Para mayor comodidad, el SDK también está disponible en Nuget, https://www.nuget.org/packages/CouchbaseNetClient/.

Con el SDK al alcance de la mano, el único paso que falta es codificar un pequeño proyecto de prueba.

Abra Visual Studio y cree una nueva aplicación de consola.

Haga clic con el botón derecho en la solución en el Explorador de soluciones y haga clic en Administrar paquetes Nuget para esta solución.

Busque "Couchbase SDK" e instale el paquete como se muestra en la siguiente imagen.

Dependiendo de la velocidad de la red, la descarga del paquete + dependencias puede tardar algún tiempo.

Couchbase SDK utiliza "System.Configuration" como parte de la configuración y establecimiento de las uris de conexión en código. Por lo tanto tendrás que añadir una ref. a esta DLL también.

Ahora estamos listos para hacer algo de código C# real y conectarnos a nuestro nodo Couchbase Cluster.

¡Conexión al Cluster con el SDK .NET de Couchbase!

Abra program.cs y sustituya el código existente por el código siguiente (todas las líneas de código):

Ten en cuenta que necesitas actualizar la Configuración del Servidor para que apunte a tu propio Cluster Couchbase, pero con ese cambio hecho ya estamos listos para ejecutar el código.

El método Main es el punto de entrada y la primera pieza de código de usuario que se ejecuta en la aplicación cmd.
Comienza inicializando ClusterHelper, como Singleton con referencias a Buckets "multi-tons". Esta es la forma recomendada para acceder a Bucket's y a la configuración del Cluster.
ClusterHelper garantiza que sólo haya una instancia de un cubo (thread safe) que pueda compartirse durante toda la vida de la aplicación.

Puedes leer más sobre los detalles del código y el SDK .NET de Couchbase aquí.

La próxima vez...

En la parte 3 escalaremos el Cluster para tener múltiples nodos dentro de una red virtual privada.

Gracias por leer
Martin

Comparte este artículo
Recibe actualizaciones del blog de Couchbase en tu bandeja de entrada
Este campo es obligatorio.

Autor

Publicado por Martin Esmann

Martin Esmann es desarrollador de .Net en Couchbase. Es un desarrollador apasionado con un profundo enfoque en tecnologías Microsoft como .NET.

6 Comentarios

  1. Martin, gracias por publicar estas excelentes entradas de blog sobre Azure y Couchbase. Una gran ayuda a medida que evaluamos Couchbase.

    Unf. la aplicación de prueba simple de arriba falla para nosotros. Se bloquea en la línea 50 upsert, con este error:

    \Se ha producido una excepción no controlada de tipo 'System.NullReferenceException' en Couchbase.NetClient.dll\"

    Mirando el objeto \'bucket\' nos dimos cuenta de este error en la propiedad \"IsSecure\":
    \"\"

    Nuestro punto final (https://xxxxxxxxxxx.cloudapp.ne...:8091/pools) está bien y disponible / devuelve datos.

    ¿Alguna idea de por qué se produce esta excepción?

    1. Hola Aj,
      Gracias por seguir la serie y lamento que tengas problemas con el código de ejemplo.
      Acabo de probar la muestra de nuevo sin ningún error, ¿has cambiado algo en el código? ¿quizás UseSsl?

      1. No te preocupes Martin. Así que hice más investigación de hoy y encontró el problema a través de netstat en mi mac local. La dirección IP virtual que se asigna a mi VM (Azure) se asigna en mi mac a una totalmente diferente, dirección IP y el puerto.

        eg. Azure
        Nombre DNS: mycouchbasevm.cloudapp.net
        Dirección IP virtual: 192.xxx.yy.zzz

        a través de netstat en mi mac, había una entrada que se parecía a esto :

        tcp4 0 0 111.21.xxx.yyy.67911 192.xxx.yy.zzz.8081 ESTABLISHED

        si cambiaba el endpoint de azure en tu ejemplo para usar 111.21.xxx.yyy, puerto 67911 entonces empezaba a funcionar bien y obtenía inmediatamente resultados de la instancia del servidor Couchbase corriendo en Azure. Para completar, con esto quiero decir :-

        new Uri(\"https://111.21.xxx.yyy:67911/pools\")

      2. Hola Martin, no te preocupes en absoluto y, por supuesto, su va a ser algo screwy en mi lado del cliente de configuración.

        En cuanto al bloque de código de prueba C#, no se han realizado cambios en absoluto, aparte, por supuesto, del punto final para mi máquina virtual Azure. Voy a hacer un poco más de investigación y volver aquí si alguna pregunta específica.

        1. ¿Qué pasa con Endpoint Protection, has abierto todos los puertos necesarios? Si te has saltado un puerto, podrías obtener un timeout o una excepción de nodo no encontrado.
          No dude en enviarme un correo electrónico (martin (at) couchbase.com) Si quieres que te ayude a depurar tu código/configuración.

      3. de acuerdo, problema resuelto. he encontrado un pequeño error en mi archivo hosts en azure vm. disculpas. ¡adelante y adelante! :-)

Deja un comentario

¿Listo para empezar con Couchbase Capella?

Empezar a construir

Consulte nuestro portal para desarrolladores para explorar NoSQL, buscar recursos y empezar con tutoriales.

Utilizar Capella gratis

Ponte manos a la obra con Couchbase en unos pocos clics. Capella DBaaS es la forma más fácil y rápida de empezar.

Póngase en contacto

¿Quieres saber más sobre las ofertas de Couchbase? Permítanos ayudarle.