小弟这两天在看redis原理,甚是蒙圈。索性去搭下看下。html
集群搭建首先要有一个活多个服务器。小弟本机虚拟机运行。因此都装一个地方了node
下面开始:linux
一、csdn上gem包 由于没有积分。无法下。因此下了个redis-3.0.0-rc2.tar.gz nginx
wget http://download.redis.io/releases/redis-3.0.0.tar.gz
二、建立目录到redis
/usr/local/redis/redis-cluster/redis1vim
三、解压到redis1中安全
tar zxvf redis-3.0.0.tar.gz redis1
四、由于是gz包,跟gem包结构稍有不一样。因此,要去src下执行ruby
make MALLOC=libc
五、回退到redis1目录,vim redis.config,修改daemonize 为yes port 7001(本机集群用端口好区分,多个服务器的话 就ip就行)bash
REDIS CLUSTER 中 的
cluster-enabled yes 放开(缺省是被注释的)服务器
################################ GENERAL ##################################### # By default Redis does not run as a daemon. Use 'yes' if you need it. # Note that Redis will write a pid file in /var/run/redis.pid when daemonized. daemonize yes # Accept connections on the specified port, default is 6379. # If port 0 is specified Redis will not listen on a TCP socket. port * ################################ REDIS CLUSTER ############################### # # ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ # WARNING EXPERIMENTAL: Redis Cluster is considered to be stable code, however # in order to mark it as "mature" we need to wait for a non trivial percentage # of users to deploy it in production. # ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ # # Normal Redis instances can't be part of a Redis Cluster; only nodes that are # started as cluster nodes can. In order to start a Redis instance as a # cluster node enable the cluster support uncommenting the following: # cluster-enabled yes
六、复制redis1目录的内容 分别建立出redis2 -redis6 内容与redis1相同,只有端口号不一样,分别是7001-7006
七、写个启动脚本和中止脚本start-all.sh 和stop-all.sh
启动的
cd redis1/src
./redis-server ../redis.conf
cd ../..
cd redis2/src
./redis-server ../redis.conf
cd ../..
cd redis3/src
./redis-server ../redis.conf
cd ../..
cd redis4/src
./redis-server ../redis.conf
cd ../..
cd redis5/src
./redis-server ../redis.conf
cd ../..
cd redis6/src
./redis-server ../redis.conf
cd ../..
中止的
./redis1/src/redis-cli -p 7001 shutdown
./redis1/src/redis-cli -p 7002 shutdown
./redis1/src/redis-cli -p 7003 shutdown
./redis1/src/redis-cli -p 7004 shutdown
./redis1/src/redis-cli -p 7005 shutdown
./redis1/src/redis-cli -p 7006 shutdown
至于redis-trib.rb 是一个ruby脚本,是从redis1中拷贝出来的额,为了方便建立集群,而后执行启动脚本
八、配置ruby环境
yum install ruby
yum install rubygems
gem install redis
注意,,安装的ruby不能低于2.2版本不然 执行集群命令会报错
Error installing redis:
redis requires Ruby version >= 2.2.2.
***若是出现上述错误,那么就须要安装rvm对ruby 进行升级
先升级ssl yum -y update nss
建立个秘钥 gpg --keyserver hkp://keys.gnupg.net --recv-keys 409B6B1796C275462A1703113804BB82D39DC0E3 7D2BAF1CF37B13E2069D6956105BD0E739499BDB
安装rvm curl -sSL https://get.rvm.io | bash -s stable
以上就是安装rvm的过程。有些linux系统ssl版本高。能够不用update升级ssl的那步能够省略。
而后使用rvm 安装一个ruby:rvm install 2.4.1
查看当前ruby版本 :ruby --version
这样就安全了。就能够执行gem install redis 就是建立redis接口链接的命令。
九、执行集群建立 命令:./redis-trib.rb create --replicas 1 192.168.1.31:7001 192.168.1.31:7002 192.168.1.31:7003 192.168.1.31:7004 192.168.1.31:7005 192.168.1.31:7006
这样就建立完成了。。 默认 先建立的3个位master服务 后面的3个位从服务。
注意:这里可能会出现异常
Creating cluster
Connecting to node 192.168.37.131:7001: OK
[ERR] Node 192.168.37.131:7001 is not empty. Either the node already knows other nodes (check with CLUSTER NODES) or contains some key in database 0
这是由于 redis安装文件中存在集群文件致使。
解决方案。先中止服务,删除集群文件便可
rm -f redis*/dump.rdb
rm -f redis*/appendonly.aof
rm -f redis*/nodes.conf
重启。
注: 集群建立完成后仍能够新增节点和删除节点,而且能够建立相关的主从绑定。后续接着研究。
参考网站:https://blog.csdn.net/truelove12358/article/details/79612954
https://www.cnblogs.com/pangguoming/p/5956154.html