ディレクトリ
私たちは、ビルド自立にこれだけテスト環境、環境に一時的なタスクテストとRedisのクラスタ環境を使用するには、テストの必要性が、容易に入手できないを受けました。ホストのハードな乗り心地を開始したいが、サーバーは、私は、ドッキングウィンドウをしようとすることを決めた、そんなに苦しむことはありませんでした。以下は、ビルドに詳細な手順です。
基本的な環境情報
基本的な環境は以下の通り:
CentOSのLinuxのリリース1804年7月5日
ドッカーバージョン18.09.4
以下の操作は、root以外のユーザーならば、コマンドは目の前に追加する必要があり、rootアカウントの動作である須藤
ビルドステップ
- 1、Redisのダウンロードミラー
ドッキングウィンドウプルRedisの
あなたが指定したバージョンを引っ張っする必要がある場合は、あなたが指定されていない場合は、Redisの後にバージョン番号を追加する必要があり、最新バージョンでは、あなたが使用することができ、ミラーを引っ張っドッカ検索はRedisのミラーを検索します
ローカルミラーを確認し、次のコマンドを使用することができるドッキングウィンドウの画像を
- 2、仮想ネットワークカードを作成
主にネットワークの外部と通信することができるRedisのクラスタのために、仮想ネットワークカードの作成、一般にブリッジモードで使用されます。
ドッキングウィンドウのネットワークは、Redisのネットを作成します
表示ドッキングウィンドウのカード情報は、コマンドの使用ドッキングウィンドウネットワークLSを
ネットワークの詳細dockerrビュー、コマンドの使用Redisのネットを検査ドッカネットワークを
- 3、プロファイルテンプレートのRedisのを作成
ます。mkdir -p /ホーム/ Redisのクラスタ
CD /ホーム/ Redisのクラスタ
のvimのRedis-cluster.tmpl
在redis-cluster.tmpl中输入以下内容
port ${PORT}
cluster-enabled yes
cluster-config-file nodes.conf
cluster-node-timeout 5000
cluster-announce-ip 192.168.168.131
cluster-announce-port ${PORT}
cluster-announce-bus-port 1${PORT}
appendonly yes
各节点解释如下所示:
- port:节点端口,即对外提供通信的端口
- cluster-enabled:是否启用集群
- cluster-config-file:集群配置文件
- cluster-node-timeout:连接超时时间
- cluster-announce-ip:集群各节点IP地址
- cluster-announce-port:集群节点映射端口
- cluster-announce-bus-port:集群总线端口
- appendonly:持久化模式
cluster-announce-ip:这个IP需要特别注意一下,如果要对外提供访问功能,需要填写宿主机的IP,如果填写docker分配的IP(172.x.x.x),可能会导致部分集群节点在跳转时失败。
- 4、创建节点配置文件
在redis-cluser中执行以下命令
for port in $(seq 8010 8015); \
do \
mkdir -p ./${port}/conf \
&& PORT=${port} envsubst < ./redis-cluster.tmpl > ./${port}/conf/redis.conf \
&& mkdir -p ./${port}/data; \
done
验证上述命令执行的结果是否正确
- 5、创建redis节点容器
执行以下命令即可
for port in $(seq 8010 8015); \
do \
docker run -it -d -p ${port}:${port} -p 1${port}:1${port} \
--privileged=true -v /home/redis-cluster/${port}/conf/redis.conf:/usr/local/etc/redis/redis.conf \
--privileged=true -v /home/redis-cluster/${port}/data:/data \
--restart always --name redis-${port} --net redis-net \
--sysctl net.core.somaxconn=1024 redis redis-server /usr/local/etc/redis/redis.conf; \
done
验证容器是否创建成功
查看docker给每个节点分配的IP信息
- 6、创建redis-cluster集群
进入一个容器节点
docker exec -it redis-8010 bash
在进入容器后,执行以下命令:
cd /usr/local/bin/
redis-cli --cluster create 192.168.168.131:8010 192.168.168.131:8011 192.168.168.131:8012 192.168.168.131:8013 192.168.168.131:8014 192.168.168.131:8015
出现选择提示信息,输入yes,结果如下所示:
- 7、连接redis-cluster,并添加数据到redis
在节点8010中输入以下命令
redis-cli -c -h 192.168.168.131 -p 8010
- 8、验证集群是否可以任意地方访问
以下验证是基于Windows版本的redis。其下载地址如下:
在Windows中验证的结果如下所示:
搭建中遇到的问题
- 1、所有都搭建完成后,在创建redis-cluster时一直报错
192.168.168.131:8010でのRedisに接続しませんでした:ホストへのルートを
这个原因是因为宿主机的防火墙未关,导致相应的端口被阻止,创建的时候临时关闭防火墙,后面再允许相应的端口即可。
- 2.あなたは成功しRedisのクラスタを作成した後、あなたが正常に接続できますが、値は、の最終的な出現につながる、ジャンプしてきたばかりTTL排気
- >リダイレクトスロットに[15495] 172.18.0.7:8015位置
这种情况通常是因为在前面写配置文件,将cluster-announce-ip写成了docker分配的IP,只需要将该IP换为宿主机的IP即可。
その他の参照情報
ビルドプロセスでは、問題が発生する可能性の後、あなたが停止または削除ドッキングウィンドウコンテナに必要な、次のコマンドを使用することができます
バッチストップドッキングウィンドウコンテナ:
ドッキングウィンドウのps -a | grep -i "のRedis-801 *" | awkは '{$ 1印刷}' | xargsのドッキングウィンドウの停止
一括削除ドッキングウィンドウコンテナ:
ドッキングウィンドウのps -a | grep -i "のRedis-801 *" | awkは '{$ 1印刷}' | xargsのドッキングウィンドウのrm -f
バッチファイルの削除
801 {0..5} /conf/redis.conf -rf RM
これらは、ドッカーRedisのクラスタ構造の単純なステップに基づいて、実用的なアプリケーションでは、物品は、参考のためにそれほど単純でないかもしれません。