マスタースレーブ複製
-
wegtをインストールする
yum -y install wget
-
redis設定ファイルをダウンロード
wget http://download.redis.io/redis-stable/redis.conf
-
そして、3つのコピーを作成します。2つは従属で、1つは主に
[root@localhost conf]# ls redis.conf redis-master.conf redis-slave1.conf redis-slave2.conf
-
構成ファイルを変更する
-
ホスト構成ファイル
# 允许所有IP访问Redis bind 0.0.0.0
-
2つのスレーブ構成ファイル
# 允许所有IP访问Redis bind 0.0.0.0 # 设置主机的地址:IP 端口。接下去通过--lin进行地址解析,docker自动将master解析为地址 replicaof master 6379
ヒント:2番目の構成も構成ファイル
slaveof master 6379
で指定できませんが、コマンドをredis0-cli に入力しますが、スレーブが再起動するたびに、コマンドを再入力してホストを指定する必要があります
-
-
コンテナーを起動する
-
ホスト
docker run --name redis-master \ -v /mydata/redis-test/conf/redis-master.conf:/usr/local/etc/redis/redis.conf \ -d redis redis-server /usr/local/etc/redis/redis.conf
-
スレーブ1
docker run --name redis-slave1 \ -v /mydata/redis-test/conf/redis-slave1.conf:/usr/local/etc/redis/redis.conf \ --link redis-master:master \ -d redis redis-server /usr/local/etc/redis/redis.conf
-
スレーブ2
docker run --name redis-slave2 \ -v /mydata/redis-test/conf/redis-slave2.conf:/usr/local/etc/redis/redis.conf \ --link redis-master:master \ -d redis redis-server /usr/local/etc/redis/redis.conf
-
-
Redisマスタースレーブステータスの表示
进入哨兵容器 docker exec -it 容器名/容器ID redis-cli 查看主从状态 info replication
--link
:--link 关联容器名/关联容器ID:alias
。その中でも、エイリアスはリンクの下のソースコンテナのエイリアスです。
この方法では、Dockerが自動的にDNS解決を実行するため、コンテナーはエイリアスまたは関連付けられたコンテナー名(関連付けられたコンテナーID)を介して通信できます。
センチネルモード
単一の歩哨
-
センチネル構成ファイルをダウンロード
wget http://download.redis.io/redis-stable/sentinel.conf
-
構成ファイルを変更する
sentinel.conf
# 参数说明:mymaster:哨兵名称;master 6379:被监控主机IP和端口;1:执行故障恢复操作前至少需要几个哨兵节点同意 # 因为当前只配了一个哨兵,所以设为1,一般以一主二仆要配置三个哨兵,那么最后一个值就配为2 sentinel monitor mymaster master 6379 1 # 配置日志文件,默认会在容器/data下,如果不需要可以不管 logfile "sentinel.log"
-
歩哨の実行
docker run --name redis-sentinel \ -v /mydata/redis-test/conf/sentinel.conf:/usr/local/etc/redis/sentinel.conf \ --link redis-master:master \ -d redis redis-sentinel /usr/local/etc/redis/sentinel.conf
上記の方法は、センチネルが1つしかない状況での使用です。現時点では、センチネルもダウンしている可能性があり、回復に失敗します。
マルチセンチネル
次のデモは3つの歩哨を構成します
-
センチネル構成ファイルをダウンロード
wget http://download.redis.io/redis-stable/sentinel.conf
-
構成ファイルを変更する
# 关闭安全模式 protected-mode no # 最后一个值修改为2,即需要两个哨兵节点投票同意才能故障恢复 sentinel monitor mymaster master 6379 2
-
3つのコピーを作成
[root@localhost conf]# ls sentinel1.conf sentinel2.conf sentinel3.conf
-
3つの歩哨コンテナを起動する
docker run --name redis-sentinel1 \ -v /mydata/redis-test/conf/sentinel1.conf:/usr/local/etc/redis/sentinel.conf \ --link redis-master:master \ -d redis redis-sentinel /usr/local/etc/redis/sentinel.conf
docker run --name redis-sentinel2 \ -v /mydata/redis-test/conf/sentinel2.conf:/usr/local/etc/redis/sentinel.conf \ --link redis-master:master \ --link redis-sentinel1:sentinel \ -d redis redis-sentinel /usr/local/etc/redis/sentinel.conf
docker run --name redis-sentinel3 \ -v /mydata/redis-test/conf/sentinel3.conf:/usr/local/etc/redis/sentinel.conf \ --link redis-master:master \ --link redis-sentinel2:sentinel \ -d redis redis-sentinel /usr/local/etc/redis/sentinel.conf
最後の2つのコンテナーには、より多くの構成と前の番兵が必要であることに注意してください
--link
。そうでなければ、番兵は通信できません。 -
歩哨の動作を確認する
# 进入哨兵容器 docker exec -it 哨兵容器名/哨兵容器ID bash # 进入哨兵 redis-cli -p 26379 # 查看哨兵运行情况 info sentinel