环境准备
IP地址 |
192.168.247.138 |
192.168.247.145 |
192.168.247.158 |
redis的安装部署在前文已经详细写过
redis安装部署
有需要的可以看上篇文章 附上链接redis安装部署
创建集群
在解压编译之后进行如下操作(三台机器都执行)
mkdir -p /data/redis/cluster/6379
mkdir -p /data/redis/cluster/6380
cd /data/redis/cluster/6379
mkdir logs data
cd /data/redis/cluster/6380
mkdir logs data
mkdir /usr/local/redis/conf
mkdir /usr/local/redis/pid
vi /usr/local/redis/redis.conf
对redis.conf 进行如下修改
#redis访问端口(需要修改)
port 6379
#设置开启守护进程
daemonize yes
#关闭保护模式
protected-mode no
#开启远程访问
bind 0.0.0.0
# 开启AOF
appendonly yes
#日志存放位置(需要修改)
logfile "/data/redis/cluster/6379/logs/redis-cluster-6379.log"
#数据保存目录(需要修改)
dir /data/redis/cluster/6379/data/
# pid文件创建位置(需要修改)
pidfile /usr/local/redis/pid/redis_6379.pid
#aof 持久化文件位置(需要修改) 在dir目录下
appendfilename "6379-appendonly.aof"
#修改rdb持久化文件位置(需要修改) 在dir目录下
dbfilename 6379-dump.rdb
# 开启集群模式
cluster-enabled yes
# 每一个redis节点需要有一个配置文件,三主三从集群共6个节点,因此需要6份配置文件。每个节点处于集群中都需要告知其他所有节点,达到集群中节点信息交换的目的,这个文件用于存储集群模式下的集群状态等信息,这个文件是由redis自己维护,不用管。如果你要重新创建集群,那么把每个节点的这个文件删了就行
#(需要修改) 在dir目录下
cluster-config-file nodes-6379.conf
# 超时时间,超时则认为master宕机,随后主备切换单位毫秒
cluster-node-timeout 5000
#设置集群节点间访问密码
masterauth 123456
#设置连接密码
requirepass 123456
创建redis集群配置文件
cp /usr/local/redis/redis.conf /usr/local/redis/conf/redis-cluster-6379.conf
cp /usr/local/redis/redis.conf /usr/local/redis/conf/redis-cluster-6380.conf
编辑 /usr/local/redis/conf/redis-cluster-6380.conf 把其中的6379修改成6380
sed -i "s/6379/6380/g" /usr/local/redis/conf/redis-cluster-6380.conf
在每个redis机器上分别启动redis程序
nohup /usr/local/redis/bin/redis-server /usr/local/redis/conf/redis-cluster-6379.conf &
nohup /usr/local/redis/bin/redis-server /usr/local/redis/conf/redis-cluster-6380.conf &
创建redis集群,在任意一台redis机器上执行就行
--cluster create:
用于创建 Redis 集群
–cluster-replicas 1 :表示每个主节点需要1个从节点。这里随机分配主从关系,如果需要定制,则可以不加该参数,使用add-node来定制
-a 123456:-a
选项用于指定连接 Redis 节点时使用的密码,123456
就是具体的密码。这意味着在创建集群以及后续与这些节点交互时,都需要使用这个密码进行认证。
redis-cli --cluster create 192.168.247.138:6379 192.168.247.138:6380 192.168.247.145:6379 192.168.247.145:6380 192.168.247.158:6379 192.168.247.158:6380 --cluster-replicas 1 -a 123456
会弹出一个对话框 输入yes就可以了
若出现下面的报错 则是因为防火墙的问题 开启端口即可 或者直接关闭防火墙
[ERR] Node 192.168.128.138:6379 NOAUTH Authentication required
firewall-cmd --zone=public --add-port=6379/tcp --permanent
firewall-cmd --zone=public --add-port=6380/tcp --permanent
firewall-cmd --reload
然后重新执行开启集群命令
如果忘了开放端口导致一直Waiting for the cluster to join…,那就先停止集群启动,先去开放端口
[ERR] Node 192.168.247.128:6379 is not empty. Either the node already knows other nodes (check with CLUSTER NODES) or contains some key in database 0.
解决办法:
- 先kill redis创建的集群节点进程
- 删除appendonly.aof、dump.rdb、nodes.conf文件,文件位置在数据存储目录:/usr/local/redis/data
- 执行./redis-cli flushdb 命令,清空每个redis里面的数据。
- 重启redis节点,再重新启动集群即可
验证集群
查看集群信息
选择一个节点进入
redis-cli -a 123456 -h 192.168.247.145 -p 6379 -c
-c
选项的作用是启用集群模式。
cluster nodes
命令用于展示 Redis 集群中各个节点的详细信息。
cluster info
命令用于查看 Redis 集群的整体信息。
数据验证操作
在其中一个节点插入数据
在另一个节点验证