ICode9

精准搜索请尝试: 精确搜索
首页 > 数据库> 文章详细

redis集群搭建

2022-06-25 14:31:09  阅读:153  来源: 互联网

标签:redis cluster 集群 conf docker data dockerdata 搭建


1、拉取redis的docker镜像文件
docker pull redis:6.2
3、宿主机根目录(此处路径可以自定义)下新建文件夹 dockerdata,dockerdata 文件夹中新建文件夹 redis-cluster, redis-cluster中新建文件夹conf、data,conf文件夹用于挂载docker容器启动时的redis配置文件,data文件夹用于挂载docker容器运行时产生的数据文件,使redis数据持久化,防止docker容器重启后,数据丢失。
复制代码
[root@tsxdev1 /]# clear
[root@tsxdev1 /]# mkdir dockerdata
[root@tsxdev1 /]# cd dockerdata/
[root@tsxdev1 dockerdata]# mkdir redis-cluster
[root@tsxdev1 dockerdata]# cd redis-cluster/
[root@tsxdev1 redis-cluster]# mkdir conf
[root@tsxdev1 redis-cluster]# mkdir data
[root@tsxdev1 redis-cluster]# ls
conf data
[root@tsxdev1 redis-cluster]#
复制代码
4、redis官网下载redis配置文件-redis.conf,redis官方建议集群至少6个节点,因此将该文件复制6份,分别命名:redis-7001.conf、redis-7002.conf、redis-7003.conf、redis-7004.conf、redis-7005.conf、redis-7006.conf。分别修改6个文件,此处以 redis-7001.conf 为例。

复制代码
(1)# bind 127.0.0.1 -::1 注释掉,不注释只能本机访问

(2)port 7001 根据文件后缀端口修改,如果docker网络采用桥接方式,此处也可以都使用默认的6379端口,每个docker容器的网络都是独立的

(3)daemonize no ,此处必须设置成no,不然docker容器一启动就停掉。设置成yes,redis进程就以守护进程运行,docker容器检测到没有前台进程,所以容器直接停掉

(4)pidfile "/var/run/redis_7001.pid" 根据端口号修改

(5)logfile "/data/redis7001.log" 此处将log文件存放的路径设置到容器的/data路口,刚开始设置了一个其他路径,容器启动的时候提示权限不够

(6)dbfilename "dump7001.rdb" rdb数据文件的名称,按照端口号修改

(7)dir "/data" 数据文件存放的路径

(8)requirepass "123456" redis的密码,根据实际情况进行设置

(9)appendonly yes 是否开启aof持久化配置,根据实际情况配置

(10)appendfilename "appendonly7001.aof" aof文件的名称

(11)appendfsync everysec aof持久化策略 ,always 、no

(12)cluster-enabled yes 开启集群模式,设置成yes

(13)cluster-config-file /data/nodes-7001.conf 集群配置文件存放位置

(14)cluster-node-timeout 15000 节点通信超时时间
复制代码
5、启动容器:
复制代码
docker run -it -d -v /dockerdata/redis-cluster/conf:/usr/local/etc/redis -v /dockerdata/redis-cluster/data:/data --network=host --name redis-7001 redis:6.2 redis-server /usr/local/etc/redis/redis7001.conf

docker run -it -d -v /dockerdata/redis-cluster/conf:/usr/local/etc/redis -v /dockerdata/redis-cluster/data:/data --network=host --name redis-7002 redis:6.2 redis-server /usr/local/etc/redis/redis7002.conf

docker run -it -d -v /dockerdata/redis-cluster/conf:/usr/local/etc/redis -v /dockerdata/redis-cluster/data:/data --network=host --name redis-7003 redis:6.2 redis-server /usr/local/etc/redis/redis7003.conf

docker run -it -d -v /dockerdata/redis-cluster/conf:/usr/local/etc/redis -v /dockerdata/redis-cluster/data:/data --network=host --name redis-7004 redis:6.2 redis-server /usr/local/etc/redis/redis7004.conf

docker run -it -d -v /dockerdata/redis-cluster/conf:/usr/local/etc/redis -v /dockerdata/redis-cluster/data:/data --network=host --name redis-7005 redis:6.2 redis-server /usr/local/etc/redis/redis7005.conf

docker run -it -d -v /dockerdata/redis-cluster/conf:/usr/local/etc/redis -v /dockerdata/redis-cluster/data:/data --network=host --name redis-7006 redis:6.2 redis-server /usr/local/etc/redis/redis7006.conf

命令说明:
-it 以交互模式运行
-d 后台运行
-v /dockerdata/redis-cluster/conf:/usr/local/etc/redis -v 挂载卷,将redis配置文件挂载到宿主机,方便在宿主机更改redis的配置
-v /dockerdata/redis-cluster/data:/data 挂载卷,容器中的产生的文件跟宿主机是互相隔离的,如果容器没了,则对应的数据也会丢失,因此需要将重要的数据挂载到宿主机上面,即使容器没了,数据依然还在,如 mysql、redis的数据文件,
冒号前面表示宿主机的路径,冒号后面表示容器的路径,/data是容器默认的工作路径。
--network=host docker的网络模式,此处选用host模式
--name redis-7001 docker容器的名字
redis:6.2 docker镜像的名字
redis-server /usr/local/etc/redis/redis7003.conf 以指定的配置文件启动redis
复制代码

6、查看docker容器是否成功启动
复制代码
[root@tsxdev1 redis-cluster]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
6ddf0e2aec52 redis:6.2 "docker-entrypoint.s…" 8 minutes ago Up 8 minutes redis-7006
96d7e78bdf55 redis:6.2 "docker-entrypoint.s…" 9 minutes ago Up 9 minutes redis-7005
826add755d6d redis:6.2 "docker-entrypoint.s…" 9 minutes ago Up 9 minutes redis-7004
7f54a84b7cb1 redis:6.2 "docker-entrypoint.s…" 9 minutes ago Up 9 minutes redis-7003
090082e5c588 redis:6.2 "docker-entrypoint.s…" 9 minutes ago Up 9 minutes redis-7002
249ca5f31550 redis:6.2 "docker-entrypoint.s…" 9 minutes ago Up 9 minutes redis-7001
0434baecf5fe nginx "/docker-entrypoint.…" 7 weeks ago Up 7 weeks 0.0.0.0:9091->80/tcp, :::9091->80/tcp nginx01
2aa0dd8342b0 centos "/bin/bash" 7 weeks ago Up 7 weeks blissful_meitner
[root@tsxdev1 redis-cluster]#
复制代码
7、进入其中一个容器,创建集群,创建集群碰到一个问题,没有开通 17001、17002、17003、17004、17005、17006端口,这6个端口是集群内部通信用的,由于没有开通,导致创建集群的时候,一直在等待连接...(可直接将地址改成127.0.0.1)
复制代码
[root@tsxdev1 redis-cluster]# docker exec -it redis-7001 /bin/bash
root@tsxdev1:/data# redis-cli -h 127.0.0.1 -p 7001
127.0.0.1:7001> auth 123456
OK
root@tsxdev1:/data# /usr/local/bin/redis-cli --cluster create 宿主机IP:7001 宿主机IP:7002 宿主机IP:7003 宿主机IP:7004 宿主机IP:7005 宿主机IP:7006 --cluster-replicas 1 -a 123456
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
[OK] All nodes agree about slots configuration.
Check for open slots...
Check slots coverage...
[OK] All 16384 slots covered.
root@tsxdev1:/data# redis-cli -h 127.0.0.1 -p 7001
127.0.0.1:7001> auth 123456
OK

标签:redis,cluster,集群,conf,docker,data,dockerdata,搭建
来源: https://www.cnblogs.com/zpbolgs/p/16411521.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有