安装部署任何一个应用其实都很简单,只要安装步骤一步一步来就好了。下面说一下 Redis 集群搭建规划,因为集群至少须要6个节点(3主3从模式),因此,若是没有这么多机器,本地也起不了那么多虚拟机(电脑太烂),如今计划是在一台机器上模拟一个集群,固然,这和生产环境的集群搭建没本质区别。html
咱们计划集群中 Redis 节点的端口号为 9001-9006 ,端口号即集群下各实例文件夹。数据存放在 端口号/data 文件夹中。node
mkdir /usr/local/redis-cluster cd redis-cluster/ mkdir -p 9001/data 9002/data 9003/data 9004/data 9005/data 9006/data
在 /usr/local/redis-cluster 下建立 bin 文件夹,用来存放集群运行脚本,并把安装好的 Redis 的 src 路径下的运行脚本拷贝过来。看命令:git
cd /usr/local/redis-cluster mkdir bin cd /usr/local/redis-3.2.9/src cp mkreleasehdr.sh redis-benchmark redis-check-aof redis-cli redis-server redis-trib.rb /usr/local/redis-cluster/bin
##咱们如今从已安装好的 Redis 中复制一个新的实例到 9001 文件夹,并修改 redis.conf 配置。 cp -r /usr/local/redis /usr/local/redis-cluster/9001 ##注意,修改 redis.conf 配置和单点惟一区别是下面部分,其他仍是常规的这几项: port 9001(每一个节点的端口号) daemonize yes bind 192.168.140.137(绑定当前机器 IP) dir /usr/local/redis-cluster/9001/data/(数据文件存放位置) pidfile /var/run/redis_9001.pid(pid 9001和port要对应) cluster-enabled yes(启动集群模式) cluster-config-file nodes-9001.conf(9001和port要对应) cluster-node-timeout 15000 appendonly yes
咱们已经完成了一个节点了,其实接下来就是机械化的再完成另外五个节点,其实能够这么作:把 9001 实例 复制到另外五个文件夹中,惟一要修改的就是 redis.conf 中的全部和端口的相关的信息便可,其实就那么四个位置。开始操做:github
\cp -rf /usr/local/redis-cluster/9001/* /usr/local/redis-cluster/9002 \cp -rf /usr/local/redis-cluster/9001/* /usr/local/redis-cluster/9003 \cp -rf /usr/local/redis-cluster/9001/* /usr/local/redis-cluster/9004 \cp -rf /usr/local/redis-cluster/9001/* /usr/local/redis-cluster/9005 \cp -rf /usr/local/redis-cluster/9001/* /usr/local/redis-cluster/9006 ## \cp -rf 命令是不使用别名来复制,由于 cp 实际上是别名 cp -i,操做时会有交互式确认,比较烦人。
其实很是简单了,你经过搜索会发现其实只有四个点须要修改,咱们全局替换下吧,进入相应的节点文件夹,作替换就行了。命令很是简单:redis
vim /usr/local/redis-cluster/9002/redis/etc/redis.conf vim /usr/local/redis-cluster/9003/redis/etc/redis.conf vim /usr/local/redis-cluster/9004/redis/etc/redis.conf vim /usr/local/redis-cluster/9005/redis/etc/redis.conf vim /usr/local/redis-cluster/9006/redis/etc/redis.conf :%s/9001/9002 :%s/9001/9003 :%s/9001/9004 :%s/9001/9005 :%s/9001/9006 ## 其实咱们也就是替换了下面这四行: port 9002 dir /usr/local/redis-cluster/9002/data/ cluster-config-file nodes-9002.conf pidfile /var/run/redis_9002.pid
##这里用了/usr/local/redis/bin/ 目录下的redis服务启动的, ## 也可使用9001各个目录下的redis服务分别启动 /usr/local/redis/bin/redis-server /usr/local/redis-cluster/9001/redis/etc/redis.conf /usr/local/redis/bin/redis-server /usr/local/redis-cluster/9002/redis/etc/redis.conf /usr/local/redis/bin/redis-server /usr/local/redis-cluster/9003/redis/etc/redis.conf /usr/local/redis/bin/redis-server /usr/local/redis-cluster/9004/redis/etc/redis.conf /usr/local/redis/bin/redis-server /usr/local/redis-cluster/9005/redis/etc/redis.conf /usr/local/redis/bin/redis-server /usr/local/redis-cluster/9006/redis/etc/redis.conf
启动成功看下图:算法
/usr/local/redis-cluster/9001/redis/bin/redis-cli -c -h 192.168.140.137 -p 9001
**添加数据是会报错: ** spring
(error) CLUSTERDOWN Hash slot not served
这是由于虽然咱们配置并启动了 Redis 集群服务,可是他们暂时还并不在一个集群中,互相直接发现不了,并且尚未可存储的位置,就是所谓的slot(槽)。shell
##因为 Redis 集群须要使用 ruby 命令,因此咱们须要安装 ruby 和相关接口。 yum install ruby yum install rubygems gem install redis ##执行此行命令会报错, 要使用本地上传方式
下载地址: 安装包GitHubvim
从本地上传到Linux
将此文件拖到usr/local目录下缓存
文件上传到Linux中后 进入/usr/local/到执行下面的命令
gem install -l redis-3.2.1.gem
/usr/local/redis-cluster/bin/redis-trib.rb create --replicas 1 192.168.140.137:9001 192.168.140.137:9002 192.168.140.137:9003 192.168.140.137:9004 192.168.140.137:9005 192.168.140.137:9006
执行效果以下,发现有三主三备:
目前来看,9001-9003 为主节点,9004-9006 为从节点,并向你确认是否赞成这么配置。输入 yes 后,会开始集群建立。
M: fbec3c1091ff20adbabf8d144043cc3abae9a7f9 ##为主节点Id S: 09726b68f4a1c849e8e188bd45d506aed17fd970 192.168.140.137:9004 slots: (0 slots) slave replicates fbec3c1091ff20adbabf8d144043cc3abae9a7f9 ##从节点下对应主节点Id
## 这里要输入-c,表示集群环境 /usr/local/redis-cluster/9001/redis/bin/redis-cli -c -h 192.168.140.137 -p 9001 set name 123456 ## 会发现它自动跳转到9002redis上面
spring: redis: database: 0 # host: 132.168.44.127 # port: 6379 # password: 123456 jedis: pool: max-active: 8 max-wait: -1 max-idle: 8 min-idle: 0 timeout: 10000 cluster: nodes: - 192.168.140.137:9001 - 192.168.140.137:9002 - 192.168.140.137:9003 - 192.168.140.137:9004 - 192.168.140.137:9005 - 192.168.140.137:9006 ###扩展注册方式 代码获取到配置文件 灵活该密码
Redis集群默圦是不支持亊各,可是亊各能够在単独节点上能够支持 写插件Redis+Lua