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. 第十三周Java课程学习总结

    学习总结: 记事本界面: 监听适配器. 可以通过Window Adapter来实现监听. void windowActivated(WindowEvent e) 激活窗口时调用. void windo ...

  2. legend3---lavarel常用artisan命令操作

    legend3---lavarel常用artisan命令操作 一.总结 一句话总结: 帮助:php artisan可以调出帮助命令 1.npm安装后盾js? npm install hdjs node ...

  3. maven仓库,snapshot快照仓库和release发布仓库的区别

    首先看下snapshot类型 建立一个maven-privider项目,版本定义为1.1-SNAPSHOT 创建一个privider类,写一个hello()方法,并推送maven私有仓库 然后再建立一 ...

  4. leetcode 121买卖股票的最佳时机I

    从下标1开始,维护两个变量,一个是0~i-1中的最低价格low,一个是当前的最高利润res;先更新最高利润,在更新最低价格:应用了贪心算法的基本思想,总是选择买入价格最低的股票,代码如下: 具有最优子 ...

  5. 浏览器端-W3School-JavaScript:Location 对象

    ylbtech-浏览器端-W3School-JavaScript:Location 对象 1.返回顶部 1. Location 对象 Location 对象 Location 对象包含有关当前 URL ...

  6. ControlTemplate in WPF ——ScrollBar

    <ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" x ...

  7. 阶段3 2.Spring_04.Spring的常用注解_7 改变作用范围以及和生命周期相关的注解

    Scope 改成多例 PreDestory和PostConstruct PreDestory和PostConstruct这两个注解了解即可 增加两个方法,分别用注解 没有执行销毁方法. 如果你一个子类 ...

  8. MySQL 创建函数报错 This function has none of DETERMINISTIC, NO SQL, or READS SQL DATA in its declaration and binary logging is enabled (you *might* want to use the less safe log_bin_trust_function_creators

    问题描述 通过Navicat客户端,创建MySQL函数(根据的当前节点查询其左右叶子节点)时报错,报错信息如下: This function has none of DETERMINISTIC, NO ...

  9. Web02_HTML&CSS

    HTML 表单标签属性介绍 <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> ...

  10. HtML5与CSS3基础

    HTML标签 1.<a></a> 超链接标签 属性 href:跳转页面的连接 name:实现定锚功能,跳转同一页面不同位置(例返回顶部) target: (self, pare ...