Buenas prácticas y tutoriales

Couchbase Autonomous Operator 2.0 con Prometheus - Parte 1

Recientemente anunciamos el último avance del Operador autónomo de Couchbase (CAO) 2.0 beta. Esta versión es una actualización significativa de Couchbase Autonomous Operator. Couchbase Autonomous Operator 2.0 introduce varias características nuevas de nivel empresarial con capacidades totalmente autónomas: seguridad, monitorización, alta disponibilidad y capacidad de gestión. En este blog, examinaremos en profundidad cómo funciona una de ellas.

Colección de métricas Prometheus

El último operador proporciona integración nativa con Couchbase Prometheus Exporter para recopilar y exponer métricas de Couchbase Server. Prometheus puede extraer estas métricas exportadas y visualizarlas en herramientas como Grafana.

Describiremos los pasos para desplegar el clúster con Couchbase Prometheus Exporter y veremos algunas de las métricas a través de Grafana. Este será un simple despliegue de prueba de un solo clúster y no detallará todos los demás pasos necesarios para un despliegue a nivel de producción.

Seguiremos de cerca la Tutorial de Couchbase Autonomous Operator 2.0 Beta sobre la instalación en Amazon EKS.

Requisitos previos

Supongo que ya tiene un Nube privada virtual de Amazon (VPC) a utilizar. Siga la documentación de Primeros pasos con Amazon EKS e instala lo siguiente:

Arquitectura de implantación

Una rápida visión general de la arquitectura de nuestro despliegue.

Consulte el diagrama anterior:

1: Cree el clúster de Kubernetes en Amazon EKS. El clúster administra los recursos y servicios de Kubernetes.
2: Añade recursos de Couchbase instalando las definiciones de recursos personalizadas de Couchbase.
3: Instala el Operador Autónomo Couchbase. Esto crea 2 Pods, el Operador y el Controlador de Admisión en el espacio de nombres Default.
4: Despliega un Cluster Couchbase de 3 nodos en el espacio de nombres Default. Esto crea 3 pods, cada pod tiene un contenedor Couchbase 6.5.0 y un contenedor Couchbase Metrics Exporter.
5: Cree un ServiceMonitor que indique a Prometheus que supervise un recurso de servicio que defina los puntos finales que Prometheus rastrea.
6: Crear un Servicio definirá el puerto que describimos anteriormente en nuestro ServiceMonitor en el espacio de nombres Default.
7: Añada recursos de Prometheus instalando las definiciones de recursos personalizadas de Prometheus.
8: Cree los pods Prometheus/Grafana en el espacio de nombres Monitoring. 

Crear el clúster y configurar kubectl

Configurar kubectl

Este comando es vital, ya que establece las variables pertinentes del nombre de recurso de Amazon (ARN) en ~/.kube/config. Opcionalmente, puede añadir --region regionName para especificar un clúster en una región diferente a la predeterminada. (Su región predeterminada debería haberse especificado cuando configuró por primera vez la CLI de AWS a través de aws configuremando).

Instalar las definiciones personalizadas de recursos (CRD)

Nota: He descargado el Operator para MacOS, he renombrado el paquete de  couchbase-autonomous-operator-kubernetes_2.0.0-macos-x86_64 a cao-2 y cd'd en este directorio. 

El primer paso para instalar el Operador es instalar las definiciones de recursos personalizadas (CRD) que describen los tipos de recursos de Couchbase.

Instalar el Operador Autónomo 2.0

Comprobar el estado del Operador

El Operador está listo para desplegar recursos CouchbaseCluster cuando tanto el Controlador Dinámico de Admisión (couchbase-operator-admission) como el Operador (couchbase-operator) están completamente listos y disponibles.

Preparar la configuración del clúster Couchbase

Voy a desplegar un cluster de 3 nodos de Couchbase Server 6.5.0 con Prometheus Couchbase Exporter. Para ello, he creado mi-cluster.yaml en el directorio actual. Este es sólo mi ejemplo. Aquí está el archivo:

Notas:

  • Sólo he utilizado un conjunto mínimo de parámetros de configuración. Consulte la Documentación de recursos del clúster Couchbase para obtener una lista completa.
  • Incluí la sección de secretos en el mismo archivo para simplificar las cosas. 
  • Sólo se utilizan los servicios de Datos, Consulta, Índice y Búsqueda. 
  • Gestionar mis propios cubos en lugar de dejárselo al Operador.
  • Anote la etiqueta de la agrupación cb-ejemplo ya que Prometheus lo utilizará más tarde para descubrir el servicio.

Consejo: Asegúrese de que buckets.managed está establecido en false. De lo contrario, si crea un bucket manualmente una vez que el clúster esté en funcionamiento, Kubernetes lo eliminará automáticamente.

Despliegue del clúster Couchbase

Tanto el secreto como el cluster están creados. Esto no significa que estén funcionando todavía, para ello tendrás que verificarlo como se describe en el siguiente paso.

Verificar la implantación

Asegúrese de que todas las vainas están Listo y Ejecutar. En caso de que haya algún problema, puede obtener los registros del Operador.

Opcional: Obtener los registros

Si encuentra algún problema en el paso anterior, puede comprobar los registros como se muestra a continuación.

Aquí, el clúster Couchbase desplegado sin ningún error.

Opcional: Examine un pod de Couchbase.

Vamos a describir un pod de Couchbase para comprobar qué está ejecutando.

De la salida anterior, vemos que cada pod Couchbase está ejecutando 2 contenedores. El primero está ejecutando Couchbase Server 6.5.0 y el otro está ejecutando Couchbase Prometheus Exporter que está utilizando el puerto 9091.

Acceder a la interfaz de administración de Couchbase

En un entorno de producción real, normalmente desplegarías usando DNS y un LoadBalancer actuando como proxy y accederías a Couchbase UI de forma segura, con SSL usando registros DNS SRV. Como estamos en un entorno de pruebas, accederemos a Couchbase UI directamente desde el puerto 8091. Necesitamos un paso más para conseguirlo y es el Port Forwarding.

Reenvío de puertos

Ahora hemos desplegado tres pods, sin embargo, es suficiente con hacer un port forward desde un pod para acceder a la Couchbase Admin UI.

Acceder a la interfaz de usuario

http://localhost:8091

Crear los cubos

Añadir cubo de muestras y crear cubo de almohadas

Ejecutar una carga de trabajo para generar algunas métricas

Utilizaremos cbc-pillowfight para generar la carga de trabajo. Afortunadamente, esto se incluye junto con el Operador y vamos a desplegarlo. Vamos a hacer una pequeña modificación en el archivo YAML primero, de modo que no se detiene con la carga de los datos, pero realiza operaciones en el cubo. Usaremos el cubo almohada que acabamos de crear.

Cambia el cubo de predeterminado a almohada y cambia la opción -c (número de bucles) de 10 a 10.000.

Entonces:

Pruebas locales de Prometheus y Grafana

Ahora tenemos un Cluster Couchbase de tres nodos con el Prometheus Couchbase Exporter. El exportador está enviando las métricas de Couchbase al puerto 9091. Ahora, podríamos reenviar ese puerto al igual que reenviamos el puerto 8091 para acceder a la interfaz de usuario de la consola web de Couchbase desde nuestro escritorio. Con ese puerto redireccionado, podríamos tener Prometheus y Grafana ejecutándose en contenedores Docker en el escritorio y utilizar el puerto 9091 redireccionado para obtener las métricas en Prometheus y visualizarlas en Grafana.

Este planteamiento tiene una limitación. En primer lugar, tendríamos que reenviar el puerto 9091 desde los 3 nodos y esos nombres de nodo estarían codificados. Hardcoding nombres de nodo es un gran problema en un entorno Kubernetes. Por otra parte, usted realmente no estaría haciendo el reenvío de puertos en un entorno de producción, donde normalmente se despliega con DNS y utilizaría el DNS SRV para conectarse al clúster. Por último, su mejor práctica para ejecutar Prometheus y Grafana en Kubernetes sí mismo, alineando con el paradigma nativo de la nube.

Próximos pasos

En Parte 2Vamos a hacer precisamente eso, aparte del DNS, ya que queremos que sea lo más sencillo posible para realizar pruebas rápidas.

Recursos:

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

Autor

Publicado por Prasad Doddi

Prasad es Gerente Senior de Producto para Couchbase Supportability, Manageability and Tools. Antes de Couchbase, trabajó en IBM en varios departamentos, incluyendo Desarrollo, QA, Soporte y Ventas Técnicas. Prasad tiene un máster en Chem. Engg. de la Universidad de Clarkson, NY.

1 Comentarios

  1. Gracias Prasad por compartir. ¿Puedo preguntar cuáles son las métricas clave para monitorear para decidir cuándo escalar el clúster y es posible configurar el auto-escalado de clúster couchbase en K8s?

    Saludos

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.