Redis搭建集群

前几周就在学习搭建redis集群,照着网上的教程操作了一波,总是遇到各种各样的问题,很难受,最后还是没有搭建成功,像这种情况,我一般先放一放,等一段时间再来试试,今天又来操作了一波,终于成功搭建起了集群。

一.下载安装redis

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

tar -xvf redis-5.0.3.tar.gz

cd redis-5.03/src

make 

二.主从复制

1.创建测试文件夹

mkdir redis-slave-test       //创建测试文件夹

cd redis-slave-test

mkdir 9000 9001

cp -r ../redis-5.0.3/* 9000   //安装端口为9000和9001的两个redis,9000的为master,9001为slave

cp -r ../redis-5.0.3/* 9001

2. 进行主从配置

vim 9000/redis.conf

做如下修改:

#port 6379

port 9000

#daemonize no

daemonize yes

#pidfile /var/run/redis_6379.pid

pidfile /var/run/redis_9000.pid

vim 9001/redis.conf

修改类比9000,最后面加上 slaveof  127.0.0.1 9000

3. 启动redis并测试

9000/src/redis-server 9000/redis.conf

9000/src/redis-server 9001/redis.conf

9000/src/redis-cli -p 9000

set admin_name xiaoming

exit

9000/src/redis-cli -p 9001   //连接9001

在9000添加的admin_name在9001也存在,尝试在9001删除key,会报错说是只读的

三.哨兵

按照一再创建一个master的slave(配置完成启动后,会自动成为9000的slave)

vim 9000/sentinel.conf

 

做如下修改

#sentinel monitor mymaster 127.0.0.1 6379 2

sentinel monitor mymaster 127.0.0.1 9000 1

9000/src/redis-sentinel 9000/sentinel.conf      //启动哨兵

 

杀掉9000的进程,等几秒钟后9001成了新的master

查看配置文件,发现

9000/redis.conf中   slaveof  127.0.0.1 9000不见了

9000和9001多了  replicaof 127.0.0.1 9001

说明主从的配置信息已经被持久化了下来,9000重启后也不再是master了,所有redis全部重启后,9000也不是master了

四.集群搭建

创建六个redis实例,配置如下:

cluster-enabled yes

bind 127.0.0.1

port  pidfile这些一样地配置,不需要配置slaveof

启动脚本:

#!/bin/bash
parent_path=/home/fengxing/redis-cluster-test
node_dirs=(9000 9001 9002 9003-slave 9004-slave 9005-slave )
for node_dir in ${node_dirs[@]}; do
        cd $parent_path
        cd $node_dir
        src/redis-server redis.conf
done

网上说需要安装ruby,使用redis-trib.rb,但是redis5.0后的版本直接使用redis-cli就可以创建集群了

之前一直没创建成功是因为 直接使用redis-cli,之前 sudo  apt-get install redis-server 安装了redis,所以直接使用redis-cli使用的是自动安装的那个redis-cli,但是那个版本是3.0的

9000/src/redis-cli --cluster create 127.0.0.1:9000 127.0.0.1:9001 127.0.0.1:9002 127.0.0.1:9003 127.0.0.1:9004 127.0.0.1:9005 --cluster-replicas 1

执行后打印如下日志:

M: 973583c85e6940badf6207bff3589c38e248ad31 127.0.0.1:9000
   slots:[0-5460] (5461 slots) master
M: eafd7354fe5b62e20fd21755de278589887f960a 127.0.0.1:9001
   slots:[5461-10922] (5462 slots) master
M: ac3045a6c3a841655bd3f6954e2f352c80d879a4 127.0.0.1:9002
   slots:[10923-16383] (5461 slots) master
S: 61266bf474ab47dbcef64c025cbeff19f5b2cd49 127.0.0.1:9003
   replicates eafd7354fe5b62e20fd21755de278589887f960a
S: b156f35a3c5f3f80b3b17ab79104f709a95e9a62 127.0.0.1:9004
   replicates ac3045a6c3a841655bd3f6954e2f352c80d879a4
S: a10919a9a6735b2ca1f920bb274dc14019d3aed1 127.0.0.1:9005
   replicates 973583c85e6940badf6207bff3589c38e248ad31
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 127.0.0.1:9000)
M: 973583c85e6940badf6207bff3589c38e248ad31 127.0.0.1:9000
   slots:[0-5460] (5461 slots) master
   1 additional replica(s)
M: ac3045a6c3a841655bd3f6954e2f352c80d879a4 127.0.0.1:9002
   slots:[10923-16383] (5461 slots) master
   1 additional replica(s)
S: b156f35a3c5f3f80b3b17ab79104f709a95e9a62 127.0.0.1:9004
   slots: (0 slots) slave
   replicates ac3045a6c3a841655bd3f6954e2f352c80d879a4
S: a10919a9a6735b2ca1f920bb274dc14019d3aed1 127.0.0.1:9005
   slots: (0 slots) slave
   replicates 973583c85e6940badf6207bff3589c38e248ad31
S: 61266bf474ab47dbcef64c025cbeff19f5b2cd49 127.0.0.1:9003
   slots: (0 slots) slave
   replicates eafd7354fe5b62e20fd21755de278589887f960a
M: eafd7354fe5b62e20fd21755de278589887f960a 127.0.0.1:9001
   slots:[5461-10922] (5462 slots) master
   1 additional replica(s)

最开始运行没有成功,一直卡在Waiting for the cluster to join......这里,百度说是防火墙的原因

ufw disable 
apt-get remove iptables

关闭防火墙后,再次运行确实可以了,但是直接关闭防火墙应该是不稳妥的,正式环境肯定不能直接关闭防火墙,所以以后需要探索更好的解决方案

搭建集群成功后,关机再次重启,集群的配置任然存在,将所有redis实例启动后,集群就可以使用了

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值