docker容器部署redis集群cluster

本文是在一台服务器上搭建的redis集群

1.安装docker

闭防火墙

# setenforce 0

# systemctl stop firewalld

# systemctl disable firewalld

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

# yum -y install docker-ce

启动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.在同一目录下,添加以下文件

# 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

并在此目录下放入redis-cli文件

3.构建并启动redis集群容器

 [root@localhost redis]# sh cluster.sh

4.进到 BASEPATH定义的目录下,可以批量停启容器

 [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

重启当前路径下所有的容器

[root@localhost redis]# docker-compose restart

停止当前路径下所有的容器

[root@localhost redis]# docker-compose stop

Stopping redis2 ... done

Stopping redis6 ... done

Stopping redis4 ... done

Stopping redis5 ... done

Stopping redis3 ... done

Stopping redis1 ... done

删除当前路径下所有(停止状态)服务的容器

[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

停止并删除当前路径下工程中所有服务的容器、网络、镜像

[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.查看redis集群情况

[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>

猜你喜欢

转载自blog.csdn.net/weixin_42272246/article/details/128456191