Redis5.0.8 Cluster集群部署
一.Redis Cluster简介
Redis Cluster集群是一种去中心化的高可用服务,其内置的sentinel功能可以提供高可用性:当集群中少数master不可用时,该集群仍可用。
Cluster集群通过哈希槽算法来分片存储数据。集群中有16384(0-16383)个哈希槽,通过CRC16算法对要存取的变量得出值,%16384 得到的余数存入相应的槽范围的主库,或从中取出。
客户端访问集群中的任意一台机器,都可以存取数据;访问集群中的从库时,数据存取时会连接主库再执行操作。从库会自动同步主库的数据。
二.部署
redis5版本以上的cluster集群不需要依赖ruby.生产环境中一个redis cluster集群最少需要6台机器(3主3从,3主6从,...),此次为测试环境,故选用三台机器,每台机器上启动两个服务。
环境说明:
系统:centos7.6
redis版本:5.0.8
服务器&&IP:
172.31.228.200:6379
172.31.228.200:6380
172.31.228.201:6379
172.31.228.201:6380
172.31.228.199:6379
172.31.228.199:6380
1.运行安装脚本(以172.31.228.200:6379为例,此为单机版安装脚本):
centos_version=7
password=5gUfpN1wgQr5t$e^nutaxKQp
private_ip=`ip a | grep eth0 | grep inet | awk '{print $2}' |awk -F / '{print $1}'`
config_file=/etc/redis.conf
port=6379
yum -y install gcc
yum install -y [http://rpms.famillecollet.com/enterprise/remi-release-${centos_version}.rpm](http://rpms.famillecollet.com/enterprise/remi-release-${centos_version}.rpm)
yum --enablerepo=remi -y install redis #安装最新版本的redis
sed -i -r 69s/bind (.*)+/bind ${private_ip}/ ${config_file} #
sed -i 92s/6379/${port}/ ${config_file} #port
sed -i \'136s/no/yes/\' ${config_file} #daemonize
sed -i \'147s/no/systemd/\' ${config_file} #supervised 设置为systemd
sed -i 158s/6379/${port}/ ${config_file}
sed -i \'699s/no/yes/\' ${config_file} #appendonly
sed -i -r \'507s/^#(.*)+/\\1/\' ${config_file}
sed -i 507s/foobared/${password}/ ${config_file} #requirepass
echo
rename-command CONFIG redis${port}config #重命名高危命令
rename-command SHUTDOWN redis${port}shutdown #重命名高危命令
rename-command FLUSHDB \'\' #禁用高危命令
rename-command FLUSHALL \'\' #禁用高危命令
>> ${config_file}
chmod 600 ${config_file} #修改配置文件的权限
sed -i \'12a Restart=always \' /usr/lib/systemd/system/redis.service #设置redis服务自动重启
sed -i \'13a StartLimitIntervalSec=0\' /usr/lib/systemd/system/redis.service #设置服务启动间隔时间为0
systemctl daemon-reload #重新加载systemd
systemctl start redis.service #启动服务
systemctl enable redis.service #设置开机自启
2.然后修改配置文件/etc/redis.conf
cluster-enabled yes #去掉注释
cluster-config-file nodes-6379.conf #去掉注释
cluster-node-timeout 15000 #去掉注释
masterauth 5gUfpN1wgQr5t$e^nutaxKQp #开启集群间密码验证
3.重启服务:
systemctl restart reids.service
其他五个节点按上述3个步骤进行(注意修改port,dir(创建数据库目录并修改权限),redis.conf名,pidfile, logfile, redis.service文件名及其内配置的启动命令)
接下来可在任意一个节点配置集群,集群设置方法有两种,
方法1:先指定主库,再添加从库到对应主库
三.创建主库
redis-cli --cluster create 172.31.228.200:6379 172.31.228.201:6379 172.31.228.199:6379 -a 5gUfpN1wgQr5t$e^nutaxKQp --cluster-yes
配置从节点
]# redis-cli --cluster add-node 172.31.228.200:6380 172.31.228.200:6379 --cluster-slave --cluster-master-id 19c5b8deaf079ebb9832b6eefefa74c0c05a18b2 -a \'5gUfpN1wgQr5t$e^nutaxKQp\'
]# redis-cli --cluster add-node 172.31.228.201:6380 172.31.228.201:6379 --cluster-slave --cluster-master-id 011326dd0ef2888e3ee8ed5590e5ee600dc96462 -a \'5gUfpN1wgQr5t$e^nutaxKQp\'
]# redis-cli --cluster add-node 172.31.228.199:6380 172.31.228.199:6379 --cluster-slave --cluster-master-id bfb1b52df455e9bbadeda19c16512f7378fd5e45 -a \'5gUfpN1wgQr5t$e^nutaxKQp\'
方法2:让集群自动分配主从
redis-cli --cluster create 172.31.228.200:6379 172.31.228.200:6380 172.31.228.201:6379 172.31.228.201:6380 172.31.228.199:6379 172.31.228.199:6380 --cluster-replicas 1 -a \'5gUfpN1wgQr5t$e^nutaxKQp\'
以上图片表示集群创建成功。
可登录集群查看节点信息
Note:以上slots经过reshard(具体操作如下:)
redis-cli --cluster reshard localhost:6379 --cluster-from d878b9824c97eab686a57403bbed3270b7cd98f9 --cluster-to 578ffc16a9780675d39e1ba9d48e91743a4a01cb --cluster-slots 100 -a '5gUfpN1wgQr5t$e^nutaxKQp'
测试master不可用时,slave晋升为新master,集群仍可用,旧master重启后会自动变成slave.(若集群中某个master节点和其对应的slave节点同时不可用时,则集群不可用;或者n/2+1个master不可用时,则集群不可用)。
Redis5.0.8 Cluster集群部署的更多相关文章
- centos6下redis cluster集群部署过程
一般来说,redis主从和mysql主从目的差不多,但redis主从配置很简单,主要在从节点配置文件指定主节点ip和端口,比如:slaveof 192.168.10.10 6379,然后启动主从,主从 ...
- Centos 7 下 Mysql 5.7 Galera Cluster 集群部署
一.介绍 传统架构的使用,一直被人们所诟病,因为MySQL的主从模式,天生的不能完全保证数据一致,很多大公司会花很大人力物力去解决这个问题,而效果却一般,可以说,只能是通过牺牲性能,来获得数据一致性 ...
- MySQL Cluster 集群部署
前言 此篇博客用以介绍 MySQL Cluster 集群部署方法 一.节点规划 序号 IP地址 节点名称 1 172.16.1.201 mysql-manage 2 172.16.1.202 mysq ...
- 2、Redis 底层原理:Cluster 集群部署与详解
Redis 简介 Redis 提供数据缓存服务,内部数据都存在内存中,所以访问速度非常快. 早期,Redis 单应用服务亦能满足企业的需求.之后,业务量的上升,单机的读写能力满足不了业务的需求,技术上 ...
- k8s1.9.0安装--完整集群部署
三.完整集群部署 - kubernetes-with-ca 1. 理解认证授权 1.1 为什么要认证 想理解认证,我们得从认证解决什么问题.防止什么问题的发生入手.防止什么问题呢?是防止有人入侵你的集 ...
- k8s1.9.0安装--基础集群部署
二.基础集群部署 - kubernetes-simple 1. 部署ETCD(主节点) 1.1 简介 kubernetes需要存储很多东西,像它本身的节点信息,组件信息,还有通过kubernetes运 ...
- Redis cluster 集群部署和配置
目录 一.集群简介 cluster介绍 cluster原理 cluster特点 应用场景 二.集群部署 环境介绍 节点部署 启动集群 三.集群测试 一.集群简介 cluster介绍 redis clu ...
- redis cluster集群部署
上一篇http://www.cnblogs.com/qinyujie/p/9029153.html,主要讲解了 redis cluster 集群架构 的优势.redis cluster 和 redis ...
- docker镜像创建redis5.0.3容器集群
拉取redis5.0.3镜像 # docker pull daocloud.io/library/redis:5.0.3 [root@localhost ~]# docker pull daoclou ...
随机推荐
- 高德地图 JS API (jsp + miniui(子页面数据返回父页面并设值) + 单个点标记 + 点标记经纬度 + 回显 + 限制地图显示范围+搜索)
-*- 父页面js function mapFocus(){ //console.log("-*-"); var longitude = mini.get("jd&qu ...
- 手把手教你学Dapr - 9. 可观测性
目录 手把手教你学Dapr - 1. .Net开发者的大时代 手把手教你学Dapr - 2. 必须知道的概念 手把手教你学Dapr - 3. 使用Dapr运行第一个.Net程序 手把手教你学Dapr ...
- Mplus数据分析:随机截距交叉之后的做法和如何加协变量,写给粉丝
记得之前有写过如何用R做随机截距交叉滞后,有些粉丝完全是R小白,还是希望我用mplus做,今天就给大家写写如何用mplus做随机截距交叉滞后. 做之前我们需要知道一些Mplus的默认的设定: obse ...
- JVM 是用什么语言写的?
JAVA中就虚拟机是其它语言开发的,用的是C语言+汇编语言 基于此之上就是JAVA本身了 虚拟机只起到解析作用另外,JAVA并不比C语言慢,说JAVA慢一般是九十年代那时候的JAVA, 而现在 在 ...
- mabatis的sql标签
定义:mapper.xml映射文件中定义了操作数据库的sql,并且提供了各种标签方法实现动态拼接sql.每个sql是一个statement,映射文件是mybatis的核心. 一,内容标签 1.Name ...
- 8.4 k8s实现Nginx+Php+WordPress+MySQL实现完全容器化的web站点案例
1.制作Nginx镜像 1.1 使用nginx:1.21.1官方镜像 # 下载官方镜像 docker pull nginx:1.21.1 # 打本地harbor的tag docker tag 192. ...
- 为了拿捏 Redis 数据结构,我画了 40 张图(完整版)
大家好,我是小林. Redis 为什么那么快? 除了它是内存数据库,使得所有的操作都在内存上进行之外,还有一个重要因素,它实现的数据结构,使得我们对数据进行增删查改操作时,Redis 能高效的处理. ...
- Codeforces Round #691 (Div. 2) 题解
A 不多说了吧,直接扫一遍求出 \(r_i>b_i\) 的个数和 \(r_i<b_i\) 的个数 B 稍微打个表找个规律就可以发现,当 \(n\) 为奇数的时候,答案为 \(\dfrac{ ...
- 【转】NG:垂枝桦基因组图谱构建(2+3组装)及重测序分析
转自希望组公众号.学习二代+三代组装策略的流程 垂枝桦(Betula pendula)是一种速生乔木,能在短短一年时间内开花,木质坚实,可做细工.家具等,经济价值极高.近日,芬兰研究人员对垂枝桦自交系 ...
- 植物GO注释
本文主要是对没有GO term库的植物进行注释. 1.选用AgriGo 进行注释,在agriGO中点击species后,查看与你目标物种相近的物种作为库 2.比如我以甜菜为例 为了找到和GO term ...