redis集群需要至少要三个master节点,我们这里搭建三个master节点,并且给每个master再搭建一个slave节点,总共6个redis节点,这里用一台机器(可以多台机器部署,修改一下ip地址就可以了)部署6个redis实例,三主三从,搭建集群的步骤如下:

第一步:在第一台机器的/usr/local/redis下创建文件夹redis-cluster,然后在其下面创建6个文件夹如下:

mkdir -p /usr/local/redis/redis-cluster

进入redis-cluster目录,创建6个文件夹

mkdir 7001 7002 7003 7004 7005 7006

第二步:把之前的redis.conf配置文件copy到7001下,修改如下内容:

cp /usr/local/redis/redis-5.0.5/redis.conf  /usr/local/redis/redis-cluster/7001

说明:redis-5.0.5为解压的源码包

修改如下配置:

 daemonize yes                           //redis后台运行
port 7001                    (分别对每个机器的端口号进行设置)
pidfile /var/run/redis_7001.pid   //pidfile文件对应7000,7002,7003...7006
cluster-enabled yes   //开启集群 把注释#去掉
cluster-config-file nodes-7001.conf   //集群的配置 配置文件首次启动自动生成 7001,7002,7003...7006
cluster-node-timeout 5000     //请求超时 设置5秒够了
appendonly yes //aof日志开启     有需要就开启,它会每次写操作都记录一条日志
bind 127.0.0.1                (去掉bind绑定访问ip信息)
protected-mode no               (关闭保护模式)
#dir /usr/local/redis/redis-cluster/7001/ (指定数据文件存放位置,必须要指定不同的目录位置,不然会丢失数据,若该配置 不存在,请自行添加)

如果要设置密码需要增加如下配置:

 requirepass xxx (设置redis访问密码)
masterauth xxx (设置集群节点间访问密码,跟上面一致)

第三步:把修改后的配置文件,copy到8002-8006,修改第2、3、5项里的端口号,可以用批量替换:

先复制:

 cp /usr/local/redis/redis-cluster/7001/redis.conf /usr/local/redis/redis-cluster/7002
cp /usr/local/redis/redis-cluster/7001/redis.conf /usr/local/redis/redis-cluster/7003
cp /usr/local/redis/redis-cluster/7001/redis.conf /usr/local/redis/redis-cluster/7004
cp /usr/local/redis/redis-cluster/7001/redis.conf /usr/local/redis/redis-cluster/7005
cp /usr/local/redis/redis-cluster/7001/redis.conf /usr/local/redis/redis-cluster/7006

然后分别到对应的目录下 把redis.conf  执行 vim

%s/源字符串/目的字符串/g 
:%s/7001/7002/g
:%s/7001/7003/g
:%s/7001/7004/g
:%s/7001/7005/g
:%s/7001/7006/g

把7001替换为7002

全局替换  和 目录保持一致, 比如目录是 7003则 替换为7003

第四步:分别启动6个redis实例,然后检查是否启动成功

 /usr/local/redis/bin/redis-server /usr/local/redis/redis-cluster/7001/redis.conf
/usr/local/redis/bin/redis-server /usr/local/redis/redis-cluster/7002/redis.conf
/usr/local/redis/bin/redis-server /usr/local/redis/redis-cluster/7003/redis.conf
/usr/local/redis/bin/redis-server /usr/local/redis/redis-cluster/7004/redis.conf
/usr/local/redis/bin/redis-server /usr/local/redis/redis-cluster/7005/redis.conf
/usr/local/redis/bin/redis-server /usr/local/redis/redis-cluster/7006/redis.conf

查看是否启动成功

使用ps-ef|grep redis 看下是否启动成功6个节点

ps -ef|grep redis

第五步:用redis-cli创建整个redis集群(redis5以前的版本集群是依靠ruby脚本redis-trib.rb实现)

执行命令

/usr/local/redis/bin/redis-cli --cluster create 192.168.83.102:7001 192.168.83.102:7002 192.168.83.102:7003 192.168.83.102:7004 192.168.83.102:7005 192.168.83.102:7006 --cluster-replicas 1

说明:redis 5.x的集群创建不需要ruby环境了 

    --cluster-replicas 1 命令的意思是创建master的时候同时创建一个slave

ip不要使用127.0.0.1,否则在使用java代码操作集群时会报错,会提示连接错乱。

会创建一个3master 3slaver的集群

输入yes

看到这说明集群都创建完了

第七步:验证集群:

1)连接任意一个客户端即可:

./redis-cli -c -a xxx -h 192.168.5.100 -p 7001

提示:-a访问服务端密码,-c表示集群模式,指定ip地址和端口号(若没有密码,-a xxx可省略)

执行此命令:

打开端口为7001的客户端 set一个值

./redis-cli -c -h 192.168.83.102 -p 7001

退出该节点,进入7002端口:

发现,7002端口也可以取值

2)进行验证: cluster info(查看集群信息)、cluster nodes(查看节点列表)

3)进行数据操作验证

4)关闭集群则需要逐个进行关闭,使用命令:(模板)

/usr/local/redis/src/redis-cli -a xxx -c -h 192.168.0.60 -p 8001 shutdown

执行如下命令:

/usr/local/redis/bin/redis-cli -c -p 7001 shutdown

说明7001已关闭

 提示:在搭建集群后,依然可以进行主从复制的操作,备份数据。

参考:

https://www.jianshu.com/p/8045b92fafb2

https://blog.csdn.net/qq_36514588/article/details/83856795

https://blog.csdn.net/woyixinyiyi/article/details/87967911

https://blog.csdn.net/hoopopo_wll/article/details/84925563

https://my.oschina.net/ruoli/blog/2252393 (redis5 提供了关闭集群的工具)

在这里非常感谢以上作者的劳动果实。

Redis5以上版本伪集群搭建(高可用集群模式)的更多相关文章

  1. Nginx 笔记(四)nginx 原理与优化参数配置 与 nginx 搭建高可用集群

    个人博客网:https://wushaopei.github.io/    (你想要这里多有) 一.nginx 原理与优化参数配置 ​ ​ master-workers 的机制的好处 首先,对于每个 ...

  2. CentOS 7下搭建高可用集群

    一 .安装集群软件 必须软件pcs,pacemaker,corosync,fence-agents-all,如果需要配置相关服务,也要安装对应的软件. 二.配置防火墙1.禁止防火墙和selinux# ...

  3. centos7 rabbitmq集群搭建+高可用

    环境 [root@node1 ~]# cat /etc/redhat-release CentOS Linux release (Core) [root@node1 ~]# uname -r -.el ...

  4. ActiveMQ+ZooKeeper搭建高可用集群

    一.说明 实际的应用中,一般为了应用的高可用性,都会搭建集群环境去处理.部署多台应用,这样,即使一台有问题,其他热备应用可以立马顶上,继续提供服务. ActiveMQ的集群部署,基于zookeeper ...

  5. Hadoop-HA 搭建高可用集群Hadoop Zookeeper

    Hadoop Zookeeper 搭建(一) 一.准备工作 VMWARE虚拟机 CentOS 7 系统 虚拟机1:master 虚拟机2:node1 虚拟机3:node2 时间同步 ntpdate n ...

  6. keepalive + nginx 搭建高可用集群动态网站

    环境准备: 两台节点部署keepalived,并且设为互为主从,实现高可用. 两台从节点部署nginx以及相关组件,作为真实服务器实现动态网站上线. 一.MASTER(BACKUP)节点下载keepa ...

  7. 基于 kubeadm 搭建高可用的kubernetes 1.18.2 (k8s)集群二 搭建高可用集群

    1. 部署keepalived - apiserver高可用(任选两个master节点) 1.1 安装keepalived # 在两个主节点上安装keepalived(一主一备) $ yum inst ...

  8. 使用kubeadm 搭建高可用集群 多master

    很快很简单 只要三分钟就能看完 三台服务器 k8s-vip  负载均衡器 k8s-master1 主节点一 k8s-master2 主节点一 官方文档 首先搭建负载均衡器 用的Haproxy yum ...

  9. 用kubeadm 搭建 高可用集群问题记录和复盘整个过程 - 通过journalctl -u kubelet.service命令来查看kubelet服务的日志

    1.根据  https://github.com/cookeem/kubeadm-ha/blob/master/README_CN.md  去搭建ha集群,遇到几个问题: runtime networ ...

  10. [图文][提供可行性脚本] CentOS 7 Fencing+Pacemaker三节点搭建高可用集群

    实验说明: 实验环境: 宿主机系统   :Fedora 28 WorkStation 虚拟机管理器 :Virt-Manager 1.5.1 虚拟机配置   :ha1  CentOS 7.2 1511 ...

随机推荐

  1. python3笔记十:python数据类型-Tuple元组

    一:学习内容 元组概念 元组创建.访问.删除 元组操作 元组方法 二:元组概念 1.本质:是一种有序集合 2.特点:与列表非常相似.一旦初始化就不能修改.使用小括号 三:元组创建 1.创建空元组 tu ...

  2. ES6 知识拓展

    1.冻结对象 Object.freeze(obj) 方法可以冻结一个对象,冻结指的是不能向这个对象添加新的属性,不能修改其已有属性的值,不能删除已有属性,以及不能修改该对象已有属性的可枚举性.可配置性 ...

  3. java特殊运算符

    按位运算符 定义:按位运算符是来操作整数基本数据类型中的单个“比特”(bit),即二进制位,位运算符会对两个参数中对应的位执行布尔代数运算,并最终生成一个结果. 分类:与(&).或(|).异或 ...

  4. 怎样用 Bash 编程:逻辑操作符和 shell 扩展

    学习逻辑操作符和 shell 扩展,本文是三篇 Bash 编程系列的第二篇. Bash 是一种强大的编程语言,完美契合命令行和 shell 脚本.本系列(三篇文章,基于我的 三集 Linux 自学课程 ...

  5. Oracle数据表之间的数据同步

    保证两个数据表结构相同,如不相同只能同步相同字段; 只是思路,具体请根据需求修改. declare cursor csrn_mon is select * from table2; row_mon c ...

  6. How to solve the error "Field service in com.xx.xxx.xxxx required a bean of type 'com.aa.bb.cc' that could not be found."

    When runung a SpringBoot demo, I  got a error as following: *************************** APPLICATION ...

  7. 1.1 DAL数据访问层

    分布式(Distributed)数据访问层(Data Access Layer),简称DAL,是利用MySQL Proxy.Memcached.集群等技术优点而构建的一个架构系统.主要目的是解决高并发 ...

  8. git使用遇到的问题

    1.我新建了一个django项目,然后又在git上新建了一个仓库,然后我在django的项目文件内,将git上的项目clone到这个文件内的时候 git clone https://gitee.com ...

  9. django 如何传递id 参数

    urls.py  注意这里的bid

  10. LeetCode.941-有效山形数组(Valid Mountain Array)

    这是悦乐书的第360次更新,第387篇原创 01 看题和准备 今天介绍的是LeetCode算法题中Easy级别的第222题(顺位题号是941).给定一个整数数组A,当且仅当它是一个有效的山形数组时返回 ...