"Gummi-Host-Suche in der Alibaba Cloud": Host-Elasticsearch in Alibaba Cloud-Einrichtungen



Vor einiger Zeit habe ich über unsere Erfahrungen bei der Lösung komplexer Probleme mit Elasticsearch gesprochen. Es war eine Geschichte über Wurst , in der wir eine Suche in einer Datenbank mit mindestens 50.000 Dokumenten entwickelt haben, mit der Sie nach Inhaltsstoffen in Produkten suchen und daraus automatisch Produktbeschreibungen erstellen können.

Kürzlich kam ein interessantes Projekt in unser Unternehmen, das den Einsatz von Elasticsearch erforderte. Dieses Mal standen wir vor der Aufgabe, ES für die Arbeit in der Anwendung auf der chinesischen Cloud-Plattform Alibaba Cloud bereitzustellen. Hier stießen wir neben technischen Problemen auf so etwas Unerwartetes wie die chinesische Mentalität.

Dieser Artikel konzentriert sich ausschließlich auf unsere persönlichen Erfahrungen mit Alibaba Cloud und nicht auf die Benutzeroberfläche oder Standardoptionen. Ich werde Ihnen erzählen, was ich in der Kommunikation mit Vertretern der Elasticsearch- und Alibaba Cloud-Plattformen herausgefunden habe und wie wir es zur Lösung unseres Problems verwendet haben.

Schaukel nach China


Zu Beginn des Projekts gab der Kunde bekannt, dass der erste Start der Anwendung in China erfolgen wird. Dies erschwerte die Aufgabe erheblich: Das chinesische Recht bereitet Entwicklern und Website-Eigentümern erhebliche Unannehmlichkeiten. Der bloße Erhalt einer Domain aufgrund lokaler Bürokratie dauert drei Monate. Aber was ist, wenn Sie eine Anwendung außerhalb Chinas hosten? - Du fragst. Und als Antwort wünsche ich Ihnen viel Glück beim Start in der chinesischen Zone, denn solche Tricks sind dort praktisch illegal.

Wir erhielten Zugriff auf den Client-Server in der Alibaba Cloud und wurden gebeten, Docker-Container mit der Anwendung darauf bereitzustellen. Dies war das erste, aber nicht das Hauptproblem. Wir haben die Zugriffe vom Container an das Dateisystem weitergeleitet, um auf Serverebene auf die Projektdateien zugreifen zu können, und hier bestand das Problem darin, dass auf dem Server selbst nichts anderes als Docker vorhanden war: weder Git noch Nginx oder PHP. Alles wurde auf Containerebene erledigt, und der Server war nur ein Data Warehouse. Aus einem einfachen Git-Pull wurde daher Folgendes:

docker exec -it b33aee747c5e git pull 

Aus diesem Grund mussten wir für jeden Container ein Bash-Skript mit dem Namen git schreiben:

 docker exec -it b33aee747c5e git $@ 

Außerdem wurde das Abenteuer nur noch komplizierter: Wir mussten die ES irgendwie darauf installieren. Über die Alibaba Cloud Management Console haben wir das Elasticsearch 6.0.0-Image installiert und ...
... und nach einiger Zeit fingen sie an, Fehler zu fangen. Entweder schwört das X-Pack-Zugriffskontrollsystem, dass nach 28 Tagen die Lizenz abläuft, und der Arbeitsspeicher endet, wenn etwa 500 Dokumente indiziert sind. Nicht "aufgestiegen".

Laovai Probleme


Die ganze Zeit dachten wir, dass der Grund für den Fehler das X-Pack war, dass er es war, der uns daran hinderte, normal zu arbeiten.

"Nun, was können wir tun", sagte der Kunde, nachdem er unsere Version angehört hatte. - Also werden wir eine X-Pack Lizenz kaufen. Schreiben Sie an Elasticsearch, vielleicht raten sie selbst etwas. " Ich schrieb an den Kontodienst, und der Berater des niederländischen Büros, Driton Khalili, antwortete mir (wenn Sie zufällig mit ihm zusammenarbeiten, sagen Sie mir Hallo, er ist cool). Ja, Osteuropa und Russland haben ein niederländisches Büro, in dem die Türken arbeiten.

Der Berater erzählte mir von dem X-Pack-Lizenzzahlungssystem und fragte, wo wir hosten.
In China antwortete ich.

"Das ist ein Problem", sagte er. - Ihr Kunde muss an unsere chinesische Niederlassung schreiben, um ihm bei diesem Problem zu helfen.
- Gibt es noch andere Möglichkeiten? Ich fragte.
- Wenden Sie sich an Alibaba Cloud. Tatsache ist, dass wir kürzlich eine Partnerschaftsvereinbarung mit ihnen geschlossen haben und sie nun Elasticsearch als Service anbieten.
"Also hosten wir sie", sagte ich.
- Warum quälst du dich dann mit dem Container, anstatt ihn direkt zu nehmen ?!
Nachdem ich das Gespräch beendet habe, erzähle ich dem Kunden alles nach.
- Ich meine - hat Alibaba Elasticsearch als Service ?! - Die Empörung des Klienten kannte keine Grenzen. Danach sprach er mit den „chinesischen Kollegen“ und sagte am nächsten Tag Folgendes:
- Diese Leute sagten, ich sei "liebevoll", und aus meiner "liebevollen" Rechnung sollte ich keine Elasticsearch haben.
Es ist nicht schwer zu erraten, dass Laovianer die Ausländer die Chinesen nennen und dieses Wort oft mit einer abweisenden Konnotation verwenden. Wir können sagen, dass dies die Chinesen sind, "die in großer Zahl kommen".
- Sie haben dort Puer getrunken, oder was?
- Ich weiß nichts über Puer, aber nach meiner inspirierenden Rede, dass sie etwas falsch sind und für die ich ihnen überhaupt Geld bezahle, gaben sie mir einen "geheimen" Link zu Elasticsearch, der jetzt in unserer Cloud-Konsole angezeigt wird. Richten Sie ein und wir werden umziehen.

Was tun, um "abzuheben"?


Drei Wochen später wurde im Menü der Steuerkonsole (im Abschnitt DTplus ganz unten) ein Link zur Alibaba Cloud Elasticsearch angezeigt.



Daraus können wir schließen, dass Sie, wenn die Chinesen Ihnen dennoch einen Link geben, eine Weile auf den Zugriff warten müssen (ich kann nicht sicher sagen, welchen Preis dies meiner Meinung nach die Kosten für das Abonnement für uns nicht erhöht hat).

Und noch etwas: Natürlich erhalten Sie Zugriff auf die Einstellungen, eine normale URL, Kibana zur Überwachung. Nur wenn Sie versuchen, ES von einem anderen Ort aus zu erreichen, erhalten Sie 505.

Wie habe ich dieses Problem gelöst?

Standardmäßig kann auf Elasticsearch von Alibaba Cloud Console nur von Kibana aus zugegriffen werden, und Proxy-Anrufe von dort an 127.0.0.1 auf dem Server, auf dem sich ES befindet. Dann dachte ich: Welche IP-Adressen haben wir zwischen den Containern? Ich ging in die Einstellungen und sah, dass wir uns alle in einem ziemlich vertrauten Subnetz 192.168.0 drehen. *. Ich war mir nicht ganz sicher, also schrieb ich mir noch ein paar Adressen, falls ich nicht "hochfliegen" sollte.

Ich dachte auch darüber nach, was passieren würde, wenn ich selbst Anfragen von meiner Workstation an ES senden müsste, und schrieb meine IP-Adresse auf ein Blatt Papier.

Führen Sie als Nächstes die folgenden Schritte aus.

Gehen Sie zur Alibaba Cloud Console und öffnen Sie Cluster -> Verwalten -> Netzwerk und Snapshots -> Cluster-Netzwerkeinstellungen -> Whitelist für öffentliche IP-Adressen -> Aktualisieren. Und wir speichern hier alle Adressen, die nützlich sind - sowohl persönliche als auch öffentliche. Danach können Sie ES bereits sowohl aus Containern mit der Anwendung als auch von anderen Stellen aus bearbeiten und an ES klopfen.



Der Umzug dauerte weniger als zwei Stunden. Zwar war ich eine weitere Woche lang paranoid darüber, dass alles fallen könnte, aber bisher ist nichts gefallen. Seit drei Monaten ist es nie gefallen.

Insgesamt haben wir ungefähr drei Wochen lang versucht, ein Problem zu lösen, das es nicht gibt. Es ist nur so, dass die Chinesen sehr gerissen sind und keinem „Laov“ Zugang zu ihren Diensten gewähren wollen. Für eine Person mit unserer oder westlicher Mentalität ist dies seltsam, wir haben uns jedoch mit diesem Problem befasst, und es war eine ziemlich interessante Erfahrung.

Vielen Dank für Ihre Aufmerksamkeit!

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


All Articles