引言

操作系统环境:Ubuntu 20.04
Redis版本:6.2.8

准备工作

如果已经安装过了,找到自己的安装路径。如果没有安装过,去官网下载 当前最新版本是7.0,我这里用的是6.0,下载 redis-6.2.8.tar.gz,拷贝到自己的虚拟机或者云服务器。

tar -zxvf redis-6.2.8.tar.gz 解压
cd redis-6.2.8
make && make install (注意是root权限)

目标

在一台机器通过监听不同的port模拟集群(三台主服务器,每台主服务器有两个从服务器,总共9台服务器)

1、在redis的目录中创建redis_cluster文件夹

cd redis-6.2.8
mkdir redis_cluster

2、 在redis_cluster文件夹中分别创建端口号的文件夹(6390-6398)

mkdir 6390 6391 6392 6393 6394 6395 6396 6397 6398

3、以6390为例,在6390目录下创建文件redis.conf,并添加如下配置

注意:需要在步骤二创建的每个文件夹下创建配置文件,并做相应修改。

touch redis.conf

#端口号
port 6390
#默认ip为127.0.0.1,需要改为其他节点机器可以访问的ip,否则创建集群时无法访问对应的端口,无法创建集群
bind 192.168.60.69
#redis后台运行
daemonize yes
#pidfile文件对应6390,6391,6392…
pidfile /var/run/redis_6390.pid
#开启集群
cluster-enabled yes
#集群的配置,配置文件首次启动自动生成6390,6391,6392…
cluster-config-file nodes_6390.conf
#请求超时,默认15秒,可自行设置
cluster-node-timeout 10100
#aof日志开启,有需要就开启,它会每次写操作都记录一条日志
appendonly yes

4、分别向分别向6381-6388目录copy一份配置文件

cp -r redis.conf ../6391
cp -r redis.conf ../6392
cp -r redis.conf ../6393
cp -r redis.conf ../6394
cp -r redis.conf ../6395
cp -r redis.conf ../6396
cp -r redis.conf ../6397
cp -r redis.conf ../6398

需要修改的配置:

port 639x  (根据端口号修改)
bind 127.0.0.1  我这里是本机模拟,写的本地地址,根据实际ip地址填写
pidfile /var/run/redis_639x.pid(根据端口号修改)
cluster-config-file nodes_639x.conf(根据端口号修改)

5. 启动Redis各个节点服务(一定要在src目录下启动,在其他地方无法启动)

./redis-server …/redis_cluster/6390/redis.conf
./redis-server …/redis_cluster/6391/redis.conf
./redis-server …/redis_cluster/6392/redis.conf
./redis-server …/redis_cluster/6393/redis.conf
./redis-server …/redis_cluster/6394/redis.conf
./redis-server …/redis_cluster/6395/redis.conf
./redis-server …/redis_cluster/6396/redis.conf
./redis-server …/redis_cluster/6397/redis.conf
./redis-server …/redis_cluster/6398/redis.conf

也可以写个脚本启动,就不用一个一个启动了:
vi cluster.sh

#!bin/bash
redis-server 6390/redis.conf
redis-server 6391/redis.conf
redis-server 6392/redis.conf
redis-server 6393/redis.conf
redis-server 6394/redis.conf
redis-server 6395/redis.conf
redis-server 6396/redis.conf
redis-server 6397/redis.conf
redis-server 6398/redis.conf

给脚本赋予执行权限 : chmod +x cluster.sh
运行脚本:./cluster.sh

6. 创建redis集群

因为redis最终是以数据库的形式的存在,原理和mysql一样,集群创建成功只能说明安装redis成功了,但是最终>
!!!注意还需要在redis的src目录下运行
当第一次运行的时候,才需要创建数据库,以后的每一次运行都不再需要了,直接启动集群即可

–cluster-replicas 2表示每个主节点有2个从节点

redis-cli --cluster create 127.0.0.1:6390 127.0.0.1:6391 127.0.0.1:6392 127.0.0.1:6393 127.0.0.1:6394 127.0.0.1:6395 127.0.0.1:6396 127.0.0.1:6397 127.0.0.1:6398 --cluster-replicas 2

注意:这里需要自己手动输入yes,如果超时了还没有输入,则会自动退出,需要再次创建!

看到以下信息说明创建redis集群搭建成功,且16384个槽位分配成功,:
M: eabfa31d4e7cefa01a64ec5e67ddba219ad74035 127.0.0.1:6390slots:[0-5460] (5461 slots) master
M: 2ac5623a741d707d4e2319795386d7e13b2ef575 127.0.0.1:6391slots:[5461-10922] (5462 slots) master
M: 6e4cfc6b5918ed9b59e8e7c8765f1e37a86d3d1b 127.0.0.1:6392slots:[10923-16383] (5461 slots) master
S: 41fdf2a9bec000cb282bd9bc75a1aa7f33417889 127.0.0.1:6393replicates 6e4cfc6b5918ed9b59e8e7c8765f1e37a86d3d1b
S: 15403c0a88c4ccf9ad2b67364588819621774085 127.0.0.1:6394replicates eabfa31d4e7cefa01a64ec5e67ddba219ad74035
S: 38ccc4d1ff1d7a3a31ed5ee805e5c479a6114588 127.0.0.1:6395replicates 6e4cfc6b5918ed9b59e8e7c8765f1e37a86d3d1b
S: 6f9550397b996b1d53eaeb98d344cef3945ac482 127.0.0.1:6396replicates 2ac5623a741d707d4e2319795386d7e13b2ef575
S: 78be26f6bdaa88e96e61ba145ba4236f59e9c5bc 127.0.0.1:6397replicates 2ac5623a741d707d4e2319795386d7e13b2ef575
S: b6429d56397229322f3144b59b3c7e79904fa349 127.0.0.1:6398replicates eabfa31d4e7cefa01a64ec5e67ddba219ad74035
Can I set the above configuration? (type 'yes' to accept): yes
>>> Nodes configuration updated
>>> Assign a different config epoch to each node
>>> Sending CLUSTER MEET messages to join the cluster
Waiting for the cluster to join
......
>>> Performing Cluster Check (using node 127.0.0.1:6390)
M: eabfa31d4e7cefa01a64ec5e67ddba219ad74035 127.0.0.1:6390slots:[0-5460] (5461 slots) master2 additional replica(s)
S: 78be26f6bdaa88e96e61ba145ba4236f59e9c5bc 127.0.0.1:6397slots: (0 slots) slavereplicates 2ac5623a741d707d4e2319795386d7e13b2ef575
M: 6e4cfc6b5918ed9b59e8e7c8765f1e37a86d3d1b 127.0.0.1:6392slots:[10923-16383] (5461 slots) master2 additional replica(s)
S: 6f9550397b996b1d53eaeb98d344cef3945ac482 127.0.0.1:6396slots: (0 slots) slavereplicates 2ac5623a741d707d4e2319795386d7e13b2ef575
S: 15403c0a88c4ccf9ad2b67364588819621774085 127.0.0.1:6394slots: (0 slots) slavereplicates eabfa31d4e7cefa01a64ec5e67ddba219ad74035
S: 38ccc4d1ff1d7a3a31ed5ee805e5c479a6114588 127.0.0.1:6395slots: (0 slots) slavereplicates 6e4cfc6b5918ed9b59e8e7c8765f1e37a86d3d1b
M: 2ac5623a741d707d4e2319795386d7e13b2ef575 127.0.0.1:6391slots:[5461-10922] (5462 slots) master2 additional replica(s)
S: b6429d56397229322f3144b59b3c7e79904fa349 127.0.0.1:6398slots: (0 slots) slavereplicates eabfa31d4e7cefa01a64ec5e67ddba219ad74035
S: 41fdf2a9bec000cb282bd9bc75a1aa7f33417889 127.0.0.1:6393slots: (0 slots) slavereplicates 6e4cfc6b5918ed9b59e8e7c8765f1e37a86d3d1b
[OK] All nodes agree about slots configuration.
>>> Check for open slots...
>>> Check slots coverage...
[OK] All 16384 slots covered.

可以看到:

  1. 127.0.0.1:6390 127.0.0.1:6391 127.0.0.1:6392 是三个主服务器
  2. 6394 和 6398 是6390的从服务器
  3. 6396 和 6397 是6391的从服务器
  4. 6393 和 6395 是6392的从服务器

7. 检查redis集群是否启动成功

ps -ef | grep redis

看到如下信息就说明集群启动成功了。

root 2418510 1 0 11:32 ? 00:00:00 ./redis-server 127.0.0.1:6390 [cluster]
root 2418609 1 0 11:32 ? 00:00:00 ./redis-server 127.0.0.1:6391 [cluster]
root 2418712 1 0 11:32 ? 00:00:00 ./redis-server 127.0.0.1:6392 [cluster]
root 2418815 1 0 11:32 ? 00:00:00 ./redis-server 127.0.0.1:6393 [cluster]
root 2419062 1 0 11:32 ? 00:00:00 ./redis-server 127.0.0.1:6394 [cluster]
root 2419278 1 0 11:33 ? 00:00:00 ./redis-server 127.0.0.1:6395 [cluster]
root 2419440 1 0 11:33 ? 00:00:00 ./redis-server 127.0.0.1:6396 [cluster]
root 2419575 1 0 11:33 ? 00:00:00 ./redis-server 127.0.0.1:6397 [cluster]
root 2419749 1 0 11:33 ? 00:00:00 ./redis-server 127.0.0.1:6398 [cluster]

8. 集群状态查看及数据测试

进入redis的服务器客户端,也必须要在src目录下进行。其中,-c 表示以集群的方式启动节点,-p 是节点的端口

./redis-cli -c -p 6390

输入cluster info 查看集群状态

输入cluster nodes 查看集群各个节点主从关系

9. 退出

quit

10、注意

集群是去中心化的,从任意一个从节点,都可以访问到主节点。
集群的读写都走主节点

推荐一个零声学院免费教程,个人觉得老师讲得不错,
分享给大家:[Linux,Nginx,ZeroMQ,MySQL,Redis,
fastdfs,MongoDB,ZK,流媒体,CDN,P2P,K8S,Docker,
TCP/IP,协程,DPDK等技术内容,点击立即学习:

单机模拟集群(三主两从)相关推荐

  1. 笔记系列之zookeeper在单机模拟集群安装

    文章目录 0.目的 1.下载zookeeper并解压 2. 编辑配置文件 3.目录创建 4.启动 5. 客户端连接 5.1 创建节点 5.1.1 创建顺序节点 5.1.2 创建临时节点 5.1.3 创 ...

  2. 【云原生-K8s-1】kubeadm搭建k8s集群(一主两从)完整教程及kubernetes简介

  3. SpringBoot整合Redis(单机/哨兵/集群)

    pom <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http:// ...

  4. 多台es服务器搭建elasticsearch集群,es单机伪集群搭建,在一台服务器上以三个不同的端口模拟三台主机完成es伪集群搭建,windows和Linux操作方法一致

    目录 (一)es单机伪集群搭建 一.准备三台elasticsearch服务器(复制三个es目录) 二.修改每台服务器的配置 1.修改es配置文件 2.配置注意 (二)多台服务器es集群搭建: 1 安装 ...

  5. RocketMq单机和集群搭建教程

    文章目录 1. rocketMQ单机版安装 2. rocketMQ集群方案 3. rocketMQ集群搭建 4. Dleger搭建rokcetMQ高可用集群 5. 启动rockerMQ控制台界面 6. ...

  6. 需要单机还是集群部署_5000W如何玩转Filecoin市场 部署最符合企业的集群模式

    5000W如何玩转Filecoin市场 部署最符合企业的集群模式 对 Filecoin集群的研究,其实一直以来都没有停止过. 如果我们将 Filecoin挖矿比作建高楼大厦.那么,集群就像打地基,地基 ...

  7. ttlsa教程系列之MySQL---MySQL/Galera集群-多主高可用性负载均衡

    为什么80%的码农都做不了架构师?>>>    ttlsa教程系列之MySQL ---- MySQL/Galera集群-多主高可用性负载均衡 Percona和MariaDB发布版本中 ...

  8. 【运维技术】Zookeeper单机以及集群搭建教程

    Zookeeper单机以及集群搭建教程 单机搭建 单机安装以及启动 安装zookeeper的前提是必须有java环境 # 选择目录进行下载安装 cd /app # 下载zk,可以去官方网站下载,自己上 ...

  9. Java后端架构开荒实战(二)——单机到集群

    Java后端架构开荒实战(二)--单机到集群 一.前言 上一篇文章做了一些准备工作,这边文章正式开始写代码. 在做好单实例架构之后,升级到集群是一件很容易的事情,所以把单机和集群放在这一篇一起说. 二 ...

最新文章

  1. 全长转录组之基因和转录本鉴定
  2. laravel实现数据分页
  3. 高性能计时器Timer的设计(时间轮和时间堆两种方式)
  4. matlab拟合双自变量双指数函数曲线,怎样用MATLAB拟合两个自变量的函数系数和指数?...
  5. Ghost 系统的过程
  6. Codeforces Round #294 (Div. 2)
  7. openssl不是内部或外部命令_OpenSSL新架构蓝图
  8. POJ——字符串插入
  9. 创造新世界--全国模拟(二)
  10. 移动端拖拽(模块化开发,触摸事件,webpack)
  11. js实现表格任意框选_[R] 在表格中插入图形 - formattable + htmlwidgets
  12. 你想要的宏基因组-微生物组知识全在这(2022.5)
  13. 汉字字符编码的科普笔记(GB2312汉字编码,Unicode与UTF-8,字符映射表,vim,文泉驿,正则表达式)
  14. 随机搜索RandomizedSearchCV原理
  15. mindmanager2018官方下载地址
  16. 【NKOJ-4234】三角分形
  17. Proteus仿真51单片机入门
  18. 叠片过滤器:叠片过滤器使用注意事项
  19. 业务复习-微信登录/第三方登录实现
  20. uc保存网页html,UC浏览器怎么保存网页

热门文章

  1. 关于hadoop集群常见的节点失联问题
  2. 2020年中国高端物业在管面积、市场规模发展现状及高端物业竞争格局分析[图]
  3. 新手引导功能的四种姿势
  4. 1926:【04NOIP普及组】不高兴的津津
  5. vim 文本编辑器 基本操作
  6. 通过开源项目SoundTouch实现类似Tom猫的变声功能
  7. 一本通1592【例 1】国王
  8. hdu1256-画8
  9. 护眼台灯显色指数是什么意思?led灯显色指数80够吗
  10. Android开发的参考书籍和参考网站