1.redis 集群

redis集群是一个无中心的分布式redis存储架构,可以在多个节点之间进行数据共享,解决了redis高可用、可扩展等问题,redis集群提供了以下两个好处

1、将数据自动切分(split)到多个节点

2、当集群中的某一个节点故障时,redis还可以继续处理客户端的请求。

一个 Redis 集群包含 16384 个哈希槽(hash slot),数据库中的每个数据都属于这16384个哈希槽中的一个。集群使用公式 CRC16(key) % 16384 来计算键 key 属于哪个槽。集群中的每一个节点负责处理一部分哈希槽。

2.集群中的主从复制

集群中的每个节点都有1个至N个复制品,其中一个为主节点,其余的为从节点,如果主节点下线了,集群就会把这个主节点的一个从节点设置为新的主节点,继续工作。这样集群就不会因为一个主节点的下线而无法正常工作

3.搭建redis集群

由于最小的redis集群需要3个主节点,一台机器可运行多个redis实例,我搭建时使用两台机器,6个redis实例,其中三个主节点,三个从节点作为备份,网上很多使用单台服务器开6个端口,操作差不多,只是配置基本相对简单点,多台服务器更接近生产环境

redis 6个节点的ip和端口对应关系

server1:

192.168.1.198:7000

192.168.1.198:7001

192.168.1.198:7002

server2:

192.168.1.199:7003

192.168.1.199:7004

192.168.1.199:7005

[1]、安装需要的依赖包:需要gcc环境,如果没有执行命令安装gcc

[root@localhost ~]#yum install gcc-c++

[2]、两台机器分别下载redis并安装

[root@localhost src]# cd /usr/local/

[root@localhost local]# wget http://download.redis.io/releases/redis-3.0.6.tar.gz

[root@localhost local]# tar xzf redis-3.0.6.tar.gz

[root@localhost local]# cd redis-3.0.6

[root@localhost redis-3.0.6]# make

[3]、创建集群需要的目录

server1执行:

mkdir -p /usr/local/cluster

cd /usr/local/cluster

mkdir 7000

mkdir 7001

mkdir 7002

server2执行:

mkdir -p /usr/local/cluster

cd /usr/local/cluster

mkdir 7003

mkdir 7004

mkdir 7005

[4]、修改配置文件redis.conf

cp /usr/local/redis-3.0.6/redis.conf  /usr/local/cluster

cd /usr/local/cluster

vi redis.conf

##注意每个实例的端口号不同

port 7000

daemonize yes

cluster-enabled yes

cluster-config-file nodes.conf

cluster-node-timeout 5000

appendonly yes##修改完redis.conf配置文件中的这些配置项之后把这个配置文件分别拷贝到7000/7001/7002/7003/7004/7005节点目录下

server1执行

cp /usr/local/cluster/redis.conf /usr/local/cluster/7000

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

cp /usr/local/cluster/redis.conf /usr/local/cluster/7002

server2执行:

cp /usr/local/cluster/redis.conf /usr/local/cluster/7003

cp /usr/local/cluster/redis.conf /usr/local/cluster/7004

cp /usr/local/cluster/redis.conf /usr/local/cluster/7005

##注意:拷贝完成之后要分别修改7001/7002/7003/7004/7005目录下面redis.conf文件中的port参数,分别改为对应的文件夹的名称

[5]、分别启动这6个redis实例,并查看是否成功:ps -ef|grep redis

server1执行:

[root@localhost cluster]# cd /usr/local/cluster/7000

[root@localhost 7000]# redis-server redis.conf

[root@localhost 7000]# cd /usr/local/cluster/7001

[root@localhost 7001]# redis-server redis.conf

[root@localhost 7001]# cd /usr/local/cluster/7002

[root@localhost 7002]# redis-server redis.conf

[root@localhost 7002]# ps -ef|grep redis

root      2741    1  0 09:39 ?        00:00:00 redis-server *:7000 [cluster]

root      2747    1  0 09:40 ?        00:00:00 redis-server *:7001 [cluster]

root      2751    1  0 09:40 ?        00:00:00 redis-server *:7002 [cluster]

root      2755  2687  0 09:40 pts/0    00:00:00 grep redis

server2执行:

[root@localhost cluster]# cd /usr/local/cluster/7003

[root@localhost 7003]# redis-server redis.conf

[root@localhost 7003]# cd /usr/local/cluster/7004

[root@localhost 7004]# redis-server redis.conf

[root@localhost 7004]# cd /usr/local/cluster/7005

[root@localhost 7005]# redis-server redis.conf

[root@localhost 7005]# ps -ef|grep redis

root      1619    1  0 09:40 ?        00:00:00 redis-server *:7003 [cluster]

root      1623    1  0 09:40 ?        00:00:00 redis-server *:7004 [cluster]

root      1627    1  0 09:41 ?        00:00:00 redis-server *:7005 [cluster]

root      1631  1563  0 09:41 pts/0    00:00:00 grep redis

[6]、执行redis的创建集群命令创建集群(注意ip地址和端口号)

[root@localhost cluster]# cd /usr/local/redis-3.0.6/src

[root@localhost src]# ./redis-trib.rb  create --replicas 1 192.168.1.198:7000 192.168.1.198:7001 192.168.1.198:7002 192.168.1.199:7003 192.168.1.199:7004 192.168.1.199:7005

(1)注意: 到这一步因为前面第1步装了依赖包,未提示ruby和rubygems的错误,但还是会报错,提示不能加载redis,是因为缺少redis和ruby的接口,使用gem 安装

  错误内容:

   /usr/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:31:in `gem_original_require': no such file to load -- redis (LoadError)

from /usr/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:31:in `require'

from ./redis-trib.rb:25

                解决:gem install redis

    (2) 再次执行第6步的命令,正常执行,提示是否允许修改配置文件,输入yes,然后整个集群配置完成!

      [root@localhost src]# ./redis-trib.rb  create --replicas 1 192.168.1.198:7000 192.168.1.198:7001 192.168.1.198:7002 192.168.1.199:7003 192.168.1.199:7004 192.168.1.199:7005

    [7]、测试集群

      server1上登录redis客户端并执行

[root@localhost src]# redis-cli -c -p 7000

127.0.0.1:7000> get key

-> Redirected to slot [12539] located at 192.168.1.199:7004

"val"

192.168.1.199:7004> set name test

-> Redirected to slot [5798] located at 192.168.1.198:7000

OK

192.168.1.198:7000> set adress shanghai

-> Redirected to slot [1562] located at 192.168.1.199:7003

OK

192.168.1.199:7003>server2上登录redis客户端并执行

[root@localhost src]# redis-cli -c -p 7003

127.0.0.1:7003> set key val

-> Redirected to slot [12539] located at 192.168.1.199:7004

OK

192.168.1.199:7004> get keyv

"val"

192.168.1.199:7004> set key2 val2

-> Redirected to slot [4998] located at 192.168.1.199:7003

OK

192.168.1.199:7003> get key2

"val2"

192.168.1.199:7003>

从中可以发现存时是分布式存储,取时也是从集群中取,测试成功

[8].redis cluster 集群 重启与关闭

关闭:让所有节点都关闭,只能关闭进程了# pkill -9 redis

启动:# redis-trib.rb create --replicas 1 xxx.xxx.xxx.xxx:6379 保错:

[ERR] Node 192.168.10.219:6379 is not empty. Either the node already knows other nodes (check with CLUSTER NODES) or contains some key in database 0.

    第一次启动集群时,/etc/redis下只有redis.conf,所以我想把除了redis.conf外的其他文件全部删除,就可以启动了, 但是此时的数据全部丢失了!!!

  [9].常见错误

Redis: ERR unknown command 'CLUSTER'

启动tomcat 服务时,ERR unknown command 'CLUSTER'  是因为redis server 服务集群没有搭建成功

---恢复内容结束---

redis 集群搭建的更多相关文章

  1. 25.redis集群搭建笔记

    ###Redis集群### 0.准备 软件: redis-3.0.0.gem redis-3.0.0.tar.gz#源码   1.安装ruby环境 redis基于ruby槽位计算,hash算法技术,k ...

  2. Redis 集群搭建详细指南

    先有鸡还是先有蛋? 最近有朋友问了一个问题,说毕业后去大城市还是小城市?去大公司还是小公司?我的回答都是大城市!大公司! 为什么这么说呢,你想一下,无论女孩男孩找朋友都喜欢找个子高胸大的.同样的道理嘛 ...

  3. 二、redis集群搭建

    redis集群搭建 redis3.0后支持集群.集群中应该至少有三个节点,每个节点有一备份节点.需要6台服务器.搭建伪分布式,需要6个redis实例.搭建集群的步骤: 一.安装单机版redis 第一步 ...

  4. redis集群搭建及注意事项

    上一篇:redis的安装及注意事项 这里,在一个Linux虚拟机上搭建6个节点的redis伪集群,思路很简单,一台虚拟机上开启6个redis实例,每个redis实例有自己的端口.这样的话,相当于模拟出 ...

  5. Linux Redis集群搭建与集群客户端实现(Python)

    硬件环境 本文适用的硬件环境如下 Linux版本:CentOS release 6.7 (Final) Redis版本: Redis已经成功安装,安装路径为/home/idata/yangfan/lo ...

  6. [转载] Redis集群搭建最佳实践

    转载自http://blog.csdn.net/sweetvvck/article/details/38315149?utm_source=tuicool 要搭建Redis集群,首先得考虑下面的几个问 ...

  7. Linux Redis集群搭建与集群客户端实现

    硬件环境 本文适用的硬件环境如下 Linux版本:CentOS release 6.7 (Final) Redis版本: Redis已经成功安装,安装路径为/home/idata/yangfan/lo ...

  8. Redis集群搭建-韩国庆

    认真一步一步搭建下来,就可以成功.... Redis-cluster集群架构讲解 redis集群专业名词称之为Redis-cluster,redis集群是从3.0版本以后才有的概念,也就是说在3.0之 ...

  9. redis集群搭建及设置账户(转)

    Redis集群搭建以及为集群设置密码 介绍安装环境与版本 用两台虚拟机模拟6个节点,一台机器3个节点,创建出3 master.3 salve 环境. redis 采用 redis-3.2.4 版本. ...

  10. Docker Swarm redis 集群搭建

    Docker Swarm redis 集群搭建 环境1: 系统:Linux Centos 7.4 x64 内核:Linux docker 3.10.0-693.2.2.el7.x86_64 Docke ...

随机推荐

  1. WCF双工通信单工通信

    1.单工模式 单向通信,指通信只有一个方向进行,即从客户端流向服务,服务不会发送响应,而客户端也不会期望会有响应.这种情况下,客户端发送消息,然后继续执行 运行后报错: 2.双工模式 双工模式的特点是 ...

  2. 简介jsp

    1.JSP简介 Java动态网页技术标准(Java Server Pages)是基于Servlet技术以及整个Java体系的Web开发技术是用于动态生成HTML文档的Web页面模板JSP是为了改进Se ...

  3. 「LOJ2000~2023」各省省选题选做

    「LOJ2000~2023」各省省选题选做 「SDOI2017」数字表格 莫比乌斯反演. 「SDOI2017」树点涂色 咕咕咕. 「SDOI2017」序列计数 多项式快速幂. 我们将超过 \(p\) ...

  4. js内存空间的那点事

    由于js具有自动垃圾回收机制,导致接触js后一直没去关注js的内存分配及变量回收等原理,只是懵懂的了解用变量标记法(null)可以手动的去清除或是回收:是时候弥补这个大坑了... 垃圾回收两种方法 一 ...

  5. 腾讯Alloy团队代码规范

    概述 我个人很看重代码规范,因为代码是写给别人看的,按规范写别人才更容易理解.之前苦于没有代码规范的资料,现在在github上面看到了腾讯Alloy团队的代码规范,于是学习了一下,并记录下我自己还没怎 ...

  6. vscode 编辑器常用快捷键

    最近,打算换个编辑器,而 vscode 是一个不错的选择.大部分快捷键和 sublime 还是很像的,但有些也不一样.特此整理一份小笔记. 参考: vscode: Visual Studio Code ...

  7. 常用的评价指标:accuracy、precision、recall、F1-score、ROC-AUC、PR-AUC

  8. Django--CSRF 跨站请求伪造

    一.简介 django为用户实现防止跨站请求伪造的功能,通过中间件 django.middleware.csrf.CsrfViewMiddleware 来完成.而对于django中设置防跨站请求伪造功 ...

  9. GNum试用体验

    只需在GNum上注册一个用户名,填上自己的电话号码,它就会自动生成一个URL,你的朋友(可以不注册GNum)在浏览器上进入这个 URL,就可以给你的手机打电话,目前可以免费通话200分钟,而且如果你邀 ...

  10. Mysql-8 配置主从复制(基于二进制日志)

    目录 1. 实验环境 2. 安装MySQL8 3. 配置主从复制 4. 配置复制用户 5. 数据的同步 6. 配置从节点 7. 测试主从复制 1. 实验环境 System IP Host CentOS ...