Rumah  >  Artikel  >  pangkalan data  >  Cara Redis melaksanakan replikasi tuan-hamba

Cara Redis melaksanakan replikasi tuan-hamba

王林
王林ke hadapan
2023-05-30 08:01:481942semak imbas

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.

 Cara Redis melaksanakan replikasi tuan-hamba

1. Ubah suai fail konfigurasi

Mula-mula, salin fail konfigurasi redis.conf ke dalam tiga salinan dan simulasikan tiga pelayan Redis dengan mengubah suai port.

 Cara Redis melaksanakan replikasi tuan-hamba

  Kemudian kami mengubah suai ketiga-tiga fail redis.conf ini masing-masing.

 ①、Ubah suai daemoni ya

 Cara Redis melaksanakan replikasi tuan-hamba

 Menunjukkan bahawa Redis yang ditentukan akan dimulakan sebagai proses daemon (bermula di latar belakang)

 ②, konfigurasikan pidfile laluan fail PID

 Cara Redis melaksanakan replikasi tuan-hamba

  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

 Cara Redis melaksanakan replikasi tuan-hamba

  ④, nama fail log konfigurasi

 Cara Redis melaksanakan replikasi tuan-hamba

 ⑤、Konfigurasikan nama fail rdb

 Cara Redis melaksanakan replikasi tuan-hamba

Seterusnya, tukar 6380redis.conf, 6381Redis.conf dikonfigurasikan sekali dan konfigurasi selesai.

Seterusnya kami memulakan ketiga-tiga perkhidmatan ini masing-masing.

 

Cara Redis melaksanakan replikasi tuan-hamba

Gunakan arahan untuk menyemak sama ada Redis dimulakan:

Cara Redis melaksanakan replikasi tuan-hamba

Seterusnya, masukkan tiga pelanggan Redis melalui yang berikut perintah Tamat:

1

1

2

3

redis-cli -p 6379

redis-cli -p 6380

redis-cli -p 6381

23
redis-cli -p 6379 redis-cli -p 6380redis-cli -p 6381

2. Tetapkan hubungan tuan-hamba

① Lihat peranan nod melalui arahan replikasi maklumat

Cara Redis melaksanakan replikasi tuan-hamba Cara Redis melaksanakan replikasi tuan-hamba

Cara Redis melaksanakan replikasi tuan-hamba

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

 Cara Redis melaksanakan replikasi tuan-hambaCara Redis melaksanakan replikasi tuan-hamba

Mari lihat maklumat > 

Cara Redis melaksanakan replikasi tuan-hamba

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?

 

Cara Redis melaksanakan replikasi tuan-hamba

 

Cara Redis melaksanakan replikasi tuan-hamba

 

Cara Redis melaksanakan replikasi tuan-hamba

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?

 

Cara Redis melaksanakan replikasi tuan-hamba

Sebabnya di sini ialah konfigurasi hamba baca sahaja dalam fail konfigurasi 6381redis.conf

Selepas kita menukarnya kepada tidak, ia mungkin untuk melaksanakan arahan tulis.

Cara Redis melaksanakan replikasi tuan-hamba 

Tetapi data yang ditulis oleh nod hamba tidak boleh diperolehi daripada nod hamba atau nod induk.

Cara Redis melaksanakan replikasi tuan-hamba 

④. Nod induk dimatikan

Jika Master nod induk menutup telefon, adakah peranan kedua-dua nod hamba akan berubah?  

 

Cara Redis melaksanakan replikasi tuan-hamba

Dapat dilihat dari rajah di atas bahawa selepas Master nod induk menutup telefon, peranan nod hamba tidak akan berubah .

Cara Redis melaksanakan replikasi tuan-hamba 

⑤ 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.

Cara Redis melaksanakan replikasi tuan-hamba4. 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.

Mod sentinel adalah untuk memantau sama ada redis berjalan dengan baik seperti yang dijangkakan dari semasa ke semasa (sekurang-kurangnya untuk memastikan nod induk wujud Jika terdapat masalah dengan hos, pengawal akan mengalih keluar a mesin hamba di bawah tuan rumah Tetapkannya sebagai tuan rumah baharu dan biarkan hamba lain mewujudkan hubungan tuan-hamba dengan tuan rumah baharu.

 

Langkah-langkah untuk membina mod sentinel:

Cara Redis melaksanakan replikasi tuan-hamba ① Cipta fail sentinel.conf baharu dalam direktori fail konfigurasi Nama mestilah tidak salah kemudian konfigurasikan kandungan yang sepadan

 

Cara Redis melaksanakan replikasi tuan-hamba

1

sentinel monitor 被监控机器的名字(自己起名字) ip地址 端口号 得票数

 Cara Redis melaksanakan replikasi tuan-hamba

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

1

redis-sentinel /etc/redis/sentinel.conf

. 1redis-sentinel /etc/redis/sentinel.conf

Antara muka permulaan:

Cara Redis melaksanakan replikasi tuan-hamba

Seterusnya, kami membunuh hos 6379 dan melihat apa yang berlaku kepada nod hamba.

 Cara Redis melaksanakan replikasi tuan-hamba

Selepas membunuh nod induk, kami menyemak log cetakan latar belakang dan mendapati 6381 mengundi untuk menjadi nod induk.

 Cara Redis melaksanakan replikasi tuan-hamba

Pada masa ini kami menyemak maklumat nod nod hamba 6381:

 Cara Redis melaksanakan replikasi tuan-hamba

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-hamba

Fungsi 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-hamba

Walaupun 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!

Kenyataan:
Artikel ini dikembalikan pada:yisu.com. Jika ada pelanggaran, sila hubungi admin@php.cn Padam