一、安装Redis
1. 安装C/C++环境
Redis编译时需要使用C/C++环境:
yum install -y gcc gcc-c++ make
2. redis下载
wget https://download.redis.io/releases/redis-5.0.13.tar.gz
3. 解压、编译
tar -zxvf redis-5.0.13.tar.gz
cd redis-5.0.13
make
注意
如果make报【 jemalloc/jemalloc.h: No such file or directory。】错误
执行make distclean && make来清理上次编译残留文件,重新编译
导致出现这个错误的原因
错误的本质是我们在开始执行make 时遇到了错误(大部分是由于gcc未安装),然后我们安装好了gcc 后,
我们再执行make ,这时就出现了jemalloc/jemalloc.h: No such file or directory。这是因为上次的编译失败,有残留的文件,我们需要清理下,然后重新编译就可以了。
4. 创建Redis相关工作目录(目录可自定义)
mkdir /data/redis/redis-cluster/{data/{redis_8001,redis_8002},conf,log} -p
5. 复制redis配置文件
cp /data/redis/redis-5.0.13/redis.conf /data/redis/redis-cluster/conf/redis_8001.conf
cp /data/redis/redis-5.0.13/redis.conf /data/redis/redis-cluster/conf/redis_8002.conf
二、修改Redis配置文件
port 8001
#修改redis监听端口(可以自定义) 8001与端口号同步
bind 0.0.0.0
#表示redis允许所有地址连接。默认127.0.0.1,仅允许本地连接。
daemonize yes
#允许redis后台运行
pidfile /var/run/redis_8001.pid
#pid存放目录 8001与端口号同步
logfile "/data/redis/redis-cluster/log/redis_8001.log"
#设置日志存放路径 8001与端口号同步
dir /data/redis/redis-cluster/data/redis_8001
#工作目录 8001与端口号同步
cluster-enabled yes
#是否开启集群
cluster-config-file /data/redis/redis-cluster/conf/nodes_8001.conf
#集群配置文件的名称,每个节点都有一个集群相关的配置文件,持久化保存集群的信息 8001与端口号同步
#这个文件并不需要手动配置,这个配置文件有Redis生成并更新,
cluster-node-timeout 15000
#节点互连超时的阀值。集群节点超时毫秒数,默认15秒
appendonly yes
#Redis会把每次写入的数据在接收后都写入 appendonly.aof 文件,
#每次启动时Redis都会先把这个文件的数据读入内存里,先忽略RDB文件。
appendfsync everysec
#Redis会把每次写入的数据在接收后每秒写入一次 appendonly.aof 文件
requirepass 123456
#设置redis密码
masterauth 123456
#主从同步master的密码(如果没有设置redis密码,则无需配置)
注意:
redis启用密码认证一定要requirepass和masterauth同时设置。如果主节点设置了requirepass登录验证,在主从切换,slave在和master做数据同步的时候首先需要发送一个ping的消息给主节点判断主节点是否存活,再监听主节点的端口是否联通,发送数据同步等都会用到master的登录密码,否则无法登录,log会出现响应的报错。也就是说slave的masterauth和master的requirepass是对应的,所以建议redis启用密码时将各个节点的masterauth和requirepass设置为相同的密码,降低运维成本。当然设置为不同也是可以的,注意slave节点masterauth和master节点requirepass的对应关系即可
三、启动Redis
集群内每台服务器分别启动两个redis
cd /data/redis/redis-5.0.13/src/
./redis-server /data/redis/redis-cluster/conf/redis_8001.conf
./redis-server /data/redis/redis-cluster/conf/redis_8002.conf
四、创建Redis Cluster
./redis-cli -a {redis密码} --cluster create {redis集群地址} --cluster-replicas 1
执行如上命令后,会弹出下边提示,输入yes回车即可:
Can I set the above configuration? (type ‘yes’ to accept):
注意:
redis5.0以上集群创建方式改为了C编写的redis-cli创建,不用再安装麻烦的ruby。–cluster-replicas 1指定从库数量1,创建顺序三主-三从。即主-主-主-从-从-从。多个redis之间用空格隔开
五、验证集群Redis-Cluster
1.登录redis集群
./redis-cli -a {redis密码} -h {redis地址} -p {redsi端口} -c
2.验证集群信息
{redis地址}:{redis端口}>cluster info #查看集群信息
{redis地址}:{redis端口}>cluster nodes #查看集群节点列表
3.查看集群内主从关系
./redis-cli -a {redis密码} -h {redis地址} -p {redsi端口} -c cluster slots | xargs -n8 | awk ‘{print $3":"$4"->"$6":"$7}’ | sort -nk2 -t ‘:’ | uniq
4.数据验证
插入数据:
{redis地址}:{redis端口}> set mykey "Hello Redis"
{redis地址}:{redis端口}> get mykey
登录其他节点查看数据:
redis-cli -a {redis密码} -h {redis地址} -p {redsi端口} -c
{redis地址}:{redis端口}> get mykey
- 6
5.集群故障转移
将其中一个redis-master停止掉后、其对应