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>
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
3. 将 redis-trib.rb 复制到 /usr/local/bin 目录下
cd src cp redis-trib.rb /usr/local/bin/
4. 创建 Redis 节点
首先在 192.168.31.245 机器上 /root/software/redis-3.2.4 目录下创建 redis_cluster 目录;
mkdir redis_cluster
在 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
分别修改这三个配置文件,修改如下内容
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日志开启 有需要就开启,它会每次写操作都记录一条日志
接着在另外一台机器上(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
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
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
其中,前三个 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:
Enter Ja, das war's, und dann erscheint der folgende Inhalt, der anzeigt, dass die Installation erfolgreich war.
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:
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!