Docker搭建redis单体、主从、哨兵、集群

1.docker搭建单体redis

#搜索镜像
docker search redis
#拉取镜像
docker pull redis:latest
#创建redis容器并启动
docker run --name redis -p 6379:6379 redis --requirepass 123456
#进入redis容器
#1.查询容器运行CONTAINER ID 
docker ps
#2.进入容器
docker exec -it da45019bf760O(此处替换为对应redis容器CONTAINER ID) redis-cli
#3.操作提示NOAUTH Authentication required.
auth 123456(redis容器密码)
#为现有的redis创建密码或修改密码的方法:
#1.进入redis的容器 docker exec -it 容器ID bash
#2.进入redis目录 cd /usr/local/bin 
#3.运行命令:redis-cli
#4.查看现有的redis密码:config get requirepass
#5.设置redis密码config set requirepass ****(****为你要设置的密码)
#6.若出现(error) NOAUTH Authentication required.错误,则使用 auth 密码 来认证密码

2.docker搭建redis主从

#搜索镜像
docker search redis
#拉取镜像
docker pull redis:latest
#下载redis配置文件至本地服务器 并授权
wget http://download.redis.io/redis-stable/redis.conf
chmod 777 redis.conf #授予权限
bind 127.0.0.1 #(bind绑定的是自己机器网卡的ip,如果有多块网卡可以配多个ip,代表允许客户端通过机器的哪些网卡ip去访问,内网一般可以不配置bind,注释掉即可
protected-mode no #默认yes,开启保护模式,限制为本地访问
daemonize no#默认no,改为yes意为以守护进程方式启动,可后台运行,除非kill进程(可选,改为yes会使配置文件方式启动redis失败
appendonly yes #redis持久化(可选)
requirepass 123456 #redis登陆密码
#进入到配置文件目录复制master主文件
cp redis.conf redis-master.conf
cp redis.conf redis-salve-01.conf
cp redis.conf redis-salve-02.conf
#主节点使用6379启动 不需要修改配置文件 
#从节点使用6380端口 修改配置文件端口为6380 并绑定主节点
redis-salve-01.conf port 6380
redis-salve-02.conf port 6381
replicaof 172.10.0.2 6379   # 从本机6379的redis实例复制数据,Redis 5.0之前使用slaveof
replica-read-only yes  # 配置从节点只读
masterauth 123456 #主节点配置了密码访问需要在从节点配置文件中配置主节点密码
#配置虚拟网络 并创建ip
docker network create --subnet=172.10.0.0/16 mynetwork
#启动实例
docker run -p 6379:6379 --name redis-master --net mynetwork --ip 172.10.0.2 -v /opt/redis/redis-master.conf:/etc/redis/redis.conf -v /opt/redis/master-data:/data -d redis redis-server /etc/redis/redis.conf
docker run -p 6380:6380 --name redis-salve-01 --net mynetwork --ip 172.10.0.3 -v /opt/redis/redis-salve-01.conf:/etc/redis/redis.conf -v /opt/redis/salve-01-data:/data -d redis redis-server /etc/redis/redis.conf
docker run -p 6381:6381 --name redis-salve-02 --net mynetwork --ip 172.10.0.4 -v /opt/redis/redis-salve-02.conf:/etc/redis/redis.conf -v /opt/redis/salve-02-data:/data -d redis redis-server /etc/redis/redis.conf
#查看启动结果
docker ps

3.搭建redis哨兵模式

#按照redis主从模式搭建一主二从3台redis
#下载sentinel配置文件至本地服务器 并授权
wget https://download.redis.io/redis-stable/sentinel.conf
chmod 777 sentinel.conf #授予权限
#复制一份sentinel.conf文件
cp sentinel.conf sentinel-01.conf
#将相关配置修改为如下值:
port 26379
logfile "sentinel-01.log"
dir /
# sentinel monitor <master-redis-name> <master-redis-ip> <master-redis-port> <quorum>
# quorum是一个数字,指明当有多少个sentinel认为一个master失效时(值一般为:sentinel总数/2 + 1),master才算真正失效
sentinel monitor mymaster 172.10.0.2 6379 2  # master这个名字随便取,客户端访问时会用到 ip需要使用外网ip
sentinel auth-pass mymaster 123456 # 设置主服务器密码
sentinel down-after-milliseconds mymaster 1000 # 主服务器下线超过10秒就进行切换(默认30S)
sentinel failover-timeout mymaster 180000 # 故障转移超时时间
sentine1 para77e1-s yncs  mymaster 1 # 故障转移时,允许有多少个s7ave同时对新的master进行同步,这个数字越小,完成failover所需的时间就越长
# 关闭安全校验
protected-mode yes
#启动实例
docker run -itd --privileged=true --name sentinel-01 --net mynetwork --ip 172.10.0.5 -v /opt/redis/:/usr/local/etc/redis -p 26379:26379 redis:latest redis-sentinel /usr/local/etc/redis/sentinel-01.conf
docker run -itd --privileged=true --name sentinel-02 --net mynetwork --ip 172.10.0.6 -v /opt/redis/:/usr/local/etc/redis -p 26380:26380 redis:latest redis-sentinel /usr/local/etc/redis/sentinel-02.conf
docker run -itd --privileged=true --name sentinel-03 --net mynetwork --ip 172.10.0.7 -v /opt/redis/:/usr/local/etc/redis -p 26381:26381 redis:latest redis-sentinel /usr/local/etc/redis/sentinel-03.conf
#检查哨兵状态
docker exec -it sentinel-01 /bin/bash
redis-cli -h 127.0.0.1 -p 26379
info sentinel
#显示以下信息为正常状态
# Sentinel
sentinel_masters:1
sentinel_tilt:0
sentinel_tilt_since_seconds:-1
sentinel_running_scripts:0
sentinel_scripts_queue_length:0
sentinel_simulate_failure_flags:0
master0:name=mymaster,status=ok,address=172.10.0.2:6379,slaves=2,sentinels=3
#该哨兵节点监控的主服务器状态(status)是ok,slaves数量为2,即该主服务器有两个从服务器 其他两个哨兵查看类推

4.docker搭建redis集群

#1.创建6台redis实例
docker run -d -p 6391:6391 --name redis-node-1 --net host --privileged=true -v /opt/redis/cluster/redis-node-1:/data redis:latest --cluster-enabled yes --appendonly yes --requirepass 123456 --port 6391 --masterauth 123456

docker run -d -p 6392:6392 --name redis-node-2 --net host --privileged=true -v /opt/redis/cluster/redis-node-2:/data redis:latest --cluster-enabled yes --appendonly yes --requirepass 123456 --port 6392 --masterauth 123456

docker run -d -p 6393:6393 --name redis-node-3 --net host --privileged=true -v /opt/redis/cluster/redis-node-3:/data redis:latest --cluster-enabled yes --appendonly yes --requirepass 123456 --port 6393 --masterauth 123456

docker run -d -p 6394:6394 --name redis-node-4 --net host --privileged=true -v /opt/redis/cluster/redis-node-4:/data redis:latest --cluster-enabled yes --appendonly yes --requirepass 123456 --port 6394 --masterauth 123456

docker run -d -p 6395:6395 --name redis-node-5 --net host --privileged=true -v /opt/redis/cluster/redis-node-5:/data redis:latest --cluster-enabled yes --appendonly yes --requirepass 123456 --port 6395 --masterauth 123456

docker run -d -p 6396:6396 --name redis-node-6 --net host --privileged=true -v /opt/redis/cluster/redis-node-6:/data redis:latest --cluster-enabled yes --appendonly yes --requirepass 123456 --port 6396 --masterauth 123456
#2.进入任意一台redis容器内部
 docker exec -it redis-node-1 /bin/bash
#3.执构建集群关系
redis-cli -a 123456 --cluster create ip1:6391 ip2:6392 ip3:6393 ip4:6394 ip5:6395 ip6:6396 --cluster-replicas 1
#在构建集群时每台redis实例要开通一个(10000 + 端口) 例6391需要开通16391 不然一直卡在Waiting for the cluster to join
#查看集群构建状态
redis-cli -a 123456 -p 6391 #登陆其中一台redis
cluster info #查看集群信息
cluster nodes  #查看哪个节点是主节点,哪个节点是从节点,以及槽点范围
#1.新增节点
redis-cli -a 123456 ‐‐cluster add‐node ip:port ip:prot
#2.重新分配槽位
redis-cli -a 123456 ‐‐cluster reshard ip:port
#3.指定主节点
cluster replicate 2728a594a0498e98e4b83a537e19f9a0a3790f38 #(后面这串id为节点id)
#4.删除从节点
redis-cli -a 123456  ‐‐cluster del‐node ip:port 节点id
#5.删除主节点
redis-cli -a 123456 ‐‐cluster reshard ip:port #先把主节点上的槽位迁移到其他机器
redis-cli -a 123456 ‐‐cluster del‐node ip:prot 节点id #再执行节点删除命令

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值