单机
基础配置
mkdir -p /data/redis/{ conf,data,logs}
touch /data/redis/logs/redis.log
编辑配置文件-aof持久化(aof和rdb二选一)
cat > /data/redis/conf/redis.conf << EOF
#允许Redis外连
bind 0.0.0.0
#设置Redis密码
requirepass Whaty@123
#关闭Redis保护模式
protected-mode yes
port 6379
#关闭守护进程功能,防止与docker run -d 冲突
daemonize no
pidfile /var/run/redis_6379.pid
loglevel notice
logfile "/var/log/redis.log"
databases 16
dir /data
appendonly yes
appendfilename "appendonly.aof"
appendfsync everysec
EOF
编辑配置文件-rdb持久化(aof和rdb二选一)
cat > /data/redis/conf/redis.conf << EOF
bind 0.0.0.0
port 6379
requirepass 1qaz!QAZ
protected-mode yes
timeout 0
databases 16
daemonize no
pidfile /var/run/redis_6379.pid
loglevel notice
logfile "/var/log/redis.log"
#数据保存路径
dir /data/
#备份策略
save 900 1
save 300 10
save 60 10000
#备份文件名称
dbfilename dump.rdb
EOF
下载镜像
docker pull redis:6.0
部署服务
docker run -d --name redis \
-p 6379 :6379 \
--privileged = true \
-v /data/redis/conf/redis.conf:/etc/redis/redis.conf \
-v /data/redis/data:/data \
-v /data/redis/logs/redis.log:/var/log/redis.log \
redis:6.0 redis-server /etc/redis/redis.conf
验证服务
主从(一主两从)
基础配置
mkdir -p /data/redis/{ redis-master,redis-slaver-01,redis-slaver-02} /{ conf,data,logs}
touch /data/redis/{ redis-master,redis-slaver-01,redis-slaver-02} /logs/redis.log
chmod 777 /data/redis/{ redis-master,redis-slaver-01,redis-slaver-02} /logs/redis.log
cat > /data/redis/redis-master/conf/redis.conf << EOF
#允许Redis外连
bind 0.0.0.0
#设置Redis密码
requirepass Whaty@123
#关闭Redis保护模式
protected-mode yes
port 6379
#关闭守护进程功能,防止与docker run -d 冲突
daemonize no
pidfile /var/run/redis_6379.pid
loglevel notice
logfile "/var/log/redis.log"
databases 16
dir /data
appendonly yes
appendfilename "appendonly.aof"
appendfsync everysec
EOF
cat > /data/redis/redis-slaver-01/conf/redis.conf << EOF
#允许Redis外连
bind 0.0.0.0
#设置Redis密码
requirepass Whaty@123
#关闭Redis保护模式
protected-mode yes
port 6379
#关闭守护进程功能,防止与docker run -d 冲突
daemonize no
pidfile /var/run/redis_6379.pid
loglevel notice
logfile "/var/log/redis.log"
databases 16
dir /data
appendonly yes
appendfilename "appendonly.aof"
appendfsync everysec
##添加主库信息
#主库地址和端口
slaveof 192.168.17.133 6379
#主库密码
masterauth Whaty@123
EOF
cat > /data/redis/redis-slaver-02/conf/redis.conf << EOF
#允许Redis外连
bind 0.0.0.0
#设置Redis密码
requirepass Whaty@123
#关闭Redis保护模式
protected-mode yes
port 6379
#关闭守护进程功能,防止与docker run -d 冲突
daemonize no
pidfile /var/run/redis_6379.pid
loglevel notice
logfile "/var/log/redis.log"
databases 16
dir /data
appendonly yes
appendfilename "appendonly.aof"
appendfsync everysec
##添加主库信息
#主库地址和端口
slaveof 192.168.17.133 6379
#主库密码
masterauth Whaty@123
EOF
下载镜像
docker pull redis:6.0
部署服务
docker run -d --name redis-master \
-p 6379 :6379 \
--privileged = true \
-v /data/redis/redis-master/conf/redis.conf:/etc/redis/redis.conf \
-v /data/redis/redis-master/data:/data \
-v /data/redis/redis-master/logs/redis.log:/var/log/redis.log \
redis:6.0 redis-server /etc/redis/redis.conf
docker run -d --name redis-slaver-01 \
-p 6380 :6379 \
--privileged = true \
-v /data/redis/redis-slaver-01/conf/redis.conf:/etc/redis/redis.conf \
-v /data/redis/redis-slaver-01/data:/data \
-v /data/redis/redis-slaver-01/logs/redis.log:/var/log/redis.log \
redis:6.0 redis-server /etc/redis/redis.conf
docker run -d --name redis-slaver-02 \
-p 6381 :6379 \
--privileged = true \
-v /data/redis/redis-slaver-02/conf/redis.conf:/etc/redis/redis.conf \
-v /data/redis/redis-slaver-02/data:/data \
-v /data/redis/redis-slaver-02/logs/redis.log:/var/log/redis.log \
redis:6.0 redis-server /etc/redis/redis.conf
验证服务
docker exec -it redis-master redis-cli -a 'Whaty@123' info replication
docker exec -it redis-slaver-01 redis-cli -a 'Whaty@123' info replication
docker exec -it redis-slaver-02 redis-cli -a 'Whaty@123' info replication
docker exec -it redis-master redis-cli -a 'Whaty@123' set name wangmingqu
docker exec -it redis-slaver-01 redis-cli -a 'Whaty@123' get name
docker exec -it redis-slaver-02 redis-cli -a 'Whaty@123' get name
docker exec -it redis-slaver-01 redis-cli -a 'Whaty@123' set age 18
docker exec -it redis-slaver-02 redis-cli -a 'Whaty@123' set age 18
集群(三主三从)
基础配置
docker network create --driver bridge \
--subnet 192.168 .1.0/24 \
--gateway 192.168 .1.1 redis-cluster
mkdir -p /data/redis/{ redis-01,redis-02,redis-03,redis-04,redis-05,redis-06} /{ conf,data,logs}
touch /data/redis/{ redis-01,redis-02,redis-03,redis-04,redis-05,redis-06} /logs/redis.log
chmod 777 /data/redis/{ redis-01,redis-02,redis-03,redis-04,redis-05,redis-06} /logs/redis.log
cat > /data/redis/redis-01/conf/redis.conf << EOF
#允许Redis外连
bind 0.0.0.0
#设置Redis密码
requirepass Whaty@123
#关闭Redis保护模式
protected-mode yes
port 6381
#关闭守护进程功能,防止与docker run -d 冲突
daemonize no
pidfile /var/run/redis.pid
loglevel notice
logfile "/var/log/redis.log"
databases 16
dir /data
appendonly yes
appendfilename "appendonly.aof"
appendfsync everysec
#节点通信密码
masterauth Whaty@123
#开启cluster
cluster-enabled yes
#集群配置文件
cluster-config-file nodes.conf
#节点通信时间
cluster-node-timeout 15000
# 每个节点在集群中的ip
cluster-announce-ip 192.168.108.128
# 在集群的端口号
cluster-announce-port 6381
# 跟其他redis进行总线交互用的端口
cluster-announce-bus-port 16381
EOF
cp /data/redis/redis-01/conf/redis.conf /data/redis/redis-02/conf/
sed -i 's/6381/6382/g' /data/redis/redis-02/conf/redis.conf
cp /data/redis/redis-01/conf/redis.conf /data/redis/redis-03/conf/
sed -i 's/6381/6383/g' /data/redis/redis-03/conf/redis.conf
cp /data/redis/redis-01/conf/redis.conf /data/redis/redis-04/conf/
sed -i 's/6381/6384/g' /data/redis/redis-04/conf/redis.conf
cp /data/redis/redis-01/conf/redis.conf /data/redis/redis-05/conf/
sed -i 's/6381/6385/g' /data/redis/redis-05/conf/redis.conf
cp /data/redis/redis-01/conf/redis.conf /data/redis/redis-06/conf/
sed -i 's/6381/6386/g' /data/redis/redis-06/conf/redis.conf
下载镜像
docker pull redis:6.0
部署服务
docker run -d --name redis-01 \
--network redis-cluster \
-p 6381 :6381 \
-p 16381 :16381 \
--privileged = true \
-v /data/redis/redis-01/conf/redis.conf:/etc/redis/redis.conf \
-v /data/redis/redis-01/data:/data \
-v /data/redis/redis-01/logs/redis.log:/var/log/redis.log \
redis:6.0 redis-server /etc/redis/redis.conf
docker run -d --name redis-02 \
--network redis-cluster \
-p 6382 :6382 \
-p 16382 :16382 \
--privileged = true \
-v /data/redis/redis-02/conf/redis.conf:/etc/redis/redis.conf \
-v /data/redis/redis-02/data:/data \
-v /data/redis/redis-02/logs/redis.log:/var/log/redis.log \
redis:6.0 redis-server /etc/redis/redis.conf
docker run -d --name redis-03 \
--network redis-cluster \
-p 6383 :6383 \
-p 16383 :16383 \
--privileged = true \
-v /data/redis/redis-03/conf/redis.conf:/etc/redis/redis.conf \
-v /data/redis/redis-03/data:/data \
-v /data/redis/redis-03/logs/redis.log:/var/log/redis.log \
redis:6.0 redis-server /etc/redis/redis.conf
docker run -d --name redis-04 \
--network redis-cluster \
-p 6384 :6384 \
-p 16384 :16384 \
--privileged = true \
-v /data/redis/redis-04/conf/redis.conf:/etc/redis/redis.conf \
-v /data/redis/redis-04/data:/data \
-v /data/redis/redis-05/logs/redis.log:/var/log/redis.log \
redis:6.0 redis-server /etc/redis/redis.conf
docker run -d --name redis-05 \
--network redis-cluster \
-p 6385 :6385 \
-p 16385 :16385 \
--privileged = true \
-v /data/redis/redis-05/conf/redis.conf:/etc/redis/redis.conf \
-v /data/redis/redis-05/data:/data \
-v /data/redis/redis-05/logs/redis.log:/var/log/redis.log \
redis:6.0 redis-server /etc/redis/redis.conf
docker run -d --name redis-06 \
--network redis-cluster \
-p 6386 :6386 \
-p 16386 :16386 \
--privileged = true \
-v /data/redis/redis-06/conf/redis.conf:/etc/redis/redis.conf \
-v /data/redis/redis-06/data:/data \
-v /data/redis/redis-06/logs/redis.log:/var/log/redis.log \
redis:6.0 redis-server /etc/redis/redis.conf
docker exec -it redis-01 /bin/bash
redis-cli -h 127.0 .0.1 -p 6381 -a 'Whaty@123' --cluster create 192.168 .108.128:6381 192.168 .108.128:6382 192.168 .108.128:6383 192.168 .108.128:6384 192.168 .108.128:6385 192.168 .108.128:6386 --cluster-replicas 1
验证服务
docker exec -it redis-01 redis-cli -h 127.0 .0.1 -p 6381 -a 'Whaty@123' CLUSTER INFO
docker exec -it redis-01 redis-cli -h 127.0 .0.1 -p 6381 -a 'Whaty@123' CLUSTER NODES
docker exec -it redis-01 redis-cli -h 127.0 .0.1 -p 6381 -a 'Whaty@123' set name wangmingqu
docker exec -it redis-01 redis-cli -h 192.168 .108.128 -p 6382 -a 'Whaty@123' set name wangmingqu
docker exec -it redis-01 redis-cli -h 192.168 .108.128 -p 6382 -a 'Whaty@123' get name
哨兵(三主三从三哨兵)
基础配置
下载镜像
部署配置
验证服务