搭建redis集群/主从/单节点;redis集群扩容;热修改redis配置

26 篇文章 1 订阅

从官网下载redis压缩包

https://redis.io/

在这里插入图片描述

解压安装
解压到指定路径

tar -zxvf ./xxxx.tar.gz -C /xxx

然后cd进入目录编译安装
redis需要gcc环境,没有的自行安装一下

make && make install
安装完了默认的redis-server在/usr/local/bin/redis-server
或者在安装的时候指定路径 prefix
make PREFIX=/usr/local/redis && make install  PREFIX=/usr/local/redis

修改redis.conf配置
bind 127.0.0.1注释掉不然只能本地自己连接

添加密码

requirepass xxxxx

启动和停止redis
启动

/usr/local/bin/redis-server ./redis.conf

有密码时停止

/usr/local/bin/redis-cli -p 6379 -a xxx shutdown

热修改redis内存配置

在这里插入图片描述

单节点并指定后台运行

单节点最简单,直接把编译后目录里的redis.conf的端口改改,后台运行改为yes即可

port 6379             # 指定端口为 6379,也可自行修改 
daemonize yes         # 指定后台运行

启动的时候还是用同一个命令,启动对应的配置文件

/usr/local/bin/redis-server xxx/redis.conf

主从

主从也很简单,就在上面单节点的基础上,只需要将redis.conf复制出来然后改个端口改改配置就OK了

port 6380 
slaveof 127.0.0.1 6379

启动的时候还是用同一个命令,启动对应的配置文件

/usr/local/bin/redis-server xxx/redis.conf

哨兵sentinel

和主从差不多,就是多搞几个从节点,然后启动哨兵模式,同样多复制几份redis.conf然后改改配置

vim redis01.conf
port 63791

vim redis02.conf
port 63792
slaveof 127.0.0.1 63791

vim redis03.conf
port 63793
slaveof 127.0.0.1 63791

#这个sentinel.conf在最开始编译的那个目录下
vim sentinel.conf
daemonize yes
port 26379
sentinel monitor mymaster 127.0.0.1 63793 1   # 下面解释含义
mymaster        为主节点名字,可以随便取,后面程序里边连接的时候要用到
127.0.0.1 63793 为主节点的 ip,port
1               后面的数字 1 表示选举主节点的时候,投票数。1表示有一个sentinel同意即可升级为master

启动哨兵

redis-server path/to/redis-sentinel/redis01.conf
redis-server path/to/redis-sentinel/redis02.conf
redis-server path/to/redis-sentinel/redis03.conf

redis-server path/to/redis-sentinel/sentinel.conf --sentinel

集群模式

集群和哨兵差不多,配置redis集群需要至少6个redis节点,为啥呃,redis官方有一句话,最少3个主节点,那么住主+从不就6个节点了

Note that the minimal cluster that works as expected requires to
contain at least three master nodes.

集群的配置文件中都需要开启集群模式

bind 192.168.83.128                    # 设置当前节点主机地址
port 7001                              # 设置客户端连接监听端口
pidfile /var/run/redis_7001.pid        # 设置 Redis 实例 pid 文件
daemonize yes                          # 以守护进程运行 Redis 实例
cluster-enabled yes                    # 启用集群模式
cluster-node-timeout 15000             # 设置当前节点连接超时毫秒数
cluster-config-file nodes-7001.conf    # 设置当前节点集群配置文件路径
 
#appendonly yes						   # 开启redis aof
主:redis01  从 redis02    slaveof redis01
主:redis03  从 redis04    slaveof redis03
主:redis05  从 redis06    slaveof redis05


mkdir redis-cluster
cd redis-cluster
mkdir redis01 到 redis06 6个文件夹
cp redis.conf 到 redis01 ... redis06
修改端口
分别配置3组主从关系

逐个启动redis实例,启动完之后ps查看可以看到有个集群标志
在这里插入图片描述

手动启动和停止嫌麻烦可以自己写个脚本

启动

#!/bin/bash
cd 6379_master
/usr/local/bin/redis-server ./redis.conf
cd ../6380_master
/usr/local/bin/redis-server ./redis.conf
cd ../6381_master
/usr/local/bin/redis-server ./redis.conf
cd ../6379_master_slave_6382
/usr/local/bin/redis-server ./redis.conf
cd ../6380_master_slave_6383
/usr/local/bin/redis-server ./redis.conf
cd ../6381_master_slave_6384
/usr/local/bin/redis-server ./redis.conf

停止

#!/bin/bash
/usr/local/bin/redis-cli -a 10086 -c -h 127.0.0.1 -p 6379 shutdown

/usr/local/bin/redis-cli -a 10086 -c -h 127.0.0.1 -p 6380 shutdown

/usr/local/bin/redis-cli -a 10086 -c -h 127.0.0.1 -p 6381 shutdown
/usr/local/bin/redis-cli -a 10086 -c -h 127.0.0.1 -p 6382 shutdown
/usr/local/bin/redis-cli -a 10086 -c -h 127.0.0.1 -p 6383 shutdown
/usr/local/bin/redis-cli -a 10086 -c -h 127.0.0.1 -p 6384 shutdown

然后创建集群,redis5.0版本之前使用的ruby脚本 redis-trib.rb,如果你的redis有密码需要修改redis-trib.rb中连接redis部分
在这里插入图片描述
老版本redis-trib简历集群命令,前面三个是master节点后面三个是slave节点,按照顺序对应

./redis-trib.rb create --replicas 1 124.221.240.76:6379 124.221.240.76:6382 124.221.240.76:6380 124.221.240.76:6383 124.221.240.76:6381 124.221.240.76:6384

新版本的都直接用redis-cli创建即可

/usr/local/bin/redis-cli -a xxxx --cluster create --cluster-replicas 1 192.168.1.1:8001 192.168.1.1:8002 192.168.1.2:8001 192.168.1.2:8002 192.168.1.3:8001 192.168.1.3:8002

-a :密码;

–cluster-replicas 1:表示1个master下挂1个slave; --cluster-replicas 2:表示1个master下挂2个slave。

集群创建成功
在这里插入图片描述

在这里插入图片描述

验证集群,连接任意一个客户端

‐a表示服务端密码;‐c表示集群模式;-h指定ip地址;-p表示端口号

redis-cli -a xxxx -c -h 192.168.1.1 -p 8001

查看集群的信息: cluster info

在这里插入图片描述

查看节点列表: cluster nodes

在这里插入图片描述

关闭集群则需要逐个进行关闭

/usr/local/redis‐5.0.3/src/redis‐cli ‐a redis-pw ‐c ‐h 192.168.1.1 ‐p 8001 shutdown /usr/local/redis‐5.0.3/src/redis‐cli ‐a redis-pw ‐c ‐h 192.168.1.1 ‐p 8002 shutdown
......

redis集群扩容

当业务开始增长的时候redis集群就需要扩容了
利用redis-cli工具增加主节点,第1个节点是需要新加入的主节点,第2个节点是既有集群中的任意1个节点。

按照之前Cluster搭建方式,重新在新的一台机器上启动2个实例,1主1从

添加主节点

/usr/local/redis/bin/redis-cli --cluster add-node 127.0.0.1:6386 127.0.0.1:6385

添加成功了类似下面的图中的结果
在这里插入图片描述
然后进入集群查看是否添加成功

/usr/local/bin/redis-cli -h 127.0.0.1 -p 6380

增加从节点

前面是从节点,后面是集群中的任意节点

/usr/local/redis/bin/redis-cli --cluster add-node 127.0.0.1:6386 127.0.0.1:6385 --cluster-slave --cluster-master-id 6ad45a1a6b276d487a927b9cb7b284edf1690e21

迁移槽位和数据
此时新的节点是没有分配槽位的,所以需要重新分配槽位

# 最后填写集群中任意1个节点都行。
/usr/local/redis/bin/redis-cli --cluster reshard 127.0.0.1:6385

在这里插入图片描述

  1. 指定分配的槽位数量。
  2. 指定获取这些槽位的主节点id。
  3. 填写all表示要迁移的这些槽位由集群中原有的各个主节点平均分摊给新加入的主节点。
  4. 会有一次确认,输入yes即可,稍等一会槽位就会迁移到新的主节点上。

再次确认集群各节点信息,可以看到新加入的节点已经获得槽位了。
在这里插入图片描述

修改集群IP

使用场景,当因为一些原因需要更换对外ip时。

在这里插入图片描述

先停止所有节点
将所有节点的cluster-config-file文件中的IP地址改成对应地址
然后使用sed命令修改ip

sed -i 's/127.0.0.1/124.221.240.76/g' `grep -w "127.0.0.1" -rl ./` nodes-6384.conf

修改完之后再一个一个起来就ok了

备注

如果是云服务器在使用外网ip create cluster时还需要开通总线端口,默认是1000+redis port

参考了大佬的博文
https://juejin.cn/post/6890911655451394062
https://xie.infoq.cn/article/176a69d28ad007e338a07ae15

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
Redis集群主从复制是两种不同的架构模式,它们的区别如下: 1. 数据复制方式: - 主从复制:一个Redis实例作为主节点,其余实例作为从节点。主节点将写入的数据同步复制给从节点,从节点只能读取数据,不能写入。主节点负责处理写入请求和同步数据给从节点,从节点负责读取请求。 - Redis集群Redis集群将数据分片存储在多个节点上,每个节点负责存储和处理部分数据。每个节点都是对等的,可以处理读写请求。 2. 高可用性: - 主从复制:主节点故障时,可以选择一个从节点升级为主节点继续提供服务。但是,主节点故障期间可能会有数据丢失。 - Redis集群Redis集群通过数据分片和复制在多个节点之间实现高可用性。当某个节点故障时,集群可以自动将该节点上的数据迁移到其他健康的节点。 3. 可伸缩性: - 主从复制:当需要扩展读取能力时,可以添加更多的从节点。但是写入请求仍然由主节点处理,主节点成为瓶颈。 - Redis集群Redis集群可以水平扩展,通过添加更多的节点来提高读写能力。 4. 部署复杂性: - 主从复制:主从复制部署相对简,只需配置主从关系并启动相应的实例即可。 - Redis集群Redis集群的部署相对复杂,需要对数据进行分片,配置和管理多个节点。 综上所述,主从复制适用于读多写少的场景,并且在部署和管理上相对简Redis集群适用于需要高可用性和可伸缩性的场景,但在部署和管理上相对复杂。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值