
منذ بعض الوقت ، تحدثت عن تجربتنا في حل المشاكل المعقدة باستخدام Elasticsearch. كانت
قصة عن النقانق ، حيث طورنا بحثًا في قاعدة بيانات تحتوي على 50000 مستند على الأقل ، مما يسمح لك بالبحث عن المكونات في المنتجات وإنشاء أوصاف المنتج تلقائيًا.
في الآونة الأخيرة ، جاء مشروع مثير للاهتمام لشركتنا يتطلب استخدام Elasticsearch. هذه المرة واجهنا مهمة نشر ES للعمل في التطبيق على منصة السحابة الصينية Alibaba Cloud. هنا ، بالإضافة إلى المشاكل التقنية ، صادفنا شيئًا غير متوقع مثل العقلية الصينية.
ستركز هذه المقالة فقط على تجربتنا الشخصية مع Alibaba Cloud ، وليس على الواجهة أو الخيارات القياسية. سأخبرك بما تمكنت من اكتشافه في التواصل مع ممثلي منصات Elasticsearch و Alibaba Cloud ، وكيف استخدمناها في حل مشكلتنا.
تأرجح إلى الصين
أعلن العميل في بداية المشروع أن الإطلاق الأول للتطبيق سيكون في الصين. وقد أدى ذلك إلى تعقيد المهمة إلى حد كبير: يعطي القانون الصيني الكثير من الإزعاج للمطورين ومالكي مواقع الويب. إن مجرد استلام نطاق بسبب البيروقراطية المحلية يستمر لمدة ثلاثة أشهر. ولكن ماذا لو استضفت طلبًا خارج الصين؟ - تسأل. ورداً على ذلك ، أتمنى لكم حظاً سعيداً في الإطلاق في المنطقة الصينية ، لأن مثل هذه الحيل غير قانونية عملياً هناك.
لقد تم منحنا إمكانية الوصول إلى خادم العميل على Alibaba Cloud وطلبنا نشر حاويات دوكر مع التطبيق عليها. كانت هذه هي المشكلة الأولى ، ولكنها ليست المشكلة الرئيسية. لقد قمنا بإعادة توجيه عمليات الوصول من الحاوية إلى نظام الملفات من أجل الوصول إلى ملفات المشروع على مستوى الخادم ، وهنا كانت المشكلة أنه على الخادم نفسه لم يكن هناك شيء سوى عامل الميناء: لا git ، ولا nginx ، أو php. تم عمل كل شيء على مستوى الحاوية ، وكان الخادم مجرد مستودع بيانات. لذلك ، تحول سحب بوابة بسيط إلى ما يلي:
docker exec -it b33aee747c5e git pull
ولهذا السبب ، كان علينا كتابة نص باش لكل حاوية ، على سبيل المثال ، باسم git:
docker exec -it b33aee747c5e git $@
علاوة على ذلك ، أصبحت المغامرة أكثر تعقيدًا فقط: كان علينا تثبيت ES على نحو ما على هذا. من خلال Alibaba Cloud Management Console ، قمنا بتثبيت صورة Elasticsearch 6.0.0 و ...
... وبعد مرور بعض الوقت بدأوا في التقاط الأخطاء. سيبدأ نظام التحكم في الوصول X-Pack بـ "أقسم" أنه بعد مرور 28 يومًا على انتهاء صلاحية الترخيص ، ستنتهي ذاكرة الوصول العشوائي عند فهرسة 500 مستند تقريبًا. لا "ارتفعت".
مشاكل Laovai
كل هذا الوقت اعتقدنا أن سبب الفشل هو X-Pack ، أنه هو الذي منعنا من العمل بشكل طبيعي.
قال الزبون بعد الاستماع إلى نسختنا: "حسنًا ، ماذا يمكننا أن نفعل؟" - لذا ، سنشتري ترخيص X-Pack. اكتب إلى Elasticsearch ، ربما هم أنفسهم سينصحون بشيء ما ". لقد كتبت إلى خدمة الحساب ، وأجابني المستشار من المكتب الهولندي ، دريتون خليلي (إذا كنت تعمل معه ، قل مرحباً لي ، إنه رائع). نعم ، يوجد في أوروبا الشرقية وروسيا مكتب هولندي مسؤول عنهما ، حيث يعمل الأتراك.
أخبرني المستشار عن نظام دفع ترخيص X-Pack وسأل عن المكان الذي نستضيفه.
أجبته في الصين.
قال "هذه مشكلة". - يحتاج عميلك إلى الكتابة إلى فرعنا الصيني لمساعدته في هذه المشكلة.
- هل هناك خيارات أخرى؟ سألت.
- حاول الاتصال Alibaba Cloud. والحقيقة هي أننا أبرمنا مؤخرًا اتفاقية شراكة معهم ، والآن يقدمون خدمة Elasticsearch كخدمة.
قلت له: "لذا نستضيفهم".
- ثم لماذا تعذب بالوعاء بدلا من أخذها مباشرة ؟!
بعد الانتهاء من المحادثة ، قمت بإعادة سرد كل هذا للعميل.
- أعني - هل لدى علي بابا خدمة Elasticearch كخدمة؟! - سخط العميل لا يعرف حدودا. بعد ذلك ، ذهب للتحدث مع "الزملاء الصينيين" ، وفي اليوم التالي قال ما يلي:
- قال هؤلاء الناس أنني كنت "محبة" ، وفي حسابي "المحب" لم يكن من المفترض أن يكون لديّ بحث بلاستيك.
ليس من الصعب التكهن بأن لاويين يطلقون على الأجانب اسم الصينيين ، غالبًا ما يستخدمون هذه الكلمة بمفهوم رفض. يمكننا أن نقول أن هذا هو الصينية "تأتي بأعداد كبيرة".
- شربوا بوير هناك ، أم ماذا؟
- لا أعلم عن puer ، ولكن بعد خطابي الملهم أنهم مخطئون إلى حد ما والذين أدفع لهم أموالًا بشكل عام ، أعطوني رابطًا "سريًا" إلى Elasticsearch ، والذي سيتم عرضه الآن في وحدة التحكم السحابية الخاصة بنا. قم بإعداد وسوف نتحرك.
ماذا تفعل ل "تقلع"
بعد ثلاثة أسابيع ، ظهر رابط إلى Alibaba Cloud Elasticsearch في قائمة وحدة التحكم (في قسم DTplus ، في الأسفل).

من هذا يمكننا أن نستنتج أنه إذا أعطاك الصينيون مع ذلك رابطًا ، فسيتعين عليك انتظار الوصول لبعض الوقت (لا أستطيع أن أقول على وجه اليقين عن السعر ، في رأيي ، هذا لم يزيد من تكلفة الاشتراك بالنسبة لنا).
وشيء آخر: بالطبع ، سيتم منحك حق الوصول إلى الإعدادات ، عنوان URL عادي ، كيبانا للمراقبة. فقط عندما تحاول الوصول إلى ES من مكان آخر تحصل على 505.
كيف حللت هذه المشكلة؟
بشكل افتراضي ، يمكن الوصول إلى Elasticsearch الخاص بـ Alibaba Cloud Console فقط من كيبانا ومكالمات الوكلاء منه إلى 127.0.0.1 داخل الخادم حيث توجد ES. ثم فكرت: ما هي عناوين IP الموجودة داخل الحاويات بين الحاويات؟ ذهبت إلى الإعدادات ورأيت أننا جميعًا نسير في شبكة فرعية مألوفة إلى حد ما 192.168.0. *. لم أكن متأكدًا تمامًا ، لذلك كتبت لنفسي عنوانين إضافيين في حال لم "أطير".
فكرت أيضًا في ما سيحدث إذا احتجت بنفسي إلى إرسال الطلبات إلى ES من محطة العمل الخاصة بي ، لذا قمت أيضًا بتدوين عنوان IP الخاص بي على قطعة من الورق.
بعد ذلك ، قم بما يلي.
انتقل إلى Alibaba Cloud Console ، وافتح Cluster -> Manage -> Network and Snapshots -> Cluster Network Settings -> Public IP Address Whitelist -> Update. ونحفظ هنا جميع العناوين المفيدة - سواء الشخصية أو العامة. بعد ذلك ، يمكنك بالفعل العمل والطرق على ES من كل من الحاويات مع التطبيق ، ومن أماكن أخرى.

استغرقت الخطوة أقل من ساعتين. صحيح ، لأسبوع آخر كنت أشعر بجنون العظمة من حقيقة أن كل شيء يمكن أن يسقط ، ولكن حتى الآن لم يسقط شيء. لمدة ثلاثة أشهر حتى الآن لم تسقط.
في المجمل ، أمضينا حوالي ثلاثة أسابيع في محاولة حل مشكلة غير موجودة. الأمر فقط أن الصينيين ماكرون للغاية ولا يريدون منح الوصول إلى خدماتهم لأي "laov". بالنسبة لشخص عقليتنا أو الغربية ، هذا أمر غريب ، ومع ذلك ، تعاملنا مع هذه المشكلة ، وكانت تجربة مثيرة للاهتمام إلى حد ما.
شكرا لكم على اهتمامكم!