Redis5以上版本伪集群搭建(高可用集群模式)
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以上版本伪集群搭建(高可用集群模式)的更多相关文章
- Nginx 笔记(四)nginx 原理与优化参数配置 与 nginx 搭建高可用集群
个人博客网:https://wushaopei.github.io/ (你想要这里多有) 一.nginx 原理与优化参数配置 master-workers 的机制的好处 首先,对于每个 ...
- CentOS 7下搭建高可用集群
一 .安装集群软件 必须软件pcs,pacemaker,corosync,fence-agents-all,如果需要配置相关服务,也要安装对应的软件. 二.配置防火墙1.禁止防火墙和selinux# ...
- centos7 rabbitmq集群搭建+高可用
环境 [root@node1 ~]# cat /etc/redhat-release CentOS Linux release (Core) [root@node1 ~]# uname -r -.el ...
- ActiveMQ+ZooKeeper搭建高可用集群
一.说明 实际的应用中,一般为了应用的高可用性,都会搭建集群环境去处理.部署多台应用,这样,即使一台有问题,其他热备应用可以立马顶上,继续提供服务. ActiveMQ的集群部署,基于zookeeper ...
- Hadoop-HA 搭建高可用集群Hadoop Zookeeper
Hadoop Zookeeper 搭建(一) 一.准备工作 VMWARE虚拟机 CentOS 7 系统 虚拟机1:master 虚拟机2:node1 虚拟机3:node2 时间同步 ntpdate n ...
- keepalive + nginx 搭建高可用集群动态网站
环境准备: 两台节点部署keepalived,并且设为互为主从,实现高可用. 两台从节点部署nginx以及相关组件,作为真实服务器实现动态网站上线. 一.MASTER(BACKUP)节点下载keepa ...
- 基于 kubeadm 搭建高可用的kubernetes 1.18.2 (k8s)集群二 搭建高可用集群
1. 部署keepalived - apiserver高可用(任选两个master节点) 1.1 安装keepalived # 在两个主节点上安装keepalived(一主一备) $ yum inst ...
- 使用kubeadm 搭建高可用集群 多master
很快很简单 只要三分钟就能看完 三台服务器 k8s-vip 负载均衡器 k8s-master1 主节点一 k8s-master2 主节点一 官方文档 首先搭建负载均衡器 用的Haproxy yum ...
- 用kubeadm 搭建 高可用集群问题记录和复盘整个过程 - 通过journalctl -u kubelet.service命令来查看kubelet服务的日志
1.根据 https://github.com/cookeem/kubeadm-ha/blob/master/README_CN.md 去搭建ha集群,遇到几个问题: runtime networ ...
- [图文][提供可行性脚本] CentOS 7 Fencing+Pacemaker三节点搭建高可用集群
实验说明: 实验环境: 宿主机系统 :Fedora 28 WorkStation 虚拟机管理器 :Virt-Manager 1.5.1 虚拟机配置 :ha1 CentOS 7.2 1511 ...
随机推荐
- Vue.js---配置开发环境
首先安装Node.js我就不介绍了! win+r , 输入cmd,回车: 1.安装淘宝镜像 在国内直接使用npm的官方镜像是比较慢的,这里我们采用的是淘宝镜像 npm install -g cnpm ...
- leetcode-easy-string-14 Longest Common Prefix
mycode 91.59% class Solution: def longestCommonPrefix(self, strs: List[str]) -> str: if not str ...
- Android 中布局的优化措施都有哪些?
1.尽可能减少布局的嵌套层级可以使用 sdk 提供的 hierarchyviewer 工具分析视图树,帮助我们发现没有用到的布局.2.不用设置不必要的背景,避免过度绘制比如父控件设置了背景色,子控件完 ...
- 开源控件slidingmenu的使用
在github.com网站搜索slidingmenu后https://github.com/jfeinstein10/SlidingMenu 下载demo,导入library到你的项目中,添加到你项目 ...
- WireShark简单使用以及TCP三次握手
最近一直在用C#编写服务器端的程序,苦于一直找不到合适的方法来测试网络程序,这篇文章很好的解释了网络程序的底层实现. WireShark是最好的学习网络协议最好的工具. wireshark介绍 wir ...
- Python文件重命名代码
import os def re_name(path): for file in os.listdir(path): file_path = os.path.join(path, file) # 判断 ...
- Session对象的生命周期(面试题/笔试题)
创建:第一次执行request.getSession()时创建 销毁: 1)服务器(非正常)关闭时 2)session过期/失效(默认30分钟) 问题:时间的起算点 从何时开始计算30分钟? 从不操作 ...
- java:Springmvc框架2(Ajax,Json,Interceptor,Upload,Exception)
1.springmvcAjax: springmvc.xml: <?xml version="1.0" encoding="UTF-8"?> < ...
- java:反射(Hibernate的雏形)
* java.lang.Class类:Class类的实例表示正在运行的 Java 应用程序中的类和接口,没有构造方法. java反射机制是在运行状态中,对于任何一个类,都能够知道这个类的所有属性和方法 ...
- vue调用组件,组件回调给data中的数组赋值,报错Invalid prop type check failed for prop value. Expecte
报错信息: 代码信息:调用一个tree组件,选择一些信息 <componentsTree ref="typeTreeComponent" @treeCheck="t ...