虚拟机CentOS7.0 部署Redis 5.0.8 集群

安装GCC环境

版本查看

gcc -v

gcc安装

yum install gcc-c++

ruby安装

yum install centos-release-scl-rh
yum install rh-ruby23  -y
scl  enable  rh-ruby23 bash

rubygems安装

yum install rubygems

离线安装Redis-5.0.8

下载redis安装包

https://redis.io/download

根目录创建文件夹/home

mkdir redis

安装Redis

上传redis安装包 至 /home/redis/

解压

tar -zxvf redis-3.2.9.tar.gz

转到安装包所在位置

cd /home/redis/redis-5.0.8

安装

make && make install

配置Redis集群

创建6个文件夹

存放Redis6个不同端口的Redis配置

cd /home/redis/
mkdir 700{1,2,3,4,5,6} 

转到目录

 cd usr/local/bin

复制文件

把【redis-cli】、【redis-server】复制到 700、1、2、3、4文件夹内。

cp redis-cli redis-server /home/redis/7001
cp redis-cli redis-server /home/redis/7002
cp redis-cli redis-server /home/redis/7003
cp redis-cli redis-server /home/redis/7004
cp redis-cli redis-server /home/redis/7005
cp redis-cli redis-server /home/redis/7006

创建 redis.conf 文件

在不同文件夹内创建并配置以下内容

port 7001 #配置对应的端口
daemonize yes
appendonly yes
cluster-enabled yes
cluster-config-file "nodes.conf"
cluster-node-timeout 5000
logfile ""
bind 192.168.137.4
dir "/home/redis/7001"
masterauth "passwd123" #统一先配置好访问密码
requirepass "passwd123" #统一先配置好访问密码

启动6个不同端口的redis添加服务设置自动启动

转到目录

cd /home/redis/redis-5.0.8/utils

执行命令install_server.sh 配置各个端口

/home/redis/7001/redis-server /home/redis/7001/redis.conf
/home/redis/7002/redis-server /home/redis/7002/redis.conf
/home/redis/7003/redis-server /home/redis/7003/redis.conf
/home/redis/7004/redis-server /home/redis/7004/redis.conf
/home/redis/7005/redis-server /home/redis/7005/redis.conf
/home/redis/7006/redis-server /home/redis/7006/redis.conf

以上为重复操作,在此不重复贴图。

至此,可通过服务命令 控制6个redis 的关闭与启动:

service redis_端口号 start | service redis_端口号 stop

查看redis运行情况

netstat -tnulp | grep redis
ps aux | grep redis

启动Redis集群

cd home/redis
redis-cli -a cyclone --cluster create --cluster-replicas 1 192.168.137.4:7001 192.168.137.4:7002 192.168.137.4:7003 192.168.137.4:7004 192.168.137.4:7005 192.168.137.4:7006 -a passwd123

设置iptables规则

允许外部访问7001、2、3、4、5、6端口

iptables -I INPUT 1 -p tcp -m state --state NEW -m tcp --dport 7001 -j ACCEPT
service iptables save

关闭firewalld防火墙

systemctl stop firewalld.service
systemctl disable firewalld.service

PS:此时需要注意一点关于文件夹权限问题可能会导致,外部redis 连接不上。

这里需要需要查看redis的文件夹权限是否为drwxrwxrwx

若权限不足,执行命令

chmod 777 redis

解决:

查看集群状态

登录Redis集群【redis-cli -c -p 7001】测试:

原理:redis客户端任意访问一个redis实例,如果数据不在该实例中,通过重定向引导客户端访问所需要的redis实例

常用指令

重新创建集群
1.关闭redis【kill -9 redis】
2.删除文件
appendonly.aof、dump.rdb、nodes.conf
3.重新执行集群创建【redis-cli -a cyclone --cluster create --cluster-replicas 1 192.168.137.4:7001 192.168.137.4:7002 192.168.137.4:7003 192.168.137.4:700 192.168.137.4:7005 192.168.137.4:7006 -a passwd123】

创建集群主节点
redis-cli --cluster create 192.168.137.4:7001 192.168.137.4:7002 192.168.137.4:7003 -a passwd123


创建集群主从节点(cluster-replicas 参数为数字,1表示每个主节点需要1个从节点)
redis-cli --cluster create 192.168.137.4:7001 192.168.137.4:7002 192.168.137.4:7003 192.168.137.4:7004 192.168.137.4:7005 192.168.137.4:7006 --cluster-eplicas 1 -a passwd123


添加集群主节点(为一个指定集群添加节点,需要先连到该集群的任意一个节点IP(192.168.137.4:7001),再把新节点加入。该2个参数的顺序有要求:新加入的节点放前)
redis-cli --cluster add-node 192.168.137.4:XXXX 192.168.137.4:XXXX -a passwd123


添加集群从节点(把6382节点加入到6379节点的集群中,并且当做node_id为 117457eab5071954faab5e81c3170600d5192270 的从节点。如果不指定 --cluster-master-id 会随分配到任意一个主节点)
redis-cli --cluster add-node 192.168.163.132:6382 192.168.163.132:6379 --cluster-slave --cluster-master-id 117457eab5071954faab5e81c3170600d5192270 -a asswd123


删除节点(指定IP、端口和node_id 来删除一个节点,从节点可以直接删除,主节点不能直接删除,删除之后,该节点会被shutdown)
redis-cli --cluster del-node 192.168.163.132:6384 f6a6957421b80409106cb36be3c7ba41f3b603ff -a passwd123
注意:当被删除掉的节点重新起来之后不能自动加入集群,但其和主的复制还是正常的,
也可以通过该节点看到集群信息(通过其他正常节点已经看不到该被del-node节点的信息)。
如果想要再次加入集群,则需要先在该节点执行cluster reset,再用add-node进行添加,进行增量同步复制。

检查集群(任意连接一个集群节点,进行集群状态检查)
redis-cli --cluster check 192.168.137.4:7001 --cluster-search-multiple-owners -a passwd123


集群信息查看(检查key、slots、从节点个数的分配情况)
redis-cli --cluster info 192.168.137.4:7001 -a passwd123


修复集群(修复集群和槽的重复分配问题)
redis-cli --cluster fix 192.168.137.4:7001 --cluster-search-multiple-owners -a passwd123


设置集群的超时时间 (连接到集群的任意一节点来设置集群的超时时间参数cluster-node-timeout)
redis-cli --cluster set-timeout 192.168.137.4:7001 10000


集群中执行相关命令(连接到集群的任意一节点来对整个集群的所有节点进行设置)
redis-cli --cluster call 192.168.137.4:7001 config set requirepass passwd123
redis-cli -a cc --cluster call 192.168.137.4:7001 config set masterauth passwd123
redis-cli -a cc --cluster call 192.168.137.4:7001 config rewrite

阿里云服务器部署注意事项

安全组的配置

集群总线端口为redis客户端连接的端口 + 10000
如redis端口为7001
则集群总线端口为17001
所以所有服务器的需要开通redis的客户端连接端口和集群总线端口

端口开放

redis.conf ip默认不绑定以及注释

假设在添加规则阶段报错

#service iptables sav -> The service command supports only basic LSB actions (start, stop, restart, try-restart, reload, force-reload, status). For other actions, please try to use systemctl.

解决档案

停止防火墙

systemctl stop firewalld
systemctl mask firewalld

安装iptables-services

yum install iptables-services

设置开机启动防火墙

systemctl enable iptables

可以使用文中提及的iptables 例子添加规则

本文参考:https://www.cnblogs.com/xuliangxing/p/7146868.htmlhttps://www.diandian100.cn/eb5223a5.htmlhttps://www.cnblogs.com/zhoujinyi/p/11606935.htmlhttps://blog.csdn.net/truong/article/details/52531103https://blog.csdn.net/xu_melon/article/details/79043320https://blog.csdn.net/tangyuan_sibal/article/details/88097191

原文地址:https://www.cnblogs.com/ZeroSunny/p/12704901.html