redis集群模式


一、主从复制

1、开启master和node1虚拟机,连接xshell,复制之前先拍快照

2、通过master虚拟机将redis复制给node1

复制成功

3、 控制台启动两台服务器

  只有master可以执行写命令,slave只能读,来降低master的读压力

 4、修改node1端口号区分两台服务

  通过配置文件修改

   直接命令加上端口号修改

./redis-server --port 6380

 5、启动成功后将node1主改成从,master与node1建立连接

  第一种方式:启动服务器过程时直接建立连接

 6、分别从master和node1复制窗口启动redis终端

 

 测试:

master可写可读,node1只能读不能写

   第二种方式:先直接启动服务器在建立连接

 

   再手动将主的改成从的

   从服务器断开连接变成主服务器

      以上就是实现主从复制的两种方式,可以随时连接,随时解除,但是我们发现只有master有写功能,但是只有一个主服务器,其他都是从服务器,如果主服务器挂了,其他就没了,这还是存在单节点问题,所以需要多台主服务器一起跑,奇数个主服务器加起来是一个完整的redis,其中挂了其他的还是好的仍然可以跑,这里需要注意主服务器个数为奇数,是为了能有效检测出挂了的主服务器,比如说如果是四台,两台检测没有问题,两台检测有问题,就不能有效确定有没有问题,如果是偶数个,就不好排查出来,里面存在少数服从多数的原理。下面我们开始搭建redis集群

Redis集群搭建

  需要创建3个主服务器,和3个备份服务器,在集群中可以实现自动转换,如果主服务器挂了,那么相对应的备份服务器将自动转换代替主服务器

1、开始搭建集群之前先拍快照,三台虚拟机都需要拍照,然后打开三台虚拟机,xshell连接

2、为避免之前文件影响集群结果,删除一些之前的文件

3、创建安装目录 在master ,node1 ,node2中分别创建

mkdir /usr/local/soft/redis-cluster

 4、将安装好的redis 复制到redis-cluster 目录下修改名字为7000

cp -r /usr/local/soft/redis  /usr/local/soft/redis-cluster

mv  /usr/local/soft/redis-cluster/redis /usr/local/soft/redis-cluster/7000

 进入7000/bin目录下看看有没有持续化文件,如果有就删了,避免影响集群搭建结果

  删除单机版缓存文件

    rm -rf appendonly.aof

    rm -rf dump.rdb

5、修改配置文件 vim redis.conf

daemonize    yes                          //redis后台运行

pidfile  /var/run/redis_7000.pid        //pidfile文件对应7000

port  7000                                  //端口7000

cluster-enabled  yes                    //开启集群   把注释#去掉

cluster-config-file  nodes.conf      //集群的配置  配置文件首次启动自动生成

cluster-node-timeout   5000       //请求超时  设置5秒够了

appendonly  yes                  //aof日志开启   有需要就开启,它会每次写操作都记录一条日志  (全持久化)

 6、复制7000

cp -r 7000 7001

cp -r 7000 7002

cp -r 7000 7003

cp -r 7000 7004

cp -r 7000 7005

 7、修改每一个里面的配置

vim 7001/bin/redis.conf

7000改成对应的端口号

pidfile /var/run/redis_7001.pid

port 7001

 

注意:每一个都需要改成对应的名字

8、分发

7002 ,7003 复制到node1

scp -r /usr/local/soft/redis-cluster/7002 node1:/usr/local/soft/redis-cluster/

scp -r /usr/local/soft/redis-cluster/7003 node1:/usr/local/soft/redis-cluster/

在7004 ,7005 复制到node2

scp -r /usr/local/soft/redis-cluster/7004 node2:/usr/local/soft/redis-cluster/

scp -r /usr/local/soft/redis-cluster/7005 node2:/usr/local/soft/redis-cluster/

8、启动redis  

  1、在master中执行

cd /usr/local/soft/redis-cluster/7000/bin

./redis-server redis.conf

cd /usr/local/soft/redis-cluster/7001/bin

./redis-server redis.conf

  2、在node1中执行

cd /usr/local/soft/redis-cluster/7002/bin

./redis-server redis.conf

cd /usr/local/soft/redis-cluster/7003/bin

./redis-server redis.conf

  3、在node2中执行

cd /usr/local/soft/redis-cluster/7004/bin

./redis-server redis.conf

cd /usr/local/soft/redis-cluster/7005/bin

./redis-server redis.conf

 9、通过工具构建集群  在master中安装

  1、安装工具

yum -y install ruby ruby-devel rubygems rpm-build

  2、上传redis-3.0.0.gem  

gem install -l redis-3.0.0.gem  

  3、放在/usr/local/bin/  目录下的命令可以在任何一个位置运行

cp /usr/local/module/redis-3.0.0/src/redis-trib.rb /usr/local/bin/redis-trib 

10、启动集群   第一次使用   都免集群重启不需要使用

#  replicas  每一个主节点的备份节点数量

redis-trib create --replicas 1 192.168.186.110:7000 192.168.186.110:7001 192.168.186.120:7002 192.168.186.120:7003 192.168.186.130:7004 192.168.186.130:7005

先使用ifconfig查找自己的三台虚拟机ip地址,改成三台虚拟机的ip地址

 

11、客户端访问reids集群

# -p  端口号   -h  节点ip  -c  自动重定向

redis-cli -p 7000 -h master -c

注意:集群中在默认情况下每一个节点只能操作与之操作对应的槽位,所以需要重定向实现无中心化

    未重定向之前

 

    重定向之后(把命令发送到与之对应的机器上执行)

 12、

查看集群信息

cluster info

查看节点信息

cluster nodes

测试:7002没有挂之前

7002挂之后

  node1手动杀死7002

 

重启7002以后再次观察节点变化

 

 到这里redis集群就搭建成功了,拍下快照命名redis集群搭建,返回集群搭建之前快照,学习建议使用单节点模式,集群模式节点太多,启动太麻烦

相关