Redis集群部署(cluster模式——Docker)

Redis集群部署(cluster模式——Docker)

本次部署采用的是Docker环境进行部署,如不知Docker环境如何搭建的请看这篇文章【k8s搭建(超详细,保姆级教程)】的第4.1小节。

1、开始搭建

拉取redis的镜像【redis:6.2 】。

[root@localhost ~]# docker pull redis:6.2 
6.2: Pulling from library/redis
......
Digest: sha256:0eca17393889e1dd31fec58bb9aadc396dff01d00c3fcdbd31d60b4f80155504
Status: Downloaded newer image for redis:6.2
docker.io/library/redis:6.2
[root@localhost ~]# 
查看镜像
[root@localhost ~]# docker images
REPOSITORY           TAG                 IMAGE ID            CREATED             SIZE
redis                6.2                 0f48e801b37d        10 days ago         113MB
下载redis6.2版本的配置文件
[root@localhost redis]# wget https://github.com/redis/redis/blob/6.2/redis.conf -O redis.conf --no-check-certificate

此次我这里搭建的是3主3从。准备6份redis.conf配置文件,配置内容如下:

bind * -::* #任意ip都能连接redis服务
cluster-enabled yes #开启cluster集群模式
protected-mode no #关闭保护模式
requirepass abcd12345abcd #启用密码,也可以不启用
 masterauth abcd12345abcd #启用密码时必须配置,要不然主从同步时会产生大量日志导致磁盘空间占满
maxmemory 536870912 #最大内存512M,可以不启用
 maxmemory-policy allkeys-lru #内存淘汰策略,可以不启用

准备如下6个目录,并复制redis.conf到这6个目录下。

创建6个目录
[root@localhost redis]# mkdir -p rd1 rd2 rd3 rd4 rd5 rd6

复制redis.conf到rd1 rd2 rd3 rd4 rd5 rd6这六个文件目录下
[root@localhost redis]# ll |grep rd | awk '{system("cp redis.conf "$9"")}'

启动6个redis容器
[root@localhost redis]# docker run -d --name redis1 -v /root/redis/rd1/redis.conf:/usr/local/etc/redis/redis.conf redis:6.2 redis-server /usr/local/etc/redis/redis.conf
[root@localhost redis]# docker run -d --name redis2 -v /root/redis/rd2/redis.conf:/usr/local/etc/redis/redis.conf redis:6.2 redis-server /usr/local/etc/redis/redis.conf
[root@localhost redis]# docker run -d --name redis3 -v /root/redis/rd3/redis.conf:/usr/local/etc/redis/redis.conf redis:6.2 redis-server /usr/local/etc/redis/redis.conf
[root@localhost redis]# docker run -d --name redis4 -v /root/redis/rd4/redis.conf:/usr/local/etc/redis/redis.conf redis:6.2 redis-server /usr/local/etc/redis/redis.conf
[root@localhost redis]# docker run -d --name redis5 -v /root/redis/rd5/redis.conf:/usr/local/etc/redis/redis.conf redis:6.2 redis-server /usr/local/etc/redis/redis.conf
[root@localhost redis]# docker run -d --name redis6 -v /root/redis/rd6/redis.conf:/usr/local/etc/redis/redis.conf redis:6.2 redis-server /usr/local/etc/redis/redis.conf

查看6个redis容器已经正确启动成功
[root@localhost redis]# docker ps
CONTAINER ID        IMAGE               COMMAND                  CREATED              STATUS              PORTS               NAMES
d8eacdbc6c80        redis:6.2           "docker-entrypoint.s…"   32 seconds ago       Up 31 seconds       6379/tcp            redis6
8c2d2bd56b94        redis:6.2           "docker-entrypoint.s…"   41 seconds ago       Up 40 seconds       6379/tcp            redis5
b70ee4db9103        redis:6.2           "docker-entrypoint.s…"   53 seconds ago       Up 52 seconds       6379/tcp            redis4
2ef568f53f9e        redis:6.2           "docker-entrypoint.s…"   About a minute ago   Up About a minute   6379/tcp            redis3
2ab4df33c5ff        redis:6.2           "docker-entrypoint.s…"   About a minute ago   Up About a minute   6379/tcp            redis2
4a2d8729355d        redis:6.2           "docker-entrypoint.s…"   3 minutes ago        Up 3 minutes        6379/tcp            redis1

查看6个服务器的IP地址。
[root@localhost redis]# docker inspect $(docker ps -a -q)|grep IPAddress
            "SecondaryIPAddresses": null,
            "IPAddress": "172.17.0.7",
                    "IPAddress": "172.17.0.7",
            "SecondaryIPAddresses": null,
            "IPAddress": "172.17.0.6",
                    "IPAddress": "172.17.0.6",
            "SecondaryIPAddresses": null,
            "IPAddress": "172.17.0.5",
                    "IPAddress": "172.17.0.5",
            "SecondaryIPAddresses": null,
            "IPAddress": "172.17.0.4",
                    "IPAddress": "172.17.0.4",
            "SecondaryIPAddresses": null,
            "IPAddress": "172.17.0.3",
                    "IPAddress": "172.17.0.3",
            "SecondaryIPAddresses": null,
            "IPAddress": "172.17.0.2",
                    "IPAddress": "172.17.0.2",

随意选择一个容器,然后执行如下命令创建cluster集群,副本数为1。
[root@localhost redis]# docker exec -it redis1 redis-cli -a abcd12345abcd  --cluster create 172.17.0.2:6379 172.17.0.3:6379 172.17.0.4:6379 172.17.0.5:6379 172.17.0.6:6379 172.17.0.7:6379 --cluster-replicas 1
Warning: Using a password with '-a' or '-u' option on the command line interface may not be safe.
>>> Performing hash slots allocation on 6 nodes...
Master[0] -> Slots 0 - 5460
Master[1] -> Slots 5461 - 10922
Master[2] -> Slots 10923 - 16383
Adding replica 172.17.0.6:6379 to 172.17.0.2:6379
Adding replica 172.17.0.7:6379 to 172.17.0.3:6379
Adding replica 172.17.0.5:6379 to 172.17.0.4:6379
M: d82fbacc9a1adb6c48178439f7ecb99e31719f4f 
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值