实验环境
在VMware中准备3个虚拟机,每个虚拟机部署2个redis,实现一个总共6个节的redis集群。
redis服务使用单独的redis用户和用户组启动。所有文件都在/home/redis目录下。
- OS: CentOS-7-x86_64-Minimal-1804
- redis: redis-5.0.0
安装配置
集群规划
- 192.168.212.141
- 192.168.212.142
- 192.168.212.143
[7001]: 192.168.212.141:7001,192.168.212.142:7001,192.168.212.143:7001
[7002]: 192.168.212.141:7002,192.168.212.142:7002,192.168.212.143:7002
单实例编译安装
源码包安装需要gcc
yum install gcc-c++
添加redis用户和用户组
groupadd redis
useradd -g redis redis
编译
编译到当前目录
cd /home/redis/redis-5.0.0
make
编译到指定目录
cd /home/redis/redis-5.0.0
make PREFIX=/home/redis/master install
make PREFIX=/home/redis/slave install
单机集群搭建
cd /home/redis/redis-5.0.0
make PREFIX=/home/redis/cluster/7001 install
make PREFIX=/home/redis/cluster/7002 install
make PREFIX=/home/redis/cluster/7003 install
make PREFIX=/home/redis/cluster/7004 install
make PREFIX=/home/redis/cluster/7005 install
make PREFIX=/home/redis/cluster/7006 install
配置修改(redis.conf)
port
指定端口
port 7001
pidfile
后台模式运行的时候,pid写入指定的文件
pidfile /home/redis/cluster/7001/redis.pid
logfile
配置日志输出路径
logfile /home/redis/cluster/7001/logs/redis.log
daemonize
以后端模式运行,退出控制台的时候服务依然后台跑着。
daemonize yes
requirepass
设置访问密码
requirepass <user-password>
masterauth
集群模式下面,同时设置这个配置项目密码,用于主从同步的时候进行安全验证。
masterauth <user-password>
bind
特别注意
是绑定本机的IP地址,(准确的是:本机的网卡对应的IP地址,每一个网卡都有一个IP地址),而不是redis允许来自其他计算机的IP地址。
如果指定了bind,则说明只允许来自指定网卡的Redis请求。如果没有指定,就说明可以接受来自任意一个网卡的Redis请求。
bind 127.0.0.1 192.168.10.130
cluster-enabled
允许集群模式。
cluster-enabled yes
cluster-config-file nodes.conf
cluster-node-timeout 5000
appendonly yes
启动
直接运行bin/redis-server将以前端模式启动,前端模式启动的缺点是ssh命令窗口关闭则redis-server程序结束,不推荐使用此方法。
修改redis.conf配置文件, daemonize yes 以后端模式启动。
注意
一定要进入bin目录的上级目录!
cd /home/redis/master/bin
./bin/redis-server ./redis.conf
端口配置,redis.conf
配置中如下配置项。
port 7001
集群配置
redis 5.0以后集群组网直接采用编译包中的redis-cli
,直接采用c++编译,不需要ruby环境。集群组网命令如下:
./redis-cli
--cluster create
192.168.212.141:7001
192.168.212.142:7001
192.168.212.143:7001
192.168.212.141:7002
192.168.212.142:7002
192.168.212.143:7002
--cluster-replicas 1
注意
集群设置了密码组网的时候需要加上密码 -a itclj123456
./redis-cli
--cluster create
127.0.0.1:7001
127.0.0.1:7002
127.0.0.1:7003
127.0.0.1:7004
127.0.0.1:7005
127.0.0.1:7006
--cluster-replicas 1
-a itclj123456
另外注意,由于linux防火墙问题,执行上面命令可能会遇到连接不通的,可以linux防火墙。
systemctl stop firewalld.service #停止firewall
systemctl disable firewalld.service #禁止firewall开机启动
测试
下载一个windows的客户端Redis-x64-3.2.100.zip
,解压后里面有个redis-cli.exe
,这个就是一个window客户端工具,命令行里面调用,具体命令如下:
D:\redis>redis-cli.exe -c -h 192.168.212.141 -p 7001
192.168.212.141:7001> keys *
(empty list or set)
192.168.212.141:7001> set itclj itclj20181114
-> Redirected to slot [14516] located at 192.168.212.143:7001
OK
192.168.212.143:7001> get itclj
"itclj20181114"
集群设置了密码,客户端连接的时候需要设置密码。
redis-cli.exe -c -h 192.168.212.141 -p 7001 -a itclj123456
连接参数说明
-c : 表示连接集群
-h : 表示连接的redis主机
-p : 表示连接的redis实例端口
-a : 表示连接redis集群的密码
参考
- 【官方文档】
- 【redis集群搭建】
- 【Redis集群监控RedisClusterManager】
- 【redis requires Ruby version >= 2.2.2问题】
- 【Redis的bind的误区】
补充说明
redis 3.X 4.X集群管理工具redis-trib.rb依赖ruby环境,首先需要安装ruby环境,集群配置方式如下。
安装ruby
yum install ruby
yum install rubygems
安装ruby和redis的接口程序
gem install redis
组件集群
./redis-trib.rb --replicas 192.168.212.141:7001 192.168.212.142:7001 192.168.212.143:7001 192.168.212.141:7002 192.168.212.142:7002 192.168.212.143:7002