“Pencarian host karet di Alibaba Cloud”: host Elasticsearch di fasilitas Alibaba Cloud



Beberapa waktu yang lalu, saya berbicara tentang pengalaman kami dalam memecahkan masalah yang rumit menggunakan Elasticsearch. Itu adalah cerita tentang sosis , di mana kami mengembangkan pencarian di database setidaknya 50.000 dokumen, yang memungkinkan Anda untuk mencari bahan dalam produk dan secara otomatis menghasilkan deskripsi produk dari mereka.

Baru-baru ini, sebuah proyek menarik datang ke perusahaan kami yang mengharuskan penggunaan Elasticsearch. Kali ini kami dihadapkan dengan tugas menyebarkan ES untuk bekerja dalam aplikasi pada platform cloud China, Alibaba Cloud. Di sini, di samping masalah teknis, kami menemukan hal yang tidak terduga seperti mentalitas China.

Artikel ini hanya akan berfokus pada pengalaman pribadi kami dengan Alibaba Cloud, dan bukan pada antarmuka atau opsi standar. Saya akan memberi tahu Anda apa yang berhasil saya temukan dalam komunikasi dengan perwakilan platform Elasticsearch dan Alibaba Cloud, dan bagaimana kami menggunakannya dalam menyelesaikan masalah kami.

Ayun ke Cina


Di awal proyek, pelanggan mengumumkan bahwa peluncuran pertama aplikasi akan di Cina. Ini tugas yang sangat rumit: Hukum Tiongkok memberikan cukup banyak ketidaknyamanan bagi pengembang dan pemilik situs web. Penerimaan domain semata-mata karena birokrasi lokal berlangsung selama tiga bulan. Tetapi bagaimana jika Anda meng-host aplikasi di luar Cina? - kamu bertanya. Dan sebagai tanggapan, semoga Anda beruntung dengan peluncuran di zona Cina, karena trik seperti itu praktis ilegal di sana.

Kami diberi akses ke server klien di Alibaba Cloud dan diminta untuk menempatkan kontainer buruh pelabuhan dengan aplikasi di dalamnya. Ini adalah yang pertama, tetapi bukan masalah utama. Kami meneruskan akses dari wadah ke sistem file untuk memiliki akses ke file proyek di tingkat server, dan di sini masalahnya adalah bahwa pada server itu sendiri tidak ada yang lain selain buruh pelabuhan: tidak ada git, atau nginx, atau php. Semuanya dilakukan di tingkat kontainer, dan server hanyalah gudang data. Oleh karena itu, tarikan git sederhana berubah menjadi sebagai berikut:

docker exec -it b33aee747c5e git pull 

Karena itu, kami harus menulis skrip bash untuk setiap wadah, misalnya, dengan nama git:

 docker exec -it b33aee747c5e git $@ 

Selanjutnya, petualangan hanya menjadi lebih rumit: kami harus menginstal ES entah bagaimana. Melalui Alibaba Cloud Management Console, kami memasang gambar Elasticsearch 6.0.0 dan ...
... Dan setelah beberapa waktu mereka mulai menangkap kesalahan. Entah sistem kontrol akses X-Pack akan mulai "bersumpah" bahwa setelah 28 hari lisensi berakhir, maka RAM akan berakhir ketika sekitar 500 dokumen diindeks. Bukan "melambung."

Masalah Laovai


Selama ini kami berpikir bahwa alasan kegagalan adalah X-Pack, bahwa dialah yang mencegah kami bekerja secara normal.

"Yah, apa yang bisa kita lakukan," kata pelanggan, setelah mendengarkan versi kami. - Jadi, kami akan membeli lisensi X-Pack. Menulis ke Elasticsearch, mungkin mereka sendiri akan menyarankan sesuatu. " Saya menulis ke layanan akun, dan konsultan dari kantor Belanda, Driton Khalili, menjawab saya (jika Anda kebetulan bekerja dengannya, katakan halo kepada saya, dia baik-baik saja). Ya, Eropa Timur dan Rusia memiliki kantor Belanda yang bertanggung jawab atas mereka, tempat orang Turki bekerja.

Konsultan memberi tahu saya tentang sistem pembayaran lisensi X-Pack dan bertanya di mana kami hosting.
Di China, saya menjawab.

"Ini masalah," katanya. - Pelanggan Anda perlu menulis ke cabang Cina kami untuk membantunya dengan masalah ini.
- Apakah ada opsi lain? Saya bertanya.
- Coba hubungi Alibaba Cloud. Faktanya adalah bahwa kami baru saja menyelesaikan perjanjian kemitraan dengan mereka, dan sekarang mereka menyediakan Elasticsearch sebagai layanan.
"Jadi, kami menjamu mereka," kataku.
- Lalu mengapa Anda tersiksa dengan wadah bukannya mengambil langsung dari mereka ?!
Setelah menyelesaikan pembicaraan, saya menceritakan semua ini kepada pelanggan.
- Maksud saya - apakah Alibaba memiliki Elasticsearch sebagai Layanan ?! - Kemarahan klien tidak mengenal batas. Setelah itu, dia pergi untuk berbicara dengan "rekan-rekan Cina", dan hari berikutnya dia mengatakan yang berikut:
- Orang-orang ini mengatakan bahwa saya "mencintai", dan pada akun "penuh kasih" saya, saya tidak seharusnya memiliki Elasticsearch.
Tidak sulit untuk menebak bahwa orang Solo menyebut orang asing itu orang Cina, sering menggunakan kata ini dengan konotasi yang meremehkan. Kita dapat mengatakan bahwa ini adalah orang Cina "datang dalam jumlah besar."
- Mereka minum puer di sana, atau apa?
- Saya tidak tahu tentang puer, tetapi setelah pidato saya yang mengilhami bahwa mereka agak salah dan saya membayar mereka sama sekali, mereka memberi saya tautan "rahasia" ke Elasticsearch, yang sekarang akan ditampilkan di konsol cloud kami. Atur dan kami akan pindah.

Apa yang harus dilakukan untuk "lepas landas"


Tiga minggu kemudian, tautan ke Alibaba Cloud Elasticsearch muncul di menu konsol kontrol (di bagian DTplus, di bagian paling bawah).



Dari sini kita dapat menyimpulkan bahwa jika orang Cina tetap memberi Anda tautan, Anda harus menunggu akses untuk sementara waktu (saya tidak dapat mengatakan dengan pasti tentang harganya, menurut pendapat saya, ini tidak menambah biaya berlangganan).

Dan satu hal lagi: tentu saja, Anda akan diberikan akses ke pengaturan, URL normal, Kibana untuk pemantauan. Hanya ketika Anda mencoba untuk mencapai ES dari tempat lain Anda mendapatkan 505.

Bagaimana saya mengatasi masalah ini?

Secara default, Elasticsearch Alibaba Cloud Console hanya dapat diakses dari Kibana dan proksi panggilan darinya ke 127.0.0.1 di dalam server tempat ES berada. Lalu saya berpikir: apa alamat IP yang kita miliki di dalam di antara kontainer? Saya masuk ke pengaturan dan melihat bahwa kita semua berputar di subnet 192.168.0 yang cukup akrab. *. Saya tidak sepenuhnya yakin, jadi saya menulis beberapa alamat sendiri jika saya tidak "terbang".

Saya juga memikirkan apa yang akan terjadi jika saya sendiri perlu mengirim permintaan ke ES dari workstation saya, jadi saya juga menuliskan alamat IP saya di selembar kertas.

Selanjutnya, lakukan hal berikut.

Masuk ke Alibaba Cloud Console, buka Cluster -> Manage -> Network dan Snapshots -> bagian Cluster Network Settings -> Daftar Putih Alamat IP Publik -> Perbarui. Dan kami menyimpan di sini semua alamat yang berguna - baik pribadi maupun publik. Setelah itu, Anda sudah dapat bekerja dan mengetuk ES baik dari wadah dengan aplikasi, dan dari tempat lain.



Perpindahan itu memakan waktu kurang dari dua jam. Benar, selama seminggu lagi saya paranoid tentang kenyataan bahwa semuanya bisa jatuh, tetapi sejauh ini tidak ada yang jatuh. Selama tiga bulan sekarang tidak pernah jatuh.

Secara total, kami menghabiskan sekitar tiga minggu mencoba menyelesaikan masalah yang tidak ada. Hanya saja orang Cina sangat licik dan tidak ingin memberikan akses ke layanan mereka ke "laov" apa pun. Untuk seseorang dengan mentalitas Barat atau kami, ini aneh, namun, kami menangani masalah ini, dan itu adalah pengalaman yang agak menarik.

Terima kasih atas perhatian anda!

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


All Articles