搭建redis分片集群

1.1、版本信息:

操作系统:CentOS-7-x86_64-Minimal-2009.iso

redis:6.0.8

1.2、地址规划与结构图

ip地址

端口

描述

192.168.118.200

20300

master1

192.168.118.200

20301

slave2。从于192.168.118.201的master

192.168.118.201

20300

master2

192.168.118.201

20301

slave3。从于192.168.118.202的master

192.168.118.202

20300

master3

192.168.118.202

20301

slave1。从于192.168.118.200的master

地址规划与结构图:

简单说明:

  • 每台物理机器有一个主节点(端口20300)
  • 每个主节点的从节点在其他物理机上(端口为20301),避免一台物理机挂掉之后,整个redis集群都不好使了

1.3、修改主机名

分别修改3台虚拟机的/etc/hosts文件,添加如下内容

192.168.118.200 node1

192.168.118.201 node2

192.168.118.202 node3

1.4、下载和安装

在线安装:三台服务器都执行一下脚本。

#!/bin/bash
#将gcc升级到 5.3及以上版本
yum -y install centos-release-scl
yum -y install devtoolset-9-gcc devtoolset-9-gcc-c++ devtoolset-9-binutils 
scl enable devtoolset-9 bash

#创建部署目录
mkdir /opt/redis-cluster
# 切换目录
cd /opt/redis-cluster
#下载redis
wget http://download.redis.io/releases/redis-6.0.8.tar.gz
tar xzf redis-6.0.8.tar.gz
cd redis-6.0.8
# 编译,注意:如果不加MALLOC=libc,会报fatal error: jemalloc/jemalloc.h: 没有那个文件或目录
make MALLOC=libc
# 为redis 创建配置目录
mkdir -p /opt/redis-cluster/redis_2030{0,1}/{conf,pid,logs}

1.5、配置

1.5.1、配置192.168.118.200的master

创建并编辑redis.cnf文件。vim /opt/redis-cluster/redis_20300/conf/redis.cnf。文件内容如下:

# 守护进行模式启动
daemonize yes


# 设置数据库数量,默认数据库为0
databases 16

# 绑定地址,需要修改
bind 192.168.118.200

# 绑定端口,需要修改
port 20300


# pid文件存储位置,文件名需要修改
pidfile /opt/redis-cluster/redis_20300/pid/redis_20300.pid

# log文件存储位置,文件名需要修改
logfile /opt/redis-cluster/redis_20300/logs/redis_20300.log

# RDB快照备份文件名,文件名需要修改
dbfilename redis_20300.rdb

# 本地数据库存储目录,需要修改
dir /opt/redis-cluster/redis_20300

# 集群相关配置
# 是否以集群模式启动
cluster-enabled yes

# 集群节点回应最长时间,超过该时间被认为下线
cluster-node-timeout 15000

# 生成的集群节点配置文件名,文件名需要修改
cluster-config-file nodes_20300.conf

1.5.2、配置192.168.118.200的slave

创建并编辑redis.cnf文件。vim /opt/redis-cluster/redis_20301/conf/redis.cnf。文件内容如下:

# 守护进行模式启动
daemonize yes

# 设置数据库数量,默认数据库为0
databases 16

# 绑定地址,需要修改
bind 192.168.118.200

# 绑定端口,需要修改
port 20301


# pid文件存储位置,文件名需要修改
pidfile /opt/redis-cluster/redis_20301/pid/redis_20301.pid

# log文件存储位置,文件名需要修改
logfile /opt/redis-cluster/redis_20301/logs/redis_20301.log

# RDB快照备份文件名,文件名需要修改
dbfilename redis_20301.rdb

# 本地数据库存储目录,需要修改
dir /opt/redis-cluster/redis_20301

# 集群相关配置
# 是否以集群模式启动
cluster-enabled yes

# 集群节点回应最长时间,超过该时间被认为下线
cluster-node-timeout 15000

# 生成的集群节点配置文件名,文件名需要修改
cluster-config-file nodes_20301.conf

*192.168.118.201和192.168.118.202的master和slave跟192.168.118.200的master和slave一样。bind配置项改成对应的ip

1.6、启动集群

每个节点上执行以下2条命令进行服务启动:

/opt/redis-cluster/redis-6.0.8/src/redis-server /opt/redis-cluster/redis_20300/conf/redis.cnf

/opt/redis-cluster/redis-6.0.8/src/redis-server /opt/redis-cluster/redis_20301/conf/redis.cnf

集群模式启动,进程后会加上[cluster]的字样:

1.7、加入集群

现在虽然说每个服务都成功启动了,但是彼此之间并没有任何联系。

所以下一步要做的就是将6个服务加入至一个集群中,如下操作示例(在任意节点执行都行):一行一行执行

/opt/redis-cluster/redis-6.0.8/src/redis-cli -h node1 -p 20300
#如果已经配置了密码。这里需要先执行:AUTH 你的密码
cluster meet 192.168.118.201 20300
cluster meet 192.168.118.202 20300
cluster meet 192.168.118.200 20301
cluster meet 192.168.118.201 20301
cluster meet 192.168.118.202 20301

结果如图:

1.8、配置主从

6个服务之间并没有任何主从关系,所以现在进行主从配置,记录下上面cluster nodes命令输出的node-id信息,只记录主节点。

hostname

节点

node-id

node1

192.168.118.200:20300

3f18f58b536046b66ef8127a8aefd347a0f957ca

node2

192.168.118.201:20300

bf6fe478d224fcabbbc29be0fab27f75bf42114f

node3

192.168.118.202:20300

7cf1281fd175d93bfbaa130d0b3751866d7e37fb

配置node1的20301。从于node2的20300。步骤如下:

a、连接node1的20301:/opt/redis-cluster/redis-6.0.8/src/redis-cli -h node1 -p 20301

b、执行:CLUSTER REPLICATE bf6fe478d224fcabbbc29be0fab27f75bf42114f

c、推出连接:exit

配置node2的20301。从于node3的20300。步骤如下:

a、连接node2的20301:/opt/redis-cluster/redis-6.0.8/src/redis-cli -h node2 -p 20301

b、执行:CLUSTER REPLICATE 7cf1281fd175d93bfbaa130d0b3751866d7e37fb

c、推出连接:exit

配置node3的20301。从于node1的20300。步骤如下:

a、连接node3的20301:/opt/redis-cluster/redis-6.0.8/src/redis-cli -h node3 -p 20301

b、执行:CLUSTER REPLICATE 3f18f58b536046b66ef8127a8aefd347a0f957ca

c、推出连接:exit

再次查看节点信息:

1.9、分配槽位

接下来我们要开始分配槽位了,为了考虑今后的写入操作能分配均匀,槽位也要进行均匀分配。

仅在Master上进行分配,从库不进行分配,仅做主库的备份和读库使用。

槽位分配情况如下,槽位号从0开始,到16383结束,共16384个槽位,均匀分配:

节点

槽位

node1

0~5461

node2

5462~10922

node3

10923~16383

/opt/redis-cluster/redis-6.0.8/src/redis-cli -h node1 -p 20300 cluster addslots {0..5461}

/opt/redis-cluster/redis-6.0.8/src/redis-cli -h node2 -p 20300 cluster addslots {5462..10922}

/opt/redis-cluster/redis-6.0.8/src/redis-cli -h node3 -p 20300 cluster addslots {10923..16383}

检查是否正确分配槽位:

检查分配槽位后集群是否正常:如果槽位全部分配完毕应该是ok,不然的话就检查你分配槽位时是否输错了数量。

1.10、测试

写入:在node1的20300写入

读取:在node3的20301读取

1.11、设置密码

所有的redis.cnf都添加一下内容

#设置密码
masterauth 123456 
requirepass 123456

重新启动redis集群

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

阳光程序员

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值