配置Redis主从复制和集群配置详解
1. 配置redis主从复制。
1.1. 应用场景
一般来说,要将Redis运用于工程项目中,只使用一台Redis是万万不能的,原因如下:
a) 从结构上,单个Redis服务器会发生单点故障,并且一台服务器需要处理所有的请求负载,压力较大;
b) 从容量上,单个Redis服务器内存容量有限,就算一台Redis服务器内存容量为256G,也不能将所有内存用作Redis存储内存,一般来说,单台Redis最大使用内存不应该超过20G。
1.2. 基本原理
电商网站上的商品,一般都是一次上传,无数次浏览的,说专业点也就是"多读少写"。
对于这种场景,我们可以使如下这种架构:
5) 步骤五,创建集群
创建集群的命令:
/usr/local/bin/redis-trib.rb create --replicas 1 192.168.153.164:7001 192.168.153.164:7002 192.168.153.164:7003 192.168.153.164:7004 192.168.153.164:7005 192.168.153.164:7006
##升级ruby
gpg2 --keyserver hkp://keys.gnupg.net --recv-keys D39DC0E3
curl -L get.rvm.io | bash -s stable
source /usr/local/rvm/scripts/rvm
rvm list known
rvm install 2.3.3
rvm use 2.3.3
rvm use 2.3.3 --default
ruby --version
6) 验证集群
redis-cli -c -h 192.168.153.164 -p 7001 其中-c表示以集群方式连接redis,-h指定ip地址,-p指定端口号
验证主节点异常时,备节点自动顶替主节点
杀死7002对应的进程,即让主节点7002异常,检查7005是否顶替成为主节点。
2.4. 集群的特点(1)所有的redis 节点彼此互联(PING-PONG 机制),内部使用二进制协议优化传输速度和带宽; (2)节点的fail 是通过集群中超过半数的节点检测失效时才生效; (3)客户端与redis 节点直连,不需要中间proxy 层。客户端不需要连接集群所有节点,连接集群中任何一 个可用节点即可; (4)redis-cluster把所有的物理节点映射到[0-16383]个slot(哈希槽)上,cluster 负责维护 node<->slot<->value 。
2.5. 集群选举容错
(1):什么时候整个集群不可用(cluster_state:fail)? A:如果集群任意master 挂掉,且当前master 没有slave。集群进入fail 状态,也可以理解成集群的 slot 映射[0-16383]不完整时进入fail 状态。 ps : redis-3.0.0.rc1 加入 cluster-require-full- coverage 参数,默认关闭,打开集群兼容部分失败; B:如果集群超过半数以上master 挂掉,无论是否有slave集群进入fail 状态。ps:当集群不可用时, 所有对集群的操作做都不可用,收到((error) CLUSTERDOWN The cluster is down)错误。
版权付亚东笔记博客所有,禁止转载!!付亚东Java笔记博客
我的笔记博客版权我的笔记博客版权