`

redis cluster:缓存数据库Redis集群搭建

 
阅读更多
http://www.redis.cn/topics/cluster-tutorial.html
直接读写在内存,不用磁盘去读,意大利一家公司C语言写的
并且可以持久化 rdb aof

redis集群
string key-value hashmap sortset list
16384哈希槽 从0到16384
马槽 数据槽 哈希值来将我们这个数据槽编号
哈希槽编号->crc16算法 来确定请求哪个节点
内部是怎么请求 派发到我们集群节点上的:
crc16他会根据每一个客户端的key算出一个结果,对16384取余
之后得到的一个值看它落到哪一个区间,然后确定这个请求有哪个节点去处理。

当我们集群搭建好之后,每个节点它的哈希编号分配是怎样:
均匀分布到每个节点

一.安装
1.1 CentOS 6.5 下安装
Redis 3.0.6或稳定版本redis-stable
[root@centos64 ~]# cd /usr/local/
[root@centos64 local]# wget http://download.redis.io/redis-stable.tar.gz
[root@centos64 local]# tar xvzf redis-stable.tar.gz
[root@centos64 local]# cd redis-stable
[root@centos64 redis-stable]# make

make成功之后,会在src目录下多出一些文件,如下



可手动拷贝redis-server、redis-cli、redis-check-aof、redis-check-dump等至/usr/local/bin目录下,也可执行make install,此处执行make install。
运行后可查看,/usr/local/bin下已有这些文件。

redis-server:Redis服务器端启动程序
redis-cli:Redis客户端操作工具。也可以用telnet根据其纯文本协议来操作
redis-benchmark:Redis性能测试工具
redis-check-aof:数据修复工具
redis-check-dump:检查导出工具
注意:若此时执行redis-server –v (查看版本命令),若提示redis-server command not found,则需要将/usr/local/bin目录加到环境变量,如何添加,此处不做详细介绍,可查看修改/etc/profile,(查看环境变量命令:echo $PATH)
正常如下:
[root@centos64 bin]# redis-server -v
Redis server v=3.0.6 sha=00000000:0 malloc=jemalloc-3.6.0 bits=64 build=c9601d54be51bdc7

至此,redis安装完成,接着配置。
参考:http://blog.csdn.net/ludonqin/article/details/47211109

1.2 然后新建目录,存放配置文件
mkdir /etc/redis
mkdir /var/redis
/var/redis运行mkdir data log run
mkdir /var/redis/log
mkdir /var/redis/run
mkdir /var/redis/data

在redis解压根目录中找到配置文件模板,复制到如下位置。
cp redis.conf  /etc/redis/redis.conf

1.3 通过vim命令修改redis.conf文件:
1.修改端口(默认6379)
2.daemonize yes
改成 yes。
# 当redis作为守护进程运行的时候,它会写一个 pid 到 /var/run/redis.pid 文件里面。
3.修改pid目录为新建目录:
pidfile /var/redis/run/redis.pid
4.修改log存储目录为新建目录:
logfile /var/redis/log/redis.log
5.修改dump目录为新建目录:
dir /var/redis/data


1.4 最后运行redis:
$ redis-server /etc/redis/redis.conf

查看redis状态:
ps -ef|grep redis

二.在阿里云做集群

集群管理器将哈希曹连续分布到不同redis中。
crc16算法,然后对我们的key进行去余16384个哈希曹点进行取模->请求散列
1.redis主从 m/s  port: 1000/1001  solots:0-5460
2.redis主从 m/s  port: 2000/2001  solots:5461-10922
3.redis主从 m/s  port: 3000/3001  solots:10923-16383
哈希槽点 从机没有 集群站点槽点自动均为分配
主机来响应客户请求,从机同步我们主机数据备份,读写分离降低主机业务消耗。

2.1 改redis.conf文件里配置


[root@centos64 redis]# cd redis-3.0.6/
[root@centos64 redis-3.0.6]# cp redis.conf /usr/local/redis/cluster/redis-1000
[root@centos64 redis-3.0.6]# cp redis.conf /usr/local/redis/cluster/redis-1001


配置每个redis的redis.config配置文件:
port 1000
配置redis作为守护进程运行,daemonize改成 yes。
当redis作为守护进程运行的时候,它会写一个 pid 到 redis.pid 文件里面。

bind 101.200.129.112 阿里云的ip  不要127.0.0.0的地址

pidfile /home/redis-test/samcluter/1000/redis.pid 当前目录:

logfile /home/redis-test/samcluter/1000/redis.log 日志:

appendonly yes 集群aos:

集群相关文件配置:
cluster-enabled yes
cluster-config-file nodes-1000.conf
cluster-node-timeout 5000


2.2开启服务器
redis-server redis.conf
[root@centos64 redis]# cd cluster/redis-1000
[root@centos64 redis-1000]# ls
redis.conf
[root@centos64 redis-1000]# redis-server redis.conf
[root@centos64 redis-1000]# cd /usr/local/redis/cluster/redis-1001/
[root@centos64 redis-1001]# redis-server redis.conf
[root@centos64 redis-1001]# cd /usr/local/redis/cluster/redis-2000/
[root@centos64 redis-2000]# redis-server redis.conf
[root@centos64 redis-2000]# cd /usr/local/redis/cluster/redis-2001/
[root@centos64 redis-2001]# redis-server redis.conf
[root@centos64 redis-2001]# cd /usr/local/redis/cluster/redis-3000/
[root@centos64 redis-3000]# redis-server redis.conf
[root@centos64 redis-3000]# cd /usr/local/redis/cluster/redis-3001/
[root@centos64 redis-3001]# redis-server redis.conf
[root@centos64 redis-3001]# ps -ef|grep redis
root       2935      1  0 3月14 ?       00:06:14 redis-server *:6379
root      12173      1  0 11:47 ?        00:00:00 redis-server 192.168.92.130:1000 [cluster]
root      12178      1  0 11:47 ?        00:00:00 redis-server 192.168.92.130:1001 [cluster]
root      12182      1  0 11:48 ?        00:00:00 redis-server 192.168.92.130:2000 [cluster]
root      12186      1  0 11:48 ?        00:00:00 redis-server 192.168.92.130:2001 [cluster]
root      12190      1  0 11:48 ?        00:00:00 redis-server 192.168.92.130:3000 [cluster]
root      12194      1  0 11:48 ?        00:00:00 redis-server 192.168.92.130:3001 [cluster]
root      12199   9811  0 11:50 pts/0    00:00:00 grep --color=auto redis

或 ps -ef|grep redis-server 查看启动的服务器


启动集群客服端链接模式:
集群客户端查询集群状态,查看状态

[root@centos64 cluster]# redis-cli -c -h 192.168.92.130 -p 1000
192.168.92.130:1000> cluster info
cluster_state:fail
cluster_slots_assigned:0
cluster_slots_ok:0
cluster_slots_pfail:0
cluster_slots_fail:0
cluster_known_nodes:1
cluster_size:0
cluster_current_epoch:0
cluster_my_epoch:0
cluster_stats_messages_sent:0
cluster_stats_messages_received:0

可以发现cluster_state:fail并没有集群成功,每个单台都打开了,但是就是没连接起来。
需要集群大管家redis-trib,此工具安装需要依赖ruby环境。

2.3 集群管理器介绍:

[root@centos64 redis]# redis-3.0.6/src/redis-trib.rb 集群管理器来搭建我们官方最小集群组。

我们在做集群的时候缺少一个redis接口包。
通过安装ruby来获得gem命令,可以查看redis集群接口包有没有安装,没有的话来安装我们redis接口。
redis-trib.rb利用ruby,下环境安装redis集群接口。

查看ruby是否安装:ruby -v
在做redis集群时,ruby至少需要2.0以上版本。
[root@centos64 src]# ruby -v
-bash: ruby: 未找到命令
[root@centos64 src]# sudo yum install ruby
已加载插件:fastestmirror
Repodata is over 2 weeks old. Install yum-cron? Or run: yum makecache fast
................
[root@centos64 src]# ruby -v
ruby 2.0.0p648 (2015-12-16) [x86_64-linux]



2.4 集群管理器关联主从关系:
[root@centos64 src]# pwd
/usr/local/redis/redis-3.0.6/src
[root@centos64 src]#./redis-trib.rb create --replicas 1 192.168.92.130:1000 192.168.92.130:2000 192.168.92.130:3000  192.168.92.130:1001 192.168.92.130:2001 192.168.92.130:3001


slots哈希槽点都是均匀分配在主机上。

赋值取值测试redis集群:

RedisDesktopManager:


停止redis
redis-cli shutdown  或者 kill redis进程的pid
停止redis集群
如果停止集群所有节点,让所有节点都关闭,只能关闭进程了# pkill -9 redis。
如果报错,解决方案 http://blog.csdn.net/wudalang_gd/article/details/52153571

http://blog.csdn.net/zfl092005/article/details/17523945
挂掉之后,哨兵机制如何处理的?如何做监控进程,挂机后自动切换。







通过yun安装
yum -y install mysql-server
/etc/rc.d/init.d/mysqld restart
/usr/bin/mysqladmin -u root password '123456'
#chmod -R 777 /etc/mysql/my.cnf
cp /usr/share/mysql/my-medium.cnf /etc/my.cnf

# root用户登录
$ mysql -u root -p
  • 大小: 66.8 KB
  • 大小: 24.1 KB
  • 大小: 18.2 KB
  • 大小: 32.3 KB
  • 大小: 105.4 KB
  • 大小: 39.8 KB
  • 大小: 10.5 KB
  • 大小: 26 KB
  • 大小: 33.3 KB
  • 大小: 20.9 KB
  • 大小: 22.9 KB
  • 大小: 45.7 KB
  • 大小: 52.9 KB
  • 大小: 11.6 KB
  • 大小: 53 KB
  • 大小: 30.4 KB
  • 大小: 44.8 KB
  • 大小: 13.3 KB
  • 大小: 18.3 KB
  • 大小: 19 KB
分享到:
评论

相关推荐

    Redis 3.x 分布式集群搭建.pdf

    redis从3.0开始支持集群功能。redis集群采用无中心节点方式实现,无需proxy代理,客户端直接与redis集群的每个节点连接,根据同样的hash算法计算出key对应的slot,然后直接在slot对应的redisj节点上执行命令。在...

    一种高效的Redis Cluster的分布式缓存系统.pdf

    #资源达人分享计划#

    redisCluster.zip

    redis是一个key-value存储系统。和Memcached类似,它支持存储的value类型相对更多,包括string(字符... redis的出现,很大程度补偿了memcached这类key/value存储的不足,在部 分场合可以对关系数据库起到很好的补充作用

    Redis-Cluster集群模式部署

    Redis-Cluster集群模式部署

    redis-cluster-4.0.1集群镜像

    Redis是用C语言开发的一个开源的高性能键值对(key-value)数据库。 它通过提供多种键值数据类型来适应不同场景下的存储需求。 目前为止Redis支持的键值数据类型如下: 1. 字符串类型 2. 散列类型 3. 列表类型 4...

    rediscluster高可用.zip

    rediscluster高可用集群搭建手册,从0 到1 完美的实现 redis集群搭建 redis5种数据类型

    redis-cluster组建脚本

    组建redis cluster的脚本

    bitnami-docker-redis-cluster

    Redis(TM)是高级键值缓存和存储。它通常被称为数据结构服务器,因为键可以包含字符串,哈希,列表,集合,排序集合,位图和超级日志。 TL; DR $ docker run --name redis-cluster -e ALLOW_EMPTY_PASSWORD=yes ...

    redis-go-cluster, 在Go中,redis集群客户端实现.zip

    redis-go-cluster, 在Go中,redis集群客户端实现 redis-go-clusterredis-go-cluster是基于 burd burd burd的客户端的一个golang实现的。 它在本地缓存 slot 信息,并在集群更改时自动更新。 客户端管理每个 node的...

    redis高可用笔记,包括RedisCluster集群方式和完全纯手写Redis缓存框架

    redis高可用笔记

    redis cluster 集群配置.conf简约版.zip

    redis cluster 是很流行的缓存机制,本人配合博客上传部分配置,给大家参考学习。有需要可以看我的博客,配置只是辅助。有错误还请 指教

    docker 部署Redis集群节点.pdf

    Redis是一款开源的高性能内存键值存储数据库,常用于缓存、数据库和消息中间件等场景。如果您需要部署一个Redis集群,Docker可以帮助您更轻松地完成此任务。以下是关于使用Docker部署Redis集群节点的一些资源: - ...

    redis-cluster.tar.gz

    redis-cluster 组件脚本

    Flasher为国内某大型一线电商平台的分布式缓存框架,基于Redis Cluster实现的Java客户端.zip

    Flasher为国内某大型一线电商平台的分布式缓存框架,基于Redis Cluster实现的Java客户端

    redis查询_清缓存脚本

    redis清理缓存、查询工具,可以支持sentinel模式和cluster模式

    Redis 集群搭建手册

    Redis 是我们目前大规模使用的缓存中间件,由于它强大高效而又便捷的功能,得到了广泛的使用。单节点的Redis已经就达到了很高的性能...本文参考了Rdis的官方文档和使用Redis官方提供的Redis Cluster工具搭建Rdis集群。

    redis3.0源码

    开发者Salvatore Sanfilippo表示,Redis 3.0.0是第一个原生支持集群的稳定版本,可能需要1到2年才能成熟,它对Redis生态系统具有重要意义,Redis Cluster将向用户提供某种程度的自动伸缩和容错能力,将改变用户看待...

    cluster-redis:redis集群配置

    redis-cluster缓存系统redis集群配置reids集群采用双master互为slave的方式。每台linux服务器运行4个redis实例,由2个实例担任reids master角色,另2个实例担任reids slave。失效检测和切换由redis完成。下载redis...

    Redis高性能缓存使用指南

    主要内容  Redis 简介  Redis 特性  其他缓存对比  Redis 集群( 主从复制,Sentinel,Cluster)  Redis 应用场景  Redis 常用客户端  Redis 功能演示  Redis

    redisStudy.zip

    看你写的项目经验,如果你们公司数据量特别大,公司用缓存牛逼,就说Rediscluster,小公司可以说哨兵集群 1.哨兵模式 基本回答:哨兵主要就是启动哨兵(redis特殊)节点,对主节点进行监控,如果半数以上发现ping主...

Global site tag (gtag.js) - Google Analytics