Redis高可用集群Redis Cluster的搭建

    xiaoxiao2022-06-30  114

    Redis-Cluster是从redis 3.0版本之后,官方退出的一款高可用集群,其效果和业内常用的 KeepAlived+HAproxy+Twemproxy+redis实现的集群在功能上是大致相同的,但是redis-cluster更加简单.

    一.redis-cluster架构图

    二.redis-cluster选举机制

    redis cluster 为了保证数据的高可用性,加入了主从模式,一个主节点对应一个或多个从节点,主节点提供数据存取,从节点则是从主节点拉取数据备份,当这个主节点挂掉后,就会有这个从节点选取一个来充当主节点,从而保证集群不会挂掉。

    三.redis-cluster配置

    (1)安装redis(路径仅供参考)

    下载解压包并解压到/usr/local/src/目录

    tar zxvf /srv/ftp/redis.3.2.9 /usr/local/src/

    编译安装

    make && make install

    笔者为了方便,将启动项和配置文件导入/usr/local/redis/

    mkdir -p /usr/local/redis/{conf,src}

    创建数据存放目录

    mkdir -p /usr/data/redis/{redis-6379,redis-6380,redis-6381,redis-6382,redis-6383,redis-6384,redis-6385,redis-6386}/{logs,dbcache,run}/

    (2)配置src 将编译好的安装包中的下面三项移入 /usr/local/redis/src/

    名称作用redis-benchmark性能测试redis-cliredis客户端启动redis-serverredis服务启动

    (3)配置conf,笔者采用了8个redis搭载集群,所以要配置8个配置文件

    文件内容参考 reids-6379.conf

    pidfile "/usr/data/redis/redis-6379/run/redis_6379.pid" save 900 1 save 300 10 save 60 10000 slave-serve-stale-data yes slave-read-only yes replication slaves repl-diskless-sync no socket server repl-diskless-sync-delay 5 change repl-disable-tcp-nodelay no slave-priority 100 appendfilename "appendonly.aof" auto-aof-rewrite-percentage 100 auto-aof-rewrite-min-size 64mb aof-load-truncated yes lua-time-limit 5000 cluster-enabled yes cluster-node-timeout 15000 slowlog-log-slower-than 10000 slowlog-max-len 128 latency-monitor-threshold 0 notify-keyspace-events "" directives. hash-max-ziplist-entries 512 hash-max-ziplist-value 64 list-max-ziplist-size -2 list-compress-depth 0 set-max-intset-entries 512 zset-max-ziplist-value 64 activerehashing yes client-output-buffer-limit normal 0 0 0 client-output-buffer-limit slave 256mb 64mb 60 client-output-buffer-limit pubsub 32mb 8mb 60 aof-rewrite-incremental-fsync yes masterauth "123" requirepass "123"

    配置redis-cluster的配置文件的注意事项 1.切记不要配密码(requirespass 123) 2.打开cluster支持(cluster-enable yes) 3.配置挂掉时间(cluster-node-timeout 15000) 4.没有主从关系(#slave of) 5.切记protected mode no,必须为no,因为保护一开redis-cluster无法从外部进行配置

    四.redis-cluster部署

    (1)部署前,先确保安装有ruby编译环境

    apt-get install ruby ruby-dev rubygems

    (2)首先需要进行redis编译处理

    gem install redis

    (3)复制redis-trib.rb到redis的主目录内

    cp /usr/local/src/redis-3.2.9/src/redis-trib.rb /usr/local/redis/src

    (4)启动redis服务

    /usr/local/redis/src/redis-server /usr/local/redis/conf/redis-6379.conf /usr/local/redis/src/redis-server /usr/local/redis/conf/redis-6380.conf /usr/local/redis/src/redis-server /usr/local/redis/conf/redis-6381.conf /usr/local/redis/src/redis-server /usr/local/redis/conf/redis-6382.conf /usr/local/redis/src/redis-server /usr/local/redis/conf/redis-6383.conf /usr/local/redis/src/redis-server /usr/local/redis/conf/redis-6384.conf /usr/local/redis/src/redis-server /usr/local/redis/conf/redis-6385.conf /usr/local/redis/src/redis-server /usr/local/redis/conf/redis-6386.conf

    (5)启动redis-cluster集群

    /usr/local/redis/src/redis-trib.rb create --replicas 1 192.168.74.148:6379 192.168.74.148:6380 192.168.74.148:6381 192.168.74.148:6382 192.168.74.148:6383 192.168.74.148:6384 192.168.74.148:6385 192.168.74.148:6386

    (6)启动成功 启动成功后会出现如下提示信息 主从分配是redis-cluster自动分配,M代表主服务器,S代表从服务器

    输入yes代表同意集群自动分配的主从关系

    五.redis-cluster集群测试

    (1)启动任何一个节点,因为在redis-cluster集群当中,任何一个节点都是平等的关系,所以启动任何一个都代表进入了集群

    /usr/local/redis/src/redis-cli -h 192.168.74.148 -p 6379 -a 123 -c

    (2)存入数据进行测试

    set hello sjw

    会出现提示信息,把当前数据存放在6381端口的服务器中,并跳转到6381

    在此提醒切记配置好redis-cluster后不可单独操作某一节点否则会产生如下错误 则需要进入每一个节点进行

    cluster reset

    此时代表配置成功!!!


    最新回复(0)