60s创建高可用redis集群

OS:CentOS 64-bit
集群机器:n1,n2,n3,n4,n5,n6,n7,n8,n9 (目标3master 6 slave)

编译然后把需要的二进制文件和脚本提取如下目录结构,每台机器都传过去
# cd ~
# wget http://download.redis.io/releases/redis-3.0.5.tar.gz
# tar xzf redis*.gz
# cd redis*/
# make -j && make install
# ./utils/install_server.sh

每台机器部署目录结构:普通用户 zero 目录下 cluster 目录结构如下
.
|-- bin
| |-- redis-benchmark
| |-- redis-check-aof
| |-- redis-check-dump
| |-- redis-cli
| |-- redis-sentinel
| |-- redis-server
| |-- redis-trib.rb
| |-- runtest
| |-- runtest-cluster
| -- runtest-sentinel
| -- data
| -- 6379
|-- etc
| -- 6379.conf
|-- log

使用官方默认redis.conf 创建配置文件 6379.conf ,主要更改以下几个参数 , 另外更改里面的db目录和日志目录同上

daemonize yes //redis守护进程
pidfile /var/run/redis_6379.pid //pidfile文件对应端口
port 6379 //端口6379
cluster-enabled yes //开启集群
cluster-config-file nodes.conf //集群的配置 配置文件首次启动自动生成
cluster-node-timeout 15000

在9台机器分别启动起来
#redis-server ~/etc/6379.conf

(随便在其中一台) 创建集群
#gem install redis (如果连接不上)下面下载安装
#wget https://rubygems.global.ssl.fastly.net/gems/redis-3.2.2.gem
#gem install -l ./redis-3.2.2.gem
#redis/src/redis-trib.rb create --replicas 2 n1-ip:6379 ... n9-ip:6379 (自动前3个为master节点,后6个为slave节点, 这里大家写清楚 xxx.xxx.xxx.xxx:6379 )
这块应该没问题,确认 yes ,集群就创建完成了

然后我们就可以直接拿3台 master 的随便一台 ip:6379 调用这个集群,当然程序里可以写个list,如果第一个有问题,可以调第2个,或者第3个
即便是3个master都宕机了,集群依然会选举出新的master , 我们在前面业务层判断下,调用新的master 即可
上面集群不可用的情况只有一种,9台全部宕机 (可能性极少,满足高可用方案)
不过,这是redis cluster 方式,各个程序调用库不能再像之前调redis 单机那样了,应该选择对应的redis-cluster 调用库,java,php都有支持了,lua 暂时没有合适的,不过实现也可以,就是获取调用错误,然后取出新的ip和端口,重调即可简单实现,优化的事情以后再说

60s创建高可用redis集群
标签: