CentOS7 et installez Redis
Le nombre de nœuds doit être d'au moins 6 pour garantir un cluster complet et hautement disponible
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 ...
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"
Copier et remplacer : :%s/9001/9002/g
:%s/9001/9002/g
/usr/local/redis/bin/redis-server /root/cluster/9001/redis-9001.conf ... tail 9001/redis-9001.log kill `cat /var/run/redis_9001.pid`
启动后会自动在 data 目录创建集群配置文件nodes-9001.conf
$ 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
nœuds dans le répertoire de données -9001.conf
. Lorsque les informations du nœud dans le cluster changent, le nœud enregistre automatiquement l'état du cluster dans ce fichier de configuration. Il est préférable de ne pas le modifier manuellement. Si un fichier de configuration de cluster existe au démarrage, le nœud utilisera le contenu du fichier de configuration pour initialiser les informations du cluster$ /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
Node ID
: une chaîne hexadécimale de 40 chiffres utilisée pour identifier de manière unique un nœud dans le cluster. L'ID du nœud n'est créé qu'une seule fois et l'ID en cours d'exécution changera à chaque redémarrage2 Node handshake
Node handshake Un lot de nœuds exécutés en mode cluster communiquent entre eux via le protocole Gossip pour se percevoir192.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 ...
Asynchrone
, la fonction est que les nœuds échangent des informations de données d'état entre eux, reviennent immédiatement après l'exécution et effectuent une communication de prise de contact avec le nœud cible en interne :Après cela, les nœuds 9001 et 9002 communiquent régulièrement entre eux via ping/pong messages
Dans le clusterTout
nœud peut exécuter la commande cluster meet Pour rejoindre un nouveau nœud, l'état de la prise de contact sera propagé au sein du cluster via des messages : les autres nœuds découvriront automatiquement le nouveau nœud et lanceront le processus de prise de contacthors ligne et toutes les données en lecture et en écriture sont interdites. Étant donné que les emplacements ne sont pas alloués aux nœuds, le cluster ne peut pas terminer le mappage des emplacements aux nœuds
/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}
16384
emplacements. Ce n'est que lorsque tous les emplacementssont alloués aux nœuds que le cluster entre dans l'état en ligne
Attribuer des emplacements :
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
Afficher les informations du cluster :
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
Le nœud démarré pour la première fois et le nœud auquel l'emplacement est attribué sont tous deux des nœuds maîtres. Le nœud esclave est responsable de la copie des informations sur l'emplacement du nœud maître et des données associées192.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
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
【Utilisez redis-cli pour créer un cluster après Redis5.0】
Redis implémenté dans Ruby. Les commandes liées au cluster sont utilisées en interne pour nous aider à simplifier les opérations courantes d'exploitation et de maintenance telles que la création, l'inspection, la migration et l'équilibrage des clusters
1 Environnement Ruby
Installer Ruby
wget http://rubygems.org/downloads/redis-4.2.5.gem gem install -l redis-4.2.5.gem gem list
Installer la dépendance Rubygem Redis
$ 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
Rencontrer un problème
.yum -y install zlib-devel cd ruby-2.7.3/ext/zlib ruby ./extconf.rb make make install
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
2. Créez un cluster
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
terminera automatiquement la prise de contact du nœud et le processus d'allocation des emplacements
essaiera son Il est préférable de s'assurer que les nœuds maître et esclave ne sont pas alloués sur la même machine. L'ordre de la liste des nœuds ci-dessous est utilisé pour déterminer le rôle maître-esclave. Le nœud maître est d'abord, puis le nœud esclave. L'adresse du nœud doit être un. nœud qui ne contient aucun emplacement/donnée, sinon la création du cluster sera refusée 3. Utilisez redis-cli pour créer un cluster
rrreee.Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!