首页 > 数据库 >搭建redis分片集群

搭建redis分片集群

时间:2023-10-17 10:14:54浏览次数:36  
标签:opt 20300 redis 20301 192.168 cluster 集群 分片

搭建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 augurRedis@2022
requirepass augurRedis@2022

重新启动redis集群

第二章:生产环境搭建

标签:opt,20300,redis,20301,192.168,cluster,集群,分片
From: https://www.cnblogs.com/gdy8/p/17769041.html

相关文章

  • redisson不同版本的配置地址格式问题
       不同版本的redisson在配置地址时需要注意例如3.2.0是127.0.0.1:63793.15.4是redis://127.0.0.1:6379 在用ip地址配置时需要注意在测试环境配置地址时因为时域名所以没有暴露出来  Releases·redisson/redisson·GitHub从redisson-3.4.3......
  • Redis系列---【Linux系统离线安装redis5.0.7】
    Linux系统离线安装redis5.0.71.下载redis安装包方式一:shell命令下载wgethttp://download.redis.io/releases/redis-5.0.7.tar.gz方式二:手动官网下载官网地址:https://redis.io/download2.上传到服务器上传到/opt/app/middles/目录下3.解压并安装tar-zvxfredi......
  • C++接入redis
    项目地址https://github.com/sewenew/redis-plus-plushttps://github.com/redis/hiredis#1、编译安装hiredis项目wgethttps://github.com/redis/hiredis/archive/refs/tags/v1.2.0.tar.gzcdhiredis#编译安装make&&makePREFIX=安装到指定目录install#2、编译......
  • redis 介绍和安装
    1.redis是什么-数据库就是个存数据的地方:只是不同的数据库数据组织,存放形式不一样-mysql关系型数据库(oracle,sqlserver,postgrasql)-非关系型数据(nosql):redis,mongodb,clickhouse,infludb,elasticsearch,hadoop。。。-没有sql:没有sql语句-not......
  • Install Redis on macOS
     UseHomebrewtoinstallandstartRedisonmacOSThisguideshowsyouhowtoinstallRedisonmacOSusingHomebrew.HomebrewistheeasiestwaytoinstallRedisonmacOS.Ifyou'dprefertobuildRedisfromthesourcefilesonmacOS,see Installing......
  • 使用Redis的好处
    性能极高——redis能支持超过100K+每秒的读写频率丰富的数据类型——Redis支持二进制案例的Strings,Lists,Hashes,Sets及OrderedSets数据类型操作原子——Redis的所有操作都是原子性的,同时Redis还支持对几个操作全并后的原子性执行丰富的特性——Redis还支持p......
  • redis集群的简单应用
    1、创建集群#创建redis示例dockerrun-d--nameredis-node-1--nethost--privileged=true-v/data/redis/share/redis-node-1:/dataredis:6.0.8--cluster-enabledyes--appendonlyyes--port6381dockerrun-d--nameredis-node-2--nethost--privileged=tru......
  • kubernetes集群中pod访问外网丢包严重问题排查:mtu值设置不对
    kubernetes集群中pod访问外网丢包严重问题排查:mtu值设置不对问题描述和初步判断k8s中部署的数据中台调用指云(open.imzhiyun.com)的sdk接口,调用了23次,成功了3次,其余20次都失败。我这边通过在宿主机上进行tcpdump抓包抓包命令:1.查出调用sdk的容器名称2.查出该容器所在宿主机......
  • redis在linux下自启命令
    redis在linux下自启命令[Unit]Description=redis-serverAfter=network.target[Service]Type=forkingExecStart=/usr/local/bin/redis-server/software/redis-4.0.9/redis.confExecStop=/usr/local/bin/redis-clishutdownPrivateTmp=true[Install]WantedBy=multi-u......
  • 轻松掌握组件启动之Redis集群扩展秘籍:轻松扩容与缩容,释放高性能潜能
    扩展集群操作扩容在我们原始的集群基础上,我们决定增加一台主节点(8007)和一台从节点(8008),这样新增的节点将会在下图中以虚线框的形式显示在集群中。1:首先,在/usr/local/redis-cluster目录下创建两个文件夹,分别命名为8007和8008。接下来,将8001文件夹下的redis.conf文......