En todo el mundo, la victoria de la contenedorización sobre la virtualización ha generado rendimiento y confiabilidad entre las aplicaciones que se ejecutan en diferentes entornos informáticos. El concepto de contenedores es que aíslan los códigos de software y todas sus dependencias para garantizar la uniformidad y consistencia en cualquier infraestructura. Amazon, al igual que muchas otras plataformas en la nube, está madurando rápidamente sus Elastic Kubernetes Services para satisfacer las crecientes necesidades informáticas de los clientes de AWS.
Si bien Amazon Elastic Kubernetes Service en sí mismo es un servicio de Kubernetes completamente administrado, seguro y confiable, aún requiere muchas configuraciones manuales para administrar los clústeres. Para asegurar el rendimiento de su aplicación en dicho entorno, debe utilizar NCache. NCache es una solución de almacenamiento en caché en memoria que aumenta el rendimiento de su aplicación e induce la escalabilidad al mejorar la latencia en su clúster de EKS.
NCache Detalles Implementaciones de contenedores NCache Documentos de EKS
NCache Arquitectura de implementación en Elastic Kubernetes Service
La estructura básica de cómo NCache encaja en su clúster EKS es muy simple. Tiene un balanceador de carga clásico en la nube de AWS que enruta las solicitudes HTTP a un controlador de entrada que se ejecuta dentro del clúster de EKS. Dentro de este clúster, tiene su clúster de caché ejecutándose NCache servidores dentro de varios pods. Estos pods están asignados a un Servicio de descubrimiento de caché que permite el acceso del cliente a los pods de clúster que ejecutan el servicio de caché. Puede tener varias aplicaciones implementadas en varios pods y todas estarán conectadas al clúster de caché a través de este servicio de descubrimiento de caché.
Dentro de este clúster de EKS, también tiene un NCache Puerta de enlace de monitoreo remoto Servicio. Este es un controlador de entrada NGINX que proporciona configuraciones de balanceador de carga para reducir el tráfico a pods específicos con sesiones pegajosas habilitadas. La parte restante del clúster se compone de varias aplicaciones cliente, cada una en su propio entorno de implementación.
El flujo de solicitudes y la estructura de un clúster EKS con NCache desplegado en él se muestra en el siguiente diagrama.
NCache Detalles Implementaciones de contenedores NCache Documentos de EKS
Entonces, sin más demora, permítame mostrarle una guía sencilla paso a paso sobre cómo puede implementar NCache dentro de su clúster de AWS Elastic Kubernetes.
Paso 1: Crear NCache Recursos
Para usar todas las funcionalidades NCache le proporciona dentro de su clúster de Amazon Kubernetes, su paso inmediato en este momento debería ser implementar NCache recursos dentro de EKS. Desplegando NCache le permitirá realizar todas las operaciones de administración en su clúster.
Puedes desplegar NCache con la ayuda de ciertos archivos YAML. Cada uno de estos archivos contiene información específica que desempeña su papel en el funcionamiento perfecto de NCache dentro de EKS. Estos archivos son:
- NCache Archivo de implementación: Este archivo contiene la especificación real de los pods necesarios y las imágenes que deben utilizarse. Esta información incluye el recuento de réplicas, el repositorio de imágenes, los puertos necesarios, etc.
- NCache archivo de servicio: Este archivo crea un servicio sobre la implementación. El objetivo principal de este archivo es exponer la implementación desde el servidor.
- NCache Archivo de entrada: Este archivo contiene la información necesaria para crear una sesión permanente entre una aplicación cliente y Web Manager que se ejecuta dentro del clúster de Kubernetes.
Estas son las implementaciones básicas de YAML que necesita implementar NCache servicios dentro de su clúster EKS. Entre todos estos archivos, el más importante es NCache Archivo YAML de implementación. Este archivo se ve así:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
kind: Deployment apiVersion: apps/v1beta1 metadata: name: ncache-deployment labels: app: ncache spec: replicas: 2 template: metadata: labels: app: ncache spec: nodeSelector: "beta.kubernetes.io/os": linux containers: - name: ncache image: docker.io/alachisoft/ncache:enterprise-server-linux-5.0.2 ports: - name: management-tcp containerPort: 8250 - name: management-http containerPort: 8251 - name: client-port containerPort: 9800 |
Una vez que cree esta implementación ejecutando el siguiente comando en AWS CLI, Kubernetes creará la cantidad exacta de pods que se mencionan en la responder etiqueta. En cada uno de estos pods, tendrá un contenedor en ejecución. La imagen de la que está hecho este contenedor se proporciona con el imagen llave. En su caso, este será el camino hacia la NCache enterprise servidor que se encuentra en Docker Hub. puertos etiqueta contiene todos los puertos que necesitan ser expuestos para NCache servicios para funcionar en el clúster.
1 |
kubectl create -f [dir]/filename.yaml |
Consulte NCache docs en Crear NCache Recursos en EKS.
NCache Detalles Implementaciones de contenedores NCache Documentos de EKS
Paso 2: Crear NCache Servicio de descubrimiento
El paso anterior lo lleva a configurar el lado del servidor de NCache. Después de que se haya ejecutado con éxito, debe trabajar en la creación de un servicio de descubrimiento que exponga su NCache recursos a las aplicaciones cliente.
Fuera del clúster de Kubernetes, se requieren direcciones IP estáticas para una comunicación exitosa con el cliente. Por conveniente que pueda ser, dentro del clúster de Kubernetes, a cada pod implementado se le asigna una dirección IP dinámica en tiempo de ejecución que permanece desconocida para los clientes. Esta anomalía provoca problemas de comunicación dentro del clúster, donde las aplicaciones cliente no pueden identificar NCache servidores. Aquí, la necesidad de un servicio de descubrimiento sin cabeza dentro de su clúster EKS para usted NCache surgen los clientes.
Este servicio sin cabeza resuelve este problema al exponer las direcciones IP de los NCache servidores a las aplicaciones cliente. Estos clientes usan estas direcciones IP para crear los identificadores de caché necesarios y comenzar a realizar operaciones de caché.
Para permitir que todos los clientes se conecten al servicio sin interfaz con facilidad, cree e implemente un archivo YAML de Cache Discovery como se proporciona:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
kind: Service apiVersion: v1 # depends on underlying Kubernetes version metadata: name: cacheserver labels: app: cacheserver spec: clusterIP: None selector: app: ncache # same label as provided in the ncache deployment yaml ports: - name: management-tcp port: 8250 targetPort: 8250 - name: management-http port: 8251 targetPort: 8251 - name: client-port port: 9800 targetPort: 9800 |
Lo que hace que este servicio sea un servicio sin cabeza es la etiqueta clústerIP establecido en “Ninguno”. Este comportamiento indica que este servicio es específico para NCache y no será accesible fuera del clúster de EKS. Etiqueta selector establecido en ncache ayuda a este servicio a identificar todos los pods cuya etiqueta es ncache para que sus IP puedan ser expuestas a los clientes.
Una pequeña idea de cómo funcionan las cosas: para el cliente que se conecta a los servidores, solo una dirección IP será suficiente, ya que el servidor al que se conecta comparte las direcciones IP de todos los servidores que forman parte de ese clúster de caché.
Una vez que el archivo esté listo para implementarse, ejecute el siguiente comando en la interfaz de línea de comandos de AWS.
1 |
kubectl create -f [dir]/cachediscovery.yaml |
Para una implementación detallada paso a paso, siga nuestra documentación en Crear servicio de descubrimiento.
NCache Detalles Implementaciones de contenedores NCache Documentos de EKS
Paso 3: Crear acceso para NCache Administración
Exponer permitir NCache acceso de administración desde fuera del clúster, debe configurar un controlador de ingreso. Este controlador abstrae las estrategias básicas del balanceador de carga que normalmente usa en las implementaciones de contenedores. Un controlador de entrada de uso frecuente es el controlador NGINX que, cuando se implementa, es responsable de crear todos los servicios que se requieren para exponer NCache servicios fuera del clúster.
Para implementar NGINX Ingress Controller en su clúster de EKS, debe crear varias implementaciones de archivos en él. Estos archivos contienen toda la información necesaria para que su clúster de Kubernetes instale un balanceador de carga NGINX completamente funcional.
A continuación se enumeran los archivos necesarios con una breve explicación de lo que hacen y por qué son necesarios:
- NGINX Archivo obligatorio: Estos archivos son los archivos base necesarios para ejecutar el controlador NGINX; que en su caso será un balanceador de carga dentro de su clúster EKS. Puede encontrar este archivo en GitHub.
- Archivo de servicio NGINX: Este archivo contiene la información sobre el equilibrador de carga de capa 7 que expone el controlador de entrada de NGINX fuera del entorno de Kubernetes.
- Archivo de configuración NGINX: Este archivo contiene todos los parámetros necesarios para configurar el balanceador de carga Layer7.
Entre los archivos antes mencionados, Servicio NGINX YAML es el archivo que contiene la información de puertos requerida para crear un balanceador de carga consciente de NCache acceso de gestión. El contenido de este archivo se muestra a continuación:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
kind: Service apiVersion: v1 metadata: name: ingress-nginx namespace: ingress-nginx labels: app.kubernetes.io/name: ingress-nginx app.kubernetes.io/part-of: ingress-nginx annotations: ... spec: type: LoadBalancer selector: app.kubernetes.io/name: ingress-nginx app.kubernetes.io/part-of: ingress-nginx ports: - name: http port: 80 protocol: TCP targetPort: http - name: https port: 443 protocol: TCP targetPort: http |
Todos estos archivos se crean como archivos YAML que se implementan muy fácilmente dentro del clúster de EKS. Todo lo que necesita hacer es ejecutar el siguiente comando para cada archivo en la herramienta de línea de comandos configurada de AWS.
1 |
kubectl create -f [dir]/<filename>.yaml |
Al ejecutarse, este comando creará un balanceador de carga que habilita la permanencia dentro de su clúster. Para obtener información detallada, consulte nuestra documentación sobre Crear acceso para NCache Administración.
NCache Detalles Implementaciones de contenedores NCache Documentos de EKS
Paso 4: crear un clúster de caché
Ahora que tiene implementaciones y servicios colectivos en su lugar, necesita crear un NCache clúster para permitir que sus clientes se conecten a los servidores de caché.
cuando desplegaste NCache servicio, desplegó en secreto NCache Web Manager también que viene totalmente integrado con el NCache operaciones de gestión. Puedes usar esto NCache Web Manager para crear su caché en clúster y jugar con él. Todo lo que tiene que hacer es seguir estos pasos básicos proporcionados en NCache docs en Crear caché en clúster y usted es bueno para ir! Aquí, sin embargo, lo que necesita su máxima concentración es que las direcciones IP de los nodos del servidor que necesita agregar deben ser las mismas que las direcciones IP de los módulos del servidor asignados por el clúster de Kubernetes. Puede obtener la lista de estas direcciones IP y su detalle ejecutando el conseguir vainas Comando en la herramienta de línea de comandos de AWS.
Paso 5: Cree la implementación de la aplicación cliente
NCache implementación del cliente, al igual que NCache implementación de recursos, especifica la cantidad de contenedores de imágenes de clientes en ejecución, el repositorio privado de Dockerhub donde se coloca la aplicación, los puertos, etc. Esta información lo ayuda a crear un contenedor de cliente completamente funcional.
Para obtener la aplicación cliente de un repositorio privado, debe mencionar las credenciales de inicio de sesión cada vez. Para salvarse de esta molestia, puede crear un secretos.yaml archivo que contiene su información de inicio de sesión que debe completarse una vez y es accesible para todos los recursos del cliente que llama. Referirse a NCache docs en Crear implementación de cliente para obtener una vista detallada de los pasos y los archivos YAML.
De manera similar, la implementación real del cliente también se crea en forma de un archivo YAML. Este archivo contendrá toda la información necesaria para implementar su aplicación cliente (o aplicaciones; su llamada) en su clúster de EKS. El contenido de este archivo se muestra a continuación:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 |
kind: Deployment apiVersion: apps/v1beta1 # it depends on the underlying Kubernetes version metadata: name: client spec: replicas: 1 template: metadata: labels: app: client spec: nodeSelector: "beta.kubernetes.io/os": linux containers: - name: client image: # Your docker client image here ports: - name: app-port containerPort: 80 # In case of NCache client installation, add the following remaining ports - name: management-tcp containerPort: 8250 - name: management-http containerPort: 8251 - name: client-port containerPort: 9800 |
Cuando se trata de implementar los contenedores desde la imagen, el proceso que sigue es el siguiente:
1. Se accede a la imagen desde el repositorio.
2. El archivo de secretos del cliente se lee desde el NCache recurso secreto para la autenticación.
3. La imagen se extrae y se implementa en un contenedor con la aplicación cliente ejecutándose en él.
Aquí, como tenemos una implementación y no un servicio, lo que debe hacer es ingresar al pod y ejecutar el comando por lotes en AWS CLI para comenzar a ejecutar la aplicación cliente.
1 |
kubectl exec --namespace=ncache client-podname -- /app/<clientapplication>/run.sh democlusteredcache cacheserver |
NCache Detalles Implementaciones de contenedores NCache Documentos de EKS
Paso 6: Supervisar NCache Médico
Hasta este punto, ha hecho todo lo que necesita para obtener lo mejor de NCache dentro de su clúster de Amazon EKS completamente funcional y en ejecución. Obtiene alta disponibilidad, escalabilidad, confiabilidad y mucho más simplemente al implementar NCache en el racimo. ¿Pero adivina que? esto no es todo eso NCache ofrece.
Escúchame. Dentro del clúster EKS, en medio de todas las operaciones, el almacenamiento y la transferencia de datos, NCache le permite supervisar la actividad de la memoria caché a través de diversas herramientas. Estas herramientas lo ayudan a tener una mejor idea sobre el estado, el rendimiento, las fallas de la red y más de su clúster.
Check out NCache Monitor web para una representación gráfica del rendimiento en tiempo real y NCache Estadística para las estadísticas de rendimiento.
Paso 7: Escalado NCache Médico
Para proporcionarle una escalabilidad extrema, NCache le permite escalar su clúster hacia arriba o hacia abajo en tiempo de ejecución para mejorar el rendimiento general de su aplicación. Por ejemplo, si cree que el clúster de caché está recibiendo solicitudes con demasiada frecuencia para que los nodos se mantengan al día con las transacciones en aumento, NCache le permite agregar múltiples servidores para acomodar la carga. Para ver cómo puede agregar o eliminar nodos de servidor del clúster de caché en tiempo de ejecución mientras permanece dentro del clúster de EKS, consulte nuestra documentación en Agregar servidor de caché en EKS y Eliminación de servidores de caché de EKS.
Vamos a darle cuerda a todo
A partir de este artículo, tienes que experimentar un tutorial paso a paso de NCache implementación en un clúster de Amazon EKS. La pregunta prominente aquí es ¿por qué necesita NCache dentro de un entorno de contenedor ya completo? Bueno, déjame resumirlo muy rápido para ti.
- Solución en memoria: NCache aumenta el rendimiento de su aplicación implementada por un factor notable.
- Escalabilidad lineal: NCache resulta útil cuando aumenta la carga en su clúster de caché.
- Extremadamente flexible: NCache reequilibra dinámicamente automáticamente los datos sin ninguna intervención del cliente.
Agregó todo esto a las funciones que ya envió AWS EKS y obtuvo un entorno de primer nivel para ejecutar su aplicación. Entonces, ¿qué está esperando? Desplegar NCache en su grupo EKS ahora mismo y sea testigo de la magia por sí mismo.