Redis Cluster安装配置

操作系统:deepin15.9桌面版(国产Linux发行版)

集群介绍:Redis Cluster为官方发布集群方案,区别去其他方案(一致性哈希算法),本方案采用16384个slot槽的方案设计。可以在线修改糟的归属Redis节点,优秀的客户端可以通过不断积累更新16384个slot糟的redis节点,实现高效率。

优点:非代理,而是直接面向连接,效率很高。而且通过配置slave节点,实现高可用redis集群方案。


Redis-cluster 架构图


介绍:

(1)所有的redis节点彼此互联(PING-PONG机制),内部使用二进制协议优化传输速度和带宽.

(2)节点的fail是通过集群中超过半数的节点检测失效时才生效.

(3)客户端与redis节点直连,不需要中间proxy层.客户端不需要连接集群所有节点,连接集群中任何一个可用节点即可

(4)redis-cluster把所有的物理节点映射到[0-16383]slot上,cluster 负责维护node<->slot<->value


安装过程:

对应的redis节点和端口如下:

127.0.0.1:7000  127.0.0.1:7001

127.0.0.1:7002  127.0.0.1:7003

127.0.0.1:7004  127.0.0.1:7005

1 安装Redis:

获取包:

wget http://download.redis.io/releases/redis-3.0.0.tar.gz

解压,安装:

tar xf redis-3.0.0.tar.gz                       
cd redis-3.0.0
make && make install

创建存放多个实例的目录:

mkdir /data/cluster -p
cd /data/cluster
mkdir 7000 7001 7002 7003 7004 7005

修改配置文件:

port 7000 #端口设置

daemonize yes #开启后台进程,开启这个就可以让redis在后台自行运行

cluster-enabled yes #允许集群

cluster-config-file nodes.conf #设定了保存节点配置文件的路径, 默认值为nodes.conf ,节点配置文件无须人为修改, 它由                                                    Redis 集群在启动时创建

cluster-node-timeout 5000 #redis节点宕机被发现的时间  也是主节点服务宕机 从节点顶替上来需要的时间

appendonly yes #开启AOF模式

pidfile /var/run/redis_xxx.pid #这里时指定一个redis开启的所有进程的pid的记录文件,因为开启的redis多了,全部都写到同一个                                              文件里,不方便查阅管理

logfile "logxxx.log" #指定一个自己的log打印文件,同理,也是方便查个各自的log文件

dbfile dumpxxx.rdb #指定各种持久化的文件

分别启动6个redis实例:

cd /data/cluster/7000
redis-server redis.conf
cd /data/cluster/7001
redis-server redis.conf
cd /data/cluster/7002
redis-server redis.conf
cd /data/cluster/7003
redis-server redis.conf
cd /data/cluster/7004
redis-server redis.conf
cd /data/cluster/7005
redis-server redis.conf

查看进程否存在:

[root@redis-server 7005]# ps -ef | grep redis

执行命令创建集群,首先安装依赖,否则创建集群失败:

//安装Ruby和RubyGems
{
    apt-get install ruby-full rubygems
//测试确保路径下有gem命令:
    which gem
//如果命令没有找到,则更新相应的PATH变量,例如,您可以使用以下行:更新.bashrc文件
    export PATH=$PATH:/var/lib/gems/1.8/bin

//离线安装RubyGems
//首先下载安装包:https://rubygems.org/pages/download。
//解压并进入目录,执行命令:ruby setup.rb
    cd /home/cmfchina/rubygems
    tar -zxvf rubygems-2.6.12.tgz
// 执行命令:ruby setup.rb
}

//安装gem-redis
{
    gem install -l redis-3.0.0.gem  
//如果失败:(手工下载并安装:)
    wget https://rubygems.global.ssl.fastly.net/gems/redis-3.2.1.gem
    gem install -l ./redis-3.2.1.gem

}


创建集群:

redis-trib create --replicas 1 127.0.0.1:7000 127.0.0.1:7001 127.0.0.1:7002 127.0.0.1:7003 127.0.0.1:7004 127.0.0.1:7005
命令的意义如下:

给定 redis-trib.rb 程序的命令是 create , 这表示我们希望创建一个新的集群。
选项 --replicas 1 表示我们希望为集群中的每个主节点创建一个从节点。
之后跟着的其他参数则是实例的地址列表, 我们希望程序使用这些地址所指示的实例来创建新集群。
简单来说, 以上命令的意思就是让 redis-trib 程序创建一个包含三个主节点和三个从节点的集群。
>>> Creating cluster
Connecting to node 127.0.0.1:7000: /var/lib/gems/2.5.0/gems/redis-3.2.1/lib/redis/client.rb:443: warning: constant ::Fixnum is deprecated
OK
Connecting to node 127.0.0.1:7001: OK
Connecting to node 127.0.0.1:7002: OK
Connecting to node 127.0.0.1:7003: OK
Connecting to node 127.0.0.1:7004: OK
Connecting to node 127.0.0.1:7005: OK
>>> Performing hash slots allocation on 6 nodes...
Using 3 masters:
127.0.0.1:7000
127.0.0.1:7001
127.0.0.1:7002
Adding replica 127.0.0.1:7003 to 127.0.0.1:7000
Adding replica 127.0.0.1:7004 to 127.0.0.1:7001
Adding replica 127.0.0.1:7005 to 127.0.0.1:7002
M: 74eeaa511a26c050deaed5c33180fead4b513db3 127.0.0.1:7000
   slots:0-5460 (5461 slots) master
M: 1c0ce26bad338ddf165176f97dbdca6a1466135b 127.0.0.1:7001
   slots:5461-10922 (5462 slots) master
M: 17d6445e3da0274f4ec088a6b6f4407c26e59390 127.0.0.1:7002
   slots:10923-16383 (5461 slots) master
S: 19ee1c278329a86409238ca93c94e6afbc2b3b4a 127.0.0.1:7003
   replicates 74eeaa511a26c050deaed5c33180fead4b513db3
S: da398bc786c253c9aa7d82dee1fcaaa5de8ea1db 127.0.0.1:7004
   replicates 1c0ce26bad338ddf165176f97dbdca6a1466135b
S: 3495eee50240f5178f1bbefa9157fd5d10f3699c 127.0.0.1:7005
   replicates 17d6445e3da0274f4ec088a6b6f4407c26e59390
Can I set the above configuration? (type 'yes' to accept): yes
>>> Nodes configuration updated
>>> Assign a different config epoch to each node
>>> Sending CLUSTER MEET messages to join the cluster
Waiting for the cluster to join....
>>> Performing Cluster Check (using node 127.0.0.1:7000)
M: 74eeaa511a26c050deaed5c33180fead4b513db3 127.0.0.1:7000
   slots:0-5460 (5461 slots) master
M: 1c0ce26bad338ddf165176f97dbdca6a1466135b 127.0.0.1:7001
   slots:5461-10922 (5462 slots) master
M: 17d6445e3da0274f4ec088a6b6f4407c26e59390 127.0.0.1:7002
   slots:10923-16383 (5461 slots) master
M: 19ee1c278329a86409238ca93c94e6afbc2b3b4a 127.0.0.1:7003
   slots: (0 slots) master
   replicates 74eeaa511a26c050deaed5c33180fead4b513db3
M: da398bc786c253c9aa7d82dee1fcaaa5de8ea1db 127.0.0.1:7004
   slots: (0 slots) master
   replicates 1c0ce26bad338ddf165176f97dbdca6a1466135b
M: 3495eee50240f5178f1bbefa9157fd5d10f3699c 127.0.0.1:7005
   slots: (0 slots) master
   replicates 17d6445e3da0274f4ec088a6b6f4407c26e59390
[OK] All nodes agree about slots configuration.
>>> Check for open slots...
>>> Check slots coverage...
[OK] All 16384 slots covered.

猜你喜欢

转载自blog.csdn.net/weixin_40783338/article/details/86575535