redis集群搭建

小弟这两天在看redis原理,甚是蒙圈。索性去搭下看下。

集群搭建首先要有一个活多个服务器。小弟本机虚拟机运行。所以都装一个地方了

下面开始:

1、csdn上gem包 因为没有积分。没法下。所以下了个redis-3.0.0-rc2.tar.gz 

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

2、创建目录到

/usr/local/redis/redis-cluster/redis1

3、解压到redis1中

tar zxvf redis-3.0.0.tar.gz redis1

4、因为是gz包,跟gem包结构稍有不同。所以,要去src下执行

make MALLOC=libc

5、回退到redis1目录,vim redis.config,修改daemonize 为yes   port 7001(本机集群用端口好区分,多个服务器的话 就ip就行)

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

6、复制redis1目录的内容  分别创建出redis2  -redis6 内容与redis1相同,只有端口号不同,分别是7001-7006

e537309102276fe508fca995152ee663ba9.jpg
7、写个启动脚本和停止脚本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中拷贝出来的额,为了方便创建集群,然后执行启动脚本

8、配置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

34a9eba75eb34140c88f8e7be6fe5a6c1ba.jpg

111383c8f4e667bc620d042309461844bf7.jpg

   查看当前ruby版本 :ruby --version

   2a263f3b874aa8f8daf8696295e773e1b67.jpg

   这样就安全了。就可以执行gem install redis  就是创建redis接口连接的命令。

15c1253275071b2e4e66e5eb8960201c740.jpg

9、执行集群创建 命令:./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

971e82d0fb6605d59871360b514fb387470.jpg

8a6227197354f814b4c2a1bd400643b4094.jpg

这样就创建完成了。。 默认 先创建的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.youkuaiyun.com/truelove12358/article/details/79612954

https://www.cnblogs.com/pangguoming/p/5956154.html

转载于:https://my.oschina.net/u/2543341/blog/2995188

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值