Memperkenalkan Redis sebelum ini, kami semua beroperasi pada pelayan, yang bermaksud bahawa operasi membaca, menulis dan sandaran semuanya dilakukan pada pelayan Redis Apabila bilangan lawatan projek meningkat, Operasi pelayan Redis juga semakin kerap Redis sangat pantas dalam membaca dan menulis, ia juga akan menyebabkan kelewatan tertentu pada tahap tertentu Bagi menyelesaikan masalah akses yang besar, satu kaedah yang biasanya diguna pakai ialah master-slave architecture Master/ Slave dan Master terutamanya untuk menulis. , dan Slave terutamanya untuk membaca Selepas nod Master dikemas kini, ia akan disegerakkan secara automatik ke nod Slave mengikut konfigurasi.
Seterusnya kami akan memperkenalkan cara membina seni bina tuan-hamba.
ps: Di sini saya mensimulasikan berbilang pelayan Redis pada satu mesin Berbanding dengan persekitaran pengeluaran sebenar, konfigurasi asas adalah sama, hanya alamat IP dan nombor port yang berubah.
Mula-mula, salin fail konfigurasi redis.conf ke dalam tiga salinan dan simulasikan tiga pelayan Redis dengan mengubah suai port.
Kemudian kami mengubah suai ketiga-tiga fail redis.conf ini masing-masing.
①、Ubah suai daemoni ya
Menunjukkan bahawa Redis yang ditentukan akan dimulakan sebagai proses daemon (bermula di latar belakang)
②, konfigurasikan pidfile laluan fail PID
Menunjukkan bahawa apabila redis berjalan sebagai proses daemon, ia akan menulis pid kepada /var/redis secara lalai fail /run/redis_6379.pid
③, port port konfigurasi
④, nama fail log konfigurasi
⑤、Konfigurasikan nama fail rdb
Seterusnya, tukar 6380redis.conf, 6381Redis.conf dikonfigurasikan sekali dan konfigurasi selesai. Seterusnya kami memulakan ketiga-tiga perkhidmatan ini masing-masing. Gunakan arahan untuk menyemak sama ada Redis dimulakan: Seterusnya, masukkan tiga pelanggan Redis melalui yang berikut perintah Tamat:
1
|
redis-cli -p 6379 redis-cli -p 6381 |
① Lihat peranan nod melalui arahan replikasi maklumat
Kami mendapati bahawa ketiga-tiga nod ini semuanya memainkan peranan sebagai Master. Bagaimana untuk menukar nod 6380 dan 6381 kepada peranan nod hamba?
② Pilih port 6380 dan port 6381 dan laksanakan arahan: SLAVEOF 127.0.0.1 6379
Mari lihat maklumat > Setelah perkhidmatan dimulakan semula, hubungan tuan-hamba yang ditetapkan sebelum ini melalui arahan akan menjadi tidak sah. Perhubungan ini boleh disimpan secara kekal dengan mengkonfigurasi fail redis.conf. 3. Uji hubungan tuan-hamba
①, replikasi tambahan
Nod induk melaksanakan perintah k1 v1, bolehkah nod hamba dapat k1? Dapat dilihat dari gambar di atas ianya boleh diperolehi.②, salinan penuh
Dengan melaksanakan SLAVEOF 127.0.0.1 6379, jika terdapat beberapa kunci yang wujud sebelum ini pada nod induk 6379, kemudian selepas melaksanakan arahan nod hamba akan menyalin sebelumnya Adakah anda telah menyalin semua maklumat? Jawapannya ya, saya tidak akan menyiarkan keputusan ujian di sini.③, Pemisahan baca dan tulis Master-slave
Bolehkah nod induk melaksanakan arahan menulis, dan bolehkah nod hamba melaksanakan arahan menulis? Sebabnya di sini ialah konfigurasi hamba baca sahaja dalam fail konfigurasi 6381redis.conf Selepas kita menukarnya kepada tidak, ia mungkin untuk melaksanakan arahan tulis.Tetapi data yang ditulis oleh nod hamba tidak boleh diperolehi daripada nod hamba atau nod induk.
④. Nod induk dimatikan
Jika Master nod induk menutup telefon, adakah peranan kedua-dua nod hamba akan berubah?
Dapat dilihat dari rajah di atas bahawa selepas Master nod induk menutup telefon, peranan nod hamba tidak akan berubah .⑤ Pemulihan selepas nod induk turun
Selepas Master nod induk menutup telefon, mulakan Master hos dengan segera Adakah nod induk masih memainkan peranan Cikgu?
Maksudnya, selepas nod induk ditutup, ia dimulakan semula dan meneruskan peranannya sebagai nod induk.4. Mod Sentinel
Melalui konfigurasi sebelumnya, hanya terdapat satu Master nod induk Setelah nod induk dimatikan, nod hamba tidak dapat menjalankan tugas nod induk keseluruhan sistem tidak dapat dijalankan. Mod sentri dilahirkan dari ini, kerana nod hamba secara automatik boleh mengambil alih tanggungjawab nod induk, menyelesaikan masalah masa henti nod induk.
Langkah-langkah untuk membina mod sentinel:
① Cipta fail sentinel.conf baharu dalam direktori fail konfigurasi Nama mestilah tidak salah kemudian konfigurasikan kandungan yang sepadan
|
Konfigurasikan nama yang dipantau, alamat ip dan nombor port masing-masing , dan bilangan undi. Apabila tuan turun, hamba perlu mengundi untuk memutuskan siapa yang akan mengambil alih sebagai tuan Apabila jumlah undian mencecah 1, tidak cukup untuk menjadi tuan Ia mesti melebihi 1 untuk menjadi tuan
② Mulakan sentinel
Antara muka permulaan:
Seterusnya, kami membunuh hos 6379 dan melihat apa yang berlaku kepada nod hamba.
Selepas membunuh nod induk, kami menyemak log cetakan latar belakang dan mendapati 6381 mengundi untuk menjadi nod induk.
Pada masa ini kami menyemak maklumat nod nod hamba 6381:
Nod 6381 secara automatik menjadi induk nod. PS: Mod Sentinel juga mempunyai satu masalah kegagalan Jika mesin Sentinel dimatikan, pemantauan tidak akan dapat dilakukan lagi untuk Sentinel turut mewujudkan kluster. 5. Prinsip replikasi Master-hambaFungsi replikasi Redis merangkumi dua operasi: penyegerakan (penyegerakan) dan penyebaran perintah (penyebaran perintah). ①, Penyegerakan versi lama Apabila nod hamba mengeluarkan arahan SLAVEOF untuk menghendaki pelayan hamba menyalin pelayan induk, pelayan hamba melengkapkannya dengan menghantar Perintah SYNC ke pelayan induk. Langkah-langkah pelaksanaan arahan: 1. Hantar arahan SYNC dari pelayan ke pelayan induk 2. Pelayan induk yang menerima arahan SYNC melaksanakan arahan BGSAVE, menjana fail RDB dalam latar belakang, dan menggunakan Penampan merekodkan semua arahan tulis yang dilaksanakan dari awal 3. Apabila arahan BGSAVE pelayan induk selesai, pelayan induk akan menghantar fail RDB yang dijana oleh arahan BGSAVE ke pelayan hamba, dan pelayan hamba akan menerima fail RDB dan Kemas kini status pelayan kepada status yang direkodkan dalam fail RDB. 4. Pelayan induk juga menghantar semua arahan tulis dalam penimbal kepada pelayan hamba, dan pelayan hamba melaksanakan arahan yang sepadan. ②, penyebaran arahan Apabila operasi penyegerakan selesai, pelayan induk akan mengubah suai arahan dengan sewajarnya, dan pada masa ini status pelayan hamba dan pelayan induk akan menjadi tidak konsisten. Untuk memastikan status pelayan induk dan pelayan hamba konsisten, pelayan induk perlu melakukan operasi penyebaran arahan pada pelayan hamba Pelayan induk akan menghantar arahan tulisnya sendiri kepada pelayan hamba untuk pelaksanaan. Selepas pelayan hamba melaksanakan arahan yang sepadan, status pelayan tuan dan hamba terus konsisten. Ringkasan: Melalui operasi penyegerakan dan fungsi penyebaran perintah, ciri konsistensi tuan-hamba boleh dijamin dengan baik. Tetapi kami menganggap masalah Jika pelayan hamba tiba-tiba terputus sambungan semasa penyegerakan dengan pelayan induk, dan pelayan induk melakukan beberapa operasi tulis pada masa ini, pelayan hamba memulihkan sambungan, maka anda mesti menjana semula fail RDB daripada pelayan induk dan memuatkannya ke pelayan hamba Walaupun konsistensi boleh dipastikan, status pelayan induk dan hamba sebenarnya konsisten sebelum sambungan diputuskan . Pelayan induk telah melaksanakan beberapa arahan tulis, jadi selepas pelayan hamba memulihkan sambungan, bolehkah ia hanya memutuskan sambungan arahan tulis dan bukannya keseluruhan petikan RDB? Operasi penyegerakan sebenarnya merupakan operasi yang sangat memakan masa Pelayan induk perlu menjana fail RDB terlebih dahulu melalui arahan BGSAVE, dan kemudian perlu menghantar fail ke pelayan hamba pelayan hamba, ia kemudian memuatkan fail, dan semasa memuatkan, pelayan hamba tidak dapat memproses arahan lain. Untuk menyelesaikan masalah ini, Redis telah menggunakan arahan penyegerakan baharu PSYNC sejak versi 2.8 untuk menggantikan arahan SYNC. Fungsi penyegerakan semula separa arahan ini digunakan untuk menyelesaikan masalah kecekapan replikasi semula selepas pemotongan. Maksudnya, apabila pelayan hamba menyambung semula ke pelayan induk selepas diputuskan sambungan, pelayan induk hanya menghantar arahan tulis yang dilaksanakan selepas pemotongan sambungan ke pelayan hamba hanya perlu menerima dan melaksanakan arahan tulis ini untuk mengekalkan induk -konsistensi hamba. 6. Kelemahan replikasi induk-hambaWalaupun replikasi induk-hamba menyelesaikan masalah titik tunggal kegagalan nod induk, semua operasi tulis dilakukan pada nod Induk dan kemudian disegerakkan ke Nod hamba, maka akan ada kelewatan tertentu dalam penyegerakan Apabila sistem sangat sibuk, masalah kelewatan akan menjadi lebih serius, dan ia akan menjadi lebih serius apabila bilangan nod hamba meningkat. |
Atas ialah kandungan terperinci Cara Redis melaksanakan replikasi tuan-hamba. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!