Redis集群搭建全记录

本文给大家总结了redis集群的概念等基础知识,以及个人在搭建redis集群是所遇到的问题及解决方法,非常的详细,有需要的小伙伴可以参考下

Redis集群是一个提供在多个Redis节点间共享数据的程序集。

  Redis集群中不支持处理多个keys的命令。

  Redis集群通过分区来提供一定程度的可用性。在某个节点宕机或者不可用的时候可以继续处理命令。

Redis集群数据分片

  在Redis集群中,使用数据分片(sharding)而不是一致性hash(consistency hashing)来实现,一个Redis集群包含16384个哈希槽(hash slot),数据库中的每个键都存在这些哈希槽中的某一个,通过CRC16校验后对16384取模来决定。

  加入说现在集群中有三个节点,那么

  ①节点A包含0到5500号哈希槽。

  ②节点B包含5501到11000号哈希槽。

  ③节点C包含11001到16384号哈希槽。

  然后如果我们要增加一个节点的时候,会从ABC三个节点分别得到一部分槽到D上。如果我们移除一个节点的时候,就会把移除的节点的分隔槽移到剩下的槽上面。

Redis主从复制模型

  为了实现Redis的集群的高可用性。Redis提供了一个主从复制模型。每个节点都会有N-1个复制品。

  如果在创建集群的时候,我们为每个节点添加了一个从节点,这时候,如果其中的某个主节点挂掉了,便会把它的从节点做为新的主节点,继续提供服务。但是如果主节点和从节点都挂掉了,那就不可以继续使用了。

Redis集群搭建

  Redis集群由多个云新在集群模式下的Redis实例组成。实例的集群模式需要通过配置来开启。

  下面是一个包含了最少选项的集群配置文件实例:

 port 7000 cluster-enabled yes cluster-config-file nodes.conf cluster-node-timeout 5000 appendonly yes pidfile /var/run/redis_xxxx.pid dir /usr/local/redis-cluster/xxxx 

port指定了节点的端口号

cluster-enabled yes选项用于开启实例的集群模式

cluster-config-file nodes.conf设置了保存节点的配置文件路径,这个文件无须认为修改,是在集群启动的时候创建。

cluster-node-timeout 5000:设置了方式失败的等待时间。即5秒还访问不了就认为这个节点不可用。

appendonly yes:用于开启aof持久化

 pidfile /var/run/redis_xxxx.pid设置pid文件的位置,其中xxxx为端口号

dir /usr/local/redis-cluster/xxxx设置工作目录,其中xxxx为端口号。

此时目录中的文件是这样的

 [root@localhost 10:49 /usr/local/redis-cluster]# ll 7000 7001 7002 7003 7004 7005 7000: 总用量 7080 -rw-r--r--. 1 root root  57787 9月 10 10:44 redis.conf -rwxr-xr-x. 1 root root 7185872 9月 10 09:50 redis-server 7001: 总用量 7080 -rw-r--r--. 1 root root  57787 9月 10 10:46 redis.conf -rwxr-xr-x. 1 root root 7185872 9月 10 10:04 redis-server 7002: 总用量 7080 -rw-r--r--. 1 root root  57787 9月 10 10:46 redis.conf -rwxr-xr-x. 1 root root 7185872 9月 10 10:04 redis-server 7003: 总用量 7080 -rw-r--r--. 1 root root  57787 9月 10 10:47 redis.conf -rwxr-xr-x. 1 root root 7185872 9月 10 10:04 redis-server 7004: 总用量 7080 -rw-r--r--. 1 root root  57787 9月 10 10:48 redis.conf -rwxr-xr-x. 1 root root 7185872 9月 10 10:04 redis-server 7005: 总用量 7080 -rw-r--r--. 1 root root  57787 9月 10 10:48 redis.conf -rwxr-xr-x. 1 root root 7185872 9月 10 10:04 redis-server [root@localhost 10:49 /usr/local/redis-cluster]# 

下面启动这六个节点

 [root@localhost 10:51 /usr/local/redis-cluster]# ./7000/redis-server ./7000/redis.conf 3547:C 10 Sep 10:51:58.519 # oO0OoO0OoO0Oo Redis is starting oO0OoO0OoO0Oo 3547:C 10 Sep 10:51:58.519 # Redis version=4.0.1, bits=32, commit=00000000, modified=0, pid=3547, just started 3547:C 10 Sep 10:51:58.519 # Configuration loaded [root@localhost 10:51 /usr/local/redis-cluster]# ./7001/redis-server ./7001/redis.conf 3552:C 10 Sep 10:52:05.549 # oO0OoO0OoO0Oo Redis is starting oO0OoO0OoO0Oo 3552:C 10 Sep 10:52:05.550 # Redis version=4.0.1, bits=32, commit=00000000, modified=0, pid=3552, just started 3552:C 10 Sep 10:52:05.550 # Configuration loaded [root@localhost 10:52 /usr/local/redis-cluster]# ./7002/redis-server ./7002/redis.conf 3557:C 10 Sep 10:52:13.098 # oO0OoO0OoO0Oo Redis is starting oO0OoO0OoO0Oo 3557:C 10 Sep 10:52:13.098 # Redis version=4.0.1, bits=32, commit=00000000, modified=0, pid=3557, just started 3557:C 10 Sep 10:52:13.098 # Configuration loaded [root@localhost 10:52 /usr/local/redis-cluster]# ./7003/redis-server ./7003/redis.conf 3563:C 10 Sep 10:52:18.986 # oO0OoO0OoO0Oo Redis is starting oO0OoO0OoO0Oo 3563:C 10 Sep 10:52:18.986 # Redis version=4.0.1, bits=32, commit=00000000, modified=0, pid=3563, just started 3563:C 10 Sep 10:52:18.986 # Configuration loaded [root@localhost 10:52 /usr/local/redis-cluster]# ./7004/redis-server ./7004/redis.conf 3568:C 10 Sep 10:52:23.709 # oO0OoO0OoO0Oo Redis is starting oO0OoO0OoO0Oo 3568:C 10 Sep 10:52:23.710 # Redis version=4.0.1, bits=32, commit=00000000, modified=0, pid=3568, just started 3568:C 10 Sep 10:52:23.710 # Configuration loaded [root@localhost 10:52 /usr/local/redis-cluster]# ./7005/redis-server ./7005/redis.conf 3573:C 10 Sep 10:52:27.146 # oO0OoO0OoO0Oo Redis is starting oO0OoO0OoO0Oo 3573:C 10 Sep 10:52:27.147 # Redis version=4.0.1, bits=32, commit=00000000, modified=0, pid=3573, just started 3573:C 10 Sep 10:52:27.147 # Configuration loaded [root@localhost 10:52 /usr/local/redis-cluster]# 

查看启动后的进程:

 [root@localhost 10:52 /usr/local/redis-cluster]# ps aux|grep redis root   3548 0.2 0.2 41964 2288 ?    Ssl 10:51  0:00 ./7000/redis-server 127.0.0.1:7000 [cluster] root   3553 0.1 0.2 41964 2288 ?    Ssl 10:52  0:00 ./7001/redis-server 127.0.0.1:7001 [cluster] root   3558 0.2 0.2 41964 2288 ?    Ssl 10:52  0:00 ./7002/redis-server 127.0.0.1:7002 [cluster] root   3564 0.1 0.2 41964 2292 ?    Ssl 10:52  0:00 ./7003/redis-server 127.0.0.1:7003 [cluster] root   3569 0.2 0.2

以上就是Redis集群搭建全记录的详细内容,更多请关注0133技术站其它相关文章!

赞(0) 打赏
未经允许不得转载:0133技术站首页 » 脚本专栏