
Há algum tempo, falei sobre nossa experiência na solução de problemas complexos usando o Elasticsearch. Foi uma
história sobre linguiça , onde desenvolvemos uma pesquisa em um banco de dados de pelo menos 50.000 documentos, que permite pesquisar ingredientes em produtos e gerar automaticamente descrições de produtos a partir deles.
Recentemente, um projeto interessante chegou à nossa empresa que exigia o uso do Elasticsearch. Desta vez, fomos confrontados com a tarefa de implantar o ES para trabalhar no aplicativo na plataforma de nuvem chinesa Alibaba Cloud. Aqui, além de problemas técnicos, nos deparamos com algo inesperado como a mentalidade chinesa.
Este artigo se concentrará apenas em nossa experiência pessoal com o Alibaba Cloud, e não na interface ou nas opções padrão. Vou lhe contar o que consegui descobrir em comunicação com os representantes das plataformas Elasticsearch e Alibaba Cloud e como a usamos na solução de nosso problema.
Balanço para a China
No início do projeto, o cliente anunciou que o primeiro lançamento do aplicativo será na China. Isso complicou bastante a tarefa: a lei chinesa traz muitos inconvenientes para desenvolvedores e proprietários de sites. O simples recebimento de um domínio devido à burocracia local dura três meses. Mas e se você hospedar um aplicativo fora da China? - você pergunta. E, em resposta, desejo-lhe boa sorte com o lançamento na zona chinesa, porque esses truques são praticamente ilegais lá.
Recebemos acesso ao servidor cliente no Alibaba Cloud e pedimos para implantar contêineres de docker com o aplicativo nele. Este foi o primeiro, mas não o principal problema. Encaminhamos os acessos do contêiner para o sistema de arquivos para ter acesso aos arquivos do projeto no nível do servidor, e aqui o problema era que no próprio servidor não havia nada além de janela de encaixe: nem git, nem nginx, nem php. Tudo foi feito no nível do contêiner e o servidor era apenas um data warehouse. Portanto, um simples git pull se transformou no seguinte:
docker exec -it b33aee747c5e git pull
Por isso, tivemos que escrever um script bash para cada contêiner, por exemplo, com o nome git:
docker exec -it b33aee747c5e git $@
Além disso, a aventura ficou mais complicada: tivemos que instalar o ES de alguma forma. Por meio do Alibaba Cloud Management Console, instalamos a imagem do Elasticsearch 6.0.0 e ...
... E depois de algum tempo eles começaram a pegar erros. O sistema de controle de acesso do X-Pack começará a "jurar" que após 28 dias a licença expira, a RAM será encerrada quando cerca de 500 documentos forem indexados. Não "subiu".
Problemas de Laovai
Durante todo esse tempo, pensamos que o motivo da falha foi o X-Pack, que foi ele quem nos impediu de trabalhar normalmente.
"Bem, o que podemos fazer", disse o cliente, depois de ouvir nossa versão. - Então, compraremos uma licença do X-Pack. Escreva para a Elasticsearch, talvez eles mesmos aconselhem alguma coisa. " Escrevi para o serviço de contas e o consultor do escritório holandês, Driton Khalili, me respondeu (se você trabalha com ele, diga olá para mim, ele é legal). Sim, a Europa Oriental e a Rússia têm um escritório holandês a cargo deles, onde os turcos trabalham.
O consultor me contou sobre o sistema de pagamento de licenças do X-Pack e perguntou onde estamos hospedando.
Na China, eu respondi.
"Isso é um problema", disse ele. - Seu cliente precisa escrever para nossa filial chinesa para ajudá-lo com esse problema.
- Existem outras opções? Eu perguntei.
- Tente entrar em contato com o Alibaba Cloud. O fato é que recentemente concluímos um contrato de parceria com eles e agora eles fornecem o Elasticsearch como um serviço.
"Então, nós os hospedamos", eu disse.
- Então por que você está atormentado com o recipiente em vez de tirá-lo diretamente ?!
Depois de terminar a conversa, recontei tudo isso ao cliente.
- quero dizer - o Alibaba tem o Elasticsearch como serviço ?! - a indignação do cliente não tinha limites. Depois disso, ele foi conversar com os "colegas chineses" e, no dia seguinte, falou o seguinte:
- Essas pessoas disseram que eu estava “amando” e, na minha conta “amando”, eu não deveria ter o Elasticsearch.
Não é difícil adivinhar que os laovianos chamam os estrangeiros de chineses, geralmente usando essa palavra com uma conotação desdenhosa. Podemos dizer que este é o chinês "vem em grandes números".
- Eles beberam puer lá, ou o quê?
- Não sei sobre puér, mas depois do meu discurso inspirador de que eles estão um pouco errados e pelos quais geralmente pago dinheiro, eles me deram um link "secreto" para o Elasticsearch, que agora será exibido em nosso console na nuvem. Configure e nós iremos nos mudar.
O que fazer para "decolar"
Três semanas depois, um link para o Alibaba Cloud Elasticsearch apareceu no menu do console de controle (na seção DTplus, na parte inferior).

A partir disso, podemos concluir que, se os chineses ainda fornecerem um link, você terá que aguardar o acesso por um tempo (não tenho certeza sobre o preço, na minha opinião, isso não aumentou o custo da assinatura para nós).
E mais uma coisa: é claro, você terá acesso às configurações, uma URL normal, Kibana para monitoramento. Somente quando você tenta alcançar o ES de outro lugar, obtém 505.
Como eu resolvi esse problema?
Por padrão, o Elasticsearch do Alibaba Cloud Console só pode ser acessado pelo Kibana e os proxies chamam para 127.0.0.1 dentro do servidor em que o ES está localizado. Então pensei: quais são os endereços IP que temos dentro entre os contêineres? Entrei nas configurações e vi que todos nós estamos girando em uma sub-rede bastante familiar 192.168.0. *. Como não tinha certeza, escrevi mais alguns endereços para o caso de não "voar".
Também pensei no que aconteceria se eu próprio enviasse solicitações para o ES da minha estação de trabalho, então também escrevi meu endereço IP em um pedaço de papel.
Em seguida, faça o seguinte.
Vá para o Alibaba Cloud Console, abra Cluster -> Gerenciar -> Rede e capturas instantâneas -> seção Configurações de rede de cluster -> Lista pública de endereços IP públicos -> Atualizar. E salvamos aqui todos os endereços que são úteis - pessoais e públicos. Depois disso, você já pode trabalhar e bater no ES, tanto de contêineres com o aplicativo quanto de outros lugares.

A mudança levou menos de duas horas. É verdade que por mais uma semana fiquei paranóico com o fato de que tudo poderia cair, mas até agora nada caiu. Por três meses, nunca caiu.
No total, passamos cerca de três semanas tentando resolver um problema que não existe. Só que os chineses são muito espertos e não querem dar acesso a seus serviços a nenhum "laov". Para uma pessoa com nossa mentalidade ou ocidental, isso é estranho, no entanto, lidamos com esse problema e foi uma experiência bastante interessante.
Obrigado pela atenção!