Docker container deploys redis cluster cluster

This article is a redis cluster built on a server

1.Install docker

Close firewall

# setenforce 0

# systemctl stop firewalld

# systemctl disable firewalld

# sed -i "s/SELINUX=enforcing/SELINUX=disabled/g" /etc/selinux/config

# yum -y install docker-ce

Start docker

# systemctl start docker

# systemctl enable docker

# curl -L https://get.daocloud.io/docker/compose/releases/download/1.25.0/docker-compose-u `name -s-uname -m `> /usr/local/bin/docker-compose

# chmod +x /usr/local/bin/docker-compose

2. In the same directory, add the following files

# vim cluster.sh

#!/bin/bash

BASEPATH='/usr/local/redis'         #redis节点数据和配置文件存放路径

IP=192.168.184.128          #修改为环境对应地址

docker pull redis:5.0.3        #redis镜像版本

for i in `seq 7001 7006`        #redis节点端口范围

do

 mkdir -p $BASEPATH/${i}/data/

 mkdir -p $BASEPATH/${i}/config/

 cp ./redis.conf $BASEPATH/${i}/config/

 sed -i "s/port 6379/port ${i}/" $BASEPATH/${i}/config/redis.conf

 echo "cluster-announce-ip $IP" >> $BASEPATH/${i}/config/redis.conf

 echo "cluster-announce-port ${i}" >> $BASEPATH/${i}/config/redis.conf

 echo "cluster-announce-bus-port 1${i}" >> $BASEPATH/${i}/config/redis.conf

done

cp docker-compose.yml redis-cli $BASEPATH/

cd $BASEPATH

docker-compose up -d

chmod u+x redis-cli

./redis-cli -h $IP -p 7001 --cluster create $IP:7001 $IP:7002 $IP:7003 $IP:7004 $IP:7005 $IP:7006 --cluster-replicas 1        #创建redis集群

# vim docker-compose.yml

version: '3'

services:

 redis1:

  image: redis:5.0.3

  restart: always  

  container_name: redis1

  volumes:

   - ./7001/config/redis.conf:/etc/redis/redis.conf

   - ./7001/data:/data

  environment:

   - TZ=Asia/Shanghai

   - LANG=en_US.UTF-8

  ports:

    - '7001:7001'

    - '17001:17001'

  command: ["redis-server", "/etc/redis/redis.conf"]

  privileged: true

  



 redis2:

  image: redis:5.0.3

  restart: always

  container_name: redis2

  volumes:

   - ./7002/config/redis.conf:/etc/redis/redis.conf

   - ./7002/data:/data

  environment:

   - TZ=Asia/Shanghai

   - LANG=en_US.UTF-8

  ports:

    - '7002:7002'

    - '17002:17002'

  command: ["redis-server", "/etc/redis/redis.conf"]

  privileged: true



 redis3:

  image: redis:5.0.3

  restart: always

  container_name: redis3

  volumes:

   - ./7003/config/redis.conf:/etc/redis/redis.conf

   - ./7003/data:/data

  environment:

   - TZ=Asia/Shanghai

   - LANG=en_US.UTF-8

  ports:

    - '7003:7003'

    - '17003:17003'

  command: ["redis-server", "/etc/redis/redis.conf"]

  privileged: true



 redis4:

  image: redis:5.0.3

  restart: always

  container_name: redis4

  volumes:

   - ./7004/config/redis.conf:/etc/redis/redis.conf

   - ./7004/data:/data

  environment:

   - TZ=Asia/Shanghai

   - LANG=en_US.UTF-8

  ports:

    - '7004:7004'

    - '17004:17004'

  command: ["redis-server", "/etc/redis/redis.conf"]

  privileged: true



 redis5:

  image: redis:5.0.3

  restart: always

  container_name: redis5

  volumes:

   - ./7005/config/redis.conf:/etc/redis/redis.conf

   - ./7005/data:/data

  environment:

   - TZ=Asia/Shanghai

   - LANG=en_US.UTF-8

  ports:

    - '7005:7005'

    - '17005:17005'

  command: ["redis-server", "/etc/redis/redis.conf"]

  privileged: true  



 redis6:

  image: redis:5.0.3

  restart: always

  container_name: redis6

  volumes:

   - ./7006/config/redis.conf:/etc/redis/redis.conf

   - ./7006/data:/data

  environment:

   - TZ=Asia/Shanghai

   - LANG=en_US.UTF-8

  ports:

    - '7006:7006'

    - '17006:17006'

  command: ["redis-server", "/etc/redis/redis.conf"]

  privileged: true

# vim redis.conf

tcp-backlog 511

timeout 0

tcp-keepalive 300

daemonize no

supervised no

pidfile /var/run/redis_6379.pid

loglevel notice

logfile ""

databases 16

always-show-logo yes

save 900 1

save 300 10

save 60 10000

stop-writes-on-bgsave-error yes

rdbcompression yes

rdbchecksum yes

dbfilename dump.rdb

dir ./

replica-serve-stale-data yes

replica-read-only yes

repl-diskless-sync no

repl-diskless-sync-delay 5

repl-disable-tcp-nodelay no

replica-priority 100

lazyfree-lazy-eviction no

lazyfree-lazy-expire no

lazyfree-lazy-server-del no

replica-lazy-flush no

appendfilename "appendonly.aof"

appendfsync everysec

no-appendfsync-on-rewrite no

auto-aof-rewrite-percentage 100

auto-aof-rewrite-min-size 64mb

aof-load-truncated yes

aof-use-rdb-preamble yes

lua-time-limit 5000

slowlog-log-slower-than 10000

slowlog-max-len 128

latency-monitor-threshold 0

notify-keyspace-events ""

hash-max-ziplist-entries 512

hash-max-ziplist-value 64

list-max-ziplist-size -2

list-compress-depth 0

set-max-intset-entries 512

zset-max-ziplist-entries 128

zset-max-ziplist-value 64

hll-sparse-max-bytes 3000

stream-node-max-bytes 4096

stream-node-max-entries 100

activerehashing yes

client-output-buffer-limit normal 0 0 0

client-output-buffer-limit replica 256mb 64mb 60

client-output-buffer-limit pubsub 32mb 8mb 60

hz 10

dynamic-hz yes

aof-rewrite-incremental-fsync yes

rdb-save-incremental-fsync yes



appendonly yes

bind 0.0.0.0

protected-mode no

port 6379

cluster-enabled yes

cluster-node-timeout 15000

#masterauth mypassword

#requirepass mypassword

And put the redis-cli file in this directory

3. Build and start the redis cluster container

 [root@localhost redis]# sh cluster.sh

4. Go to the directory defined by BASEPATH to stop and start containers in batches

 [root@localhost redis]# cd /edoc/redis

 [root@localhost redis]# docker-compose ps

 Name               Command               State                             Ports                           

------------------------------------------------------------------------------------------------------------

redis1   docker-entrypoint.sh redis ...   Up      0.0.0.0:17001->17001/tcp, 6379/tcp, 0.0.0.0:7001->7001/tcp

redis2   docker-entrypoint.sh redis ...   Up      0.0.0.0:17002->17002/tcp, 6379/tcp, 0.0.0.0:7002->7002/tcp

redis3   docker-entrypoint.sh redis ...   Up      0.0.0.0:17003->17003/tcp, 6379/tcp, 0.0.0.0:7003->7003/tcp

redis4   docker-entrypoint.sh redis ...   Up      0.0.0.0:17004->17004/tcp, 6379/tcp, 0.0.0.0:7004->7004/tcp

redis5   docker-entrypoint.sh redis ...   Up      0.0.0.0:17005->17005/tcp, 6379/tcp, 0.0.0.0:7005->7005/tcp

redis6   docker-entrypoint.sh redis ...   Up      0.0.0.0:17006->17006/tcp, 6379/tcp, 0.0.0.0:7006->7006/tcp

Restart all containers under the current path

[root@localhost redis]# docker-compose restart

Stop all containers under the current path

[root@localhost redis]# docker-compose stop

Stopping redis2 ... done

Stopping redis6 ... done

Stopping redis4 ... done

Stopping redis5 ... done

Stopping redis3 ... done

Stopping redis1 ... done

Delete all (stopped) service containers under the current path

[root@localhost redis]# docker-compose rm

Going to remove redis2, redis6, redis4, redis5, redis3, redis1

Are you sure? [yN] y

Removing redis2 ... done

Removing redis6 ... done

Removing redis4 ... done

Removing redis5 ... done

Removing redis3 ... done

Removing redis1 ... done

Stop and delete the containers, networks, and images of all services in the project under the current path

[root@localhost redis]# docker-compose down --rmi all

Removing network redis_default

Removing image redis:5.0.3

Removing image redis:5.0.3

WARNING: Image redis:5.0.3 not found.

Removing image redis:5.0.3

WARNING: Image redis:5.0.3 not found.

Removing image redis:5.0.3

WARNING: Image redis:5.0.3 not found.

Removing image redis:5.0.3

WARNING: Image redis:5.0.3 not found.

Removing image redis:5.0.3

WARNING: Image redis:5.0.3 not found

5. Check the redis cluster situation

[root@localhost redis]# ./redis-cli -c -h 192.168.184.128 -p 7001

192.168.184.128:7001> cluster nodes

86970dc61d6a910b6c692183379d2349453bbd0f 192.168.184.128:7003@17003 master - 0 1657863348643 3 connected 10923-16383

544a8b2ef01a26e70fd899825771a13f45f2237e 192.168.184.128:7006@17006 slave 98f47f82dad0d6241673608b80535ff6cc0a44c3 0 1657863347636 6 connected

ac54c2f24bcc5fd07e082e89870815a3fd9fc927 192.168.184.128:7004@17004 slave 6a74ae91a91669ac8f411eca488407daea391677 0 1657863347000 4 connected

aaf3569f32019fa54738ec42443694daed5b7df1 192.168.184.128:7005@17005 slave 86970dc61d6a910b6c692183379d2349453bbd0f 0 1657863347000 5 connected

98f47f82dad0d6241673608b80535ff6cc0a44c3 192.168.184.128:7001@17001 myself,master - 0 1657863345000 1 connected 0-5460

6a74ae91a91669ac8f411eca488407daea391677 192.168.184.128:7002@17002 master - 0 1657863348000 2 connected 5461-10922

192.168.184.128:7001>

Guess you like

Origin blog.csdn.net/weixin_42272246/article/details/128456191
Recommended