在企业的生产环境中部署Reids分片集群

本文涉及的产品
云数据库 Tair(兼容Redis),内存型 2GB
Redis 开源版,标准版 2GB
推荐场景:
搭建游戏排行榜
简介:

1、环境说明

    在此文章中不对redis做详细介绍,如果对redis不太了解的朋友可以参考此链接 http://www.runoob.com/redis/redis-tutorial.html 

    要让redis集群正常工作至少需要3个主节点,在这里我们要创建6个redis节点,其中三个为主节点,三个为从节点,对应的redis节点的ip和端口对应关系如下:

主机和端口
192.168.102.51:6379、192.168.102.51:6380
192.168.102.52:6379、192.168.102.52:6380
192.168.102.53:6379、192.168.102.53:6380

说明:3台服务器部署redis集群环境,如果你只用于测试部署,可在1台服务器上配置,不过端口别重复就行。


2、准备redis相关依赖包

( 在这3台服务器都需要安装)

包名 下载地址
 zlib-1.2.8.tar.gz  http://nchc.dl.sourceforge.net/project/libpng/zlib/1.2.8/zlib-1.2.8.tar.gz
ruby-2.2.4.tar.bz2    https://cache.ruby-lang.org/pub/ruby/2.2/ruby-2.2.4.tar.bz2
rubygems-2.5.1.tgz https://rubygems.global.ssl.fastly.net/rubygems/rubygems-2.5.1.tgz
redis-3.2.2.gem https://rubygems.global.ssl.fastly.net/gems/redis-3.2.2.gem
redis-3.2.3.tar.gz http://download.redis.io/releases/redis-3.2.3.tar.gz

2.1 安装zlib

# gunzip zlib-1.2.8.tar.gz

# tar -xvf zlib-1.2.8.tar

# cd zlib-1.2.8

# ./configure

# make

    # make install


2.2 安装ruby

# bunzip2 ruby-2.2.4.tar.bz2

# tar -xvf ruby-2.2.4.tar

# cd ruby-2.2.4

# ./configure -prefix=/usr/local/ruby

# make

Generating RDoc documentation

Parsing sources...

100% [967/967]  vsnprintf.c                                       

Generating RI format into /root/ruby-2.2.4/.ext/rdoc...

Files:        967

  Classes:     1411 ( 581 undocumented)

  Modules:      280 ( 108 undocumented)

  Constants:   2160 ( 594 undocumented)

  Attributes:  1156 ( 255 undocumented)

  Methods:    10488 (2187 undocumented)

  Total:      15495 (3725 undocumented)

   75.96% documented

  Elapsed: 744.0s

# make install

    # cp ruby /bin


2.3 安装rubygems

# tar -zxvf rubygems-2.5.1.tgz

# cd rubygems-2.5.1

# ruby setup.rb

     # cp bin/gem /bin

注意:编译中出现in 'require': cannot load such file -- json/pure (LoadError)的解决方法:

gem install json_pure

Fetching: json_pure-1.8.3.gem (100%)

Successfully installed json_pure-1.8.3

Parsing documentation for json_pure-1.8.3

Installing ri documentation for json_pure-1.8.3

1 gem installed


2.4 安装gem-redis

# gem install -l redis-3.2.2.gem

Successfully installed redis-3.2.2

Parsing documentation for redis-3.2.2

Installing ri documentation for redis-3.2.2

    1 gem installed


3、安装redis( 在这3台服务器都需要安装)

  • 解压、编译

# tar -zxvf redis-3.2.3.tar.gz

# cd redis-3.2.3

     # make


  • 创建redis所需目录

#mkdir  -p  /usr/local/redis/{bin,conf,data,logs}      ##创建redis相关目录

# cp src/redis-server  /usr/local/redis/bin/              ##Redis服务器的daemon启动程序

# cp src/redis-cli  /usr/local/redis/bin/                   ##Redis命令行操作工具

# cp src/redis-trib.rb  /usr/local/redis/bin/             ##Redis Cluster工具

# cp src/redis-benchmark  /usr/local/redis/bin/    ##Redis性能测试工具

# cp src/redis-check-aof  /usr/local/redis/bin/       ##修复坏损坏的aof文件

# cp src/redis-check-dump /usr/local/redis/bin/    ##检查导出工具

# cp src/redis-sentinel  /usr/local/redis/bin/          ##Redis集群的管理工具

说明:如果你不想跟上面那样麻烦操作,也可直接复制src目录下所有的文件至 /usr/local/redis/bin/

      比如:cp src/* /usr/local/redis/bin/


  • 复制redis配置文件

# cp redis.conf  /usr/local/redis/conf/redis-6379.conf

# cp redis.conf  /usr/local/redis/conf/redis-6380.conf

  

  • 修改redis配置文件(修改红色字体部分)

bind 0.0.0.0                                     #redis服务监听的地址

protected-mode yes

port 6379                                        #如果是redis-6380.conf配置文件,修改为6380

tcp-backlog 511

timeout 0

tcp-keepalive 300

daemonize yes                                #修改为yes,让redis在后台运行

supervised no

pidfile /var/run/redis_6379.pid      #如果是redis-6380.conf配置文件,修改为redis_6380.pid

loglevel notice

logfile /usr/local/redis/logs/redis-6379.log     #如果是redis-6380.conf配置文件,修改为redis_6380.pid

databases 16

save 900 1

save 300 10

save 60 10000

stop-writes-on-bgsave-error yes

rdbcompression yes

rdbchecksum yes

dbfilename dump.rdb

dir ./

slave-serve-stale-data yes

slave-read-only yes

repl-diskless-sync no

repl-diskless-sync-delay 5

repl-disable-tcp-nodelay no

slave-priority 100

appendonly no

appendfilename "appendonly.aof"

appendfsync everysec

no-appendfsync-on-rewrite no

auto-aof-rewrite-percentage 100

auto-aof-rewrite-min-size 64mb

aof-load-truncated yes

lua-time-limit 5000

cluster-enabled yes

cluster-config-file nodes-51-6379.conf     #如果是redis-6380.conf配置文件,修改为nodes-51-6380.conf

cluster-node-timeout 5000

slowlog-log-slower-than 10000

slowlog-max-len 128

latency-monitor-threshold 0

notify-keyspace-events ""

hash-max-ziplist-entries 512

hash-max-ziplist-value 64

list-max-ziplist-size -2

list-compress-depth 0

set-max-intset-entries 512

zset-max-ziplist-entries 128

zset-max-ziplist-value 64

hll-sparse-max-bytes 3000

activerehashing yes

client-output-buffer-limit normal 0 0 0

client-output-buffer-limit slave 256mb 64mb 60

client-output-buffer-limit pubsub 32mb 8mb 60

hz 10

aof-rewrite-incremental-fsync yes

cluster-config-file nodes-51-6379.conf    #这条配置要特别说明一下

一定要注意,这3台服务器这条配置的名字最好不要取一样的,建议按下面的方式取名(当然你可以自己规定):

    192.168.102.51:nodes-51-6379.conf  nodes-51-6380.conf

    192.168.102.52:nodes-52-6379.conf  nodes-52-6380.conf

    192.168.102.53:nodes-53-6379.conf  nodes-53-6380.conf

说明:如果需要了解redis更多配置文件的详细说明,请参考下面的链接

http://blog.csdn.net/neubuffer/article/details/17003909


4、redis集群启动

4.1 redis实例启动(按顺序挨个启动,先启动6379、后启动6380):

#/usr/local/redis/bin/redis-server  /usr/local/redis/conf/redis-6379.conf   #分别按相顺序启动这3台服务器的6379实例

#/usr/local/redis/bin/redis-server  /usr/local/redis/conf/redis-6380.conf   #分别按相顺序启动3台服务器的6380实例

然后检查实例是否启动正常:

#ps -ef | grep redis


4.2 创建集群  (在第1台redis服务器上创建,并执行以下命令)

#/usr/local/redis/bin//bin/redis-trib.rb create --replicas 1 192.168.102.51:6379 192.168.102.52:6379 192.168.102.53:6379 192.168.102.51:6380 192.168.102.52:6380 192.168.102.53:6380

Can I set the above configuration? (type 'yes' to accept): yes    #这里要输入yes


  • 查看集群节点:

image.png


  • 检测集群:

image.png


  • 查看集群主节点:

image.png


如出现以上这些信息,说明集群安装成功。



本文转自甘兵 51CTO博客,原文链接:http://blog.51cto.com/ganbing/2051023,如需转载请自行联系原作者
相关实践学习
基于Redis实现在线游戏积分排行榜
本场景将介绍如何基于Redis数据库实现在线游戏中的游戏玩家积分排行榜功能。
云数据库 Redis 版使用教程
云数据库Redis版是兼容Redis协议标准的、提供持久化的内存数据库服务,基于高可靠双机热备架构及可无缝扩展的集群架构,满足高读写性能场景及容量需弹性变配的业务需求。 产品详情:https://www.aliyun.com/product/kvstore     ------------------------------------------------------------------------- 阿里云数据库体验:数据库上云实战 开发者云会免费提供一台带自建MySQL的源数据库 ECS 实例和一台目标数据库 RDS实例。跟着指引,您可以一步步实现将ECS自建数据库迁移到目标数据库RDS。 点击下方链接,领取免费ECS&RDS资源,30分钟完成数据库上云实战!https://developer.aliyun.com/adc/scenario/51eefbd1894e42f6bb9acacadd3f9121?spm=a2c6h.13788135.J_3257954370.9.4ba85f24utseFl
相关文章
|
7月前
|
NoSQL Linux Redis
06- 你们使用Redis是单点还是集群 ? 哪种集群 ?
**Redis配置:** 使用哨兵集群,结构为1主2从,加上3个哨兵节点,总计分布在3台Linux服务器上,提供高可用性。
438 0
|
运维 NoSQL 安全
【最佳实践】高可用mongodb集群(1分片+3副本):规划及部署
结合我们的生产需求,本次详细整理了最新版本 MonogoDB 7.0 集群的规划及部署过程,具有较大的参考价值,基本可照搬使用。 适应数据规模为T级的场景,由于设计了分片支撑,后续如有大数据量需求,可分片横向扩展。
1154 1
|
存储 缓存 负载均衡
高可用mongodb集群(分片+副本):规划及部署
高可用mongodb集群(分片+副本):规划及部署
1249 0
|
存储 NoSQL Java
高可用mongodb集群(分片+副本):性能测试
高可用mongodb集群(分片+副本):性能测试
682 0
|
2月前
|
SQL 关系型数据库 MySQL
mysql集群方案
mysql集群方案
43 0
|
4月前
|
存储 运维 负载均衡
构建高可用的 ChunkServer 系统
【8月更文第30天】在分布式文件系统中,ChunkServer(也称为 DataNode)负责存储文件的数据块(chunks)。为了保证系统的高可用性和数据冗余,需要设计一种可靠的 ChunkServer 部署方案。本文将探讨如何设计和实现一个高可用的 ChunkServer 系统,并通过具体的代码示例来展示其实现细节。
66 0
|
NoSQL MongoDB
MongoDB分片+副本集高可用集群的启停步骤
MongoDB分片+副本集高可用集群的启停步骤
283 0
|
存储 缓存 NoSQL
信创环境下缓存服务Redis集群部署
信创环境下缓存服务Redis集群部署
1973 0
|
消息中间件 存储 算法
生产环境出现网络分区,RocketMQ集群表示毫无压力!!!
生产环境出现网络分区,RocketMQ集群表示毫无压力!!!
生产环境出现网络分区,RocketMQ集群表示毫无压力!!!
|
消息中间件 JSON 运维
【kafka运维】分区副本重分配、数据迁移、副本扩缩容 (附教学视频)
【kafka运维】分区副本重分配、数据迁移、副本扩缩容 (附教学视频)
【kafka运维】分区副本重分配、数据迁移、副本扩缩容 (附教学视频)