このセクションでは、 バージョン 5 のRedis を使ったクラスタのフェイルオーバーを構築する方法を紹介します。ここでは、1台のサーバー上に6つのRedis を起動し、3台をマスター、3台をスレーブとする構成を前提に紹介します。
Redis の設定ファイル( /etc/redis.conf )をコピーし、スレーブサーバー用の Redis 設定ファイルを 準備します。ここでは、1台目のスレーブサーバー用の設定ファイルを 6393.conf、 2台目の設定ファイルを 6394.conf 、3台目の設定ファイルを 6395.conf とします。
[root@localhost ~]# cp -rp /etc/redis.conf /etc/redis/cluster/6393.conf [root@localhost ~]# cp -rp /etc/redis.conf /etc/redis/cluster/6394.conf [root@localhost ~]# cp -rp /etc/redis.conf /etc/redis/cluster/6395.conf
Redis クラスタリングの設定ファイルを格納しているディレクトリを確認します。ここでは、6390 〜 6392.conf がマスター3台の設定ファイル、6393 〜 6395.conf がスレーブ3台の設定ファイルとなります。
[root@localhost ~]# ls -la /etc/redis/cluster/合計 288 drwxr-xr-x. 2 root root 108 1月 27 17:48 . drwxr-xr-x. 3 redis root 126 1月 27 19:24 .. -rw-r-----. 1 redis root 46895 1月 27 17:47 6390.conf -rw-r-----. 1 redis root 46895 1月 27 17:47 6391.conf -rw-r-----. 1 redis root 46809 1月 27 17:48 6392.conf -rw-r-----. 1 redis root 46784 1月 27 01:17 6393.conf -rw-r-----. 1 redis root 46783 1月 19 20:38 6394.conf -rw-r-----. 1 redis root 46783 1月 19 20:38 6395.conf [root@localhost ~]#
Redis の起動スクリプトファイル( /lib/systemd/system/redis.service )をコピーし、スレーブサーバー用の Redis 起動スクリプトを準備します。ここでは、1台目のスレーブサーバー用の起動スクリプトを redis_6392.service、 2台目の起動スクリプトファイルを redis_6393.service 、3台目の起動スクリプトファイルを redis_6394.service とします。
[root@localhost ~]# cp -p /lib/systemd/system/redis.service /lib/systemd/system/redis_6393.service [root@localhost ~]# cp -p /lib/systemd/system/redis.service /lib/systemd/system/redis_6394.service [root@localhost ~]# cp -p /lib/systemd/system/redis.service /lib/systemd/system/redis_6395.service
Redis の起動スクリプトファイルを格納しているディレクトリを確認します。ここでは、redis_6390 〜 6392.service がマスター3台のスクリプトファイル、redis_6393 〜 6395.service がスレーブ3台のスクリプトファイルとなります。
[root@localhost ~]# ls -la /lib/systemd/system/ 〜(省略)〜 -rw-r--r--. 1 root root 390 1月 26 17:34 redis_6390.service -rw-r--r--. 1 root root 390 1月 26 17:51 redis_6391.service -rw-r--r--. 1 root root 390 1月 26 17:58 redis_6392.service -rw-r--r--. 1 root root 334 1月 27 01:08 redis_6393.service -rw-r--r--. 1 root root 390 2月 2 20:01 redis_6394.service -rw-r--r--. 1 root root 390 2月 2 21:08 redis_6395.service
Redis の停止スクリプトファイル( /usr/libexec/redis-shutdown )をコピーし、スレーブサーバー用の Redis 停止スクリプトを準備します。ここでは、1台目のマスターサーバー用の停止スクリプトを redis-6393-shutdown、 2台目の停止スクリプトファイルを redis-6394-shutdown 、3台目の停止スクリプトファイルを redis-6395-shutdown とします。
[root@localhost ~]# cp -p /usr/libexec/redis-shutdown /usr/libexec/redis-6390-shutdown [root@localhost ~]# cp -p /usr/libexec/redis-shutdown /usr/libexec/redis-6391-shutdown [root@localhost ~]# cp -p /usr/libexec/redis-shutdown /usr/libexec/redis-6392-shutdown [root@localhost ~]#
Redis の停止スクリプトファイルを格納しているディレクトリを確認します。ここでは、redis-6390 〜 6392-shutdown がマスター3台のスクリプトファイル、redis-6393 〜 6395-shutdown がスレーブ3台のスクリプトファイルとなります。
[root@localhost ~]# ls -la /usr/libexec/ 〜(省略)〜 -rwxr-xr-x. 1 root root 1129 1月 26 17:38 redis-6390-shutdown -rwxr-xr-x. 1 root root 1129 1月 26 17:53 redis-6391-shutdown -rwxr-xr-x. 1 root root 1129 1月 26 19:08 redis-6392-shutdown -rwxr-xr-x. 1 root root 1129 1月 27 01:11 redis-6393-shutdown -rwxr-xr-x. 1 root root 1129 2月 2 20:04 redis-6394-shutdown -rwxr-xr-x. 1 root root 1129 2月 2 21:07 redis-6395-shutdown
1台目のスレーブサーバーの準備
1台目のスレーブサーバー用 Redis 設定ファイル( /etc/redis/cluster/6393.conf )を編集し、以下設定します。1台目のスレーブサーバーは TCP 6393 ポートを使用することにしています。
[root@localhost ~]# vi /etc/redis/cluster/6393.conf
マスターサーバーの Redis 設定ファイルで パスワード(requirepass)を設定している場合には、masterauth パラメーターにパスワードを指定します。ここでは、パスワードは foobaredとしています。マスターサーバーで設定されていない場合には、masterauth は不要です。
bind 192.168.24.199 port 6393 pidfile /var/run/redis_6393.pid logfile /var/log/redis/redis_6393.log dbfilename 6393.rdb cluster-enabled yes cluster-config-file nodes-6393.conf cluster-node-timeout 15000 appendonly yes masterauth foobared
1台目のスレーブサーバー用 Redis 起動スクリプトファイル( /lib/systemd/system/redis_6393.service )を編集し、以下設定します。
[root@localhost ~]# vi /lib/systemd/system/redis_6393.service
ExecStart、ExecStop に定義する値を変更します。
ExecStart=/usr/bin/redis-server /etc/redis/cluster/6393.conf --supervised systemd ExecStop=/usr/libexec/redis-6393-shutdown
1台目のマスターサーバー用 Redis 停止スクリプトファイル( /usr/libexec/redis-6393-shutdown )を編集し、以下設定します。
[root@localhost ~]# vi /usr/libexec/redis-6393-shutdown
SERVICE_NAME、CONFIG FILE、PORT に定義する値を変更します。
if [ -z "$SERVICE_NAME" ]; then SERVICE_NAME=6393 fi CONFIG_FILE="/etc/redis/cluster/$SERVICE_NAME.conf" if [ "$SERVICE_NAME" = 6393 ]; then PORT=${PORT:-6393}
1台目の Redis サービスを起動します。
■ 起動 [root@localhost ~]# systemctl start redis_6394 [root@localhost ~]# ■ 起動状態の確認 [root@localhost ~]# systemctl status redis_6394 ● redis_6394.service - Redis persistent key-value database Loaded: loaded (/usr/lib/systemd/system/redis_6394.service; disabled; vendor preset: disabled) Active: active (running) since 土 2019-02-02 20:05:59 JST; 7s ago Main PID: 8008 (redis-server) CGroup: /system.slice/redis_6394.service └─8008 /usr/bin/redis-server 192.168.24.199:6394 [cluster] 2月 02 20:05:59 localhost.localdomain systemd[1]: Starting Redis persistent... 2月 02 20:05:59 localhost.localdomain systemd[1]: Started Redis persistent ... Hint: Some lines were ellipsized, use -l to show in full. [root@localhost ~]#
1台目の Redis サービスの自動起動を有効化します。
■ 自動起動の有効化 [root@localhost ~]# systemctl enable redis_6393 Created symlink from /etc/systemd/system/multi-user.target.wants/redis_6393.service to /usr/lib/systemd/system/redis_6393.service. [root@localhost ~]# ■ 自動起動の状態確認 [root@localhost ~]# systemctl is-enabled redis_6393 enabled [root@localhost ~]#
2、3台目のスレーブサーバーの準備
1台目のスレーブサーバーの準備と同様手順で、2、3台目のスレーブサーバーを準備します。2台目のマスターサーバーは TCP 6394 ポートを、3台目のマスターサーバーは TCP 6395 ポートを使用することにしています。
● 2台目の設定
[root@localhost ~]# vi /etc/redis/cluster/6395.conf
bind 192.168.24.199
port 6395
pidfile /var/run/redis_6395.pid
logfile /var/log/redis/redis_6395.log
dbfilename 6395.rdb
cluster-enabled yes
cluster-config-file nodes-6395.conf
cluster-node-timeout 15000
appendonly yes
masterauth foobared
[root@localhost ~]# vi /lib/systemd/system/redis_6394.service ExecStart=/usr/bin/redis-server /etc/redis/cluster/6394.conf --supervised systemd ExecStop=/usr/libexec/redis-6394-shutdown
[root@localhost ~]# vi /usr/libexec/redis-6394-shutdown if [ -z "$SERVICE_NAME" ]; then SERVICE_NAME=6394 fi CONFIG_FILE="/etc/redis/cluster/$SERVICE_NAME.conf" if [ "$SERVICE_NAME" = 6394 ]; then PORT=${PORT:-6394}
● 3台目の設定
[root@localhost ~]# vi /etc/redis/cluster/6395.conf bind 192.168.24.199 port 6395 pidfile /var/run/redis_6395.pid logfile /var/log/redis/redis_6395.log dbfilename 6395.rdb cluster-enabled yes cluster-config-file nodes-6395.conf cluster-node-timeout 15000 appendonly yes masterauth foobared
[root@localhost ~]# vi /lib/systemd/system/redis_6395.service ExecStart=/usr/bin/redis-server /etc/redis/cluster/6395.conf --supervised systemd ExecStop=/usr/libexec/redis-6395-shutdown
[root@localhost ~]# vi /usr/libexec/redis-6395-shutdown if [ -z "$SERVICE_NAME" ]; then SERVICE_NAME=6395 fi if [ "$SERVICE_NAME" = 6395 ]; then PORT=${PORT:-6395}
2、3台目の Redis サービスの起動と、自動起動を有効化します。
[root@localhost ~]# systemctl start redis_6394 [root@localhost ~]# systemctl status redis_6394 ● redis_6394.service - Redis persistent key-value database Loaded: loaded (/usr/lib/systemd/system/redis_6394.service; disabled; vendor preset: disabled) Active: active (running) since 土 2019-02-02 20:05:59 JST; 7s ago Main PID: 8008 (redis-server) CGroup: /system.slice/redis_6394.service └─8008 /usr/bin/redis-server 192.168.24.199:6394 [cluster] 2月 02 20:05:59 localhost.localdomain systemd[1]: Starting Redis persistent... 2月 02 20:05:59 localhost.localdomain systemd[1]: Started Redis persistent ... Hint: Some lines were ellipsized, use -l to show in full. [root@localhost ~]#
[root@localhost ~]# systemctl start redis_6395 [root@localhost ~]# systemctl status redis_6395 ● redis_6395.service - Redis persistent key-value database Loaded: loaded (/usr/lib/systemd/system/redis_6395.service; disabled; vendor preset: disabled) Active: active (running) since 土 2019-02-02 20:06:32 JST; 2s ago Process: 8019 ExecStop=/usr/libexec/redis-6390-shutdown (code=exited, status=0/SUCCESS) Main PID: 8064 (redis-server) CGroup: /system.slice/redis_6395.service └─8064 /usr/bin/redis-server 192.168.24.199:6390 [cluster] 2月 02 20:06:32 localhost.localdomain systemd[1]: Starting Redis persistent... 2月 02 20:06:32 localhost.localdomain systemd[1]: Started Redis persistent ... Hint: Some lines were ellipsized, use -l to show in full. [root@localhost ~]#
[root@localhost ~]# systemctl enable redis_6394 Created symlink from /etc/systemd/system/multi-user.target.wants/redis_6394.service to /usr/lib/systemd/system/redis_6394.service. [root@localhost ~]# systemctl enable redis_6395 Created symlink from /etc/systemd/system/multi-user.target.wants/redis_6395.service to /usr/lib/systemd/system/redis_6395.service. [root@localhost ~]# systemctl is-enabled redis_6394 enabled [root@localhost ~]# systemctl is-enabled redis_6395 enabled
マスターサーバーの設定編集
マスターサーバーの Redis 設定ファイルでパスワード(requirepass)を設定している場合には、masterauth パラメーターにパスワードを指定します。ここでは、パスワードは foobaredとしています。マスターサーバーで requirepass を設定していない場合には、masterauth は不要です。もし、requirepass が設定され masterauth が設定されていないと、障害などでスレーブに降格したマスターサーバーがマスターに昇格したスレーブサーバー障害時に再度マスターに昇格することができなくなってしまいます。
[root@localhost ~]# vi /etc/redis/cluster/6390.conf masterauth foobared [root@localhost ~]# vi /etc/redis/cluster/6391.conf masterauth foobared [root@localhost ~]# vi /etc/redis/cluster/6392.conf masterauth foobared
マスターサーバーを再起動します。
[root@localhost ~]# systemctl restart redis_6390 redis_6391 redis_6392 [root@localhost ~]# systemctl status redis_6390 redis_6391 redis_6392 ● redis_6390.service - Redis persistent key-value database Loaded: loaded (/usr/lib/systemd/system/redis_6390.service; enabled; vendor preset: disabled) Active: active (running) since 土 2019-02-02 23:15:50 JST; 5s ago Process: 3795 ExecStop=/usr/libexec/redis-6390-shutdown (code=exited, status=0/SUCCESS) Main PID: 3841 (redis-server) CGroup: /system.slice/redis_6390.service └─3841 /usr/bin/redis-server 192.168.24.199:6390 [cluster] 2月 02 23:15:50 localhost.localdomain systemd[1]: Stopped Redis persistent ... 2月 02 23:15:50 localhost.localdomain systemd[1]: Starting Redis persistent... 2月 02 23:15:50 localhost.localdomain systemd[1]: Started Redis persistent ... ● redis_6391.service - Redis persistent key-value database Loaded: loaded (/usr/lib/systemd/system/redis_6391.service; enabled; vendor preset: disabled) Active: active (running) since 土 2019-02-02 23:15:50 JST; 5s ago Process: 3796 ExecStop=/usr/libexec/redis-6391-shutdown (code=exited, status=0/SUCCESS) Main PID: 3839 (redis-server) CGroup: /system.slice/redis_6391.service └─3839 /usr/bin/redis-server 192.168.24.199:6391 [cluster] 2月 02 23:15:50 localhost.localdomain systemd[1]: Stopped Redis persistent ... 2月 02 23:15:50 localhost.localdomain systemd[1]: Starting Redis persistent... 2月 02 23:15:50 localhost.localdomain systemd[1]: Started Redis persistent ... ● redis_6392.service - Redis persistent key-value database Loaded: loaded (/usr/lib/systemd/system/redis_6392.service; enabled; vendor preset: disabled) Active: active (running) since 土 2019-02-02 23:15:50 JST; 5s ago Process: 3797 ExecStop=/usr/libexec/redis-6392-shutdown (code=exited, status=0/SUCCESS) Main PID: 3838 (redis-server) CGroup: /system.slice/redis_6392.service └─3838 /usr/bin/redis-server 192.168.24.199:6392 [cluster] 2月 02 23:15:50 localhost.localdomain systemd[1]: Stopped Redis persistent ... 2月 02 23:15:50 localhost.localdomain systemd[1]: Starting Redis persistent... 2月 02 23:15:50 localhost.localdomain systemd[1]: Started Redis persistent ... Hint: Some lines were ellipsized, use -l to show in full. [root@localhost ~]#
クラスタリングのファイルオーバーの構成
1台目の Redis サーバーに接続し、マスター3台、スレーブ3台のクラスタリングを構成します。途中で、実行したクラスタリングの構成を設定するか確認されるので、yes と入力します。
[root@localhost ~]# redis-cli -h 192.168.24.199 -p 6390 -a foobared --cluster create 192.168.24.199:6390 192.168.24.199:6391 192.168.24.199:6392 192.168.24.199:6393 192.168.24.199:6394 192.168.24.199:6395 --cluster-replicas 1 Warning: Using a password with '-a' or '-u' option on the command line interface may not be safe. >>> Performing hash slots allocation on 6 nodes... Master[0] -> Slots 0 - 5460 Master[1] -> Slots 5461 - 10922 Master[2] -> Slots 10923 - 16383 Adding replica 192.168.24.199:6393 to 192.168.24.199:6390 Adding replica 192.168.24.199:6394 to 192.168.24.199:6391 Adding replica 192.168.24.199:6395 to 192.168.24.199:6392 >>> Trying to optimize slaves allocation for anti-affinity [WARNING] Some slaves are in the same host as their master M: ca443c4f54618f40e8682269bbca4033f98cb6d1 192.168.24.199:6390 slots:[0-5460] (5461 slots) master M: 2637035585cf77bdf997ddec83455f4c349178ff 192.168.24.199:6391 slots:[5461-10922] (5462 slots) master M: e582ec767bced7cbbc75427947e504d790f2cd03 192.168.24.199:6392 slots:[10923-16383] (5461 slots) master S: 2ba4d782571bf97a68aa1f98670f4cbb207b840f 192.168.24.199:6393 replicates ca443c4f54618f40e8682269bbca4033f98cb6d1 S: ad86810b4fbda0c16caa23a3e0909110ecd5c6dd 192.168.24.199:6394 replicates 2637035585cf77bdf997ddec83455f4c349178ff S: ddf10a66a459ef277d0aa54ce68feea21fc48a32 192.168.24.199:6395 replicates e582ec767bced7cbbc75427947e504d790f2cd03 Can I set the above configuration? (type 'yes' to accept): yes >>> Nodes configuration updated >>> Assign a different config epoch to each node >>> Sending CLUSTER MEET messages to join the cluster Waiting for the cluster to join ...... >>> Performing Cluster Check (using node 192.168.24.199:6390) M: ca443c4f54618f40e8682269bbca4033f98cb6d1 192.168.24.199:6390 slots:[0-5460] (5461 slots) master 1 additional replica(s) S: ad86810b4fbda0c16caa23a3e0909110ecd5c6dd 192.168.24.199:6394 slots: (0 slots) slave replicates 2637035585cf77bdf997ddec83455f4c349178ff M: e582ec767bced7cbbc75427947e504d790f2cd03 192.168.24.199:6392 slots:[10923-16383] (5461 slots) master 1 additional replica(s) S: 2ba4d782571bf97a68aa1f98670f4cbb207b840f 192.168.24.199:6393 slots: (0 slots) slave replicates ca443c4f54618f40e8682269bbca4033f98cb6d1 S: ddf10a66a459ef277d0aa54ce68feea21fc48a32 192.168.24.199:6395 slots: (0 slots) slave replicates e582ec767bced7cbbc75427947e504d790f2cd03 M: 2637035585cf77bdf997ddec83455f4c349178ff 192.168.24.199:6391 slots:[5461-10922] (5462 slots) master 1 additional replica(s) [OK] All nodes agree about slots configuration. >>> Check for open slots... >>> Check slots coverage... [OK] All 16384 slots covered. [root@localhost ~]#
1台目の Redis サーバーに接続し、クラスタリングのノード状態を確認します。ここでは、192.168.24.199:6390 〜 6392 が master、192.168.24.199:6393 〜 6395 が slave であることが確認できます。
[root@localhost ~]# redis-cli -h 192.168.24.199 -p 6390 -a foobared cluster nodes Warning: Using a password with '-a' or '-u' option on the command line interface may not be safe. ddf10a66a459ef277d0aa54ce68feea21fc48a32 192.168.24.199:6395@16395 slave e582ec767bced7cbbc75427947e504d790f2cd03 0 1549117359000 6 connected 2637035585cf77bdf997ddec83455f4c349178ff 192.168.24.199:6391@16391 master - 0 1549117359364 11 connected 5461-10922 2ba4d782571bf97a68aa1f98670f4cbb207b840f 192.168.24.199:6393@16393 slave ca443c4f54618f40e8682269bbca4033f98cb6d1 0 1549117359564 4 connected ca443c4f54618f40e8682269bbca4033f98cb6d1 192.168.24.199:6390@16390 myself,master - 0 1549117358000 1 connected 0-5460 [8818-<-2637035585cf77bdf997ddec83455f4c349178ff] e582ec767bced7cbbc75427947e504d790f2cd03 192.168.24.199:6392@16392 master - 0 1549117359000 3 connected 10923-16383 ad86810b4fbda0c16caa23a3e0909110ecd5c6dd 192.168.24.199:6394@16394 slave 2637035585cf77bdf997ddec83455f4c349178ff 0 1549117360365 11 connected [root@localhost ~]#
マスターサーバーの情報を確認します。役割( role )が master、スレーブ接続( connected_slaves )が 1台であることが確認できます。
[root@localhost ~]# redis-cli -h 192.168.24.199 -p 6390 -a foobared info replication Warning: Using a password with '-a' or '-u' option on the command line interface may not be safe. # Replication role:master connected_slaves:1 slave0:ip=192.168.24.199,port=6393,state=online,offset=462,lag=1 master_replid:c32f600edf8ec9add6f4f1a31376ce845811046d master_replid2:0000000000000000000000000000000000000000 master_repl_offset:462 second_repl_offset:-1 repl_backlog_active:1 repl_backlog_size:1048576 repl_backlog_first_byte_offset:1 repl_backlog_histlen:462 [root@localhost ~]#
スレーブサーバーの情報を確認します。役割( role )が slave、マスターへのリンク状態( master_link_status )が Up していることが確認できます。
[root@localhost ~]# redis-cli -h 192.168.24.199 -p 6393 -a foobared info replication Warning: Using a password with '-a' or '-u' option on the command line interface may not be safe. # Replication role:slave master_host:192.168.24.199 master_port:6390 master_link_status:up master_last_io_seconds_ago:7 master_sync_in_progress:0 slave_repl_offset:476 slave_priority:100 slave_read_only:1 connected_slaves:0 master_replid:c32f600edf8ec9add6f4f1a31376ce845811046d master_replid2:0000000000000000000000000000000000000000 master_repl_offset:476 second_repl_offset:-1 repl_backlog_active:1 repl_backlog_size:1048576 repl_backlog_first_byte_offset:1 repl_backlog_histlen:476 [root@localhost ~]#
ファイルオーバーの動作確認
2台目のマスターサーバー( redis_6391 )を停止します。
[root@localhost ~]# systemctl stop redis_6391 [root@localhost ~]#
1台目の Redis サーバーに接続し、クラスタリングのノード状態を確認します。ここでは、2台目のマスターサーバー( 192.168.24.199:6391 )の状態がfail になり、2台目のスレーブサーバー( 192.168.24.199:6394 )の状態が master に昇格していることが確認できます。
[root@localhost ~]# redis-cli -h 192.168.24.199 -p 6390 -a foobared cluster nodes Warning: Using a password with '-a' or '-u' option on the command line interface may not be safe. ddf10a66a459ef277d0aa54ce68feea21fc48a32 192.168.24.199:6395@16395 slave e582ec767bced7cbbc75427947e504d790f2cd03 0 1549111486195 6 connected ca443c4f54618f40e8682269bbca4033f98cb6d1 192.168.24.199:6390@16390 myself,master - 0 1549111484000 1 connected 0-5460 ad86810b4fbda0c16caa23a3e0909110ecd5c6dd 192.168.24.199:6394@16394 master - 0 1549111485592 8 connected 5461-10922 2637035585cf77bdf997ddec83455f4c349178ff 192.168.24.199:6391@16391 master,fail - 1549111464326 1549111464125 7 disconnected e582ec767bced7cbbc75427947e504d790f2cd03 192.168.24.199:6392@16392 master - 0 1549111485192 3 connected 10923-16383 2ba4d782571bf97a68aa1f98670f4cbb207b840f 192.168.24.199:6393@16393 slave ca443c4f54618f40e8682269bbca4033f98cb6d1 0 1549111487197 4 connected [root@localhost ~]#
1台目の Redis サーバーに接続し、クラスタリングの key 配置状況を確認します。ここでは、2台目のマスターサーバー( 192.168.24.199:6391 )の替わり 2台目のスレーブサーバー( 192.168.24.199:6394 )がマスターに昇格し key が配置が引き継がれていることが確認できます。
[root@localhost ~]# redis-cli -h 192.168.24.199 -p 6390 -a foobared --cluster info 192.168.24.199:6390 Warning: Using a password with '-a' or '-u' option on the command line interface may not be safe. Could not connect to Redis at 192.168.24.199:6391: Connection refused *** WARNING: 192.168.24.199:6394 claims to be slave of unknown node ID 2637035585cf77bdf997ddec83455f4c349178ff. 192.168.24.199:6390 (ca443c4f...) -> 1 keys | 5461 slots | 1 slaves. 192.168.24.199:6392 (e582ec76...) -> 1 keys | 5461 slots | 1 slaves. [OK] 2 keys in 2 masters. 0.00 keys per slot on average. [root@localhost ~]#
↓
[root@localhost ~]# redis-cli -h 192.168.24.199 -p 6390 -a foobared --cluster info 192.168.24.199:6390 Warning: Using a password with '-a' or '-u' option on the command line interface may not be safe. Could not connect to Redis at 192.168.24.199:6391: Connection refused 192.168.24.199:6390 (ca443c4f...) -> 1 keys | 5461 slots | 1 slaves. 192.168.24.199:6392 (e582ec76...) -> 1 keys | 5461 slots | 1 slaves. 192.168.24.199:6394 (ad86810b...) -> 1 keys | 5462 slots | 0 slaves. [OK] 3 keys in 3 masters. 0.00 keys per slot on average. [root@localhost ~]#
今度は、先程停止した2台目のマスターであったサーバー( redis_6391 )を起動します。
[root@localhost ~]# systemctl start redis_6391
1台目の Redis サーバーに接続し、クラスタリングのノード状態を確認します。ここでは、2台目のマスターであったサーバー( 192.168.24.199:6391 )はスレーブとなり、マスターに昇格した2台目のスレーブサーバー( 192.168.24.199:6394 )の状態が master のままであることが確認できます。
[root@localhost ~]# redis-cli -h 192.168.24.199 -p 6390 -a foobared cluster nodes Warning: Using a password with '-a' or '-u' option on the command line interface may not be safe. ddf10a66a459ef277d0aa54ce68feea21fc48a32 192.168.24.199:6395@16395 slave e582ec767bced7cbbc75427947e504d790f2cd03 0 1549118537171 6 connected 2637035585cf77bdf997ddec83455f4c349178ff 192.168.24.199:6391@16391 slave ad86810b4fbda0c16caa23a3e0909110ecd5c6dd 0 1549118537071 15 connected 2ba4d782571bf97a68aa1f98670f4cbb207b840f 192.168.24.199:6393@16393 slave ca443c4f54618f40e8682269bbca4033f98cb6d1 0 1549118536000 4 connected ca443c4f54618f40e8682269bbca4033f98cb6d1 192.168.24.199:6390@16390 myself,master - 0 1549118536000 1 connected 0-5460 [8818-<-2637035585cf77bdf997ddec83455f4c349178ff] e582ec767bced7cbbc75427947e504d790f2cd03 192.168.24.199:6392@16392 master - 0 1549118536000 3 connected 10923-16383 ad86810b4fbda0c16caa23a3e0909110ecd5c6dd 192.168.24.199:6394@16394 master - 0 1549118536170 15 connected 5461-8817 8819-10922 [root@localhost ~]#
1台目の Redis サーバーに接続し、クラスタリングの key 配置状況を確認します。ここでは、マスターに昇格した 2台目のスレーブサーバー( 192.168.24.199:6394 )に key が配置されたままの状態であることが確認できます。
[root@localhost ~]# redis-cli -h 192.168.24.199 -p 6390 -a foobared --cluster info 192.168.24.199:6390 Warning: Using a password with '-a' or '-u' option on the command line interface may not be safe. 192.168.24.199:6390 (ca443c4f...) -> 1 keys | 5461 slots | 1 slaves. 192.168.24.199:6392 (e582ec76...) -> 1 keys | 5461 slots | 1 slaves. 192.168.24.199:6394 (ad86810b...) -> 1 keys | 5462 slots | 1 slaves. [OK] 3 keys in 3 masters. 0.00 keys per slot on average. [root@localhost ~]#
今度は、マスターに昇格した 2台目のスレーブサーバー( redis_6394 )を停止します。
[root@localhost ~]# systemctl stop redis_6394
1台目の Redis サーバーに接続し、クラスタリングのノード状態を確認します。ここでは、スレーブに降格した2台目のマスターサーバー( 192.168.24.199:6391 )がマスターに昇格し、マスターに昇格していた2台目のスレーブサーバー( 192.168.24.199:6394 )の状態が fail になっていることが確認できます。
[root@localhost ~]# redis-cli -h 192.168.24.199 -p 6390 -a foobared cluster nodes Warning: Using a password with '-a' or '-u' option on the command line interface may not be safe. ddf10a66a459ef277d0aa54ce68feea21fc48a32 192.168.24.199:6395@16395 slave e582ec767bced7cbbc75427947e504d790f2cd03 0 1549119323000 6 connected 2637035585cf77bdf997ddec83455f4c349178ff 192.168.24.199:6391@16391 master - 0 1549119324769 16 connected 5461-8817 8819-10922 2ba4d782571bf97a68aa1f98670f4cbb207b840f 192.168.24.199:6393@16393 slave ca443c4f54618f40e8682269bbca4033f98cb6d1 0 1549119323768 4 connected ca443c4f54618f40e8682269bbca4033f98cb6d1 192.168.24.199:6390@16390 myself,master - 0 1549119323000 1 connected 0-5460 [8818-<-2637035585cf77bdf997ddec83455f4c349178ff] e582ec767bced7cbbc75427947e504d790f2cd03 192.168.24.199:6392@16392 master - 0 1549119323000 3 connected 10923-16383 ad86810b4fbda0c16caa23a3e0909110ecd5c6dd 192.168.24.199:6394@16394 master,fail - 1549119316444 1549119314538 15 disconnected [root@localhost ~]#
1台目の Redis サーバーに接続し、クラスタリングの key 配置状況を確認します。ここでは、2台目のマスターサーバー( 192.168.24.199:6391 )に key が配置されていることが確認できます。
[root@localhost ~]# redis-cli -h 192.168.24.199 -p 6390 -a foobared --cluster info 192.168.24.199:6390 Warning: Using a password with '-a' or '-u' option on the command line interface may not be safe. Could not connect to Redis at 192.168.24.199:6394: Connection refused *** WARNING: 192.168.24.199:6391 claims to be slave of unknown node ID ad86810b4fbda0c16caa23a3e0909110ecd5c6dd. 192.168.24.199:6390 (ca443c4f...) -> 1 keys | 5461 slots | 1 slaves. 192.168.24.199:6392 (e582ec76...) -> 1 keys | 5461 slots | 1 slaves. [OK] 2 keys in 2 masters. 0.00 keys per slot on average. [root@localhost ~]# ↓ [root@localhost ~]# redis-cli -h 192.168.24.199 -p 6390 -a foobared --cluster info 192.168.24.199:6390 Warning: Using a password with '-a' or '-u' option on the command line interface may not be safe. Could not connect to Redis at 192.168.24.199:6394: Connection refused 192.168.24.199:6390 (ca443c4f...) -> 1 keys | 5461 slots | 1 slaves. 192.168.24.199:6391 (26370355...) -> 1 keys | 5462 slots | 0 slaves. 192.168.24.199:6392 (e582ec76...) -> 1 keys | 5461 slots | 1 slaves. [OK] 3 keys in 3 masters. 0.00 keys per slot on average. [root@localhost ~]#
最後に、停止した 2台目のスレーブサーバー( redis_6394 )を起動します。
[root@localhost ~]# systemctl start redis_6394
1台目の Redis サーバーに接続し、クラスタリングのノード状態を確認します。ここでは、2台目のマスターサーバー( 192.168.24.199:6391 )の状態が master のままで、2台目のスレーブサーバー( 192.168.24.199:6394 )の状態が slave になっていることが確認できます。
[root@localhost ~]# redis-cli -h 192.168.24.199 -p 6390 -a foobared cluster nodes Warning: Using a password with '-a' or '-u' option on the command line interface may not be safe. ddf10a66a459ef277d0aa54ce68feea21fc48a32 192.168.24.199:6395@16395 slave e582ec767bced7cbbc75427947e504d790f2cd03 0 1549119608532 6 connected 2637035585cf77bdf997ddec83455f4c349178ff 192.168.24.199:6391@16391 master - 0 1549119609033 16 connected 5461-8817 8819-10922 2ba4d782571bf97a68aa1f98670f4cbb207b840f 192.168.24.199:6393@16393 slave ca443c4f54618f40e8682269bbca4033f98cb6d1 0 1549119607000 4 connected ca443c4f54618f40e8682269bbca4033f98cb6d1 192.168.24.199:6390@16390 myself,master - 0 1549119608000 1 connected 0-5460 [8818-<-2637035585cf77bdf997ddec83455f4c349178ff] e582ec767bced7cbbc75427947e504d790f2cd03 192.168.24.199:6392@16392 master - 0 1549119608000 3 connected 10923-16383 ad86810b4fbda0c16caa23a3e0909110ecd5c6dd 192.168.24.199:6394@16394 slave 2637035585cf77bdf997ddec83455f4c349178ff 0 1549119607029 16 connected [root@localhost ~]#
1台目の Redis サーバーに接続し、クラスタリングの key 配置状況を確認します。ここでは、2台目のマスターサーバー( 192.168.24.199:6391 )に key が配置されたままの状態であることが確認できます。
[root@localhost ~]# redis-cli -h 192.168.24.199 -p 6390 -a foobared --cluster info 192.168.24.199:6390 Warning: Using a password with '-a' or '-u' option on the command line interface may not be safe. 192.168.24.199:6390 (ca443c4f...) -> 1 keys | 5461 slots | 1 slaves. 192.168.24.199:6391 (26370355...) -> 1 keys | 5462 slots | 1 slaves. 192.168.24.199:6392 (e582ec76...) -> 1 keys | 5461 slots | 1 slaves. [OK] 3 keys in 3 masters. 0.00 keys per slot on average. [root@localhost ~]#