コンテナテクノロジーのdocker導入redis clusterクラスタ
5605 ワード
環境準備:CentOS 7
3台の仮想マシン:redisクラスタが高いため、ここでは6つのノードを構成します.1台につき2つのノードを配置します.ipとポートはそれぞれ:
192.168.1.103:6379
192.168.1.103:6380
192.168.1.106:6379
192.168.1.106:6380
192.168.1.1076379
192.168.1.107:6380
1.dockerインストール
前にまとめたブログを見てみましょう.
https://blog.csdn.net/weixin_41645232/article/details/104578306
2.redisミラーを引き抜く
3.redis環境準備(この手順は3台の操作が同じで、ここでは192.168.1.1.1107を例に挙げます.)
3.1 redis構成ディレクトリの作成、およびdockerコンテナのバックアップおよび起動のためのデータリングディレクトリのマッピング
3.2 redisプロファイル、実際の生産はredisソースの中のredisをダウンロードすることができる.confは、ここではテストを構築するだけなので、簡単に実行できるパラメータを直接構成します.
3.3 docker-redisコンテナ起動スクリプト
3.4 redis-6379コンテナの起動を実行する
ここで192.168.1.1.1107のredis-6379が起動しました.構成を変更して、ローカルの2台目のredis-6380を起動するだけです.
3.5レプリケーション修正redis-6380起動
3.6 redis-6380の起動
4.192.168.1.1.1107の手順に従って、192.168.1.1.1103と192.168.1.1106で同様に動作する.
5.以上の手順でredisサービスはすべて開始されたが、クラスタモードはまだ本格的に開始されていない.次にredisコンテナに勝手に入り、ここでは192.168.1.1.1107を例に操作してクラスタモードをオンにします.
コマンドはプロシージャを表示します(主にプライマリスレーブノードとハッシュスロットを割り当てるプロシージャで、途中でyesを入力します).
6.テスト
set keyが他のノードにリダイレクトして格納できることを証明した場合、ここでカードredisクライアントが-cを追加してクラスタモードに入ることに注意してください.そうしないと、1つのkeyが他のノードに格納する必要がある場合、他のノードに移動できないとエラーが発生します.
3台の仮想マシン:redisクラスタが高いため、ここでは6つのノードを構成します.1台につき2つのノードを配置します.ipとポートはそれぞれ:
192.168.1.103:6379
192.168.1.103:6380
192.168.1.106:6379
192.168.1.106:6380
192.168.1.1076379
192.168.1.107:6380
1.dockerインストール
前にまとめたブログを見てみましょう.
https://blog.csdn.net/weixin_41645232/article/details/104578306
2.redisミラーを引き抜く
#
docer pull redis
3.redis環境準備(この手順は3台の操作が同じで、ここでは192.168.1.1.1107を例に挙げます.)
3.1 redis構成ディレクトリの作成、およびdockerコンテナのバックアップおよび起動のためのデータリングディレクトリのマッピング
#
mkdir -p /opt/redis/redis-6379/conf
mkdir -p /opt/redis/redis-6379/data
3.2 redisプロファイル、実際の生産はredisソースの中のredisをダウンロードすることができる.confは、ここではテストを構築するだけなので、簡単に実行できるパラメータを直接構成します.
#
cd /opt/redis/redis-6379/conf
vim ./redis.conf
#
port 6379 #
cluster-enabled yes #
cluster-config-file nodes.conf #
cluster-node-timeout 5000 #
cluster-announce-ip 192.168.1.107 # redis ip
cluster-announce-port 6379 #
cluster-announce-bus-port 16379 #
appendonly yes #
3.3 docker-redisコンテナ起動スクリプト
# cd redis-6379
cd /opt/redis/redis-6379
#
vim ./redis-6379-start.sh
#
#!/bin/bash
docker run -d -ti \
--privileged=true -v /opt/redis/redis-6379/conf/redis.conf:/usr/local/etc/redis/redis.conf \
--privileged=true -v /opt/redis/redis-6379/data:/data \
--restart always --name redis-6379 --net host \
--sysctl net.core.somaxconn=1024 redis redis-server /usr/local/etc/redis/redis.conf
#
chmod a+u ./redis-6379-start.sh
3.4 redis-6379コンテナの起動を実行する
./redis-6379-start.sh
ここで192.168.1.1.1107のredis-6379が起動しました.構成を変更して、ローカルの2台目のredis-6380を起動するだけです.
3.5レプリケーション修正redis-6380起動
# cd /opt/redis , redis-6379
cd /opt/redis
cp -r ./redis-6379 ./redis-6380
# redis.conf
port 6380 #
cluster-announce-ip 192.168.1.107 #
cluster-announce-port 6380#
cluster-announce-bus-port 16380 #
#
6379 6380 ,
3.6 redis-6380の起動
#
mv ./redis-6379-start.sh ./redis-6380-start.sh
#
./redis-6380-start.sh
4.192.168.1.1.1107の手順に従って、192.168.1.1.1103と192.168.1.1106で同様に動作する.
5.以上の手順でredisサービスはすべて開始されたが、クラスタモードはまだ本格的に開始されていない.次にredisコンテナに勝手に入り、ここでは192.168.1.1.1107を例に操作してクラスタモードをオンにします.
# redis-6379
docker exec -it redis-6379 bash
#
redis-cli --cluster create 192.168.1.107:6379 192.168.1.107:6380 192.168.1.103:6379 192.168.1.103:6380 192.168.1.106:6379 192.168.1.106:6380 --cluster-replicas 1
コマンドはプロシージャを表示します(主にプライマリスレーブノードとハッシュスロットを割り当てるプロシージャで、途中でyesを入力します).
>>> 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.1.103:6380 to 192.168.1.107:6379
Adding replica 192.168.1.106:6380 to 192.168.1.103:6379
Adding replica 192.168.1.107:6380 to 192.168.1.106:6379
M: e8aef9ed8e05b38f8bc65879bd30a825b306c7b6 192.168.1.107:6379
slots:[0-5460] (5461 slots) master
S: 66559e06fefa1e6aa4c73f6141addc750df16406 192.168.1.107:6380
replicates 3baa5bc431925f1099561bc82355c992e19c42f8
M: d7d899e9ad644e86641f82bb97adf2f7f7ff8214 192.168.1.103:6379
slots:[5461-10922] (5462 slots) master
S: 7ec346484effbe562ea0bf3e40ed9e9538b973b7 192.168.1.103:6380
replicates e8aef9ed8e05b38f8bc65879bd30a825b306c7b6
M: 3baa5bc431925f1099561bc82355c992e19c42f8 192.168.1.106:6379
slots:[10923-16383] (5461 slots) master
S: fe233c5c139ea7bb7c2b91c94b8efd6d6f592096 192.168.1.106:6380
replicates d7d899e9ad644e86641f82bb97adf2f7f7ff8214
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.1.107:6379)
M: e8aef9ed8e05b38f8bc65879bd30a825b306c7b6 192.168.1.107:6379
slots:[0-5460] (5461 slots) master
1 additional replica(s)
M: d7d899e9ad644e86641f82bb97adf2f7f7ff8214 192.168.1.103:6379
slots:[5461-10922] (5462 slots) master
1 additional replica(s)
S: 7ec346484effbe562ea0bf3e40ed9e9538b973b7 192.168.1.103:6380
slots: (0 slots) slave
replicates e8aef9ed8e05b38f8bc65879bd30a825b306c7b6
S: 66559e06fefa1e6aa4c73f6141addc750df16406 192.168.1.107:6380
slots: (0 slots) slave
replicates 3baa5bc431925f1099561bc82355c992e19c42f8
M: 3baa5bc431925f1099561bc82355c992e19c42f8 192.168.1.106:6379
slots:[10923-16383] (5461 slots) master
1 additional replica(s)
S: fe233c5c139ea7bb7c2b91c94b8efd6d6f592096 192.168.1.106:6380
slots: (0 slots) slave
replicates d7d899e9ad644e86641f82bb97adf2f7f7ff8214
[OK] All nodes agree about slots configuration.
>>> Check for open slots...
>>> Check slots coverage...
[OK] All 16384 slots covered.
6.テスト
set keyが他のノードにリダイレクトして格納できることを証明した場合、ここでカードredisクライアントが-cを追加してクラスタモードに入ることに注意してください.そうしないと、1つのkeyが他のノードに格納する必要がある場合、他のノードに移動できないとエラーが発生します.
[root@localhost redis-6380]# docker exec -it redis-6379 redis-cli -c
127.0.0.1:6379> keys *
(empty list or set)
127.0.0.1:6379> set name whf
-> Redirected to slot [5798] located at 192.168.1.103:6379
OK
192.168.1.103:6379> set age 19
-> Redirected to slot [741] located at 192.168.1.107:6379
OK