安装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.html、https://www.diandian100.cn/eb5223a5.html、https://www.cnblogs.com/zhoujinyi/p/11606935.html、https://blog.csdn.net/truong/article/details/52531103、https://blog.csdn.net/xu_melon/article/details/79043320、https://blog.csdn.net/tangyuan_sibal/article/details/88097191