首页 > 数据库 >基于docker搭建redis集群

基于docker搭建redis集群

时间:2023-01-19 19:57:33浏览次数:50  
标签:node -- redis cluster 集群 docker data yes

在docker已安装完毕的情况下,拉取redis镜像

#这里拉取最新的redis镜像。当然也可以拉取指定版本的镜像 docker pull redis:5.0
docker pull redis

创建redis容器

#命令如下

docker create --name redis-node1 --net=host -v /data/redis-data/node1:/data redis --cluster-enabled yes --cluster-config-file nodes-node-1.conf --cluster-node-timeout 10000 --appendonly yes --port 6371

docker create --name redis-node2 --net=host -v /data/redis-data/node2:/data redis --cluster-enabled yes --cluster-config-file nodes-node-2.conf --cluster-node-timeout 10000 --appendonly yes --port 6372

docker create --name redis-node3 --net=host -v /data/redis-data/node3:/data redis --cluster-enabled yes --cluster-config-file nodes-node-3.conf --cluster-node-timeout 10000 --appendonly yes --port 6373

docker create --name redis-node4 --net=host -v /data/redis-data/node4:/data redis --cluster-enabled yes --cluster-config-file nodes-node-4.conf --cluster-node-timeout 10000 --appendonly yes --port 6374

docker create --name redis-node5 --net=host -v /data/redis-data/node5:/data redis --cluster-enabled yes --cluster-config-file nodes-node-5.conf --cluster-node-timeout 10000 --appendonly yes --port 6375

docker create --name redis-node6 --net=host -v /data/redis-data/node6:/data redis --cluster-enabled yes --cluster-config-file nodes-node-6.conf --cluster-node-timeout 10000 --appendonly yes --port 6376

创建redis容器参数解释:
--net=host 容器和宿主机共用网络 不需要再做端口映射
-v 创建容器数据卷
--cluster-enabled:是否启动集群,选值:yes 、no
--cluster-config-file 配置文件.conf :指定节点信息,自动生成
--cluster-node-timeout 毫秒值: 配置节点连接超时时间
--appendonly 是否开启持久化,选值:yes、no
--port 端口

启动容器

# 在这里直接启动会报错 
# Error response from daemon: OCI runtime create failed: container_linux.go:349: starting container process caused "process_linux.go:449: container init caused \"write /proc/self/attr/keycreate: permission denied\"": unknown
# Error: failed to start containers: redis-node
# 这里是由于linux的策略原因:“/proc/self/attr/keycreate” 这里没有写入权限,需要把“/etc/selinux/config”里面的SELINUX值修改为disabled 
# 修改以后要重启linux虚拟机,才能生效
# reboot。

# 重启完执行容器启动命令
docker start redis-node1 redis-node2 redis-node3 redis-node4 redis-node5 redis-node6

组件redis集群

#进入任意一个创建的redis容器,以redis-node1为例
docker exec -it redis-node1 /bin/bash
#执行组件集群的命令,localhos替换成实际的主机ip
redis-cli --cluster create localhos:6371 localhos:6372 localhos:6373 localhos:6374 localhos:6375 localhos:6376 --cluster-replicas 1
#参数解释
    # --cluster-replicas 1: 参数后面的数字表示的是主从比例,这里的1,表示1个主节点对应1个从节点。上面创建了6个reids容器,所以主从分配就是3个主节点,3个从节点。
    # 注意 主节点最少3个,3个才能保证集群的健壮性。
    
#组建成功,进入redis查看一下集群节点信息:
redis-cli -c -p 6371
cluster nodes
# -c 代表集群模式
# -p 代表进入6371端口

开放端口

#批量添加开放端口
firewall-cmd --permanent --add-port=6371-6376/tcp
#重启
firewall-cmd --reload

Redis Cluster主从模式

redis cluster 为了保证数据的高可用性,加入了主从模式,一个主节点对应一个或多个从节点,主节点提供数据存取,从节点则是从主节点拉取数据备份,当这个主节点挂掉后,就会有这个从节点选取一个来充当主节点,从而保证集群不会挂掉。

标签:node,--,redis,cluster,集群,docker,data,yes
From: https://www.cnblogs.com/java-six/p/17062036.html

相关文章

  • 通过命令管理ceph集群
      ceph集群维护  http://docs.ceph.org.cn/rados/ ceph集群配置、部署与运维   通过套接字进行单机管理  在ceph的节点上使用socket管理只针对ceph的节点......
  • Redis配置类
    packagecom.wujiheng.gmall.common.config @Configuration@EnableCachingpublicclassRedisConfig{   @Bean   publicRedisTemplate<Object,......
  • 大数据必知必会:Zookeeper集群环境安装
    (大数据必知必会:Zookeeper集群环境安装)安装前准备集群环境下,至少需要3台服务器。IP地址主机名称10.0.0.5node110.0.0.6node210.0.0.7node3需要保......
  • docker运行pm2程序
    DockerfileFROMnode:16.14.2RUNmkdir/data/apps-pv\&&[email protected]\&&npm-gipm2WORKDIR/data/appsCOPY..RUNpnpminstall\......
  • 制作docker php5.6的镜像
     dockerpullcentosDockerrun-it--name="centos-test"centosyuminstallwget #报错在后面有处理的方法 https://lnmp.org/ lnmp环境安装wgethttp://so......
  • redis分布式集群 -- Cluster
    Redis分布式系统的特点和限制多主多从,去中心化,从节点作为备用,复制主节点,不做读写操作,不提供服务;支持动态扩容节点;节点之间相互通信,相互选举,保证及时故障转移,不再依赖sen......
  • redis高并发经典问题
    缓存穿透当用户访问的数据既不在缓存也不在数据库中时,就会导致每个用户查询都会“穿透”缓存“直抵”数据库。这种情况就称为缓存穿透。当高度发的访问请求到达时,缓存穿......
  • redis主从集群 -- Sentinel 哨兵
    Redis的主从集群是一个“一主多从”的读写分离集群。集群中的Master节点负责处理客户端的读写请求,而Slave节点仅能处理客户端的读请求。在采用单线程IO模型时,为了......
  • redis持久化
    Redis是一个内存数据库,所以其运行效率非常高。但也存在一个问题:内存中的数据是不持久的,若主机宕机或Redis关机重启,则内存中的数据全部丢失。当然,这是不允许的。Redis具......
  • Redis+Hbase+RocketMQ 实际使用问题案例分享
    需求将Hbase数据,解析后推送到RocketMQ。redis使用list数据类型,存储了需要推送的数据的RowKey及表名。简单画个流程图就是:分析及确定方案Redis明确list中元素结构......