redis集群搭建笔记

老早之前写的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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值