"Búsqueda de host de goma en Alibaba Cloud": host Elasticsearch en las instalaciones de Alibaba Cloud



Hace algún tiempo, hablé sobre nuestra experiencia en la resolución de problemas complejos usando Elasticsearch. Fue una historia sobre salchichas , donde desarrollamos una búsqueda en una base de datos de al menos 50,000 documentos, que le permite buscar ingredientes en productos y generar automáticamente descripciones de productos a partir de ellos.

Recientemente, un proyecto interesante llegó a nuestra empresa que requería el uso de Elasticsearch. Esta vez nos enfrentamos con la tarea de implementar ES para trabajar en la aplicación en la plataforma de nube china Alibaba Cloud. Aquí, además de los problemas técnicos, nos encontramos con algo tan inesperado como la mentalidad china.

Este artículo se centrará únicamente en nuestra experiencia personal con Alibaba Cloud, y no en la interfaz o las opciones estándar. Le diré lo que logré descubrir en comunicación con representantes de las plataformas Elasticsearch y Alibaba Cloud, y cómo lo usamos para resolver nuestro problema.

Swing to China


Al comienzo del proyecto, el cliente anunció que el primer lanzamiento de la aplicación será en China. Esto complicó enormemente la tarea: la ley china causa muchos inconvenientes a los desarrolladores y propietarios de sitios web. El mero recibo de un dominio debido a la burocracia local dura tres meses. Pero, ¿qué pasa si aloja una aplicación fuera de China? - usted pregunta Y en respuesta, les deseo buena suerte con el lanzamiento en la zona china, porque esos trucos son prácticamente ilegales allí.

Se nos dio acceso al servidor del cliente en Alibaba Cloud y se nos pidió que desplegáramos contenedores acoplables con la aplicación. Este fue el primero, pero no el principal problema. Reenviamos los accesos desde el contenedor al sistema de archivos para tener acceso a los archivos del proyecto a nivel del servidor, y aquí el problema era que en el servidor no había nada más que docker: ni git, ni nginx, ni php. Todo se hizo a nivel de contenedor, y el servidor era solo un almacén de datos. Por lo tanto, un simple git pull se convirtió en lo siguiente:

docker exec -it b33aee747c5e git pull 

Debido a esto, tuvimos que escribir un script bash para cada contenedor, por ejemplo, con el nombre git:

 docker exec -it b33aee747c5e git $@ 

Además, la aventura solo se volvió más complicada: tuvimos que instalar de alguna manera el ES en esto. A través de Alibaba Cloud Management Console, instalamos la imagen Elasticsearch 6.0.0 y ...
... Y después de un tiempo comenzaron a atrapar errores. O bien, el sistema de control de acceso X-Pack comenzará a "jurar" que después de 28 días de que la licencia caduque, la RAM terminará cuando se indexen unos 500 documentos. No "se disparó".

Problemas de Laovai


Todo este tiempo pensamos que la razón del fracaso fue el X-Pack, que fue él quien nos impidió trabajar normalmente.

"Bueno, qué podemos hacer", dijo el cliente, después de escuchar nuestra versión. - Entonces, compraremos una licencia de X-Pack. Escribe a Elasticsearch, tal vez ellos mismos aconsejen algo ". Escribí al servicio de cuentas, y el consultor de la oficina holandesa, Driton Khalili, me respondió (si trabaja con él, salúdeme, es genial). Sí, Europa del Este y Rusia tienen una oficina holandesa a cargo de ellos, donde trabajan los turcos.

El consultor me contó sobre el sistema de pago de la licencia X-Pack y me preguntó dónde estamos alojados.
En China, respondí.

"Esto es un problema", dijo. - Su cliente necesita escribir a nuestra sucursal china para ayudarlo con este problema.
- ¿Hay alguna otra opción? Pregunté
- Intenta contactar con Alibaba Cloud. El hecho es que recientemente celebramos un acuerdo de asociación con ellos, y ahora brindan Elasticsearch como un servicio.
"Entonces los hospedamos", dije.
- Entonces, ¿por qué estás atormentado con el contenedor en lugar de tomar directamente de ellos?
Habiendo terminado la conversación, le conté todo esto al cliente.
- Quiero decir, ¿Alibaba tiene Elasticsearch como servicio? - La indignación del cliente no conocía límites. Después de eso, fue a hablar con los "colegas chinos", y al día siguiente dijo lo siguiente:
- Estas personas dijeron que yo era "amorosa", y en mi cuenta "amorosa" no se suponía que debía tener Elasticsearch.
No es difícil adivinar que los laovianos llaman chinos a los extranjeros, a menudo usan esta palabra con una connotación despectiva. Podemos decir que este es el chino "vienen en grandes cantidades".
- Bebieron puer allí, ¿o qué?
- No sé acerca de puer, pero después de mi discurso inspirador de que están algo equivocados y por lo que generalmente les pago dinero, me dieron un enlace "secreto" a Elasticsearch, que ahora se mostrará en nuestra consola en la nube. Configurar y nos moveremos.

Qué hacer para "despegar"


Tres semanas después, apareció un enlace a Alibaba Cloud Elasticsearch en el menú de la consola de control (en la sección DTplus, en la parte inferior).



De esto podemos concluir que si los chinos, sin embargo, le dan un enlace, tendrá que esperar el acceso por un tiempo (no puedo decir con certeza sobre el precio, en mi opinión, esto no aumentó el costo de la suscripción).

Y una cosa más: por supuesto, se le dará acceso a la configuración, una URL normal, Kibana para el monitoreo. Solo cuando intentas llegar a ES desde otro lugar obtienes 505.

¿Cómo resolví este problema?

De manera predeterminada, se puede acceder a Elasticsearch de Alibaba Cloud Console solo desde Kibana y envía llamadas desde él a 127.0.0.1 dentro del servidor donde se encuentra ES. Entonces pensé: ¿cuáles son las direcciones IP que tenemos dentro de los contenedores? Entré en la configuración y vi que todos giramos en una subred bastante familiar 192.168.0. *. No estaba completamente seguro, así que me escribí un par de direcciones más en caso de que no "volara".

También pensé en lo que sucedería si yo mismo necesitaba enviar solicitudes a ES desde mi estación de trabajo, por lo que también escribí mi dirección IP en una hoja de papel.

Luego, haz lo siguiente.

Vaya a Alibaba Cloud Console, abra Cluster -> Administrar -> Red e instantáneas -> sección Configuración de red de clúster -> Lista blanca de direcciones IP públicas -> Actualizar. Y guardamos aquí todas las direcciones que son útiles, tanto personales como públicas. Después de eso, ya puede trabajar y tocar ES tanto desde los contenedores con la aplicación como desde otros lugares.



El movimiento tomó menos de dos horas. Es cierto que durante otra semana estuve paranoico por el hecho de que todo podría caer, pero hasta ahora nada ha caído. Desde hace tres meses nunca ha caído.

En total, pasamos unas tres semanas tratando de resolver un problema que no existe. Es solo que los chinos son muy astutos y no quieren dar acceso a sus servicios a ningún "laov". Para una persona con nuestra mentalidad u occidental, esto es extraño, sin embargo, tratamos este problema y fue una experiencia bastante interesante.

Gracias por su atencion!

Source: https://habr.com/ru/post/es420927/


All Articles