Dockerはredisマスターモードを構築する(簡単版)

14449 ワード

1)dockerのrpmパケットをLinuxにアップロードしてdockerをインストールしてミラー加速を設定する
[root@192 ~]# yum localinstall docker-ce-18.06.3.ce-3.el7.x86_64.rpm 
     :fastestmirror
     docker-ce-18.06.3.ce-3.el7.x86_64.rpm: docker-ce-18.06.3.ce-3.el7.x86_64


アップロードを加速jsonは/etc/dockerディレクトリの下にあります.
[root@192 ~]# mkdir /etc/docker
[root@192 ~]# vi /etc/docker/daemon.json
[root@192 ~]# cat /etc/docker/daemon.json 
{
  "registry-mirrors": ["https://mzxx8xy8.mirror.aliyuncs.com"]
}


ファイアウォールを閉じてdockerを起動
[root@192 ~]# systemctl stop firewalld
[root@192 ~]# setenforce 0
[root@192 ~]# systemctl daemon-reload
[root@192 ~]# systemctl restart docker
[root@192 ~]# 



2)redisミラーを検索し、検索ミラーを引き抜く:
[root@192 ~]# docker search redis
NAME                             DESCRIPTION                                     STARS               OFFICIAL            AUTOMATED
redis                            Redis is an open source key-value store that…   8260                [OK]                
bitnami/redis                    Bitnami Redis Docker Image                      147                                     [OK]
sameersbn/redis                                                                  80                                      [OK]
grokzen/redis-cluster            Redis cluster 3.0, 3.2, 4.0, 5.0, 6.0           68                                      
rediscommander/redis-commander   Alpine image for redis-commander - Redis man…   40                                      [OK]
kubeguide/redis-master           redis-master with "Hello World!"                31                                      
redislabs/redis                  Clustered in-memory database engine compatib…   25                                      
redislabs/redisearch             Redis With the RedisSearch module pre-loaded…   23                                      
oliver006/redis_exporter          Prometheus Exporter for Redis Metrics. Supp…   21                                      
arm32v7/redis                    Redis is an open source key-value store that…   21                                      
bitnami/redis-sentinel           Bitnami Docker Image for Redis Sentinel         14                                      [OK]
webhippie/redis                  Docker images for Redis                         12                                      [OK]
redislabs/redisgraph             A graph database module for Redis               11                                      [OK]
s7anley/redis-sentinel-docker    Redis Sentinel                                  10                                      [OK]
insready/redis-stat              Docker image for the real-time Redis monitor…   9                                       [OK]
arm64v8/redis                    Redis is an open source key-value store that…   9                                       
redislabs/redisinsight           RedisInsight - The GUI for Redis                7                                       
redislabs/redismod               An automated build of redismod - latest Redi…   7                                       [OK]
centos/redis-32-centos7          Redis in-memory data structure store, used a…   5                                       
circleci/redis                   CircleCI images for Redis                       4                                       [OK]
clearlinux/redis                 Redis key-value data structure server with t…   2                                       
runnable/redis-stunnel           stunnel to redis provided by linking contain…   1                                       [OK]
tiredofit/redis                  Redis Server w/ Zabbix monitoring and S6 Ove…   1                                       [OK]
wodby/redis                      Redis container image with orchestration        1                                       [OK]
xetamus/redis-resource           forked redis-resource                           0                                       [OK]
[root@192 ~]# 


redisミラーを引き抜く
[root@192 ~]# docker pull redis
Using default tag: latest
latest: Pulling from library/redis
8559a31e96f4: Pull complete 
85a6a5c53ff0: Pull complete 
b69876b7abed: Pull complete 
1f590ddd7edb: Pull complete 
e28bb38e9c0d: Pull complete 
eb4bcff1416b: Pull complete 
Digest: sha256:9217de21e5fe15ed5417768670ba8bec79f9fd9418456bcfa6d54979e53be1d7
Status: Downloaded newer image for redis:latest
[root@192 ~]# 


3)システムの現在のミラーの表示
[root@192 ~]# docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
redis               latest              c349430fd524        12 hours ago        104MB
[root@192 ~]# 


4)redis-serverコンテナを実行し、持続的な構成を行う
[root@192 ~]# docker run --name redis1 -d -p 6379:6379 -v /opt/redis1:/data redis
e2a0dd909fdadb1d2fe08f410f89dff3845152a2e495a249ad142cb93cf29062
[root@192 ~]# docker run --name redis2 -d -p 6380:6379 -v /opt/redis2:/data redis
838b7c9932d8d3a0c4b2e459bd95f09549693471366801efa9513a75089421d0
[root@192 ~]# docker run --name redis3 -d -p 6381:6379 -v /opt/redis2:/data redis
433372a0f1d0156f2536ab03e8127d7e8af56039bf0100780447dbbc5dff1afc
[root@192 ~]# 


5)dockerは3つのredisコンテナサービスを開始し、6379-6381の3つのポートを使用する
[root@192 ~]# docker ps
CONTAINER ID        IMAGE               COMMAND                  CREATED              STATUS              PORTS                    NAMES
433372a0f1d0        redis               "docker-entrypoint.s…"   About a minute ago   Up About a minute   0.0.0.0:6381->6379/tcp   redis3
838b7c9932d8        redis               "docker-entrypoint.s…"   2 minutes ago        Up 2 minutes        0.0.0.0:6380->6379/tcp   redis2
e2a0dd909fda        redis               "docker-entrypoint.s…"   2 minutes ago        Up 2 minutes        0.0.0.0:6379->6379/tcp   redis1


6)dockerコンテナ内に入って現在のredisロールを表示する
[root@192 ~]# docker exec -it redis1 redis-cli
127.0.0.1:6379> role
1) "master"
2) (integer) 0
3) (empty array)
127.0.0.1:6379> 


7)redisクラスタを構成し,1つのプライマリとセカンダリは我々がredis 1をプライマリとし,redis 2とredis 3は登録redis 2から
[root@192 ~]# docker exec -it redis2 redis-cli


同期の構成
127.0.0.1:6379> slaveof 192.168.237.129 6379
OK
127.0.0.1:6379> ROLE
1) "slave"
2) "192.168.237.129"
3) (integer) 6379
4) "connected"
5) (integer) 14
127.0.0.1:6379> 


redis 3にログインして同じ操作をします
[root@192 ~]# docker exec -it redis3 redis-cli


同期redis 1操作の実行
127.0.0.1:6379> slaveof 192.168.237.129 6379
OK
127.0.0.1:6379> role
1) "slave"
2) "192.168.237.129"
3) (integer) 6379
4) "connected"
5) (integer) 224
127.0.0.1:6379> 


8)redis 1にキー値ペアを作成することに成功したかどうかをテストする
[root@192 ~]# docker exec -it redis1 redis-cli
127.0.0.1:6379> set name tomcat
OK
127.0.0.1:6379> 


redis 2とredis 3で同期に成功したかどうかを確認します
[root@192 ~]# docker exec -it redis2 redis-cli
127.0.0.1:6379> get name
"tomcat"
127.0.0.1:6379> exit
[root@192 ~]# docker exec -it redis3 redis-cli
127.0.0.1:6379> get name
"tomcat"
127.0.0.1:6379> 


データの同期に成功しました.構築完了