redis3.0集群安装部署

wget http://download.redis.io/releases/redis-3.0.0.tar.gz && tar zxvf redis-3.0.0.tar.gz && cd redis-3.0.0 && make PREFIX=/usr/local/redis install

mkdir -p /usr/local/redis/run

mkdir -p /usr/local/redis/logs

mkdir -p /usr/local/redis/rdb

mkdir -p /usr/local/redis/etc

mkdir -p /usr/local/redis/nodes

1、###redis集群配置文件,根据实例端口区分

#Redis默认不是以守护进程的方式运行,可以通过该配置项修改,使用yes启用守护进程

daemonize yes

#当 Redis 以守护进程的方式运行的时候,Redis 默认会把 pid 文件放在/var/run/redis.pid,当运行多个 redis 服务时,需要指定不同的 pid 文件和端口

pidfile /usr/local/redis/run/redis_6381.pid

#配置redis端口

port 6381

tcp-backlog 511

#客户端连接的超时时间,单位为秒,超时后会关闭连接

timeout 300

tcp-keepalive 0

#日志记录等级,4个可选值debug、verbose、notice、warning

loglevel notice

#配置 log 文件地址,默认打印在命令行终端的窗口上,也可设为/dev/null屏蔽日志

logfile "/usr/local/redis/logs/6381.log"

#设置数据库的个数,可以使用 SELECT 命令来切换数据库

databases 16

#设置 Redis 进行数据库镜像的频率。保存数据到disk的策略 900秒之内有1个keys发生变化时

save 900 1

#设置 Redis 进行数据库镜像的频率。保存数据到disk的策略 30秒之内有10个keys发生变化时

save 300 10

#设置 Redis 进行数据库镜像的频率。保存数据到disk的策略 60秒之内有10000个keys发生变化时

save 60 10000

stop-writes-on-bgsave-error yes

#在进行镜像备份时,是否进行压缩

rdbcompression yes

rdbchecksum yes

#镜像备份文件的文件名

dbfilename dump6381.rdb

#数据库镜像备份的文件放置的路径,默认值为 ./

dir /usr/local/redis/rdb

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

#限制同时连接的客户数量,当连接数超过这个值时,redis 将不再接收其他连接请求,客户端尝试连接时将收到 error 信息

maxclients 10000

#最大可使用内存。如果超过,Redis会试图删除EXPIRE集合中的keys

maxmemory 1G

#volatile-lru使用LRU算法来删除过期的set,allkeys-lru删除任何遵循LRU算法的key,volatile-ttl删除最近即将过期的key,volatile-random ->随机地删除过期set中的key

maxmemory-policy volatile-ttl

#对于处理redis内存来说,LRU和minor TTL算法不是精确的,而是近似的(估计的)算法。所以我们会检查某些样本#来达到内存检查的目的。默认的样本数是3,你可以修改它。

maxmemory-samples 3

#默认情况下,Redis会异步的把数据保存到硬盘。如果你的应用场景允许因为系统崩溃等极端情况而导致最新数据丢失#的话,那这种做法已经很ok了。否则你应该打开‘append only’模式,开启这种模式后,Redis会在#appendonly.aof文件中添加每一个写操作,这个文件会在Redis启动时被读取来在内存中重新构建数据集。

appendonly no

appendfilename "appendonly6381.aof"

#no:不fsync,只是通知OS可以flush数据了具体是否flush取决于OS性能更好; always: 每次写入append only 日志文件后都会fsync性能差,但很安全;everysec: 没间隔1秒进行一次fsync折中.

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 /usr/local/redis/nodes/6381.conf

cluster-node-timeout 5000

slowlog-log-slower-than 10000

slowlog-max-len 1024

latency-monitor-threshold 0

notify-keyspace-events ""

hash-max-ziplist-entries 512

hash-max-ziplist-value 64

list-max-ziplist-entries 512

list-max-ziplist-value 64

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

2、启动redis实例

/usr/local/redis/bin/redis-server /usr/local/redis/etc/6380.conf &

3、复制redis-trib.rb

cp /root/redis-3.0.0/src/redis-trib.rb /usr/local/redis/bin

4、启动集群

/usr/local/redis/bin/redis-trib.rb create 10.144.8.86:7000 10.144.8.86:7001 10.144.8.86:7002

如果是6个实例,create 后加参数--replicas 1会产生3个主节点,3个slave节点

执行上面的命令的时候会报错,因为是执行的ruby的脚本,需要ruby的环境

错误内容:/usr/bin/env: ruby: No such file or directory

所以需要安装ruby的环境,这里推荐使用yum install ruby安装

yum install ruby

然后再执行第6步的创建集群命令,还会报错,提示缺少rubygems组件,使用yum安装

错误内容:

./redis-trib.rb:24:in `require‘: no such file to load -- rubygems (LoadError)

from ./redis-trib.rb:24

yum install rubygems

6.3再次执行第6步的命令,还会报错,提示不能加载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 安装 :gem install redis

5、通过redis-trib.rb工具的check子命令来查看集群信息

/usr/local/redis/bin/redis-trib.rb check 127.0.0.1:6379

6、通过redis客户端实现对Redis Cluster的读写。当前,redis客户端同样实现了对集群的支持,但使用方法略有不同,即在启动的时候需要添加一个-c参数。

/usr/local/redis/bin/redis-cli -c -h 127.0.0.1 -p 6379

http://blog.csdn.net/xu470438000/article/details/42972123

http://blog.csdn.net/myrainblues/article/details/25881535

Redis集群添加节点

1:首先把需要添加的节点启动

2:执行以下命令,将这个新节点添加到集群中

cd /usr/local/redis3.0/src/

./redis-trib.rb add-node 127.0.0.1:7006 127.0.0.1:7000

3:执行命令redis-cli -c -p 7000 cluster nodes,查看刚才新增的节点

4:增加了新的节点之后,这个新的节点可以成为主节点或者是从节点

4.1 把这个节点变成主节点,使用redis-trib程序,将集群中的某些哈希槽移动到新节点里面, 这个新节点就成为真正的主节点了。

执行下面的命令对集群中的哈希槽进行移动

cd /usr/local/redis3.0/src

./redis-trib.rb reshard 127.0.0.1:7000

系统会提示我们要移动多少哈希槽,这里移动1000个

然后还需要指定把这些哈希槽转移到哪个节点上,

输入我们刚才新增的节点的ID

f32dc088c881a6b930474fc5b52832ba2ff71899

然后需要我们指定转移哪几个几点的哈希槽

输入all 表示从所有的主节点中随机转移,凑够1000个哈希槽

然后再输入yes,redis集群就开始分配哈希槽了。

至此,一个新的主节点就添加完成了,执行命令查看现在的集群中节点的状态

redis-cli -c -p 7000 cluster nodes

4.2:把这个节点变成从节点

前面我们已经把这个新节点添加到集群中了,现在我们要让新节点成为127.0.0.1:7001的从节点,只需要执行下面的命令就可以了,命令后面的节点ID就是127.0.0.1:7001的节点ID

redis-cli -c -p 7006 cluster replicate 0b00721a509444db793d28448d8f02168b94bd38

使用下面命令来确认一下127.0.0.1:7006是否已经成为127.0.0.1:7001的从节点

redis-cli -p 7000 cluster nodes | grep slave | grep 0b00721a509444db793d28448d8f02168b94bd38

看到下面图片中的情况就表示添加成功

Redis集群删除节点

1:如果删除的节点是主节点,这里我们删除127.0.0.1:7006节点,这个节点有1000个哈希槽

首先要把节点中的哈希槽转移到其他节点中,执行下面的命令

cd /usr/local/redis3.0/src

./redis-trib.rb reshard 127.0.0.1:7000

系统会提示我们要移动多少哈希槽,这里移动1000个,因为127.0.0.1:7006节点有1000个哈希槽

然后系统提示我们输入要接收这些哈希槽的节点的ID,这里使用127.0.0.1:7001的节点ID

然后要我们选择从那些节点中转出哈希槽,这里一定要输入127.0.0.1:7006这个节点的ID,最后输入 done  表示输入完毕

最后一步,使用下面的命令把这个节点删除

cd /usr/local/redis3.0/src/

./redis-trib.rb del-node 127.0.0.1:7006 127.0.0.1:7006

2:如果节点是从节点的,直接使用下面的命令删除即可。

cd /usr/local/redis3.0/src/

./redis-trib.rb del-node 127.0.0.1:7006 127.0.0.1:7006

时间: 2024-10-13 22:27:55

redis3.0集群安装部署的相关文章

Redis3.0集群方案分析

在Redis3.0集群出来之前,大家都对作者antirez寄予厚望,因为Redis从来没有让我们失望过.现在Redis3.0集群出来了,网上出了很多评论文章,都说他的功能多么强大,包括下面这张图是彻底把我欺骗了. 等到我把Redis3.0客户端库hiredis编译好集成到公司系统,访问其中一台Redis3.0服务器居然返回"MOVED 2318 10.12.8.156:6379",这才了解到访问其他Redis3.0服务器的Key需要二次定位,这就是Redis3.0所谓的ASK 转向/M

redis3.0集群部署和测试

redis3.0集群部署和测试 环境介绍 两台Centos7的虚拟机模拟6个节点,A台3个master节点,B台3个slave节点A地址:172.16.81.140B地址:172.16.81.141redis版本:redis-3.2.4 部署前准备 关闭防火墙--->systemctl stop firewalld开机禁用防火墙--->systemctl disable firewalld临时关闭selinux--->setenforce 0永久关闭selinux--->sed -

redis3.0集群部署方案

redis3.0集群部署方案redis1:192.168.1.10:6379       192.168.1.10:6380redis2:192.168.1.11:6379       192.168.1.11:6380redis3:192.168.1.12:6379       192.168.1.12:6380关闭 selinux ,防火墙允许6379 6380端口通过, 先启动各服务器的redis节点在制作集群       redis1配置:yum -y insall gcc ruby r

redis3.0集群说明与搭建

Redis3.0集群说明: 1.  Redis集群提供一种运行Redis的方式,数据被自动的分片到多个Redis节点. 2. 集群不支持处理多个键的命令,因为这需要在Redis节点间移动数据,使得                 Redis集群不能提供像Redis单点那样的性能,在高负载下会表现得不可预知. 3.  集群可在多个节点间自动拆分数据集. 当部分节点正在经历失败或者不能与集群其他节点通信时可继续运转 4 Redis集群不保证数据强一致性. redis-server 集群以哈希槽的方式

Mysql上的RAC:Percona XtraDB Cluster负载均衡集群安装部署手册

 Percona XtraDB Cluster安装部署手册 引言 编写目的 编写此文档,供PerconaXtraDB Cluster部署时使用. 预期读者 系统维护人员及实施人员. 编制依据及参考资料 目标 通过阅读该手册,让读者明确PerconaXtraDB Cluster的安装.配置和维护情况,为后续数据库运维工作提供指导. 应用部署方案 环境准备 服务器列表 序号 IP 用途 HOSTNAME 操作系统 1 192.168.0.7 Percona XtraDB Cluster RedHat

mesos 集群安装部署规划、准备(1)

一:简介 Mesos诞生于UC Berkeley的一个研究项目,现已成为Apache Incubator中的项目.Mesos计算框架一个集群管理器,提供了有效的.跨分布式应用或框架的资源隔离和共享,可以运行Hadoop.MPI.Hypertable.Spark.使用ZooKeeper实现容错复制,使用Linux Containers来隔离任务,支持多种资源计划分配. 1: 总体架构 Apache Mesos由四个组件组成,分别是Mesos-master,mesos-slave,framework

mesos 集群安装部署zookeeper(2)

三:集群安装配置 ############################################################## 配置zookeeper集群    (172.16.7.12~13 执行) ############################################################### 1:部署环境介绍: 服务器IP地址主机名安装服务 172.16.7.12ctn-7-12.ptmind.com zookeeper   myid=1 17

mesos 集群安装部署mesos-master(3)

############################################################### Mesos 集群master配置 ############################################################### 1:部署环境介绍: 服务器IP地址主机名安装服务 172.16.7.11ctn-7-11.ptmind.com mesos-master 172.16.7.12ctn-7-12.ptmind.com mesos

mesos 集群安装部署marathon(4)

############################################################### 配置 marathon 服务 ############################################################### Marathon:marathon是一个mesos框架,能够支持运行长服务,比如web应用等.是集群的分布式Init.d,能够原样运行任何Linux二进制发布版本,如Tomcat Play等等,可以集群的多进程管理