Rumah  >  Artikel  >  pangkalan data  >  Bagaimana untuk membina kluster Redis dalam CentOS7

Bagaimana untuk membina kluster Redis dalam CentOS7

WBOY
WBOYke hadapan
2023-05-26 13:34:061203semak imbas

1. Pembinaan manual

1. Sediakan nod

CentOS7 dan pasang Redis

Bilangan nod mestilah sekurang-kurangnya 6 untuk memastikan Kluster ketersediaan lengkap dan tinggi

(1) Struktur direktori

cluster
├── 9001
│   ├── data
│   │   ├── appendonly.aof
│   │   └── nodes-9001.conf
│   ├── redis-9001.conf
│   └── redis-9001.log
├── 9002
│   ├── data
│   │   ├── appendonly.aof
│   │   └── nodes-9002.conf
│   ├── redis-9002.conf
│   └── redis-9002.log
...

(2) Sediakan fail konfigurasi

cd cluster
mkdir -p 9001/data 9002/data 9003/data 9004/data 9005/data 9006/data
cp ../redis-6.0.9/redis.conf 9001/redis-9001.conf
vi 9001/redis-9001.conf
    port 9001
    daemonize yes
    bind 192.168.11.40
    dir /root/cluster/9001/data/
    pidfile /var/run/redis_9001.pid
    cluster-enabled yes  # 集群模式运行
    cluster-config-file nodes-9001.conf
    cluster-node-timeout 15000
    # appendonly yes
    logfile "/root/cluster/9001/redis-9001.log"

Salin & Ganti: :%s/9001/9002/g

( 3) Mula Selepas perkhidmatan

/usr/local/redis/bin/redis-server /root/cluster/9001/redis-9001.conf
...
tail 9001/redis-9001.log
kill `cat /var/run/redis_9001.pid`

dimulakan, fail konfigurasi kelompok nodes-9001.conf akan dibuat secara automatik dalam direktori data. Apabila maklumat nod dalam kluster berubah, nod akan secara automatik menyimpan status kluster ke fail konfigurasi ini Adalah lebih baik untuk tidak mengubah suai secara manual. Jika fail konfigurasi kluster wujud semasa permulaan, nod akan menggunakan kandungan fail konfigurasi untuk memulakan maklumat kluster

$ cat 9001/data/nodes-9001.conf
8ccdb0963411ebd05ce21952bdd4b7597825afdc :0@0 myself,master - 0 0 0 connected
vars currentEpoch 0 lastVoteEpoch 0
$ /usr/local/redis/bin/redis-cli -h 192.168.11.40 -p 9001
192.168.11.40:9001> cluster nodes
8ccdb0963411ebd05ce21952bdd4b7597825afdc :9001@19001 myself,master - 0 0 0 connected

ID Nod: rentetan heksadesimal 40 digit yang digunakan untuk mengenal pasti nod secara unik dalam kelompok. ID nod hanya dibuat sekali, manakala ID yang sedang berjalan akan berubah setiap kali ia dimulakan semula

2. Jabat tangan nod

Jabatan tangan nod Sekumpulan nod yang berjalan dalam mod kelompok berkomunikasi antara satu sama lain melalui protokol Gossip untuk berkomunikasi antara satu sama lain Perception

$ /usr/local/redis/bin/redis-cli -h 192.168.11.40 -p 9001
192.168.11.40:9001> cluster meet 192.168.11.40 9002
OK
192.168.11.40:9001> cluster nodes
8ccdb0963411ebd05ce21952bdd4b7597825afdc 192.168.11.40:9001@19001 myself,master - 0 0 0 connected
5786e3237c7fa413ed22465d15be721f95e72cfa 192.168.11.40:9002@19002 master - 0 1620703357871 1 connected

cluster meet ialah perintah tak segerak, yang digunakan untuk nod bertukar maklumat data status antara satu sama lain Ia kembali serta-merta selepas pelaksanaan dan berfungsi komunikasi jabat tangan dengan nod sasaran secara dalaman:

  • Node 9001 mencipta objek maklumat nod 9002 secara setempat dan menghantar mesej bertemu

  • Selepas menerima pertemuan mesej, nod 9002 menyimpan maklumat nod 9001 dan membalas mesej pong

  • Selepas itu, nod 9001 dan 9002 berkomunikasi antara satu sama lain secara kerap melalui mesej ping/pong

Dalam kluster, mana-mana nod boleh melaksanakan perintah bertemu kluster untuk menyertai nod baharu Status jabat tangan akan disebarkan dalam kluster melalui mesej: nod lain akan menemui nod baharu secara automatik dan memulakan jabat tangan. proses

Kluster tidak boleh berfungsi seperti biasa selepas nod mewujudkan jabat tangan Pada masa ini, kluster berada dalam status

Luar Talian, semua bacaan dan penulisan data adalah dilarang. Oleh kerana slot tidak diberikan kepada nod, kluster tidak dapat melengkapkan pemetaan slot ke nod

192.168.11.40:9001> set hello world
(error) CLUSTERDOWN Hash slot not served
192.168.11.40:9001> cluster info
cluster_state:fail
cluster_slots_assigned:0
cluster_slots_ok:0
cluster_slots_pfail:0
cluster_slots_fail:0
cluster_known_nodes:6
cluster_size:0
...

3 Peruntukkan slot

Kluster Redis memetakan semua data ke slot

16384. tengah. Hanya apabila slot semua diperuntukkan kepada nod, gugusan memasuki keadaan dalam talian

Slot tugasan:

/usr/local/redis/bin/redis-cli -h 192.168.11.40 -p 9001 cluster addslots {0..5461}
/usr/local/redis/bin/redis-cli -h 192.168.11.40 -p 9002 cluster addslots {5462..10922}
/usr/local/redis/bin/redis-cli -h 192.168.11.40 -p 9003 cluster addslots {10923..16383}

Lihat maklumat kelompok:

192.168.11.40:9001> cluster info
cluster_state:ok
cluster_slots_assigned:16384
cluster_slots_ok:16384
cluster_slots_pfail:0
cluster_slots_fail:0
cluster_known_nodes:6
cluster_size:3
...
192.168.11.40:9001> cluster nodes
cebb7ed63d469748d4015ede6b4a0f5ff59c9322 192.168.11.40:9006@19006 master - 0 1620704406746 0 connected
1b7785f80c4712c6ba4abd71cc93027fa85a02f8 192.168.11.40:9005@19005 master - 0 1620704406000 4 connected
8ccdb0963411ebd05ce21952bdd4b7597825afdc 192.168.11.40:9001@19001 myself,master - 0 1620704404000 2 connected 0-5461
9408059de8b2dd712f0a9381a3b7aad561aef206 192.168.11.40:9004@19004 master - 0 1620704407753 5 connected
85ceb9826e8aa003169c46fb4ba115c72002d4f9 192.168.11.40:9003@19003 master - 0 1620704407000 3 connected 10923-16383
5786e3237c7fa413ed22465d15be721f95e72cfa 192.168.11.40:9002@19002 master - 0 1620704408763 1 connected 5462-10922

Setiap satu bertanggungjawab Nod yang mengendalikan slot harus mempunyai nod hamba untuk memastikan ia boleh gagal secara automatik apabila ia gagal

Nod yang dimulakan buat kali pertama dan nod yang diberikan slot adalah kedua-duanya induk nod. Nod hamba bertanggungjawab untuk menyalin maklumat slot nod induk dan data Berkaitan

192.168.11.40:9004> cluster replicate 8ccdb0963411ebd05ce21952bdd4b7597825afdc
OK
192.168.11.40:9005> cluster replicate 5786e3237c7fa413ed22465d15be721f95e72cfa
OK
192.168.11.40:9006> cluster replicate 85ceb9826e8aa003169c46fb4ba115c72002d4f9
OK
192.168.11.40:9001> cluster nodes
cebb7ed63d469748d4015ede6b4a0f5ff59c9322 192.168.11.40:9006@19006 slave 85ceb9826e8aa003169c46fb4ba115c72002d4f9 0 1620704825926 3 connected
1b7785f80c4712c6ba4abd71cc93027fa85a02f8 192.168.11.40:9005@19005 slave 5786e3237c7fa413ed22465d15be721f95e72cfa 0 1620704825000 1 connected
8ccdb0963411ebd05ce21952bdd4b7597825afdc 192.168.11.40:9001@19001 myself,master - 0 1620704824000 2 connected 0-5461
9408059de8b2dd712f0a9381a3b7aad561aef206 192.168.11.40:9004@19004 slave 8ccdb0963411ebd05ce21952bdd4b7597825afdc 0 1620704824921 2 connected
85ceb9826e8aa003169c46fb4ba115c72002d4f9 192.168.11.40:9003@19003 master - 0 1620704824000 3 connected 10923-16383
5786e3237c7fa413ed22465d15be721f95e72cfa 192.168.11.40:9002@19002 master - 0 1620704823914 1 connected 5462-10922

2. Gunakan redis-trib.rb untuk membina gugusan (lapuk)

[Gunakan redis-cli untuk membina kelompok selepas Redis5.0]

redis-trib.rb ialah Redis

alat pengurusan kelompok yang dilaksanakan dalam Ruby. Perintah berkaitan kluster digunakan secara dalaman untuk membantu kami memudahkan operasi biasa dan operasi penyelenggaraan seperti penciptaan kluster, pemeriksaan, pemindahan slot dan pengimbangan

1 Persekitaran Ruby

Pasang Ruby

wget https://cache.ruby-lang.org/pub/ruby/2.7/ruby-2.7.3.tar.gz
tar -zxvf ruby-2.7.3.tar.gz
cd ruby-2.7.3
./configure --prefix=/usr/local/ruby
make
make install
cd /usr/local/ruby
cp bin/ruby /usr/local/bin
cp bin/gem /usr/local/bin
Pasang rubygem redis Dependency

wget http://rubygems.org/downloads/redis-4.2.5.gem
gem install -l redis-4.2.5.gem
gem list

Menghadapi masalah

$ gem install -l redis-4.2.5.gem
ERROR:  Loading command: install (LoadError)
	cannot load such file -- zlib
ERROR:  While executing gem ... (NoMethodError)
    undefined method `invoke_with_build_args' for nil:NilClass

Selesaikannya (sama seperti openssl)

yum -y install zlib-devel
cd ruby-2.7.3/ext/zlib
ruby ./extconf.rb
make
make install

Pasang redis-trib.rb

cp /{redis_home}/src/redis-trib.rb /usr/local/bin
redis-trib.rb

# --replicas 1:指定集群中每个主节点配备几个从节点
redis-trib.rb create --replicas 1 192.168.11.40:9001 192.168.11.40:9002 192.168.11.40:9003 192.168.11.40:9004 192.168.11.40:9005 192.168.11.40:9006
# 集群完整性检查
redis-trib.rb check 192.168.11.40:9001
. Buat kluster

redis-cli --cluster create 192.168.11.40:9001 192.168.11.40:9002 192.168.11.40:9003 192.168.11.40:9004 192.168.11.40:9005 192.168.11.40:9006 --cluster-replicas 1

    akan melengkapkan proses jabat tangan dan slot nod secara automatik
  • akan mencuba yang terbaik untuk memastikan tuan dan hamba nod tidak diperuntukkan pada mesin yang sama
  • Tertib senarai nod digunakan untuk menentukan peranan master-slave, pertama nod master dan kemudian nod slave
  • Alamat nod mestilah nod yang tidak mengandungi sebarang slot/data, jika tidak Akan menolak untuk membuat gugusan
  • 3 sekumpulan
rrreee

Atas ialah kandungan terperinci Bagaimana untuk membina kluster Redis dalam CentOS7. 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