目的:用两台CentOS7虚拟机模拟6个节点,一台机器3个节点,创建出3 master、3 salve 环境。
版本:redis-6.2.6
一、安装
1.安装C编译器:yum -y install gcc
2.官网下载Redis后解压:tar -zxvf redis-6.2.6.tar.gz -C /mysoftware
3.编译
cd /mysoftware/redis-6.2.6
make && make install
默认安装目录:/usr/local/bin
redis-benchmark:性能测试工具
redis-check-aof:修复有问题的AOF文件
redis-check-dump:修复有问题的dmp.rdb文件
redis-sentinel:Redis集群使用
redis-server:Redis服务器启动命令
redis-cli:客户端
二.创建Redis节点
①首先在 192.168.10.1机器上 /mysoftware/redis-6.2.6 目录下创建 redis_cluster 目录
mkdir redis_cluster
②在 redis_cluster 目录下,创建名为7000、7001、7002的目录,并将 redis.conf 拷贝到这三个目录中
mkdir 7000 7001 7002
cp redis.conf redis_cluster/7000
cp redis.conf redis_cluster/7001
cp redis.conf redis_cluster/7002
③分别修改这三个配置文件,修改如下内容
port 7000 //端口7000,7002,7003
bind 本机ip //默认ip为127.0.0.1 需要改为其他节点机器可访问的ip 否则创建集群时无法访问对应的端口,无法创建集群
daemonize yes //redis后台运行
pidfile /var/run/redis_7000.pid //pidfile文件对应7000,7001,7002
cluster-enabled yes //开启集群 把注释#去掉
cluster-config-file nodes_7000.conf //集群的配置 配置文件首次启动自动生成 7000,7001,7002
cluster-node-timeout 15000 //请求超时 默认15秒,可自行设置
appendonly yes //aof日志开启 有需要就开启,它会每次写操作都记录一条日志
requirepass 123456 //密码,按需配置
接着在另外一台192.168.10.2机器上,重复以上三步,只是把目录改为7003、7004、7005,对应的配置文件也按照这个规则修改即可。
三.启动各个节点
第一台机器上执行
redis-server redis_cluster/7000/redis.conf
redis-server redis_cluster/7001/redis.conf
redis-server redis_cluster/7002/redis.conf
另外一台机器上执行
redis-server redis_cluster/7003/redis.conf
redis-server redis_cluster/7004/redis.conf
redis-server redis_cluster/7005/redis.conf
检查启动情况
##一台机器
ps -ef | grep redis
root 61020 1 0 02:14 ? 00:00:01 redis-server 127.0.0.1:7000 [cluster]
root 61024 1 0 02:14 ? 00:00:01 redis-server 127.0.0.1:7001 [cluster]
root 61029 1 0 02:14 ? 00:00:01 redis-server 127.0.0.1:7002 [cluster]
netstat -tnlp | grep redis
tcp 0 0 127.0.0.1:17000 0.0.0.0:* LISTEN 61020/redis-server
tcp 0 0 127.0.0.1:17001 0.0.0.0:* LISTEN 61024/redis-server
tcp 0 0 127.0.0.1:17002 0.0.0.0:* LISTEN 61029/redis-server
tcp 0 0 127.0.0.1:7000 0.0.0.0:* LISTEN 61020/redis-server
tcp 0 0 127.0.0.1:7001 0.0.0.0:* LISTEN 61024/redis-server
tcp 0 0 127.0.0.1:7002 0.0.0.0:* LISTEN 61029/redis-server
四.创建集群
Redis6已封装ruby,低版本注意先安装ruby:yum -y install ruby ruby-devel rubygems rpm-build
cd /usr/local/bin
redis-cli --cluster create 192.168.10.1:7000 192.168.10.1:7001 192.168.10.1:7002 192.168.10.2:7003 192.168.10.2:7004 192.168.10.2:7005 --cluster-replicas 1 -a 123456
// 执行命令提示Can I set the above configuration?
// 输入yes继续执行完成创建
其中,前三个 ip:port 为第一台机器的节点,剩下三个为第二台机器。
验证:
在第一台机器上连接集群的7001端口的节点,在另外一台连接7005节点,连接方式为:
redis-cli -h 192.168.10.1 -c -p 7001 -a 123456
加参数 -c可连接到集群,因为上面 redis.conf 将 bind 改为了ip地址,所以 -h 参数不可以省略。
在7001节点执行命令 set hello world
然后在另外一台7005端口,查看 key 为 hello 的内容为world,说明集群运作正常。
五.创建集群问题处理:
1.显示错误: [ERR] Node xxx is not empty. Either the node already knows other no...
这是由于上次redis集群没有配置成功或异常关闭,生成了每个节点的配置文件和db的备份文件,所以才会产生这个错误。处理步骤如下:
①删除每个节点的备份文件、数据库文件和集群配置文件,比如说我有7000~7005 6个节点,那么每个节点中的appendonly.aof、dump.rdb、node_xxx.conf文件都要被删除.
②使用redis-cli -c -h -p登录每个redis节点,使用以下命令
flushdb
cluster reset
③重启所有的redis服务后,再执行redis集群连接命令。