提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
云服务Redis6.0集群部署
- 前言
- 一、创建redis集群存放目录
- 二、修改redis.conf
- 三、关闭redis的单机服务
- 四、配置端口
- 4.1自定义的端口
- 4.2开通集群总线端口
- 五、启动每一个redis服务
- 六、使用一键命令创建集群
- 七、使用命令连接redis
- 八、设置redis密码
- 九、SSM连接集群redis
- 十、SpringBoot连接集群redis
前言
服务器已经安装单例的redis6.0服务,此次学习在一台云服务进行集群安装所有更改不同配置文件的端口进行模拟。
集群最低要求三主三从,没有六个节点起不来。所以需要复制6个redis.conf文件。
使用端口6380、6381、6382、6383、6384、6385
一、创建redis集群存放目录
- /opt/redis/data
- /opt/redis/log
- /opt/redis/config(将配置文件提取出来,配置公共参数。本次学习没有使用)
二、修改redis.conf
# 后台方式运行redis
daemonize yes
# redis server运行端口号,配置文件拷贝到redisCluster文件中后这里的端口号要根据实际情况修改
port 7000
# bind 127.0.0.1 要改成0.0.0.0,不然redis客户端无法通过ip连接服务端
bind 0.0.0.0(或注释)
# 在 REDIS CLUSTER 配置模块下开启以下配置
# 开启redis集群支持
cluster-enabled yes
# 集群配置文件,redis首次启动时会在redis.conf所在的文件夹下自动创建该文件,注意#这里的node-7000.conf要根据实例启动的端口号自行修改
cluster-config-file node-3680.conf
# pidfile的端口号也需要根据实际启动的端口号自行修改
pidfile /var/run/redis_3680.pid
# 请求超时时间
cluster-node-timeout 15000
#日志存储目录
logfile /opt/redis/log/redis-server-6380.log
#数据存储
dbfilename dump-6379.rdb
#持久化,打开aof日志记录功能
appendonly yes
#修改aof文件名
appendfilename "appendonly-6380.aof"
#关闭redis的账号验证(集群必须先关闭密码验证,集群联通之后才设置密码)
protected-mode no
#修改数据文件的保存路径
dir /opt/redis/data
#redis集群中是否覆盖所有slot(yes所有slot(槽)能使集群填满才能正常工作)
cluster-require-full-coverage no
#打开注释
cluster-node-timeout 15000
#加载redis集群通用配置文件(如果提取配置了通用文件)
include 通用配置文件位置
将将修改准备好的六个配置文件放在/usr/local/redis/bin目录下
三、关闭redis的单机服务
我在/usr/local/redis/bin有一个端口6379的服务,关闭服务
kill -9 进程号
四、配置端口
4.1自定义的端口
1.防火墙打开自定义的全部端口
firewall-cmd --query-port=6380/tcp // 查看端口
firewall-cmd --permanent --add-port=6380/tcp // 开启端口
firewall-cmd --reload // 重启防火墙
2.云服务控制台打开对应的自定义的全部端口。
4.2开通集群总线端口
redis集群不仅需要开通redis客户端连接的端口,而且需要开通集群总线端口。集群总线端口为redis客户端连接的端口 + 10000.如redis端口为6379则集群总线端口为16379.故:所有服务器的点需要开通redis的客户端连接端口和集群总线端口注意:iptables 放开,如果有安全组,也要放开这两个端口(开放控制台和防火墙)
方法同4.1
五、启动每一个redis服务
./redis-server redis-6383.conf
# 其他端口服务也打开
ps -aux | grep -i redis // 查看服务是否都启动
六、使用一键命令创建集群
./redis-cli --cluster create 121.37.142.214:6380 121.37.142.214:6381 121.37.142.214:6382 121.37.142.214:6383 121.37.142.214:6384 121.37.142.214:6385 --cluster-replicas 1
redis集群 Waiting for the cluster to join 一直等待,很久都没反应。redis集群不仅需要开通redis客户端连接的端口,而且需要开通集群总线端口
七、使用命令连接redis
./redis-cli -c -h 121.37.142.214 -p 6380
参数c为开启redis cluster模式,连接redis cluster节点的时候使用,在Redis集群中是必选项
八、设置redis密码
不在配置文件修改密码,使用命令修改
config set masterauth 你的密码
config set requirepass 你的密码
# 上面的密码改完就会立刻生效,所以需要你马上输入一次密码
auth 你的密码
config rewrite
连接其他的redis,全部进行设置。各个节点的密码都必须一致,否则Redirected就会失败。对集群设置密码,那么requirepass和masterauth都需要设置,否则发生主从切换时,就会遇到授权问题。
连接一个redis,输入查询密码命令:config get requirepass(为什么查不到,因为命令行设置以后需要退出登陆一次)
- 带密码访问集群:./redis-cli -c -h 127.0.0.1 -p 6379 -a 密码
九、SSM连接集群redis
十、SpringBoot连接集群redis
集群常用命令
[root@VM-0-3-centos ~]# redis-cli --cluster help
Cluster Manager Commands:
create host1:port1 ... hostN:portN # 创建集群
--cluster-replicas <arg> # 从节点个数
check host:port # 检查集群
--cluster-search-multiple-owners # 检查是否有槽同时被分配给了多个节点
info host:port # 查看集群状态
fix host:port # 修复集群
--cluster-search-multiple-owners # 修复槽的重复分配问题
--cluster-fix-with-unreachable-masters
reshard host:port # 指定集群的任意一节点进行迁移slot,重新分slots
--cluster-from <arg> # 需要从哪些源节点上迁移slot,可从多个源节点完成迁移,以逗号隔开,传递的是节点的node id,还可以直接传递--from all,这样源节点就是集群的所有节点,不传递该参数的话,则会在 迁移过程中提示用户输入
--cluster-to <arg> # slot需要迁移的目的节点的node id,目的节点只能填写一个,不传递该参数的话,则会在迁移过 程中提示用户输入
--cluster-slots <arg> # 需要迁移的slot数量,不传递该参数的话,则会在迁移过程中提示用户输入。
--cluster-yes # 指定迁移时的确认输入
--cluster-timeout <arg> # 设置migrate命令的超时时间
--cluster-pipeline <arg> # 设置migrate命令的超时时间
--cluster-replace # 是否直接replace到目标节点
rebalance host:port # 指定集群的任意一节点进行平衡集群节点slot数量
--cluster-weight <node1=w1...nodeN=wN> # 指定集群节点的权重
--cluster-use-empty-masters # 设置可以让没有分配slot的主节点参与,默认不允许
--cluster-timeout <arg> # 设置migrate命令的超时时间
--cluster-simulate # 模拟rebalance操作,不会真正执行迁移操作
--cluster-pipeline <arg> # 定义cluster getkeysinslot命令一次取出的key数量,默认值为10
--cluster-threshold <arg> # 迁移的slot阈值超过threshold,执行rebalance操作
--cluster-replace # 是否直接replace到目标节点
add-node new_host:new_port existing_host:existing_port # 添加节点,把新节点加入到指定的集群,默认添加主节点
--cluster-slave # 新节点作为从节点,默认随机一个主节点
--cluster-master-id <arg> # 给新节点指定主节点
del-node host:port node_id # 删除给定的一个节点,成功后关闭该节点服务
call host:port command arg arg .. arg # 在集群的所有节点执行相关命令
set-timeout host:port milliseconds # 设置cluster-node-timeout
import host:port # 将外部redis数据导入集群
--cluster-from <arg> # 将指定实例的数据导入到集群
--cluster-copy # migrate时指定copy
--cluster-replace # migrate时指定replace
backup host:port backup_directory
help
For check, fix, reshard, del-node, set-timeout you can specify the host and port of any working node in the cluster.
#对于check、fix、reshard、del node、set timeout,您可以指定集群中任何工作节点的主机和端口。