コンテナテクノロジーの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ミラーを引き抜く
#             
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