Redisセンチネルモードのインストールとデプロイ
歩哨とは何ですか?
Sentinelは実際にはredisサーバープログラムです。serverCron関数も定期的に実行しますが、他のプログラムでは使用されません。通常のredisノードとフェイルオーバーモジュールの監視を使用します。
Sentinelが初期化されると、元のコマンドテーブルがクリアされ、独自のコマンドが書き込まれます。したがって、通常のredisノードでサポートされているデータの読み取りおよび書き込みコマンドは、これらのコマンドをまったく初期化しないため、Sentinelでは見つかりません。アクチュエータ。
Sentinelは、監視しているマスターに対して定期的にinfoコマンドを実行して、最新のマスターとスレーブの関係を取得します。また、すべてのRedisノードにpingハートビート検出コマンドを定期的に送信します。マスターが応答できないことを検出すると、Sentinelはそれをに送信します。もう一方のSentinelは、マスターがダウンしていると主観的に考えてメッセージを送信します。Sentinelクラスターがオフラインマスターの数が特定の値に達することに同意すると、全員がオフラインになることに同意します。
オフラインになる前に行う必要があるのは、オフライン操作を実行するSentinelクラスターの1つを見つけることです。このステップはリーダー選出と呼ばれます。選出後、マスターのすべてのスレーブノードから適切なものが新しいものとして選択されます。マスターし、他のスレーブを新しいマスターと再同期させます。
実際、上記ではSentinelとは何か、本質的には何をするのかを簡単に紹介しましたが、後でソースコードと併せて実装の詳細について詳しく説明します。ここで、Sentinelモニタリングを構成および開始する方法をもう一度見てみましょう。(実稼働環境では、3つ以上を構成することをお勧めします
センチネルモードの構成
- 3台のマシンまたは3台のredisインスタンスを準備します
hadoop001 hadoop002 hadoop3 分别安装 redis
hadoop001:192.168.52.50
hadoop002:192.168.52.52
hadoop003:192.168.52.53
hadoop001をマスターノード、hadoop002をスレーブノード、hadoop003をセンチネルノードとして設定します。
- マスターノードの構成ファイルを編集します:cp redis.conf master.conf
daemonize yes #设置redis在后台启动
port 16379
slave-read-only no
protected-mode no
- スレーブノードの構成ファイルを編集します:cp redis.conf slave.conf
daemonize yes # 设置redis在后台启动)
port 26379
slaveof 192.168.52.50 16379
slave-read-only no
protected-mode no
- センチネルノード編集構成ファイル:sentinel.conf
protected-mode no
daemonize yes # 设置redis在后台启动)
port 26380
sentinel monitor master1 192.168.52.50 16379 1
sentinel down-after-milliseconds master1 5000
sentinel failover-timeout master1 900000
sentinel parallel-syncs master1 1
- その他の構成アイテム情報は、自分で変更することも、デフォルトで変更することもできます
protected-mode no (关闭保护模式)
port 6379
daemonize yes (设置redis在后台启动)
pidfile /var/run/redis_6379.pid
logfile "/opt/module/redis/6379/logs/redis_6379.log" (设置日志文件的存放位置)
dbfilename dump_6379.rdb (设置dump文件名)
dir "/opt/module/redis/6379" (设置dump文件和nodes文件的存放位置)
masterauth bigdata (设置集群节点间访问密码,跟上面一致)
requirepass bigdata (设置redis访问密码)
redisサービスを開始します
- マスターを開始
redis-server master.conf
- スレーブを開始します
redis-server slave.conf
- Sentineldを開始します
redis-sentinel sentinel.conf
4. redisクライアントに接続して、構成情報を表示します
redis-cli -p 16379
[root@redis01 src]# redis-cli -p 16379
127.0.0.1:16379> INFO replication
# Replication
role:master ---------------------> 角色为master
connected_slaves:1 ---------------------> slave 连接数为1
slave0:ip=172.31.17.229,port=26379,state=online,offset=183125,lag=0
master_replid:a7e8d31a7cca92f659dc1af9d6556e2d039588b8
master_replid2:0000000000000000000000000000000000000000
master_repl_offset:183125
second_repl_offset:-1
repl_backlog_active:1
repl_backlog_size:1048576
repl_backlog_first_byte_offset:1
repl_backlog_histlen:183125
[root@redis02 redis-sentinel]# redis-cli -p 26379
127.0.0.1:26379> INFO replication
# Replication
role:slave ---------------------> 角色为slave
master_host:172.31.31.130
master_port:16379
master_link_status:up
master_last_io_seconds_ago:1
master_sync_in_progress:0
slave_repl_offset:185981
slave_priority:100
slave_read_only:0
connected_slaves:0
master_replid:a7e8d31a7cca92f659dc1af9d6556e2d039588b8
master_replid2:0000000000000000000000000000000000000000
master_repl_offset:185981
second_repl_offset:-1
repl_backlog_active:1
repl_backlog_size:1048576
repl_backlog_first_byte_offset:71
repl_backlog_histlen:185911
TestRedisが利用可能です
マスターノードで値を設定し、スレーブノードで同期できるか確認してください
127.0.0.1:16379[1]> set test6 666
127.0.0.1:16379[1]> keys *
1) "test6"
2) "test5"
3) "test1"
4) "test3"
127.0.0.1:26379[1]> keys *
1) "test1"
2) "test5"
3) "test3"
4) "test6"
127.0.0.1:26379[1]> get test6
"666"