如何搭建Redis集群 ?
一:集群的概念
所谓的集群,就是通过添加服务器的数量,提供相同的服务,从而让服务器达到一个稳定、高效的状态。
-
redis集群中,每一个redis称之为一个节点
-
redis集群中,有两种类型的节点:主节点(master)、从节点(slave)
-
redis集群,是基于redis主从复制实现
二:实验环境
(1)Redis集群至少需要3个节点,因为投票容错机制要求超过半数节点认为某个节点挂了该节点才是挂了,所以2个节点无法构成集群
(2)要保证集群的高可用,需要每个节点都有从节点,也就是备份节点,所以Redis集群至少需要6台服务器
(3)安装ruby
这边准备了两台虚拟机,每台安装三个网卡,总共六个网卡,同时运行6个redis实例。(也可以准备6台虚拟机,根据自己情况而定,但至少六块网卡)
软件包自行下载:链接:https://pan.baidu.com/s/1jztqjuAx9s8lhtTil72cRQ 提取码:ktcq
复制这段内容后打开百度网盘手机App,操作更方便哦
三:实验步骤
主、从服务器配置相同
1、安装编译工具
[root@localhost ~]# yum install gcc gcc-c++ make -y
2、挂载redis软件包并解压
[root@localhost ~]# mkdir /abc
[root@localhost ~]# mount.cifs //192.168.0.107/share /abc
[root@localhost ~]# cd /abc
[root@localhost abc]# tar zvxf redis-5.0.7.tar.gz -C /opt
3、直接进行make,且指定目录并安装
( 因为解压的软件中的配置脚本已经被封装化了,所以直接make )
[root@localhost abc]# cd /opt/redis-5.0.7/
[root@localhost redis-5.0.7]# make
[root@localhost redis-5.0.7]# make PREFIX=/usr/local/redis/ install
[root@redis redis-5.0.7]# cd /usr/local/redis/
[root@redis redis]# ls
bin
[root@redis redis]# cd bin/
[root@redis bin]# ls
redis-benchmark redis-check-aof redis-check-rdb redis-cli redis-sentinel redis-server
4、执行配置文件脚本,并设置
[root@redis bin]# cd /opt/redis-5.0.7/utils/
[root@localhost utils]# ./install_server.sh
5、优化配置,创建软链接便于系统识别
[root@localhost utils]# cd /etc/redis
[root@localhost redis]# ls
6379.conf
[root@localhost redis]# ln -s /usr/local/redis/bin/* /usr/local/bin
[root@localhost redis]# netstat -ntap | grep 6379 ‘redis部署完成’
tcp 0 0 127.0.0.1:6379 0.0.0.0:* LISTEN 8761/redis-server 1
6、修改配置文件,所有节点一样(主从服务器都要修改)
[root@localhost redis]# vim /etc/redis/6379.conf
[root@localhost redis]# /etc/init.d/redis_6379 restart ‘重启服务’
Stopping ...
Redis stopped
Starting Redis server...
(重启之后就会多出两个文件,appendonly.aof:持久化文件 nodes-6379.conf:节点首次启动生成的配置文件)
[root@localhost redis]# cd /var/lib/redis/6379
[root@localhost 6379]# ls
appendonly.aof dump.rdb nodes-6379.conf
在主服务器上配置(master)
1、导入key文件
[root@localhost 6379]# gpg --keyserver hkp://keys.gnupg.net --recv-keys 409B6B1796C275462A1703113804BB82D39DC0E3
2、主服务器安装rvm
[root@localhost 6379]# curl -sSL https://get.rvm.io | bash -s stable
3、安装ruby
[root@localhost abc]# tar zvxf rvm-1.29.9.tar.gz -C /opt
[root@localhost abc]# cd /opt/rvm-1.29.9/
[root@localhost rvm-1.29.9]# ./install
[root@localhost rvm-1.29.9]# source /etc/profile.d/rvm.sh ‘执行环境变量’
[root@localhost rvm-1.29.9]# rvm list known ‘列出ruby可安装的版本’
[root@localhost rvm-1.29.9]# rvm install 2.4.1 ‘安装ruby2.4.1版本,等待时间较长’
[root@localhost rvm-1.29.9]# rvm use 2.4.1 '使用ruby2.4.1版本'
[root@localhost rvm-1.29.9]# ruby -v ‘查看当前ruby版本’
[root@localhost rvm-1.29.9]# gem install redis ‘再次安装redis’
主、从服务器都要添加两块网卡
开启服务,关闭防火墙:
[root@localhost rvm-1.29.9]# systemctl restart network
[root@localhost rvm-1.29.9]# systemctl stop firewalld.service
[root@localhost rvm-1.29.9]# setenforce 0
主服务器创建集群
[root@localhost rvm-1.29.9]# redis-cli --cluster create --cluster-replicas 1 192.168.48.128:6379 192.168.48.133:6379 192.168.48.134:6379 192.168.48.130:6379 192.168.48.135:6379 192.168.48.136:6379
一主一从的绑定关系是随机的。
随意登录一台redis,创建一个键值对
[root@localhost rvm-1.29.9]# redis-cli -h 192.168.48.134 -p 6379
192.168.48.134:6379> keys *
(empty list or set)
192.168.48.134:6379> set name cwt
OK
192.168.48.134:6379> get name
"cwt"
192.168.48.134:6379> exit
[root@localhost rvm-1.29.9]# redis-cli -h 192.168.48.136 -p 6379
192.168.48.136:6379> keys *
1) "name"
192.168.48.136:6379> get name
(error) MOVED 5798 192.168.48.133:6379
192.168.48.136:6379> exit
[root@localhost rvm-1.29.9]# redis-cli -h 192.168.48.133 -p 6379
192.168.48.133:6379> keys *
1) "name"
192.168.48.133:6379> get name
"cwt"
192.168.48.133:6379> exit