redis一主一従三哨兵

6384 ワード

1.サーバ計画(例)
サーバ:(redisホストが使用できるメモリ容量が一致し、maxmemoryが構成されていることが要求されます)
192.168.127.8 redis-7003メインノードredis-sentinel-7013 redis哨兵1
192.168.127.7 redis-7002メインノードredis-sentinel-7012 redis哨兵2
192.168.127.6 redis-sentinel-7011 redis哨兵3
説明:メインノードがラインオフした後、3人の哨兵が投票して誰がleaderなのかを決定し、2人以上の哨兵がメインノードがラインオフしたと判断した場合(主観ラインオフ)、leaderは故障移転の仕事をする
質問:1.プライマリ・スレーブの切り替えが1回行われると、reidsノードが1つしか実行されず、プライマリ・スレーブの再切り替えが必要な場合は、元のダウンタイムのredisノードを起動する必要があります.
             2.プライマリスレーブノードの切り替え後、クライアントは要求されたIPアドレスを切り替える必要があり、jedisクライアントはIPアドレスの変換を実現できず、元のjedisクライアントを使用すると正常にアクセスできず、sharded-jedis-sentinel-poolを使用する必要がある
2.1台の機器にredisを取り付ける
            
3.redisインストール後のフォルダを他のマシンにコピーし、redis-${port}と名前を変更
 
4.各マシンにredisインストールフォルダをコピーし、redis-sentinel-${port}と名前を変更
 
5.redisマスターノードの構成port  7003 dir  "/usr/local/redis4/data" logfile  "7003.log" daemonize yes pidfile  "/var/run/redis_7003.pid" # redis , , redis protected -mode no # requirepass  "2329257" # maxmemory 1gb
 
6.redisスレーブノードの構成port  7002 dir  "/usr/local/redis4/data" logfile  "7002.log" daemonize yes pidfile  "/var/run/redis_7002.pid"   # redis , , redis protected -mode no # masterauth  "2329257" # maxmemory 1gb
 
7.redis歩哨ノードの構成(3つの歩哨があり、構成はポートのみが異なり、ここでは一例として1つのみ構成)port  7012 dir  "/usr/local/redis4-sentinel/data" logfile  "7012.log" daemonize yes pidfile  "/var/run/redis_7012.pid"   # redis , , redis protected -mode no   sentinel deny-scripts-reconfig yes # IP 2 sentinel monitor mymaster  192.168 . 127.8   7003   2 #sentinel ping , 150s , sentinel down-after-milliseconds mymaster  150000 # sentinel auth-pass mymaster  2329257 # 2 sentinel config-epoch mymaster  2 sentinel leader-epoch mymaster  2 # , sentinel failover-timeout mymaster  180000
 
8.redisマスターノードの起動
bin/redis-server conf/redis-7003.conf
9.redisスレーブノードの起動
bin/redis-server conf/redis-7002.conf
10.redis哨兵ノードの起動
bin/redis-sentinel conf/redis-7013.conf
bin/redis-sentinel conf/redis-7012.conf
bin/redis-sentinel conf/redis-7011.conf
11.マスターノードとスレーブノードでマスタースレーブ状態を観察する(現在のマスターノードにはスレーブノード192.128.127.7:7002がある)
プライマリノードで表示# Replication role:master connected_slaves: 1 slave0:ip= 192.168 . 127.7 ,port= 7002 ,state=online,offset= 444947 ,lag= 0 master_replid:f526d934f5f315888731e918f97f0d14ad2724e2 master_replid2:4c6db5630cb19eeebea9796fde82f80188bf1926 master_repl_offset: 445101 second_repl_offset: 25084 repl_backlog_active: 1 repl_backlog_size: 1048576 repl_backlog_first_byte_offset: 1 repl_backlog_histlen: 445101
 
ノードから表示(現在、ノードからプライマリノード192.128.1127.8:7003)# Replication role:slave master_host: 192.168 . 127.8 master_port: 7003 master_link_status:up master_last_io_seconds_ago: 1 master_sync_in_progress: 0 slave_repl_offset: 435231 slave_priority: 100 slave_read_only: 1 connected_slaves: 0 master_replid:f526d934f5f315888731e918f97f0d14ad2724e2 master_replid2: 0000000000000000000000000000000000000000 master_repl_offset: 435231 second_repl_offset:- 1 repl_backlog_active: 1 repl_backlog_size: 1048576 repl_backlog_first_byte_offset: 429707 repl_backlog_histlen: 5525
12.メインノードをラインオフし、自動フェイルオーバのプロセスを観察する
sentinelのログを表示すると、プライマリ・ノードからの切り替えを示すログが表示されます.+ switch -master mymaster  192.168 . 127.8   7003   192.168 . 127.7   7002
ノードからinfo replicationをクエリーすると,元のノードからプライマリノードに変わり,ノードから# Replication role:master connected_slaves: 0 master_replid:f526d934f5f315888731e918f97f0d14ad2724e2 master_replid2:4c6db5630cb19eeebea9796fde82f80188bf1926 master_repl_offset: 399326 second_repl_offset: 25084 repl_backlog_active: 1 repl_backlog_size: 1048576 repl_backlog_first_byte_offset: 1 repl_backlog_histlen: 399326