Redis高性能内存数据库(六)Redis的集群

Posted on 2020-08-26 09:35  MissRong  阅读(185)  评论(0)    收藏  举报

Redis高性能内存数据库(六)Redis的集群

Redis主从复制集群:有多个Redis实例

1.集群的作用

主从备份 防止主机宕机

读写分离,分担master的任务

任务分离,如从服分别分担备份工作与计算工作

   作用说明:

(1)主从备份,防止主节点down机

主节点写入数据,从节点读取数据。

(2)任务分离,分摊主节点压力。

换句话说就是读写分离。

不同系统,读写压力不同。

比如说微博、朋友圈就是读的压力>写的压力

(3)读写分离:主节点写数据,从节点读取数据。

搭建:

 ./bin/redis-cli shutdown

 ps -ef | grep redis

  ll

  cd conf/

  ll

  cp redis.conf redis6379.conf

  cp redis.conf redis6380.conf

  cp redis.conf redis6381.conf

主节点:

147 #save 900 1

148 #save 300 10

149 #save 60 10000

509 appendonly no

从节点:

 50 port 6380

 182 dbfilename dump6380.rdb

 211 slaveof 192.168.109.133 6379

 514 appendfilename "appendonly6380.aof"

 ./redis-cli -p 6380

 127.0.0.1:6380> set tom 1000

(error) READONLY You can't write against a read only slave.

注意:一次启动从节点的个数不要太多,因为如果有太多从节点,会给主节点增加很多同步压力。

2.Redis集群的两种部署方式

主从复制架构:星型模型、线性模型

1)优缺点:

(1)星型结构

优点:效率高,两个slave地位一样,可以直接从主节点读取数据

缺点:实现HA比较困难。主节点挂了,把一个slave变成主,其他的slave再去连他。

提供哨兵机制来解决这个问题。

(2)线性模型

优点:HA简单。

缺点:效率不如星型模型高。

生产使用星型模型多。

2)星型结构-搭建

先停掉redis-server:

[root@bigdata111 redis]# ./bin/redis-cli shutdown

[root@bigdata111 redis]# ps -ef | grep redis

root       5294   2400  0 15:47 pts/0    00:00:00 vi redis.conf

root       5447   2505  0 16:41 pts/1    00:00:00 grep --color=auto redis

-------------------------------------------------------------------------------------------

接着拷贝redis.conf文件到不同端口:

[root@bigdata111 redis]# cp ./conf/redis.conf ./conf/redis6379.conf 

[root@bigdata111 redis]# cp ./conf/redis.conf ./conf/redis6380.conf

[root@bigdata111 redis]# cp ./conf/redis.conf ./conf/redis6381.conf

(1)主节点:

[root@bigdata111 conf]# vi redis6379.conf

:set number

为了方便起见,将RDB和AOF都关掉:

147 #save 900 1

148 #save 300 10

149 #save 60 10000

509 appendonly no

(2)从节点

50 port 6380

182 dbfilename dump6380.rdb

211 slaveof 192.168.212.111 6379

513 appendfilename "appendonly6380.aof"

  同理,另外的节点也要改:

 50 port 6381

182 dbfilename dump6381.rdb

211 slaveof 192.168.212.111 6379

513 appendfilename "appendonly6381.aof" 

接着启动redis-server:

[root@bigdata111 redis]# ./bin/redis-server ./conf/redis6379.conf

[root@bigdata111 redis]# ./bin/redis-server ./conf/redis6380.conf 

[root@bigdata111 redis]# ./bin/redis-server ./conf/redis6381.conf

[root@bigdata111 redis]# ps -ef | grep redis

root       5515      1  1 18:32 ?        00:00:00 ./bin/redis-server *:6379

root       5519      1  1 18:32 ?        00:00:00 ./bin/redis-server *:6380

root       5525      1  1 18:32 ?        00:00:00 ./bin/redis-server *:6381

root       5529   2505  0 18:33 pts/1    00:00:00 grep --color=auto redis

然后进入Redis客户端开始写数据:

 

./redis-cli -p 6380

127.0.0.1:6380> set tom 1000

(error) READONLY You can't write against a read only slave.

注意:一次启动从节点的个数不要太多,因为如果有太多从节点,会给主节点增加很多同步压力。

           如果需要同时启动很多分界点,那就得分集群了。

3.Redis主从服务的通信原理

4.Redis 哨兵--Redis集群的高可用性

 单点故障。

 Redis 2.4之后,有哨兵--解决的就是星型结构的单点故障问题

 正常情况下,哨兵就是监控master状态。接收master心跳。

 如果接收不到心跳,认为master死掉。进行HA切换。

 redis-sentinel 哨兵

 

 从安装目录下拷贝sentinel配置文件

      [root@bigdata111 redis-3.0.5]# cp ./sentinel.conf ../redis/conf/

      现在编辑修改此文件:     

 [root@bigdata111 conf]# vi sentinel.conf  

53 sentinel monitor mymaster 192.168.212.111 6379 1

  1代表一个哨兵

  mymaster:一个别名而已,可随意修改

 关于此配置文件中某些行作用的解释:

 

现在可以启动哨兵:

      [root@bigdata111 redis]# ./bin/redis-sentinel conf/sentinel.conf

      然后杀掉Master:

      

     5559:X 23 Aug 19:10:43.544 # +try-failover master mymaster 192.168.212.111 6379

      检测到主节点挂了

     5559:X 23 Aug 19:10:43.645 # +selected-slave slave 192.168.212.111:6380 192.168.212.111 6380 @ mymaster 192.168.212.111 6379

      从从节点中选出一个slave作为主节点替换挂掉的Master

     5559:X 23 Aug 19:10:44.650 # +switch-master mymaster 192.168.212.111 6379 192.168.212.111 6380

      然后将选出的slave节点变成Master节点

     5559:X 23 Aug 19:10:44.650 * +slave slave 192.168.212.111:6381 192.168.212.111 6381 @ mymaster 192.168.212.111 6380

      最后是把其他的slave节点连到新的Master节点上

5.实现Redis的代理分片

Twemproxy是一种代理分片机制,由Twitter开源。

Twemproxy作为代理,可接受来自多个程序的访问,按照路由规则,转发给后台的各个Redis服务器,再原路返回。该方案很好的解决了单个Redis实例承载能力的问题。

 

 

 安装

./configure --prefix=/root/training/proxy

make

make install

配置文件 

 

 

 检查配置文件是否正确

./nutcracker -t conf/nutcracker.yml

启动代理服务器

./nutcracker -d -c conf/nutcracker.yml

 

博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3