Bagaimana kami bunuh diri dalam satu klik, dengan menempatkan situs dan menagih pada geocluster, atau kami akan berbicara tentang redundansi lagi

Ya, saya juga orang bodoh. Tapi ini tidak saya harapkan dari diri saya sendiri. Tampaknya "bukan tahun pertama menikah." Tampaknya membaca banyak artikel pintar tentang toleransi kesalahan, redundansi, dll, sesuatu yang masuk akal bahkan pernah menulis di sini sendiri. Selama lebih dari 10 tahun saya telah menjadi CEO penyedia hosting yang beroperasi di bawah merek ua-hosting.company dan menyediakan layanan sewa hosting dan server di Belanda, AS, dan hanya seminggu yang lalu di Inggris (jangan tanya mengapa nama ua, jawabannya dapat ditemukan di artikel otobiografi kami ), kami memberi pelanggan solusi dari berbagai tingkat kompleksitas, terkadang sedemikian rupa sehingga bahkan kami sendiri kesulitan untuk memahami apa yang kami lakukan.

Tapi sialnya ... Hari ini aku melampaui diriku. Kami sendiri benar-benar menghancurkan situs dan penagihan, dengan semua transaksi, data pelanggan tentang layanan dan hal-hal lain, dan itu adalah kesalahan saya, saya katakan "hapus" diri saya. Beberapa dari Anda sudah memperhatikan hal ini. Itu terjadi hari ini, Jumat pukul 11.20 Waktu Standar Timur (EST). Selain itu, situs dan tagihan kami tidak di-host di server yang sama, dan bahkan tidak di cloud, kami meninggalkan cloud data center 2 bulan yang lalu demi solusi kami sendiri. Semua ini terletak pada geo-cluster dua server virtual yang toleran terhadap kesalahan - produk baru kami, VPS (KVM) dengan drive khusus , VPS INDEPENDEN , yang berlokasi di dua benua - di Eropa dan Amerika Serikat. Satu di Amsterdam, dan yang lainnya di Manassas, dekat Washington, oleh fakta bahwa DC Di dua pusat data yang andal. Konten yang digandakan secara konstan dan waktu nyata, dan toleransi kesalahan didasarkan pada kluster DNS normal, permintaan dapat datang ke salah satu server, salah satunya berfungsi sebagai MASTER, dan jika tidak dapat diakses, diperlukan tugas yang kedua.

Saya pikir ini hanya dapat membunuh meteorit, atau sesuatu yang serupa dengan global, yang dapat menonaktifkan dua pusat data pada saat yang sama. Tapi semuanya ternyata lebih sederhana.

Kita bisa menjadi diri kita sendiri, jika kita idiot. Di dunia hanya ada dua hal yang tidak terbatas - Semesta dan kebodohan manusia, dan jika yang pertama dapat diperdebatkan, yang kedua telah menjadi jelas.

Saya selalu berpegang pada prinsip redundansi suara, saya bukan salah satu dari orang-orang yang akan berteriak "Saya kehilangan $ 1000 untuk satu jam tidak aktif," tetapi pada saat yang sama saya membayar $ 15 untuk seluruh infrastruktur saya. Tidak, saya pasti tidak akan rugi banyak. Meskipun, mungkin, terkadang saya kalah. Kebanyakan orang idiot berteriak tentang hal ini bahkan tidak berpikir bahwa kadang-kadang downtime per detik dapat berharga $ 1.000, $ 10.000, atau bahkan satu juta dolar dalam laba dalam jangka panjang. Bagaimana? Sangat sederhana, pada saat ini seorang klien dapat datang yang akan membuat pesanan pertamanya, dan di masa depan akan membawa Anda jutaan dolar ini, karena Anda selalu memiliki kesempatan untuk membuktikan keunikan Anda kepadanya dan mendapatkan rekomendasinya. Dan jika dia melihat kesalahan 504 atau "Maaf, tetapi server saat ini tidak tersedia," transaksi mungkin tidak terjadi. Ini terjadi pada kami, bukan, bukan kesalahan 504 selama panggilan tamu penting, tetapi yang pertama. Secara kebetulan, saya menemukan diri saya di tempat yang tepat pada waktu yang tepat, ketika pelanggan besar, seperti Dmitry Sukhanov, pencipta Kinopoisk, mengunjungi situs kami, meskipun ini bukan contoh yang sangat baik, karena ia bekerja bersama kami hanya 2 tahun, sampai Yandex tidak membelinya seharga $ 60 juta atau berapa banyak di sana. Jadi, Dmitry-lah yang mendapatkan jutaan di sini, tetapi kami senang bekerja sama dengan proyek yang menarik dan bermanfaat, dan ini, pada gilirannya, membuat kami menjadi iklan dan menyediakan banyak pelanggan baru dan puas.

Secara umum, mengapa saya semua ini. Kerugian dan redundansi yang diperlukan harus dinilai dengan bijaksana. Meskipun ada risiko kehilangan satu juta + dolar, Anda perlu melihat kemungkinan peristiwa semacam itu. Kemungkinan besar, jika Dmitry melihat 1 kali kesalahan 504, tidak ada hal kritis yang akan terjadi, dan ia kembali kepada kami. Mengapa Pada saat itu, kami mungkin salah satu dari sedikit yang dapat menawarkan konektivitas 1+ Gb / s di Ukraina dengan kualitas tinggi dan latensi minimum dengan harga murah, yang sangat penting bagi sumber daya mereka pada waktu itu, untuk memastikan akses berkualitas tinggi bagi pemirsa Ukraina untuk. portal, karena lalu lintas asing berkualitas buruk dan masih mahal. Jadi penting untuk memastikan keunikan solusi, maka uptime tidak akan sangat penting bagi Anda. Dan karena kami unik - kami dapat membiarkan diri kami (bahkan sekarang), memiliki ribuan klien server, menjadi diam selama beberapa jam atau bahkan lebih. Kita tidak perlu mega-fault-tolerant clouds yang menyediakan 99,9999% uptime untuk banyak uang, karena bahkan mereka jatuh, dan jika mereka jatuh, maka latihan telah menunjukkannya untuk waktu yang sangat lama, karena masalah yang menyebabkan tidak dapat diaksesnya mungkin tidak biasa. Dan mereka tidak akan membantu jika terjadi kerentanan. Mereka tidak akan membantu.

Jadi kami membangun keputusan untuk diri kami sendiri sangat sederhana. Kami mengambil dua VPS (KVM) pada node Dell R730xd, VPS yang sama (KVM) seperti yang kami tawarkan kepada pelanggan kami, karena ini adalah prinsip awal kami - untuk memberi orang apa yang kami gunakan sendiri:

VPS (KVM) - 2 x Intel Dodeca-Core Xeon E5-2650 v4 (24 Cores) / 40GB / 4x240GB SSD RAID10 / Datatraffic - 40TB - dari $ 99 / bulan, dan Anda bisa mendapatkan diskon 30% pada pembayaran pertama jika Anda menemukan promo kode dalam artikel periklanan kami.

Satu di Belanda dan satu lagi di AS. Ya, pada simpul-simpul ini, selain situs dan penagihan kami, ada 2 klien nyata, yang masing-masing dapat memengaruhi operasi situs kami secara teori dan tidak dapat melakukannya dalam praktik. Mengapa - itu ditulis dalam artikel periklanan, saya tidak akan masuk ke rincian di sini untuk kedua kalinya. Sekarang ini bukan tentang itu. Secara umum, solusinya tidak lebih buruk dari server entry-level khusus dan dapat menangani beban yang sangat besar.

Antara lain, itu toleran terhadap kesalahan, data terus menerus direplikasi dalam waktu nyata. Dan jika satu server tidak tersedia, yang kedua akan mengambil peran MASTER. Idealnya, Anda dapat membuatnya sehingga lalu lintas dari benua Amerika akan diproses oleh server Amerika, dan dari Eropa, Rusia dan Asia - server di Belanda.

Kami mengikat server ke akun kami dalam penagihan WHMCS kami, produk berlisensi publik, tetapi disesuaikan untuk kami, yang digunakan oleh banyak penyedia hosting di seluruh dunia, termasuk kami, karena menulis sistem akuntansi kami sendiri adalah kelemahan yang jujur ​​(dalam kasus kami) . Terutama dalam kasus di mana fungsi yang diinginkan diimplementasikan dengan menulis modul Anda sendiri ke penagihan yang ada, yang meningkatkan toleransi kesalahan Anda, karena hal itu mengurangi risiko kerentanan kritis. Lagipula, sendirian atau bahkan dengan tim kecil, Anda tidak akan dapat menulis sistem yang lebih andal daripada yang ada, yang ditulis selama bertahun-tahun oleh sekelompok pengembang berumbai, di mana ribuan bug telah dipotong dan untuk yang sekarang pengembang meminta sedikitnya $ 30 / bulan untuk lisensi dan menerima jutaan dolar setahun. yang mungkin dihabiskan termasuk untuk perbaikan lebih lanjut.

Berbicara tentang kerentanan kritis, programmer kami baru-baru ini membuat kesalahan ketika menulis salah satu modul layanan, yang memiliki akses ke database penagihan read-only, yang ditemukan oleh pentester independen dan meminta kami membayar $ 550 untuk bug yang ditemukan, karena itu adalah kerentanan SQL - inspeksi:

SQL-injection berada di 10 OWASP teratas, saya menulis kepada Anda tentang jumlah $ 550, ini adalah jumlah minimum, karena database menderita, sehingga membahayakan data pengguna.

Tetapi beberapa jumlah naik hingga $ 10.000 sebagai hadiah, seperti halnya dengan vk.com.

Tentu saja, kami mendukung permulaan ini dan membayar kompensasi tanpa pertanyaan. Karena programmer kami memeriksa data yang disediakan dan mengkonfirmasi adanya masalah, pembenaran pentester. Lagi pula, kami belum mempertahankan pentester kami sendiri di negara bagian, dan pekerjaan ini membutuhkan pengetahuan dan waktu yang cukup besar, karena mencakup serangkaian studi:

Audit keamanan seluruh sumber daya, dan ini merupakan pemeriksaan sesuai dengan parameter berikut, dan laporan kami pada akhir audit meliputi:

• Injeksi Kode A1
• A2 Otentikasi dan manajemen sesi salah
• A3 Crossite scripting
• Pelanggaran Akses A4
• Konfigurasi A5 Insecure
• Kebocoran Data Sensitif A6
• A7 Perlindungan serangan tidak memadai
• Pemalsuan permintaan lintas situs A8
• A9 Menggunakan komponen dengan kerentanan yang diketahui
• A10 Pembalakan dan pemantauan yang tidak memadai

Karena ya, keputusan itu dibuat dengan tegas dan cepat. Selain itu, seperti yang dicatat oleh pentester, studi tersebut meningkatkan keamanan web secara keseluruhan:
Ini adalah hobi saya, jika setiap pengembang seperti Anda akan berdialog dengan pemburu bug, Internet akan 80% aman.

Oleh karena itu, secara keseluruhan, kami membayar sedikit, terutama jika kami membagi jumlah dengan jumlah bulan dimana karyawan yang bertanggung jawab untuk pengujian penetrasi tidak disimpan pada staf. Terima kasih banyak kepada Pentester untuk bug yang ditemukan dan fakta bahwa dia meluangkan waktu untuk kami, kami benar-benar sangat berterima kasih kepadanya. Jika ada yang membutuhkan layanannya, silakan hubungi, kami akan memberikan kontak dengan izinnya.

Tapi kali ini bukan kerentanan yang membunuh kami. Itu kami dan fitur dari produk WHMCS. Pada setiap catatan, kami telah menginstal produk manajemen wadah virtual yang nyaman - VM Manager, yang WHMCS memiliki akses untuk membuat, menjeda, dan menghapus, serta klien - untuk mengelola wadah virtual yang dibuat.

gambar

Setiap hari di WHMCS kami menerima lusinan atau bahkan ratusan pesanan yang perlu diterima (diterima), dihapus, atau ditandai sebagai Penipuan jika klien mencoba membayar pesanan dengan kartu kredit curian. Terkadang ada ledakan pesanan seperti itu dan kami tidak dapat segera menentukan status mana yang akan ditetapkan untuk itu, karena kami melakukan verifikasi internal kami atau mengharuskan pengguna untuk mengidentifikasi dirinya dengan benar jika kami menemukan pesanannya mencurigakan, dan pengguna tersebut, tentu saja, tidak selalu menanggapi atau meneruskan identifikasi berhasil. Oleh karena itu, dari waktu ke waktu seribu atau dua pesanan yang tidak diaktifkan atau pesanan dengan status yang tidak diketahui terakumulasi, yang lebih mudah untuk dihapus daripada diproses. Siapa yang benar-benar perlu - memesan ulang.

Dua bulan lalu, kami memutuskan untuk sepenuhnya meninggalkan produk pusat data berbasis cloud, karena kami mulai memberikan solusi kami sendiri dengan VM Manager, yang memungkinkan Anda menempatkan sistem dalam satu klik atau bahkan dari gambar Anda:

gambar

Dan mereka bahkan menawarkannya pada NVMe PCIe SSD, yang urutannya lebih cepat dari SSD biasa untuk membaca dan hingga 3 kali untuk menulis, solusinya, seperti cloud, perlu ditingkatkan, server harganya mulai $ 15 dan termasuk VM Manager dan panel kontrol ISP Manager yang nyaman 5 berdasarkan permintaan gratis, dukung peningkatan dengan langkah minimum 5GB DDR4 RAM, 60GB NVMe PCIe SSD dan 3 core E5-2650 v4 ke paket tarif yang lebih tinggi di Amsterdam, Manassas dan London:

VPS (KVM) - E5-2650 v4 (3 Cores) / 5GB DDR4 / 60GB NVMe SSD / 1Gbps 5TB - $ 15 / bulan
VPS (KVM) - E5-2650 v4 (6 Cores) / 10GB DDR4 / 120GB NVMe SSD / 1Gbps 10TB - $ 30 / bulan
VPS (KVM) - E5-2650 v4 (9 Cores) / 15GB DDR4 / 180GB NVMe SSD / 1Gbps 15TB - $ 45 / bulan
...
VPS (KVM) - E5-2650 v4 (24 Cores) / 40GB DDR4 / 480GB NVMe SSD / 1Gbps 40TB - $ 120 / bulan
...
VPS (KVM) - E5-2650 v4 (24 Cores) / 65GB DDR4 / 780GB NVMe SSD / 1Gbps 65TB - $ 195 / bulan
VPS (KVM) - E5-2650 v4 (24 Cores) / 70GB DDR4 / 840GB NVMe SSD / 1Gbps 70TB - $ 210 / bulan
VPS (KVM) - E5-2650 v4 (24 Cores) / 75GB DDR4 / 900GB NVMe SSD / 1Gbps 75TB - $ 225 / bulan

Oleh karena itu, tidak masuk akal untuk menyewa sebagian besar pusat data cloud dan menawarkan kepada pelanggan prosesor E3-1230 lama, meskipun dari $ 3,99 per bulan bagi kami, ia telah habis. Kami percaya bahwa pelanggan harus menerima kualitas tertinggi dan kinerja maksimum, dengan harga minimum, ya, kami tidak dapat menawarkan produk seharga $ 3,99 dan mungkin kami tidak mencakup kebutuhan beberapa pengembang yang membutuhkan sumber daya minimal dan kinerja apa pun, tetapi simpul biaya lebih 7.000 euro dan kami tidak mampu, setidaknya untuk saat ini, untuk menempatkan lebih dari 15 klien di atasnya, karena kami siap untuk menjamin kualitas. Dan kualitas tidak hanya menyiratkan stabilitas, tetapi juga rasio kinerja / harga maksimum, kemudian efektivitas biaya.

Untuk merayakannya, kami membatalkan seluruh infrastruktur cloud (yang merupakan ribuan VPS), memesan 2 server virtual independen untuk kami sendiri (ya, kami membayar sendiri untuk server kami), menyebarkan situs dan menagih 2 bulan lalu pada solusi baru, karena kami menggambarkan semuanya di atas, dibawa ke grup perlindungan, sehingga sistem tidak berhenti sendiri, jika Anda tiba-tiba lupa membayar tepat waktu ... Tampaknya telah melakukan segalanya.

Dan hari ini, setelah 2 bulan, kami memutuskan untuk "Batal" (jangan hapus, tombol seperti itu juga ada di sana, tetapi kami mencoba untuk tidak pernah menghapus apa pun, sehingga selalu ada riwayat) 1000+ pesanan yang tertunda yang masih belum ditetapkan status dalam penagihan WHMCS . Tertebak? Ya, itu dia. Mereka bertanya - bisakah saya membatalkan? Saya mengkonfirmasi "hapus."

Terkadang, terlepas dari jumlah sumber daya yang besar, karena pengambilan sampel data besar dan beberapa proses tidak sesuai dengan batas waktu yang diberikan, WHMCS memberikan kesalahan 504, semuanya dilakukan dan tagihan terus bekerja, tetapi di sini kami tidak memiliki ketersediaan. Penagihan dan situs tidak lagi tersedia. Kami tidak segera mengerti alasannya. Namun kemudian mereka sadar. Pesanan untuk 2 VPS kami tidak diterima (ya, kami tidak menerima pesanan kami!) Dan, sebagai hasilnya, "Dibatalkan" oleh sistem, yang mengarah pada peluncuran modul dan penghapusan dua wadah sekaligus, yang konon tidak dibuat, tetapi dibuat oleh virtual, menggunakan VM Manager tercinta kami. Setelah memasukkan salah satu node, seperti yang diharapkan, administrator kami melihat gambar "Perpisahan":



Apa ini - cacat pada pengembang WHMCS, yang mengarah pada penghapusan pesanan yang tidak diterima, dan benar-benar dibuat dengan ID VPS mereka, ketika mereka dibatalkan, atau kebodohan kami (dari departemen penjualan) tidak lagi penting. Hasilnya adalah satu - "Perpisahan ke situs dengan penagihan." Panel hanya menyeka mereka. Dan administrator hanya punya satu pertanyaan untuk kami (penjualan):

Naher membuat layanan dengan situs utama dan penagihannya.
Dan kemudian membunuhnya ke neraka.

Dan meskipun kami memiliki cadangan, juga di dua wilayah yang terdistribusi secara geografis, saya merasa tidak nyaman. Karena saya tidak yakin tentang kesegaran dari cadangan, saya tidak yakin bahwa administrator kami melakukan semuanya dengan benar, seperti yang semula ditentukan pada mereka. tugas yang didukung database sebenarnya setiap jam atau lebih sering, dan data diperbarui dan beberapa versi file sebelumnya disimpan. Pencadangan untuk beberapa kesalahan perangkat lunak itu tidak berhenti sama sekali (setelah semua, saya pribadi tidak mengendalikannya, mengapa saya harus yakin bahwa administrator kami akan khawatir tentang data kami jika saya mencetak kontrol ini?). Banyak pikiran negatif ... Jangan biarkan alam semesta selamat dari ini!

Saya telah mengumpulkan ide bahwa setidaknya 1 jam, atau lebih buruk lagi, tidak akan ada transaksi, dan Anda harus mengembalikan pembayaran pelanggan secara manual, membandingkan data tentang transaksi sebelumnya dan menulis kepada pemegang akun bahwa kami telah membuat kembali akun dan membayar untuk itu , untuk menunjukkan diri kita dari sisi yang salah, untuk mengirim pemberitahuan bahwa kita bodoh dan membuat kerusakan perangkat lunak seperti itu ... Dan jika tidak ada cadangan baru - ini umumnya sebuah pipa, itu harus sangat panjang dan suram untuk memulihkan semuanya ...

Untuk kasus ini, kami memiliki tabel internal di mana banyak data utama digandakan secara manual dan diperbarui oleh kami, yang menghilangkan kegagalan perangkat lunak dan penulisan ulang data yang salah. Meskipun ketersediaan cadangan, kami masih menggunakan metode ini. Bagaimanapun, tidak ada yang membatalkan kemungkinan zvezdets global.

Untungnya, semuanya ternyata tidak terlalu buruk, dan bahkan itu semua. seorang spesialis yang harus menyelesaikan masalah dan yang pada awalnya mengumumkan:

Malam itu sukses, terima kasih semuanya.
Saya pergi untuk mengambilnya.

Meskipun demikian, malam itu sukses. Karena awalnya solusi yang disediakan untuk penggunaan lvm dan wadah virtual baru belum dibuat - adalah mungkin untuk mengembalikan data aktual, meskipun dengan tarian dengan rebana:

Semuanya melalui utilitas lvm, menggunakan perintahnya mengembalikan grup volume virtual, lalu yang virtual, kemudian mengaktifkan partisi, memasangnya di folder kiri, menciptakan server dan meletakkan data di sana. Itu mungkin dengan cara lain, tetapi opsi ini dalam kasus kami adalah + spesifik tercepat dari pengaturan server virtual, yang masing-masing memiliki serangan sendiri.

Kesimpulan apa yang dibuat? Redundansi dan redundansi harus mencakup akuntansi kerentanan dan skenario pengembangan paling bodoh ketika semuanya, bahkan cadangan, dapat dihancurkan. Kami tidak menderita dan tidak menderita kerugian besar hanya karena fakta bahwa data tidak sepenuhnya dihapus. Jika perlu untuk memulihkan dari cadangan, akan ada kehilangan transaksi per jam dan hilangnya waktu kerja yang signifikan. Bagi kami, kemungkinan bahwa cadangan mungkin berguna ketika menggunakan geocluster minimal - kami salah. Kami tidak memperhitungkan kemungkinan untuk menghapus kedua server sekaligus dan bahwa kami tidak akan menghapus server, tetapi kami.

Itu selalu diperlukan untuk memiliki penyimpanan eksternal yang independen dari sistem Anda, dengan akses, lebih disukai hanya oleh beberapa kode, yang juga disediakan, untuk menjamin bahwa data tidak akan hilang. Saat ini, meskipun ada cadangan di infrastruktur kami di dua wilayah, saya serius mempertimbangkan kemungkinan menggunakan sesuatu seperti Amazon Glacier, meskipun yang terakhir sangat mahal. Menurut administrator, semuanya baik-baik saja di sana hanya dalam hal pemasaran, tetapi ketika Anda mulai menggunakannya, Anda dihadapkan dengan kenyataan bahwa solusinya cukup mahal, karena Anda harus membayar untuk setiap permintaan dan setiap file yang sangat menarik dianggap sebagai aplikasi aws-cli mereka, terutama jika data perlu dipulihkan. Baru-baru ini, satu klien dari Inggris diminta untuk membuat reservasi di sana, setelah beberapa bulan digunakan, ia menolak - itu ternyata sangat mahal. Tapi tetap saja, kita perlu menentukan mana yang lebih mahal. — . — , , . , .

, — , , , . , , , , , .

PS , ( , EST ). , , . , - . , , . , — , . . !

.

VPS (KVM) E5-2650 v4 (6 Cores) 10GB DDR4 240GB SSD 1Gbps , , 30% VPS , , .

Dell R730xd 2 kali lebih murah? Hanya kami yang memiliki 2 x Intel Dodeca-Core Xeon E5-2650v4 128GB DDR4 6x480GB SSD 1Gbps 100 TV dari $ 249 di Belanda dan Amerika Serikat! Baca tentang Cara Membangun Infrastruktur kelas menggunakan server Dell R730xd E5-2650 v4 seharga 9.000 euro untuk satu sen?

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


All Articles