15. Docker应用-Docker部署Redis

单机

基础配置

  • 创建目录
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

验证服务

image.png

主从(一主两从)

基础配置

  • 创建目录
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
  • 编辑配置文件-master
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
  • 编辑配置文件-slaver-01
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
  • 编辑配置文件-slaver-02
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
  • 从节点-slaver-01
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
  • 从节点-slaver-02
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

验证服务

  • 验证主从
#查看master信息
docker exec -it redis-master redis-cli -a 'Whaty@123' info replication

#查看slaver-01信息
docker exec -it redis-slaver-01 redis-cli -a 'Whaty@123' info replication

#查看slaver-02信息
docker exec -it redis-slaver-02 redis-cli -a 'Whaty@123' info replication
  • 验证master写入
docker exec -it redis-master redis-cli -a 'Whaty@123' set name wangmingqu
  • 验证slaver读取
#读取
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

验证服务

  • 验证访问

image.png

  • 验证集群信息
#查看集群信息
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
# Warning: Using a password with '-a' or '-u' option on the command line interface may not be safe.
# (error) MOVED 5798 192.168.108.128:6382

#验证写入
docker exec -it redis-01 redis-cli -h 192.168.108.128 -p 6382 -a 'Whaty@123' set name wangmingqu
# Warning: Using a password with '-a' or '-u' option on the command line interface may not be safe.
# OK

#验证读取
docker exec -it redis-01 redis-cli -h 192.168.108.128 -p 6382 -a 'Whaty@123' get name
# Warning: Using a password with '-a' or '-u' option on the command line interface may not be safe.
# "wangmingqu"

哨兵(三主三从三哨兵)

基础配置

下载镜像

部署配置

验证服务

  • 24
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值