dockerを使用してredisマスターを構築する

4793 ワード

一、Docker環境の構築
1、dockerfileの作成
FROM centos:latest
RUN groupadd -r redis && useradd  -r -g redis redis
RUN yum -y update &&  yum -y install epel-release && yum -y install redis && yum -y install net-tools
EXPOSE 6379

2、ミラーの構築
docker build -t docker-test .

3、現在のミラーの表示
docker iamges
REPOSITORY    TAG         IMAGE ID        CREATED             SIZE
docker-test   latest      ccebd30e466a    12 minutes ago      396MB
centos        latest      470671670cac    7 weeks ago         237MB

4、dockerのデフォルトのネットワークタイプを表示する
docker network ls
NETWORK ID          NAME                DRIVER              SCOPE
a43e79987e98        bridge              bridge              local
6b73067403dc        host                host                local
b8ad4981e57e        none                null                local


5、カスタムネットワークタイプの作成
docker network create  --subnet=172.10.0.0/16  haveyb-network

二、Redis主従を構築する
1.redis-masterコンテナの作成
docker run -itd --name  redis-master  --net haveyb-network  -p 6380:6379  --ip 172.10.0.2  docker-test

パラメータの説明:
-i:コンテナをインタラクティブモードで実行し、通常は-tと同時に使用します.
-t:コンテナに偽入力端末を再割り当てし、通常-iと同時に使用する
-d:バックグラウンドでコンテナを実行し、コンテナIDを返す.
--name:作成したコンテナに名前を付けます
--net:ネットワークモードを指定します(ここでは先ほど作成したカスタムネットワークモードを指定します)
-p:ポートマッピング、フォーマット:ホスト(ホスト)ポート:コンテナポート
--ip:容器に固定されたipを作成
後で使用するミラーを指定します(ここでは先ほど作成したミラーdocker-testを使用します)
2、運転中のコンテナの表示
docker ps -a
CONTAINER ID       IMAGE          COMMAND             CREATED
dc9344bbd25f     docker-test     "/bin/bash"          2 minutes ago

STATUS           PORTS                         NAMES
Up 2 minutes     0.0.0.0:6380->6379/tcp        redis-master

注意:あるネットワークの下のコンテナのipアドレスを表示します.
docker network inspect haveyb-network

3、redis-slave 1、redis-slave 2コンテナの作成
docker run -itd --name  redis-slave1  --net haveyb-network  -p 6381:6379  --ip 172.10.0.3  docker-test

docker run -itd --name  redis-slave2  --net haveyb-network  -p 6382:6379  --ip 172.10.0.4  docker-test

4、redis-master容器の配置
(1)redis-master容器へ
docker exec -it redis-master bash

注:容器`exit`を終了する
 
(2)redisを修正する.confプロファイル
vi /etc/redis.conf

(3)パラメータbind 127.0を修正する.0.1は0.0である.0.0
bind 0.0.0.0

(4)マスターredisパスワードの設定
requirepass YourPasswordSettings

(5)マスタredisの起動
redis-server /etc/redis.conf &

(6)redis-cli
redis-cli
auth yourPasswordSettings

5、redis-slave 1の構成
(1)redis-slave 1容器へ
docker exec -it redis-slave1 bash

(2)redisを修正する.confプロファイル
vi /etc/redis.conf

(3)パラメータbind 127.0を修正する.0.1は0.0である.0.0
bind 0.0.0.0

(4)マスターauthを設定し、以下のコードを追加する(マスターredisがパスワードを設定した後、redisから接続するにはこのパラメータチェックが必要)
masterauth yourPasswordSettings

(5)slabeofの設定(メインredisのipとportの設定)
slaveof 172.10.0.2 6379

(5)redisから起動
redis-server /etc/redis.conf &

(6)redisクライアント
redis-cli

6、redis-slave 2の構成
同じ構成redis-slave 1
7.redis-cliで‘info replication’を実行して主従情報を表示することができる
 redis-master
127.0.0.1:6379> info replication
# Replication
role:master
connected_slaves:2
slave0:ip=172.10.0.3,port=6379,state=online,offset=3105,lag=1
slave1:ip=172.10.0.4,port=6379,state=online,offset=3105,lag=1
master_replid:a3a43b1957bc5b9f18cb3004301990085e49b0d1
master_replid2:0000000000000000000000000000000000000000
master_repl_offset:3105
second_repl_offset:-1
repl_backlog_active:1
repl_backlog_size:1048576
repl_backlog_first_byte_offset:1
repl_backlog_histlen:3105
127.0.0.1:6379> 


redis-slave1
127.0.0.1:6379> info replication 
# Replication
role:slave
master_host:172.10.0.2
master_port:6379
master_link_status:up
master_last_io_seconds_ago:1
master_sync_in_progress:0
slave_repl_offset:3203
slave_priority:100
slave_read_only:1
connected_slaves:0
master_replid:a3a43b1957bc5b9f18cb3004301990085e49b0d1
master_replid2:0000000000000000000000000000000000000000
master_repl_offset:3203
second_repl_offset:-1
repl_backlog_active:1
repl_backlog_size:1048576
repl_backlog_first_byte_offset:1
repl_backlog_histlen:3203
127.0.0.1:6379> 


8、redis-masterにkeyを書き込み、redis-slave 1とredis-slave 2はすでに入手可能