当前位置: 首页 > java >正文

redis集群-docker环境

* redis5.0 系列 cluster 集群部署

# 规划:(三主六从)

    104: 6391 6392 6393        105: 6394 6395 6396        110: 6397 6398 6399

# 搭建:(192.168.104    192.168.1.105    192.168.1.110)

    # 创建本地目录

mkdir -p /usr/local/redis-cluster/6391 &&

cd /usr/local/redis-cluster/6391 &&

mkdir -p data conf &&

........

    # 创建文件夹复制多份 /usr/local/redis-cluster/6391/conf/redis.conf

    # 修改 redis.conf:

bind                             # ip 地址

port                             # 端口

pidfile                          # pid文件

dir /data                      # 数据文件

cluster-enabled yes    # 开启 cluster

cluster-config-file       # 集群配置文件

cluster-node-timeout 15000    # 节点超时时间

    已修改附件:redis-集群.conf

    # 开放端口:(6391-6399    16391-16399)

iptables -I INPUT -p tcp -m state --state NEW -m tcp --dport 6391:6399 -j ACCEPT

iptables -I INPUT -p tcp -m state --state NEW -m tcp --dport 16391:16399 -j ACCEPT

    # 创建容器:(data 中要有 RDB 文件,若无则清空 data 重新创建(数据持久化))

docker run -d -t --name redis-1-6381 --restart=always --net=host -v /usr/local/redis-cluster/6381/conf/redis.conf:/etc/redis/redis.conf -v /usr/local/redis-cluster/6381/data:/data redis:5.0.3 /bin/bash -c "redis-server /etc/redis/redis.conf; /bin/bash"

...........

    # 创建集群主节点

docker run --rm -it redis:5.0.3 redis-cli --cluster create 192.168.1.104:6393 192.168.1.105:6396 192.168.1.110:6399

    # 添加集群从节点(前从后主)——(注意:应手动指定主从)

    # docker run --rm -it redis:5.0.3 redis-cli --cluster add-node 从节点 主节点 --cluster-slave

docker run --rm -it redis:5.0.3 redis-cli --cluster add-node 192.168.1.104:6391 192.168.1.104:6393 --cluster-slave

docker run --rm -it redis:5.0.3 redis-cli --cluster add-node 192.168.1.104:6392 192.168.1.104:6393 --cluster-slave

docker run --rm -it redis:5.0.3 redis-cli --cluster add-node 192.168.1.105:6394 192.168.1.105:6396 --cluster-slave

docker run --rm -it redis:5.0.3 redis-cli --cluster add-node 192.168.1.105:6395 192.168.1.105:6396 --cluster-slave

docker run --rm -it redis:5.0.3 redis-cli --cluster add-node 192.168.1.110:6397 192.168.1.110:6399 --cluster-slave

docker run --rm -it redis:5.0.3 redis-cli --cluster add-node 192.168.1.110:6398 192.168.1.110:6399 --cluster-slave

    # 集群主从对应情况

master 104:6393  :     slave 104:6391 、slave 104:6392

master 105:6396  :     slave 105:6394 、slave 105:6395

master 110:6399  :     slave 110:6397 、slave 110:6398

# 指令笔记:

    # 登录集群    docker run --rm -it redis:5.0.3 redis-cli -c -h 192.168.1.104 -p 6391

    # 查看信息    cluster info

    # 查看节点    cluster nodes

    # 清除缓存    flushall    (若要清除全部缓存,只需清除三个主节点即可)

    # 其他

        set kkk 111    创建一个 key

        get kkk          得到一个 key

        del kkk          删除一个 key

        keys *            查看所有 key

    # 将当前节点设置为 node_id 指定的节点的从节点(重新指定主节点)    CLUSTER REPLICATE <node_id>

    # 查看当前节点信息(可直观易读看主从情况)    info

    # 删除并重新添加集群节点

    登录集群任意节点

redis-cli -c -h 10.11.0.41 -p 7001 --cluster-replicas 1 -a xxxxxxxx

    获取旧节点(从节点)ID,及其对应的主节点ID

 CLUSTER NODES

    移除从节点

CLUSTER FORGET <旧节点ID>

    启动新节点后,将新节点加入集群

CLUSTER MEET <新节点IP> <新节点端口>

    配置主从关系,首先登录新节点

redis-cli -c -h <新节点IP> -p <新节点端口> -a xxxxxxxxxx

CLUSTER REPLICATE <主节点ID>

    验证集群

CLUSTER NODES

    # 若需要更换的节点是主节点,则只需手动执行故障转移即可:

1.登录主节点对应的某个从节点

2.在从节点上执行故障转移,其将升为主节点:CLUSTER FAILOVER

    # 添加集群新的从节点

        (1)开放端口 6381 16381

iptables -I INPUT -p tcp -m state --state NEW -m tcp --dport 6381 -j ACCEPT

iptables -I INPUT -p tcp -m state --state NEW -m tcp --dport 16381 -j ACCEPT

service iptables save &&

service iptables restart &&

service docker restart

        (2)创建容器:

    cd /usr/local/redis-cluster/

    cp -r 6391 6381

    # 删除 data 内数据文件

    # 修改配置文件:bind - 替换 IP 地址 + 一键替换所有端口为 6381

    docker run -d -t --name redis-2-6381 --restart=always --net=host -v /usr/local/redis-cluster/6381/conf/redis.conf:/etc/redis/redis.conf -v /usr/local/redis-cluster/6381/data:/data redis:5.0.3 /bin/bash -c "redis-server /etc/redis/redis.conf; /bin/bash"

        (3)添加从节点:

    docker run --rm -it redis:5.0.3 redis-cli --cluster add-node 从节点 主节点 --cluster-slave

    例如:docker run --rm -it redis:5.0.3 redis-cli --cluster add-node 192.168.1.104:6381 192.168.1.105:6394 --cluster-slave

# 测试总结:

    * 三个主节点分配等量的槽,依据此存储不同数据。

    * 集群中的主从节点,客户端无论连接到哪个都能直接进行完整的读写操作,不需要连接所有的节点(从任意一个节点存储数据,都会根据数据的 key 找到相应的槽,存入相应的主节点)

    * 若某一从节点挂掉,不影响数据的存取(且重启后自动加入集群)

    * 若某一主节点挂掉,则会从其对应的两个从节点中自动推举一个从节点变成主节点,具备读写功能,且原有数据依然存在于该新主节点(注意:重启挂掉的主节点后,原主节点会作为从节点加入集群,成为新主节点的从节点)

    * 集群挂掉的两种情况:1. 某个主节点挂掉后没有对应的从节点替换;2. 超过半数以上的主节点挂掉;

    即若集群5主5从,则若主节点挂2个,或者从节点挂5个,两种情况都不会破坏集群,但若挂了3个主节点,或者挂了相对应的一主一从两节点,则集群整体失效。因此,部署时注意部署位置。

* 部署单体 docker-redis:

mkdir -p /usr/local/redis/conf &&

mkdir -p /usr/local/redis/data

    vi /usr/local/redis/conf/redis.conf

附件:redis-单体.conf

    # 注意1:修改bind,同时使用内网IP 192.168.1.84和回环地址127.0.0.1,表示redis可同时接受本机及其他内网服务器访问。

    # 注意2:修改密码选项,注释即为关闭:requirepass

    # 注意3:redis容器的网络模式必须选择host,否则其与bind之间是冲突的,导致redis无法监听到内网IP。

docker run -d --name redis --restart=always --net=host -v /usr/local/redis/conf/redis.conf:/etc/redis/redis.conf -v /usr/local/redis/data:/data redis:5.0.3 redis-server /etc/redis/redis.conf

    # 开放端口,登录本地连接

iptables -I INPUT -p tcp -m state --state NEW -m tcp --dport 6379 -j ACCEPT

service iptables save &&

service iptables restart &&

service docker restart

docker exec -it redis redis-cli

    # 鉴权命令,成功则表示密码设置并登陆成功

    auth Hefu8Personnel666

    quit

* windows下搭建redis集群:

    附件:redis-windows集群.txt

    # 文件所在位置:C:\rediscluster

* redis集群图形化管理工具

    # mysql中创建数据库:(192.168.1.110:3306)

create database redis_manager;

    # 创建工具,连接 mysql ( 8182 )

docker run -d -t --restart=always --net=host --name redis-manager -e DATASOURCE_DATABASE='redis_manager' -e DATASOURCE_URL='jdbc:mysql://192.168.1.110:3306/redis_manager?useUnicode=true&characterEncoding=utf-8&serverTimezone=GMT%2b8' -e DATASOURCE_USERNAME='root' -e DATASOURCE_PASSWORD='hefu123' reasonduan/redis-manager

    # 登录

http://192.168.1.172:8182      admin  admin

    # 导入集群

1、点击 Import Cluster 按钮

2、Cluster Name:集群名称

3、Address:填入集群节点{IP}:{PORT},如需填入多个,请点击 New Node,示例:192.168.1.79:6391

4、Redis Password:Redis 集群密码,如果未设置密码,请不要填写

5、Environment:集群安装环境

http://www.xdnf.cn/news/17551.html

相关文章:

  • 咪咕MGV3200-KLH_GK6323V100C_板号E503744_安卓9_短接强刷包-可救砖
  • 大数据架构演变之路
  • java的三种组件漏洞靶场攻略
  • LeetCode 组合总数
  • 人工智能系列(8)如何实现无监督学习聚类(使用竞争学习)?
  • 1. 电阻选型
  • 计算机网络:如何理解目的网络不再是一个完整的分类网络
  • mpv core_thread pipeline
  • jmeter常规压测【读取csv文件】
  • 北京JAVA基础面试30天打卡06
  • Vulhub靶场组件漏洞(XStream,fastjson,Jackson)
  • 北京天津廊坊唐山打捞失物日记
  • 双非二本如何找工作?
  • jxWebUI--按钮
  • 黑马SpringBoot+Elasticsearch作业2实战:商品搜索与竞价排名功能实现
  • 【RocketMQ 生产者和消费者】- ConsumeMessageConcurrentlyService 并发消费消息
  • socket编程中系统调用send()详细讲解
  • MySQL自增ID与UUID的区别及其在索引分裂中的表现与优化
  • 七、CV_模型微调
  • 通过sealos工具在ubuntu 24.02上安装k8s集群
  • DevOps:从GitLab .gitlab-ci.yml 配置文件到CI/CD
  • 第十五讲:set和map
  • WebAssembly技术详解:从浏览器到云原生的高性能革命
  • 本地WSL部署接入 whisper + ollama qwen3:14b 总结字幕增加利用 Whisper 分段信息,全新 Prompt功能
  • 国内外主流大模型深度体验与横向评测:技术、场景与未来展望
  • 生产工具革命:定制开发开源AI智能名片S2B2C商城小程序重构商业生态的范式研究
  • 密码学的数学基础2-Paillier为什么产生密钥对比RSA慢
  • 基于django的宠物用品购物商城的设计与实现
  • Windows安装MySql8.0
  • docker等基础工具使用