此文章时间较长没更新,请查看最新文章:
右键在新标签页中打开链接即可。
《centos7 Redis Cluster分布式集群搭建》
-------------------------------------------------- 分割线 ----------------------------------------
redis作为内存数据库,由于其性能的强大,和支持多种类型的数据,常被用来作为缓存数据库使用,之前有一篇文章,介绍了redis 的主从配置和哨兵来搭建分布式的缓存集群。
之前是按照6台机,3台为一组,一主两从,三个哨兵都监控主(哨兵进程和服务进程是分离的,三台机,三个哨兵进程,三个服务进程,服务又分为一主两从),来配置。但是细心的朋友肯定会发现,这样配置的集群,组与组之间是没有联系的。并不能自动的分配缓存数据,要想两组做一个配合来为同一个应用提供缓存服务,则还需要配置一个分发规则,通过这个分发规则来存储和提取缓存数据。
主要是这个分发规则需要自己配置,可以自己写,也可以用第三方的中间插件,由于本人的太懒,不想取研究分发规则的配置。所以,改用redis cluster集群。
这是redis官方的一个用与集群搭建功能,实现了主从替换,自动分发存取。是一个去中心化的分布式集群。非常方便,redis cluster集群最少需要6个节点,也就是6个服务,三个主,三个从。当然你可以单机模拟,也可以多机实现,都可以。
redis cluster 集群搭建好后,就相当于是一个整体了,当集群中的 任一 master 挂掉,然后没有slave替换,则集群进去fail 状态,整体不可用。因为redis cluster集群是通过solt分配来进行自动分发和存储的,当这些slot中任意一段丢失,都会进去fail状态,整体不可用。
这里具体讲解一下redis cluster集群的搭建和,具体原理介绍可自行百度。下面进行安装步骤:
系统环境 centos7.2
6台服务器 ip为别为 192.168.1.100~192.168.1.105
1. 先为你的每台机下载安装redis
可以参考我之前的redis安装教程
2.登陆192.168.1.100 的机子
$ vi **/redis.conf (修改redis配置文件,根据你自己放置的路径,以下为可能需要修改的项)
---------------------------------------------------------------------------------------------
# bind 127.0.0.1 (注释掉bind,允许任意ip的连接访问,等于 bind 0.0.0.0)
daemonize yes (守护进程,在后台启动)
protected-mode no (关掉安全保护,在内网的话可以选择关掉,如何你没有设置密码或注释了bind,不关闭的话会连接报错)
port 6379 (端口,随你高兴,我这里直接没改,用的默认)
logfile "/usr/local/redis-4.0.1/log/redis-cluster.log" (指定pid文件路径,可以直接默认)
logfile "/usr/local/redis-4.0.1/log/redis-cluster.log" (指定日志文件路径,可以直接默认)
#save 900 1
#save 300 10
#save 60 10000 (注释掉持久化设置,全部存在内存中)
maxmemory 2gb (最大内存,根据你电脑自身内存自定义)
cluster-enabled yes (开启cluster集群)
cluster-config-file **/nodes.conf (自定义指定cluster集群的配置文件路径,启动会自动生成)
cluster-node-timeout 5000 (超时时间,默认我15秒,我设的5秒)
appendonly no (这是用来持久化的,我们用作缓存时,不用开启,默认为no)
------------------------------------------------------------------------------------------------------------------
保存退出,将这个配置文件发到另外的所有服务器上。
3. 依次在每台服务器上 使用这个配置文件启动redis-server
$ redis-server **/redis.conf (指定配置文件启动redis)
4. 回到第一台服务器 192.168.1.100 上。
$ yum -y install ruby ruby-devel rubygems rpm-build ( 安装一些 ruby 的依赖)
5.需要安装 ruby 的 redis插件。
$ gem install redis (可以连接直接这样下载安装)
$ gem install -l redis-3.3.3.gem (如果时内网,不能联网的,用别的机器下载这个插件,传到该服务 器上,然后用 -l 指定安装包路径安装。)
下载地址:https://rubygems.org/gems/redis/versions/3.3.3
6. 好了,现在可以利用redis官方给的自动集群搭建工具来创建集群。
$ redis-trib.rb create --replicas 1 192.168.1.100:6379 192.168.1.101:6379 192.168.1.102:6379 192.168.1.103:6379 192.168.1.104:6379 192.168.1.105:6379
(1 表示master 的slave为一个,如果节点多,可以按需自定。设定后,会自动分配matser和slave。会出现以下内容,则为成功搭建了集群。)
------------------------------------------------------------
>>> Creating cluster
>>> Performing hash slots allocation on 6 nodes...
Using 3 masters:
192.168.1.100:6379
192.168.1.101:6379
192.168.1.102:6379
Adding replica 172.18.42.182:6379 to 192.168.1.100:6379
Adding replica 172.18.42.183:6379 to 192.168.1.101:6379
Adding replica 172.18.42.184:6379 to 192.168.1.102:6379
M: 51bdb89760b5f829dd4395a6abea707c45e4d133 192.168.1.100:6379
slots:0-5460 (5461 slots) master
M: d0d49ab33a36332889de72179cd3f57d682fb637 192.168.1.101:6379
slots:5461-10922 (5462 slots) master
M: ec15af32df3281ac7f2c9887b977edd51b681240 192.168.1.102:6379
slots:10923-16383 (5461 slots) master
S: 3a33282e1da1ed4072dbff84f3b9f0c0bb14a04b 192.168.1.103:6379
replicates 51bdb89760b5f829dd4395a6abea707c45e4d133
S: 9913e9e0ef9e37fcf32f02d2de5a520124f34bb9 192.168.1.104:6379
replicates d0d49ab33a36332889de72179cd3f57d682fb637
S: b8846a2dbe7edb3ea228f85831769d9c210de4b1 192.168.1.105:6379
replicates ec15af32df3281ac7f2c9887b977edd51b681240
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 192.168.1.100:6379)
M: 51bdb89760b5f829dd4395a6abea707c45e4d133 192.168.1.100:6379
slots:0-5460 (5461 slots) master
1 additional replica(s)
S: 3a33282e1da1ed4072dbff84f3b9f0c0bb14a04b 192.168.1.103:6379
slots: (0 slots) slave
replicates 51bdb89760b5f829dd4395a6abea707c45e4d133
M: ec15af32df3281ac7f2c9887b977edd51b681240 192.168.1.101:6379
slots:10923-16383 (5461 slots) master
1 additional replica(s)
S: 9913e9e0ef9e37fcf32f02d2de5a520124f34bb9 192.168.1.104:6379
slots: (0 slots) slave
replicates d0d49ab33a36332889de72179cd3f57d682fb637
S: b8846a2dbe7edb3ea228f85831769d9c210de4b1 192.168.1.105:6379
slots: (0 slots) slave
replicates ec15af32df3281ac7f2c9887b977edd51b681240
M: d0d49ab33a36332889de72179cd3f57d682fb637 192.168.1.102:6379
slots:5461-10922 (5462 slots) master
1 additional replica(s)
[OK] All nodes agree about slots configuration.
>>> Check for open slots...
>>> Check slots coverage...
[OK] All 16384 slots covered.
--------------------------------------------------------------------------
ok。到此集群搭建完成。可以进行测试,在任意一台机上,输入数据,可以从任意一台机上进行取值。
$ redis-cli -c ( 在使用客户端进行连接时,需要加上 “-c” 。其他的正常操作)