Redisマスタースレーブレプリケーション
1つは、マスタースレーブレプリケーションです。
マスタースレーブレプリケーション:マスタースレーブレプリケーションは高可用性Redisの基盤であり、Sentinelとクラスターはすべてマスタースレーブレプリケーションに基づいており、高可用性を実現しています。マスタースレーブレプリケーションは、主にデータのマルチマシンバックアップ、および読み取り操作の負荷分散と単純な障害回復を実装します。欠陥:障害回復を自動化できません:書き込み操作を負荷分散できません。ストレージ容量は単一のマシンによって制限されます。
ホスト | IPアドレス | ソフトウェアパッケージ |
---|---|---|
マスターノード | 192.168.199.40 | redis-5.0.7.tar.gz |
Slave1ノード | 192.168.199.50 | redis-5.0.7.tar.gz |
Slave2ノード | 192.168.199.60 | redis-5.0.7.tar.gz |
systemctl stop firewalld
setenforce 0
Redisをインストールする
[NoSQLRedisの構成と最適化]
Redis構成ファイルの変更(マスターノード)
vim /etc/redis/6379.conf
bind 0.0.0.0 #70行,修改监听地址为0.0.0.0
daemonize yes #137行,开启守护进程
logfile /var/ log/redis_6379.log #172行,指定日志文件目录
dir /var/lib/redis/6379 #264行,指定工作目录
appendonly yes #700行,修改为yes开启AOF持久化功能
/etc/init.d/redis_6379 restart
Redis構成ファイルの変更(スレーブノード)
vim /etc/redis/6379.conf
bind 0.0.0.0 #70行,修改监听地址为0.0.0.0
daemonize yes #137行,开启守护进程
logfile /var/log/redis_6379.log #172行,指定日志文件目录
dir /var/lib/redis/6379 #264行,指定工作目录
replicaof 192.168.199.40 6379 #288行,指定要同步的Master节点IP和端口
appendonly yes #700行,开启AOF持久化功能
/etc/init.d/redis_6379 restart
マスタースレーブ効果を確認します
マスターノードのログを見てください
tail -f /var/log/redis_6379.log
マスターノードのスレーブノードを確認します
redis-cli info replication
次に、Redis歩哨モードを構築します
センチネルの起動はマスタースレーブモードに依存するため、センチネルモードに移行する前にマスタースレーブモードをインストールする必要があります。すべてのノードがセンチネルモードをデプロイする必要があります。センチネルモードは、すべてのRedis作業ノードが正常かどうかを監視します。 。マスターが表示された場合他のノードがマスターノードとの接続を失ったために問題が発生した場合、それらは投票します。投票の半分以上がこのマスターに問題があると見なされ、その後、歩哨室は通知されると、スレーブの1つが新しいマスターとして選択されます。
systemctl stop firewalld
setenforce 0
Redis歩哨モードの構成ファイルを変更します(すべてのノード)
vim /opt/redis-5.0.7/sentinel.conf
protected-mode no #17行,关闭保护模式
port 26379 #21行,Redis哨兵默认的监听端口
daemonize yes #26行,指定sentinel为后台启动
logfile "/var/1og/sentinel.log" #36行,指定日志存放路径
dir "/var/lib/redis/6379" #65行,指定数据库存放路径
sentinel monitor mymaster 192. 168.199.40 6379 2 #84行,修改,指定该哨兵节点监控192.168.199.40:6379这个主节点,该主节点的名称是mymaster,最后的2的含义与主节点的故障判定有关:至少需要2
个哨兵节点同意,才能判定主节点故障并进行故障转移
sentinel down-after-milliseconds mymaster 3000 #113行,判定服务器down掉的时间周期,默认30000毫秒(30秒 )
sentinel failover-timeout mymaster 180000 #146行,故障节点的最大超时时间为180000 (180秒)
センチネルモードをアクティブにする
最初にマスターを開始し、次にスレーブを開始します
cd /opt/redis-5.0.7/
redis-sentinel sentinel.conf &
歩哨情報を見る
redis-cli -p 26379 info sentinel
故障シミュレーション
redis-serverプロセス番号を表示する
ps -ef | grep redis
マスターノードのredisサーバーのプロセスIDを強制終了します
kill -9 8503 #Master节点上redis-server的进程号
redis-cli -p 26379 info sentinel
3、Redisクラスターを構築します
一般的に、redisクラスターには6つのノード、3つのマスター、3つのスレーブが必要です。
便宜上、ここのすべてのノードは同じサーバー上でシミュレートされます。
ポート番号:
3つのマスターノードポート番号:6000/6001/6002、および対応するスレーブノードポート番号:6004/6003/6005で区別されます。
cd /etc/redis/
mkdir -p redis-cluster/redis600{
0..5}
for w in {
0..5}
do
cp /opt/redis-5.0.7/redis.conf /etc/redis/redis-cluster/redis600$w
cp /opt/redis-5.0.7/src/redis-cli /opt/redis-5.0.7/src/redis-server /etc/redis/redis-cluster/redis600$w
done
クラスター機能をオンにする
其他5个文件夹的配置文件以此类推修改,注意6个端口都要不一样。
vim /etc/redis/redis-cluster/redis6000/redis.conf
#bind 127.0.0.1 #69行,注释掉bind项,默认监听所有网卡
protected-mode no #88行,修改,关闭保护模式
port 6000 #92行,修改,redis 监听端口,
daemonize yes #136行,开启守护进程,以独立进程启动
appendonly yes #700行,修改,开启AOF持久化
cluster -enabled yes #832行,取消注释,开启群集功能
cluster-config-file nodes-6379.conf #840行,取消注释,群集名称文件设置
cluster-node-timeout 15000 #846行,取消注释群集超时时间设置
redisノードを開始します
分别进入那六个文件夹,执行命令: redis-server redis.conf,来启动redis节点
cd /etc/redis/redis-cluster/redis6000
redis-server redis.conf
(或使用for循环来启动)
for i in {
0..5}
do
cd /etc/redis/redis-cluster/redis600$i
redis-server redis.conf
done
ps -ef | grep redis
クラスターを開始します
redis-cli --cluster create 127.0.0.1:6000 127.0.0.1:6001 127.0.0.1:6002 127.0.0.1:6002 127.0.0.1:6003 127.0.0.1:6004 127.0.0.1:6005 --cluster-replicas 1
#6つのインスタンスは3つのグループに分けられ、各グループには1つのマスターと1つのスレーブがあり、前面がマスターノード、背面がスレーブノードです。次のインタラクションを作成するには、yesを入力する必要があります。
-レプリカ1は、各マスターノードに1つのスレーブノードがあることを意味します。
redis-cli -p 6000 -c #加-c参数,节点之间就可以互相跳转
cluster slots #查看节点的哈希槽编号范围