vlambda博客
学习文章列表

阿里云搭建redis集群

1最近心血来潮, 打算在阿里云通过单机搭建一个redis集群,踩了不少的坑, 分享一下这些坑都怎么跳过的:

先说一下注意事项:

  1. redis集群搭建需要至少6个节点,一般为双数, 默认分配为一主一从,redis集群采用去中心化思想, 也就是主节点的能力都是一样的,而且请求任意节点都可以获取所有数据,redis会把数据传输到每个主节点, 然后每个主节点和从节点进行数据同步, 主节点挂了之后从节点才会起到作用, 所以一般从节点一般仅用来备份。节点需要采用不同的端口号,对外开放端口时, 需要额外开通端口+10000的端口用来集群内部通信, 如: 开通17001端口用来外部访问时, 需要额外开通27001端口用来集群内部通信

    2. redis集群搭建完成之前配置文件不能设置密码,否则会无法连接,集群搭建之后通过config set + config rewrite分别对各个节点进行密码设置

   

好的,现在开始搭建集群, 我采用的是redis-3.2.4


1. 下载解压
wget http://download.redis.io/releases/redis-3.2.4.tar.gz

tar -zxvf redis-3.2.4.tar.gz



2. 编译

cd redis-3.2.4.tar.gz

make && make install 


3. 将redis-trib.rb放入全局环境

cd src

cp redis-trib.rb /usr/bin



4. 创建redis节点文件


mkdir redis_cluster

cd redis_cluster

mkdir cluster_17001

mkdir cluster_17002

mkdir cluster_17003

mkdir cluster_17004

mkdir cluster_17005

mkdir cluster_17006

cd ..

cp redis.conf redis_cluster/cluster_17001

cp redis.conf redis_cluster/cluster_17002

cp redis.conf redis_cluster/cluster_17003

cp redis.conf redis_cluster/cluster_17004

cp redis.conf redis_cluster/cluster_17005

cp redis.conf redis_cluster/cluster_17006


5. 分别修改6个配置文件中的以下配置

5.1   port 17001     # 分别改为每个节点端口号

5.2   将bind 127.0.0.1 注释掉    # 前边加个#号

5.3   daemonize   yes    # 设置redis后台启动

5.4   pidfile /var/run/redis_17001.pid   # 用来存储单个节点的进程号

5.5   cluster-enabled yes  # 开启redis集群,把注释去掉

5.6   cluster-config-file nodes-17001.conf   # 集群的配置文件, 首次启动会自动生成, 把注释去掉


5.7  cluster-node-timeout   15000 # 集群节点超时时间, 把注释去掉

5.8   appendonly   yes  # aof日志开启, 用来记录每次写入redis的记录, 可选择开启或者不开启

5.9   protected-mode no  # 外部网络是否可以直接访问,redis3.2版本后新增的配置,改为no



6. 分别启动这6个节点服务


在redis-3.2.4目录下启动

redis-server redis_cluster/cluster_17001/redis.conf

redis-server redis_cluster/cluster_17002/redis.conf

redis-server redis_cluster/cluster_17003/redis.conf

redis-server redis_cluster/cluster_17004/redis.conf

redis-server redis_cluster/cluster_17005/redis.conf

redis-server redis_cluster/cluster_17006/redis.conf


7. 安装高版本ruby及对应redis


yum -y install ruby ruby-devel rubygems rpm-build  


yum install curl


curl -L get.rvm.io | bash -s stable 


此时应该会报错, 提示没有公钥,根据提示信息安装相关命令, 比如我安装时提示:

GPG signature verification failed for '/usr/local/rvm/archives/rvm-1.29.9.tgz' - 'https://github.com/rvm/rvm/releases/download/1.29.9/1.29.9.tar.gz.asc'! Try to install GPG v2 and then fetch the public key:


    gpg2 --keyserver hkp://pool.sks-keyservers.net --recv-keys ******************  ********************(星号代表公钥的keys)


执行提示信息中的命令:  gpg2 --keyserver hkp://pool.sks-keyservers.net --recv-keys ******************  ********************




然后重新执行: curl -L get.rvm.io | bash -s stable   #安装rvm, 安装ruby所用工具


rvm install  2.3.3 # 通过rvm安装指定版本ruby


rvm use 2.3.3  #使用刚安装的指定版本ruby


rvm remove  2.0.0  #删除低版本ruby


ruby --version  # 查看ruby版本


gem install redis  # 安装ruby中的redis



最后开启集群:



redis-trib.rb create --replicas  1    公网ip:17001  公网ip:17002 公网ip:17003 公网ip:17004 公网ip:17005 公网ip:17006


至此完成:



[OK] all node agree about slots configuration 

>>> Check for open slots...

>>> Check slots coverage...

[OK] ALL 16384 slots covered.