准备环境
这里准备好了三台虚拟机(裸机)刚刚联网,准备从头搭建

我们从redis官网可以看到redis的安装命令,这里就不在讲述redis的安装了,网上很多
$ wget http://download.redis.io/releases/redis-5.0.7.tar.gz
$ tar xzf redis-5.0.7.tar.gz
$ cd redis-5.0.7
$ make
使用xshell连接虚拟机,三台同时操作,下面只截一台的图,其实是三台同时操作,可以看到redis已经安装成功

redis集群搭建
我们都知道,redis是靠配置文件启动的,我们只需要将配置文件备份,以多个配置文件启动,就相当于启动了多台redis,当然每台的端口号不能相同。
redis配置
port 6001 端口
daemonize yes 以后台方式运行
#bind 127.0.0.1 将这行注释掉,这个表示只允许本机连接redis
protected-mode yes redis默认是开启保护模式的,当保护模式开启时连接redis,要么指定bind ip,要么设置密码,这里我们设置密码,保护模式一般不要关闭
requirepass 123456 设置redis密码
cluster-enabled yes 开启集群模式
masterauth 123456 集群通讯密码
cluster-node-timeout 15000 集群超时时间
appendonly yes 使用aof持久化(可以不改,不改就是使用rdb)
dir /usr/local/redis-cluster/redis-6001/ redis工作目录
cluster-config-file nodes-6001.conf redis集群信息文件位置
第一台redis的配置文件配好之后,我们只需要将这个配置文件拷贝一份改变端口号即可,在redis的配置文件中执行下面的语句
:$s/6001/6004/g 将6001全部替换为6004,成功之后会显示替换了三行

这样我们分别替换其他的五台配置文件,替换完成之后分别启动
我的redis目录是这样的,其中redis-6001,redis-6002文件夹内部只有一个redis.conf的配置文件,每个配置文件的端口分别和文件夹名对应,这样方便管理

这里可以看到6台redis启动完成

最后进入redis src目录下执行 redis-cli -a 123456 --cluster create --cluster-replicas 1 192.168.17.128:6001 192.168.17.100:6002 192.168.17.110:6003 192.168.17.128:6004 192.168.17.100:6005 192.168.17.110:6006,创建集群(这里不要忘了防火墙开放端口,或者关闭防火墙)
-a后面表示密码, --cluster create表示创建集群 --cluster-replicas 1表示每个主节点有一台从节点

我们可以看到集群搭建成功,每台机器上分配有不同的hash槽,但是我们发现6001的从节点确实6005端口,而不是它本机的6004端口,这是为什么呢?
如果主从节点都在一台机器上,那么这台机器宕机之后,主从节点一起挂,那还要主从有什么用?而redis会将主从节点分别部署到不同的机器,这样就保证了一但一台机器宕掉之后(这台机器的主节点宕了)但是从节点还在,保证了这台机器上的数据不会丢失。
测试
redis-cli -a 123456 -c -h 192.168.17.100 -p 6002 连接集群的命令 -a 表示密码 -c 表示集群方式

这里我们可以看到当前在6002节点上,当set sex male时,redis经过一些运算,计算出这个sex应当存放在槽2584上,这个槽在6001节点上,就切换到6001节点存储。
当get name时,当前在6001节点,redis集群通过通讯发现name的值存储在6002节点,所以切换到6002节点拿到name的值
通过上面的例子发现redis集群搭建成功

558





