一、软件环境信息
1、redis版本要求:3.0及之后版本
2、服务节点个数要求: 至少3个主节点,其中主节点不少于节点总数的一半;至多16384个节点;每个主节点至少有一个从节点,故redis集群模式至少需要6个服务节点。
3、本文档是在一台服务器上启动了6个redis实例进行演示。实际投产部署时,每个节点应该对应一台服务器,每个节点配置为自己主机的IP即可。
注:默认使用root权限账户进行安装部署
二、安装Redis
1、下载redis,执行指定下载目录(这里下载到/usr/local/src下)
$ wget http://download.redis.io/releases/redis-6.0.6.tar.gz
2、解压
$ tar -xzvf redis-6.0.6.tar.gz
3、进入解压后的目录
$ cd redis-6.0.6/
4、编译(如编译失败,请升级系统GCC版本)
$ make
5、安装(--PREFIX #指定安装目录)
$ make install PREFIX=/usr/local/redis
6、配置系统环境变量
在/etc/profile文件最后一行添加以下内容:
export PATH=$PATH:/usr/local/redis/bin
$ vim /etc/profile
7、立即生效该文件
$ source /etc/profile
三、配置部署Redis分布式集群
$ mkdir -p /usr/local/redis-cluster #自行创建目录
$ cd /usr/local/redis-cluster
$ mkdir 8001 8002 8003 8004 8005 8006 #自行指定文件名,最好跟端口号对应
$ cp /%redis解压目录%/redis.conf /usr/local/redis-cluster/8001
$ vim /usr/local/redis-cluster/8001/redis.conf
配置项说明
- daemonize yes: 开启Redis的守护进程,redis服务在后台运行
- port8001: redis端口号,每个配置文件设置自己的端口号;本文档分别配置为 8001、8002 ... 8006;
- dir/usr/local/redis-cluster/8001/:设定数据文件存放位置,必须指定不同目 录位置,否则会丢失数据;
- cluster-enalbed yes: 启动集群模式;默认是被注释掉的,取消注释;
- cluster-config-file nodes-8001.conf: 集群节点信息文件。
默认为 nodes-6379.conf,将6379修改为本节点端口号即可。
注意:尽管有此选项的名称,但这不是用户创建、也不是用户可编辑的配置文件,而是Redis群集节点每次发生更改时自动保留群集配置(基本上为状态)的文件,以便能够在启动时重新读取它。该文件列出了群集中其他节点,它们的状态,持久变量等等。由于某些消息的接收,通常会将此文件重写并刷新到磁盘上。
- cluster-node-timeout 5000: 单位:毫秒; Redis群集节点可以不可用的最长时 间,而不会将其视为失败。如果主节点超过指定的时间不可达,它将由其从属设备进行 故障切换。并且每个无法在指定时间内到达大多数主节点的节点将停止接受查询。
- bind127.0.0.1 192.168.11.15: “127.0.0.1”表示主机可通过127.0.0.1和 localhost访问本机节点; “192.168.11.15”是当前主机IP,能够让其它服务器节点访 问,否则无法创建集群;
- protected-modeno:redis3.2版本后新增protected-mode配置,默认是yes,即 开启;no:外部网络可直接访问;yes:需配置bind ip或者设置访问密码;
- appendonlyyes: 开启AOF持久化(Redis能在发生服务器电源故障或操作系统仍 然正常运行但Redis进程莫名挂掉的情况下,只丢失1秒的数据);
注:如要设置密码,则需添加如下两个配置项
- requirepassXXX: 设置Redis访问密码;
- masterauthXXX: 设置集群节点间访问密码,与requirepass中一致。
修改完 /usr/local/redis-cluster/8001/redis.conf之后,拷贝该文件至其他五个文 件夹中
$ cd /usr/local/redis-cluster/8001
$ cp redis.conf /usr/local/redis-cluster/8002
$ cp redis.conf /usr/local/redis-cluster/8003
$ cp redis.conf /usr/local/redis-cluster/8004
$ cp redis.conf /usr/local/redis-cluster/8005
$ cp redis.conf /usr/local/redis-cluster/8006
新拷贝的五个文件仅修改配置项:port、dir、cluster-config-file 即可
注: 在实际生产部署时,配置项bind为各自节点所在主机服务器的IP
四、配置文件整体目录如下
$ cd /usr/local/redis-cluster/
五、启动Redis各节点
$ redis-server /usr/local/redis-cluster/8001/redis.conf
$ redis-server /usr/local/redis-cluster/8002/redis.conf
$ redis-server /usr/local/redis-cluster/8003/redis.conf
$ redis-server /usr/local/redis-cluster/8004/redis.conf
$ redis-server /usr/local/redis-cluster/8005/redis.conf
$ redis-server /usr/local/redis-cluster/8006/redis.conf
启动信息日志如下:
查看各节点进程信息:
$ ps -ef | grep redis
六、创建Redis集群
命令格式: redis-cli --cluster create --cluster-replicas <主节点与从节点个数比例,当改值为1:创建集群时,一个主节点需要有一个从节点> 节点1IP:端口号 节点2IP:端口号 ...
redis-cli --cluster create --cluster-replicas 1 192.168.11.15:8001 192.168.11.15:8002 192.168.11.15:8003 192.168.11.15:8004 192.168.11.15:8005 192.168.11.15:8006
命令执行中会有提示“Can I set the above configration ?” 输入:yes回车,表示 同意以上配置
七、查看集群配置信息
连接集群的任意节点,如: 8001节点 ,其中参数 -c 表示连接集群(如果设置了redis密码,则还需添加参数: -a 密码)
$ redis-cli -c -h 192.168.11.15 -p 8001
连接redis客户端后: 使用命令cluster info 查看集群信息(cluster_known_nodes:6表示当前集群有6个节点)
连接后: 使用命令cluster nodes查看节点列表信息(master: 3个,slave: 3个)