Linux系统集群部署:(Cluster)

萨瓦迪卡4小时前redis6

redis集群部署也是实现redis故障转移的方案之一,也就是高可用性(支持主从复制和节点的自动故障转移)。还有另一个作用就是:数据分区(集群将数据分散到多个节点,⼀⽅⾯突破了Redis单机内存⼤⼩的限制,存储容量⼤⼤增加。另⼀⽅⾯每个主节点都可以对外提供读服务和写服务,大大提高了集群的响应能力)。主从部署及哨兵部署等,每个节点都包含了完整的主数据,并不是真正的分布式运行模式。
Redis 集群是 Redis 的⼀种分布式运⾏模式,它通过分⽚(sharding)来提供数据的⾃动分区和管理,从⽽实现数据的⾼可⽤性和可扩展性。
在集群模式下,数据被分割成多个部分(称为槽或slots),分布在多个 Redis 节点上。

15ef696b-fed8-4d72-bf79-9558aadd6cde.png

1. Redis集群的数据分⽚
Redis集群引⼊了哈希槽的概念 Redis集群有16384个哈希槽(编号0-16383) 集群的每个节点负责⼀部分哈希槽, 每个Key通过CRC16校验后对16384取余来决定放置哪个哈希槽,通过这个值,去找到对应的插槽所对应的节点,然后直接⾃动跳转到这个对应的节点上进⾏存取操作:
以3个节点组成的集群为例: 节点A包含0到5460号哈希槽 ,节点B包含5461到10922号哈希槽, 节点C包含10923到16383号哈希槽。
Redis集群的主从复制模型 集群中具有A、B、C三个节点,如果节点B失败了,整个集群就会因缺少5461-10922这个范围的槽⽽不可以⽤。
为每个节点添加⼀个从节点A1、B1、C1整个集群便有三个Master节点三个slave节点组成,在节点B失败后,集群选举B1为主节点继续服务。当B和B1都失败后,集群将不可⽤。
2. Reids 集群部署
Redis Cluster被配置为三主三从模式。这意味着每台服务器上的两个Redis节点中,⼀个节点作为主库(master),另⼀个作为从库(slave)

64190799-cdab-4a6d-b1c1-eb908d069b88.png

基于主从架构的基础上,我们会在每一个机器上部署一个6380的redis服务,也就是每个机器上有2个redis服务。也就不能用redis.conf来启动服务了,因为一个redis.conf文件不能同时启用2个服务。
1.4.3.2. redis 集群配置准备
1首先创建一个cluster文件夹,这里面会存储两个redis服务的redis.conf配置,以及两个服务的日志。只不过是以端口区分。
2同时在redis下也创建一个cluster,存放的是两个redis服务的工作目录。也会按照端口进行区分。

3需要注意的是我们三台机器上的6379,6380的服务是完全一样的,只是ip端口不同。因此我们在配置一个机器的时候,另外两个机器的配置可以直接复制过去。先依次修改6379的文件,再依次修改6380的文件。

命令:

-- 创建集群配置文件夹,将下面的2行配置复制过去,另外两个机器重复这个过程
mkdir -p /opt/software/redis/redis-stable/cluster
mkdir -p /opt/software/redis/cluster
vim ./cluster/redis_6379.conf
vim ./cluster/redis_6380.conf
-- 配置⽂件准备完成之后,启动所有redis服务,⽤cluster配
置⽂件
redis-server ./cluster/redis_6379.conf
redis-server ./cluster/redis_6380.conf
-- 检查服务
ps aux | grep redis
-- 创建三主三从集群模式,每⼀个主节点带⼀个从节点
redis-cli --cluster create --cluster-replicas 1 192.168.75.129:6379 192.168.75.129:6380 192.168.75.131:6379 192.168.75.131:6380 192.168.75.132:6379 192.168.75.132:6380
-- 查看集群信息
redis-cli cluster info
-- 查看单个节点信息
redis-cli info replication
-- 查看集群节点身份信息
redis-cli cluster nodes
19-- 停⽌redis服务
redis-cli -p 6379 shutdown
redis-cli -p 6380 shutdown
6379配置 文件
# 允许所有的IP地址
bind * -::* 
# 后台运⾏
daemonize yes 
# 允许远程连接
protected-mode no 
# 开启集群模式
cluster-enabled yes
# 集群节点超时时间
cluster-node-timeout 5000
# 配置数据存储⽬录
dir "/opt/software/redis/cluster"
# 开启AOF持久化
appendonly yes
# 端⼝
port 6379 
# log⽇志
logfile "/opt/software/redis/redis-stable/cluste
r/redis6379.log" 
# 集群配置⽂件
cluster-config-file nodes-6379.conf
# AOF⽂件名
appendfilename "appendonly6379.aof" 
# RBD⽂件名
dbfilename "dump6379.rdb"

6380配置
# 允许所有的IP地址
bind * -::* 
# 后台运⾏
daemonize yes 
# 允许远程连接
protected-mode no 
# 开启集群模式
cluster-enabled yes
# 集群节点超时时间
cluster-node-timeout 5000
# 配置数据存储⽬录
dir "/opt/software/redis/cluster"
# 开启AOF持久化
appendonly yes
# 端⼝
port 6380
# log⽇志
logfile "/opt/software/redis/redis-stable/cluste
r/redis6380.log" 
# 集群配置⽂件
cluster-config-file nodes-6380.conf
# AOF⽂件名
appendfilename "appendonly6380.aof" 
# RBD⽂件名
dbfilename "dump6380.rdb"
启动6379的服务后,查看下进程:ps aux|grep redis 。这时我们的三台机器上都分别运行了2个cluster服务。

a5408be5-4a53-46d9-a550-fc07524c3051.png

然后使用命令创建集群:注意改成自己的ip及端口。这个命令只需要在一台机器上执行就可以。也就是在129,7号机上执行的。
-- 创建三主三从集群模式,每⼀个主节点带⼀个从节点
redis-cli --cluster create --cluster-replicas 1 192.168.75.129:6379 192.168.75.129:6380 192.168.75.131:6379 192.168.75.131:6380 192.168.75.132:6379 192.168.75.132:6380
回复yes。
然后查看集群信息:
redis-cli cluster inf


e3348f54-e078-4f39-a876-9d41268fb1b2.png

也可以查看
-- 查看单个节点信息
redis-cli info replication

34e56178-859b-46ac-a715-1abbfa431681.png

可以看到6379的这个节点的端口是master的角色,因为我们没有指明端口的情况下,他默认的就是6379.它的从节点是131的6380
此外,我们还可以:查看节点的配置
-- 查看集群节点身份信息
redis-cli cluster node

9b4145a5-5968-4c19-a79d-028229211860.png

可以看到3个master节点,以及分别对应的槽位。也可以根据编号查看对应的从节点。已经搭建完成。
模拟故障转移:
比如129的主节点6379如果故障,那么它的从节点131的6380应该晋升为主节点。
将129的6379的服务干掉:redis-cli shutdown
然后直接查看131的6380角色:redis-cli -p 6380 info replication

caafd649-df16-4135-a7b0-bde7b69a3cf4.png

将129的6379的服务恢复后,它也有了自己的小弟:

49021744-a4a3-4d49-8e23-bc9c5610ae8d.png

本文原创,转载必追究版权。

分享给朋友:

相关文章

js动态加载复选框checkbox(XML串)

 首先,使用JS动态产生Checkbox可以采用如下类似的语句:代码如下:var checkBox=document.createElement("input");che...

是谁动了我的座位

是谁动了我的座位

女孩一上火车,见自己的座位上坐着一男士。她核对自己的票,客气地说:“先生,您坐错位置了吧?” 男士拿出票嚷嚷着:“看清楚点,这是我的座,你瞎了?” 女孩仔细看了他的票,不再做声,默...

开机密码忘记怎么办

1、重新启动计算机,在启动画面出现后马上按下F8键(不同类型型号电脑启动键不一样,参考附加),选择“带命令行的安全模式”。2、运行过程结束时,系统列出了系统超级用户“administrator”和本地...

Java 实现用户资料完整度的前端显示(或根据填写资料自动评分)

前端使用 Bootstrap 的进度条组件显示百分比,后台读取权重并计算信息完整度,并将计算的结果返回给前端,供页面显示。CSS1<link href="static/sc/...

dwz+jfinal 市县下拉菜单二级联动(实例)

在DWZ文档中对组合框combox的是这样描述的:在传统的select 用class 定义:class=”combox”, html 扩展:保留原有属性name,  增加了属性:ref。re...

java 实现自增编号+Oracle序列

原理:a,a++,fillStr(a, 9, false, "0");新建序列:create sequence seq_lineminvalue 1maxvalue 9999999...

评论列表

发表评论

访客

◎欢迎参与讨论,请在这里发表您的看法和观点。