Dockerを使用してredisクラスタを構築し,親測定が利用可能である.2018-06

3564 ワード

転載:https://www.cnblogs.com/lianggp/articles/8136222.html前言
redisクラスタは多くの人にとって非常によく知られています.先日、私もある兄弟がアリクラウド(centOS 7)上にredisクラスタを構築することについての文章を発表しました.クラスタ構築の文章はネット上にたくさんありますが、私がこの文章が好きなのは彼が構築過程で、他の人が指摘していない問題に直面することを指摘したことです.
ここでは、アリクラウド(centOS 7)redisクラスタ構築に関する記事を皆さんにお伝えしますが、今回の構築はdocker上に構築されたredisクラスタとは異なります.
ツールの準備
一、dockerをインストールする(公式サイトから)
1、インストールに必要なパッケージ
$sudo yum install-y yum-utilsdevice-mapper-persistent-datalvm 2 2 2、次のコマンドを使用して安定したリポジトリを設定します.
$ sudo yum-config-manager\ –add-repo\ https://download.docker.com/linux/centos/docker-ce.repo3、docker ce(dockerコミュニティ版)のインストール
$sudo yum install docker-ce 4、dockerの起動
$ sudo systemctl start docker
二、dockerライブラリでredisミラーを取得する(2017-12-28現在、最新版は4.0.6)
$ docker pull redis
三、dockerライブラリでrubyミラーを取得する
$docker pull rubyこれで、docker上のredis clusterのすべてのツールの準備が完了しました.コマンドラインにdocker imagesを入力すると、インストールされているミラーが表示されます(注:mysqlとnginxはこのチュートリアルには関係ありません).
ビルド
一、redis容器の作成
1、redisプロファイルの作成(redis-cluster.tmpl)
パス/homeの下にフォルダredis-clusterを作成し、パス/home/redis-clusterの下にファイルredis-clusterを作成します.tmplは、以下の内容をコピーします.(注:パスはカスタマイズ可能で、私は/home/redis-clusterを使用しています)
port PORTprotected−modenocluster−enabledyescluster−config−filenodes.confcluster−node−timeout5000cluster−announce−ip39.10X.XX.XX//自己サーバIPcluster-announce-port P O R T p r o t e c t e d-m o d e n o c l u s t e r-e n a b l e d y e s c l u s t e r-c o n f i l e n o d s.c o n f c l u s t e r − n o d e − t i m e o u t 5000 c l u s t e r − a n n o u n c e − i p 39.10 X . X X . X X//自己サーバI P c l u s t e r−a n o u n c e−p o r t{PORT}cluster−announce−bus−port 1${PORT}appendonly yesコマンドで表示
$ cat/home/redis-cluster/redis-cluster.tmpl
2、カスタムnetworkの作成
$docker network create redis-net 3、/home/redis-clusterの下でconfとdataターゲットを生成し、構成情報を生成
$ for port in seq 7000 7005 ; do\ mkdir -p ./{port}/conf \    && PORT= {port}/conf \    && PORT= {port} envsubst < ./redis-cluster.tmpl > ./{port}/conf/redis.conf \    && mkdir -p ./{port}/conf/redis.conf \    && mkdir -p ./{port}/data;\ done
合計6つのフォルダを生成し、7000から7005まで、各フォルダの下にdataとconfフォルダが含まれ、confにはredisがある.confプロファイル
4、6個のredis容器を作成する
$ for port in seq 7000 7005 ; do\ docker run -d -ti -p port: p o r t : {port} -p 1 port:1 p o r t : 1 {port}\ -v/home/redis-cluster/port/conf/redis.conf:/usr/local/etc/redis/redis.conf −v/home/redis−cluster/ p o r t/c o n f/r e d i s . c o n f :/u s r/l o c a l/e t c/r e d i s/r e d i s . c o n f   − v/h o m e/r e d i s − c l u s t e r/{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これで、生成したばかりの6つのコンテナ情報をdocker psにコマンドして表示できます.
二、クラスター
rubyを起動することでクラスタを実現
$ echo yes | docker run -i –rm –net redis-net ruby sh -c ‘\ gem install redis\ && wget http://download.redis.io/redis-stable/src/redis-trib.rb\ && ruby redis-trib.rb create –replicas 1\ ‘”$(for port in seq 7000 7005 ; do\ echo -n “(dockerinspect−−format′(index.NetworkSettings.Networks"redis−net").IPAddress′"redis− ( d o c k e r i n s p e c t − − f o r m a t ′ ( i n d e x . N e t w o r k S e t t i n g s . N e t w o r k s "r e d i s − n e t ") . I P A d d r e s s ′ "r e d i s − {port}”)”:${port} ’ ’ ;\ done)」コマンドを入力すると、クラスタが成功したことを示す次の情報が得られます.
注意点
1.注意redis構成情報の経路
2、以上のコードはcentOSコマンドラインに入力されている
3、アリクラウドにセキュリティグループを追加するには、7000-7005ポートのほか、17000-17005ポートを開放する.