一、 安装环境及工具
l 服务器三台:
l 系统:CentOS6.5
l 相关安装工具包及版本:
redis-3.2.10.tar.gz(下载:http://redis.io/download/ )
ruby-2.4.2.tar.gz(下载:http://www.ruby-lang.org/en/downloads/ )
rubygems-2.6.13.tgz(下载:https://rubygems.org/pages/download )
zlib-1.2.11.tar.gz(下载:http://www.zlib.net )
openssl-1.0.2l.tar.gz(下载:https://www.openssl.org/source/ )
redis-3.2.1.gem(下载: https://rubygems.org/gems/redis/ )
二、 集群搭建步骤(每台服务器均执行相同操作)
1. 安装gcc环境
安装Redis需要依托gcc环境,先检查Linux是否已经安装了gcc,如果没有安装,则需要进行安装。
执行以下命令检查gcc是否安装:
gcc -v
若已安装则会显示相关版本信息,如果没有任何信息则通过以下命令安装:
yum install gcc-c++
2. 安装ruby和rubygems
yum install ruby
yum install rubygems #需2.2及以上版本
3. 安装Redis(搭建集群需要版本号在3.0以上)
· 将压缩包拷贝到Linux服务器opt目录下,执行解压操作
tar xzf redis-3.2.10.tar.gz
· 进入解压后的目录,进行编译(需要root权限)
cd redis-3.2.10
make && make install
· linux下的redis可执行文件位于src目录下,配置文件位于解压目录下,在解压后目录下执行如下命令启动redis查看是否安装成功
./src/redis-server redis.conf
4. 配置redis集群
· 在opt目录下创建redis-cluster文件夹,将redis安装目录src下的redis-trib.rb文件复制到redis-cluster目录下
mkdir redis-cluster
cp ./redis-3.2.10/src/redis-trib.rb ./redis-cluster
· 然后在redis-cluster目录下创建以端口命名的节点文件夹7001和7002
mkdir 7001 7002
· 将redis安装目录下的redis.conf配置文件及其src目录下的redis-server拷贝到7001下
cp ../redis-3.2.10/redis.conf ./7001
cp ../redis-3.2.10/src/redis-server ./7001
cp ../redis-3.2.10/redis.conf ./7002
cp ../redis-3.2.10/src/redis-server ./7002
· 分别进入7001和7002目录进行配置redis.conf,在配置文件中找到如下属性进行相关配置,若被注释掉的则放开注释按以下配置
#设置为后台启动
daemonize yes
#修改端口号,分别对应7001和7002
port 7001
#开启cluster
cluster-enabled yes
notify-keyspace-events Ex
#Redis运行时保存配置的文件
cluster-config-file nodes.conf
#集群超时时间,结点超时多久则认为它宕机了
cluster-node-timeout 30000
#主库下线且没有从库进行故障恢复时,集群不可用
cluster-require-full-coverage yes
#是否在每次更新操作后进行日志记录
appendonly yes
#绑定全网ip
bind 0.0.0.0
· 写个命令脚本start-node.sh以便启动节点
#可在任意目录下新建脚本文件,方便执行即可,建议将此脚本配置为开机自启动
vi start-node.sh
#编写脚本内容
#!/bin/bash
echo "cluster start..."
cd /opt/redis-cluster/7001
./redis-server redis.conf
cd ../7002
./redis-server redis.conf
echo "cluster started."
· 使脚本有执行权限,并启动查看
#使脚本有执行权限
chmod u+x start-node.sh
#启动脚本
./start-node.sh
#查看redis进程启动状态
ps -ef | grep redis
5. 开启redis集群
在所有服务器均完成以上步骤1至4时,放可在任意服务器上执行此步骤。
· 进入opt/redis-cluster目录,执行开启集群命令
#以下是一个命令,需一并执行,若执行成功,则命令窗口会列出一个redis给出的默认搭建方案,输入yes同意即可。
./redis-trib.rb create --replicas 1 10.1.34.101:7001 10.1.34.101:7002 10.1.34.102:7001 10.1.34.102:7002 10.1.34.103:7001 10.1.34.103:7002
· 客户端连接测试,进入redis安装目录的src目录下执行以下命令
#连接集群
redis-cli -h 10.1.34.101 -p 7001 -c
#进行键值存取测试,若能正常存取则开启集群成功
set foo bar
get foo
至此部署结束。
三、 相关错误及解决方案
若执行以上开启集群命令出现Ruby和Rubygems相关错误的话,那可能是没有安装好Ruby和Rubygems,若已经安装好了,还报类似如下错误
/home/cmfchina/ruby/lib/ruby/site_ruby/2.4.0/rubygems/core_ext/kernel_require.rb:55:in `require': cannot load such file -- redis (LoadError)
from /home/cmfchina/ruby/lib/ruby/site_ruby/2.4.0/rubygems/core_ext/kernel_require.rb:55:in `require'
from ./redis-trib.rb:25:in `<main>'
则是提示不能加载redis,那是因为缺少redis和ruby的接口,还需要使用gem 安装对应的Redis的Rbuy接口包redis-3.2.1.gem。
执行gem install redis-3.2.1.gem命令安装:
gem install redis-3.2.1.gem
若执行此命令又报类似如下错误
ERROR: Loading command: install (LoadError)
cannot load such file -- zlib
ERROR: While executing gem ... (NoMethodError)
undefined method `invoke_with_build_args' for nil:NilClass
这是因为需要依赖zlib工具,需要再安装zlib才行。安装好后若再报openssl相关的错误,则需要再安装openssl。
以上解决方案以及相关的离线安装方法可以参考如下文章:
http://www.cnblogs.com/xuliangxing/p/7146868.html