Heim > Datenbank > Redis > Hauptteil

So erstellen Sie einen Redis-Cluster

步履不停
Freigeben: 2019-06-24 11:18:23
Original
2254 Leute haben es durchsucht

So erstellen Sie einen Redis-Cluster

Einführung in die Installationsumgebung und -version

Verwenden Sie zwei virtuelle Maschinen, um 6 zu simulieren Knoten: Eine Maschine verfügt über drei Knoten, wodurch drei Master- und drei Slave-Umgebungen entstehen.

Redis übernimmt die Version Redis-3.2.4.

Beide virtuellen Maschinen sind CentOS, ein CentOS6.5 (IP: 192.168.31.245) und ein CentOS7 (IP: 192.168.31.210).

Installationsprozess

1.

<br>
Nach dem Login kopieren
cd /root/software
wget http://download.redis.io/releases/redis-3 herunterladen und entpacken .2.4.tar.gz
tar -zxvf redis-3.2.4.tar.gz <br>

2. 编译安装

cd redis-3.2.4make && make install
Nach dem Login kopieren

3. 将 redis-trib.rb 复制到 /usr/local/bin 目录下

cd src
cp redis-trib.rb /usr/local/bin/  
Nach dem Login kopieren

4. 创建 Redis 节点

首先在 192.168.31.245 机器上 /root/software/redis-3.2.4 目录下创建 redis_cluster 目录;

mkdir redis_cluster  
Nach dem Login kopieren

在 redis_cluster 目录下,创建名为7000、7001、7002的目录,并将 redis.conf 拷贝到这三个目录中

mkdir 7000 7001 7002<br>cp redis.conf redis_cluster/7000cp redis.conf redis_cluster/7001cp redis.conf redis_cluster/7002  
Nach dem Login kopieren

分别修改这三个配置文件,修改如下内容

port  7000                                        //端口7000,7002,7003        
bind 本机ip                                       //默认ip为127.0.0.1 需要改为其他节点机器可访问的ip 否则创建集群时无法访问对应的端口,无法创建集群
daemonize    yes                               //redis后台运行
pidfile  /var/run/redis_7000.pid          //pidfile文件对应7000,7001,7002
cluster-enabled  yes                           //开启集群  把注释#去掉
cluster-config-file  nodes_7000.conf   //集群的配置  配置文件首次启动自动生成 7000,7001,7002
cluster-node-timeout  15000                //请求超时  默认15秒,可自行设置
appendonly  yes                           //aof日志开启  有需要就开启,它会每次写操作都记录一条日志
Nach dem Login kopieren
  • 接着在另外一台机器上(192.168.31.210),的操作重复以上三步,只是把目录改为7003、7004、7005,对应的配置文件也按照这个规则修改即可

5. 启动各个节点

第一台机器上执行
redis-server redis_cluster/7000/redis.conf
redis-server redis_cluster/7001/redis.conf
redis-server redis_cluster/7002/redis.conf
 
另外一台机器上执行
redis-server redis_cluster/7003/redis.conf
redis-server redis_cluster/7004/redis.conf
redis-server redis_cluster/7005/redis.conf
Nach dem Login kopieren

6. 检查 redis 启动情况

##一台机器<br>ps -ef | grep redis
root      61020      1  0 02:14 ?        00:00:01 redis-server 127.0.0.1:7000 [cluster]    
root      61024      1  0 02:14 ?        00:00:01 redis-server 127.0.0.1:7001 [cluster]    
root      61029      1  0 02:14 ?        00:00:01 redis-server 127.0.0.1:7002 [cluster]    
 
netstat -tnlp | grep redis
tcp        0      0 127.0.0.1:17000             0.0.0.0:*                   LISTEN      61020/redis-server 
tcp        0      0 127.0.0.1:17001             0.0.0.0:*                   LISTEN      61024/redis-server 
tcp        0      0 127.0.0.1:17002             0.0.0.0:*                   LISTEN      61029/redis-server 
tcp        0      0 127.0.0.1:7000              0.0.0.0:*                   LISTEN      61020/redis-server 
tcp        0      0 127.0.0.1:7001              0.0.0.0:*                   LISTEN      61024/redis-server 
tcp        0      0 127.0.0.1:7002              0.0.0.0:*                   LISTEN      61029/redis-server12345678910111213
    ##另外一台机器
ps -ef | grep redis
root       9957      1  0 02:32 ?        00:00:01 redis-server 127.0.0.1:7003 [cluster]
root       9964      1  0 02:32 ?        00:00:01 redis-server 127.0.0.1:7004 [cluster]
root       9971      1  0 02:32 ?        00:00:01 redis-server 127.0.0.1:7005 [cluster]
root      10065   4744  0 02:38 pts/0    00:00:00 grep --color=auto redis
netstat -tlnp | grep redis
tcp        0      0 127.0.0.1:17003         0.0.0.0:*               LISTEN      9957/redis-server 1tcp        0      0 127.0.0.1:17004         0.0.0.0:*               LISTEN      9964/redis-server 1tcp        0      0 127.0.0.1:17005         0.0.0.0:*               LISTEN      9971/redis-server 1tcp        0      0 127.0.0.1:7003          0.0.0.0:*               LISTEN      9957/redis-server 1tcp        0      0 127.0.0.1:7004          0.0.0.0:*               LISTEN      9964/redis-server 1tcp        0      0 127.0.0.1:7005          0.0.0.0:*               LISTEN      9971/redis-server 1
Nach dem Login kopieren

7.创建集群

Redis 官方提供了 redis-trib.rb 这个工具,就在解压目录的 src 目录中,第三步中已将它复制到 /usr/local/bin 目录中,可以直接在命令行中使用了。使用下面这个命令即可完成安装。

redis-trib.rb  create  --replicas  1  192.168.31.245:7000 192.168.31.245:7001  192.168.31.245:7002 192.168.31.210:7003  192.168.31.210:7004  192.168.31.210:7005
Nach dem Login kopieren

其中,前三个 ip:port 为第一台机器的节点,剩下三个为第二台机器。

等等,出错了。这个工具是用 ruby 实现的,所以需要安装 ruby。安装命令如下:

yum -y install ruby ruby-devel rubygems rpm-build

gem install redis

Führen Sie dann den Befehl redis-trib.rb aus. Die folgende Eingabeaufforderung wird angezeigt:

So erstellen Sie einen Redis-Cluster

Enter Ja, das war's, und dann erscheint der folgende Inhalt, der anzeigt, dass die Installation erfolgreich war.

So erstellen Sie einen Redis-Cluster 

8. Cluster-Überprüfung

Verbinden Sie den Knoten mit Port 7002 auf der ersten Maschine und den Knoten 7005 auf der anderen Maschine Die Verbindungsmethode ist redis-cli -h 192.168.31.245 -c -p 7002. Fügen Sie den Parameter -C hinzu, um eine Verbindung zum Cluster herzustellen, da die oben genannten redis.conf-Änderungen an die IP-Adresse gebunden sind , also -h Parameter können nicht weggelassen werden.

Führen Sie den Befehl set hello world auf Knoten 7005 aus. Die Ausführungsergebnisse lauten wie folgt:

Überprüfen Sie dann auf einem anderen Port 7002 den Inhalt mit der Taste „Hallo“, Get Hallo, das Ausführungsergebnis lautet wie folgt:

So erstellen Sie einen Redis-Cluster

Dies zeigt an, dass der Cluster normal funktioniert.

Erläutern Sie kurz das Prinzip

Beim Entwurf des Redis-Clusters wurden Dezentralisierung und Middleware berücksichtigt. Das heißt, jeder Knoten im Cluster hat eine gleichberechtigte Beziehung und ist Peer-to-Peer. Jeder Knoten speichert seine eigenen Daten und den Status des gesamten Cluster. Jeder Knoten ist mit allen anderen Knoten verbunden und diese Verbindungen bleiben aktiv, wodurch sichergestellt wird, dass wir nur eine Verbindung zu einem beliebigen Knoten im Cluster herstellen müssen, um Daten von anderen Knoten zu erhalten.

Der Redis-Cluster verwendet kein herkömmliches konsistentes Hashing zum Verteilen von Daten, sondern eine andere Methode namens 哈希槽 (hash slot) zum Verteilen von Daten. Dem Redis-Cluster werden standardmäßig 16384 Slots zugewiesen. Wir verwenden den CRC16-Algorithmus, um den entsprechenden slot zu erhalten, und weisen diesen Schlüssel dann den Knoten im Hash-Slot-Intervall zu Der spezifische Algorithmus lautet: CRC16(key) % 16384。所以我们在测试的时候看到set 和 get 的时候,直接跳转到了7000端口的节点。

Der Redis-Cluster speichert die Daten in einem Masterknoten und synchronisiert dann die Daten zwischen dem Master und seinem entsprechenden Salve. Beim Lesen von Daten werden die Daten auch vom entsprechenden Masterknoten gemäß dem konsistenten Hashing-Algorithmus abgerufen. Erst wenn ein Master stirbt, wird ein entsprechender Salve-Knoten gestartet, der als Master fungiert.

Es ist zu beachten, dass der Master-Knoten 3个或以上 sein muss, andernfalls schlägt die Erstellung des Clusters fehl, und wenn die Anzahl der überlebenden Master-Knoten weniger als die Hälfte der Gesamtzahl der Knoten beträgt, wird der gesamte Cluster erstellt Der Cluster kann keine Dienste bereitstellen.

Weitere technische Artikel zum Thema Redis finden Sie in der Spalte Redis-Tutorial, um mehr darüber zu erfahren!

Das obige ist der detaillierte Inhalt vonSo erstellen Sie einen Redis-Cluster. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage