欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

redis集群搭建笔记

程序员文章站 2022-07-05 13:20:43
...

老早之前写的txt笔记,现在转移到博客上,以备文件丢失

redis cluster 架构

架构细节:
(1)所有的redis节点彼此互联(PING-PONG机制),内部使用二进制协议优化传输速度和带宽.
(2)节点的fail是通过集群中超过半数的节点检测失效时才生效.
(3)客户端与redis节点直连,不需要中间proxy层.客户端不需要连接集群所有节点,连接集群中任何一个可用节点即可
(4)redis-cluster把所有的物理节点映射到[0-16383]slot上,cluster 负责维护node<->slot<->value
2) redis-cluster选举:容错

(1)领着选举过程是集群中所有master参与,如果半数以上master节点与master节点通信超过(cluster-node-timeout),认为当前master节点挂掉.
(2):什么时候整个集群不可用(cluster_state:fail),当集群不可用时,所有对集群的操作做都不可用,收到((error) CLUSTERDOWN The cluster is down)错误
a:如果集群任意master挂掉,且当前master没有slave.集群进入fail状态,也可以理解成进群的slot映射[0-16383]不完成时进入fail状态.
b:如果进群超过半数以上master挂掉,无论是否有slave集群进入fail状态.
c:redis官方推荐 至少六个节点 3 master 3 slave

Redis集群的创建

Redis的安装
下载redis3.2
使用wget 命令 或者直接下载redis-3.2.5.tar.gz 安装包
创建目录 进入/use/local/
Mkdir redis3.2 创建文件夹
将安装包上传至服务器目录/use/local/redis3.2目录
Tar xzf redis-3.2.5.tar.gz 进行解压
进入 /use/local/redis/redis 目录
Make 命令进行编译
Make test 进行测试 一般会缺少tcl 组件
yum install gcc gcc-c++ kernel-devel automake autoconf libtool make wget tcl vim ruby rubygems unzip git -y 安装必要的插件和环境。
gem install redis gem对 redis的支持
make PREFIX=/usr/local/redis install指定目录安装进入 use/local/bin/ 目录
Mkdir /usr/local/redis/config 创建 config目录 用于存放 配置文件
Mkdir /usr/local/redis/db 创建db 文件目录 用于存放集群配置文件,和持久本地数据库
Mv /usr/local/redis/redis/redis.conf /usr/local/redis/config 将配置文件移动到config目录

编辑配置文件
daemonize yes 修改后台守护线程运行
bind 监听地址 0.0.0.0 为不限制
requirepass foobared 配置密码,如做集群不能先配置密码
dbfilename 7000dump.rdb本地DB文件名称
port 修改端口号
dir /usr/local/redis/db/ 指定集群配置文件目录与本地数据文件目录
databases 修改数据库数量 (集群默认为1个库)
集群处理
cluster-enabled yes 用于开实例的集群模式,
cluster-config-file nodes.conf设定了保存节点配置文件的路径, 默认值为nodes.conf 。它由 Redis 集群在启动时创建, 并在有需要时自动进行更新。
cluster-node-timeout 5000 链接超时时间
appendonly yes 持久化

分别将配置文件上传到六个节点 /usr/local/redis/config/目录
cd /usr/local/redis/bin 进入目录
./redis-server ../config/redis.conf 分别启动六个节点

创建集群
Redis-trib.rb 没有权限 可sudo chmod 777 redis-trib.rb 获取权限

redis-trib.rb create --replicas 1 172.21.25.2:6379 172.21.25.3:6379 172.21.25.4:6379 172.21.25.5:6379 172.21.25.6:6379 172.21.25.7:6379
redis-trib.rb create --replicas 1 10.25.135.230:6379 10.25.135.225:6379 10.45.150.65:6379 10.45.151.169:6379 10.45.148.85:6379 10.45.149.169:6379
./ redis-trib.rb  check 10.25.135.230:6379 10.25.135.225:6379 10.45.150.65:6379 10.45.151.169:6379 10.45.148.85:6379 10.45.149.169:6379

–replicas 1 表示我们希望为集群中的每个主节点创建一个从节点。

输入yes 即可配置完成

查看当前集群下所有的节点

redis-cli -p 6379 cluster nodes

崩溃某台机器

redis-cli -p 6379 debug segfault

更改节点

链接当前机器,

cluster replicate 3c3a0c74aae0b56170ccb03a76b60cfe7dc1912e (要链接的ID)

进行槽点分配

redis-trib.rb reshard 127.0.0.1:7000

开放端口

/sbin/iptables -I INPUT -p tcp --dport 6379 -j ACCEPT
service iptables restart

//总线集群端口

/sbin/iptables -I INPUT -p tcp --dport 16379 -j ACCEPT
service iptables restart

有坑提示:
1、 如遇集群创建错误,在关闭redis 后删除/usr/local/redis/db 目录所有内容
2、 如集群创建时出现 Sending CLUSTER MEET messages to join the cluster
Waiting for the cluster to join.. 请开通集群通讯端口,比如机redis端口为6379 请再开通16379端口以保证集群之间通信
3、
rm /usr/local/redis/db/appendonly.aof
/usr/local/redis/db/dump.rdb
/usr/local/redis/db/nodes-6379.conf

//设置gem源

$ gem sources –add https://gems.ruby-china.org/ –remove https://rubygems.org/
$ gem sources -l
https://gems.ruby-china.org

确保只有 gems.ruby-china.org

出现:111:in `_write_to_socket’: Connection timed out (Redis::TimeoutError) 错误
更换源后 更换版本

gem list
gem uninstall redis --version 3.3.2
gem install redis --version 3.0.0
gem list
相关标签: redis 集群