1.1 准备工作
1.1.1 检查是否有安装gcc
# gcc -v
-bash: gcc: command not found
# yum -y install gcc
1.1.2 软件清单
redis-3.0.4.tar.gz
wget http://download.redis.io/releases/redis-3.0.4.tar.gz
ruby-2.2.3.tar.gz
https://www.ruby-lang.org/en/news/2015/08/18/ruby-2-2-3-released/
redis-3.2.1-gem.zip
https://rubygems.global.ssl.fastly.net/gems/redis-3.2.1.gem
1.2 安装步骤
开发环境的redis服务采用单机部署就可以满足情况,文档针对单机安装配置。
1.2.1 创建目录
创建一个安装目录,如:/gap/redis,然后将软件清单的所有文件上传到该目录。
如下:
mkdir –p /gap/redis
将清单列表内容上传到创建目录
1.2.2 安装服务
在服务器上面安装redis-3.0.4服务,命令如下:
# cd /gap/redis
# tar -zxvf redis-3.0.4.tar.gz
# cd redis-3.0.4
# make
# make install
# cd /usr/local/bin/
可根据实际需要拷贝脚本到别的目录,如:“/gap/app/redis/script/”
cp ./redis-server ./redis-cli /gap/app/redis/script/
1.3 集群配置
研发环境为一台服务器模拟配置集群,实际集群的配置与该章节配置相似,只是将各节点分布到不同服务器上面。
初始配置文件在解压后的Redis程序目录下:/gap/redis/redis-3.0.4/redis.conf
将redis.conf配置文件拷贝到redis配置目录,比如“/gap/app/redis/script/”下,
cd /gap/redis/redis-3.0.4
cp redis.conf /gap/app/redis/script
在平台开发环境中,我们创建6个redis服务模拟集群,端口分别为3000、4000、5000、3001、4001、5001。
1)创建对应的数据存储目录:
mkdir -pv /gap/app/redis/3000/{data,logs}
mkdir -pv /gap/app/redis/3001/{data,logs}
mkdir -pv /gap/app/redis/4000/{data,logs}
mkdir -pv /gap/app/redis/4001/{data,logs}
mkdir -pv /gap/app/redis/5000/{data,logs}
mkdir -pv /gap/app/redis/5001/{data,logs}
2)创建redis-3000.conf配置文件:
执行命令:
# cd /gap/app/redis/script
# cp redis.conf redis-3000.conf
# vi redis-3000.conf
修改redis-3000.conf内容如下:
daemonize:后台启动,修改为“yes”
pidfile:pid文件路径,根据实际调整
port:端口号,根据实际调整
bind:绑定IP地址,实际服务器地址
tcp-keepalive:心跳检测,修改为“60”
logfile:日志文件路径,根据实际调整
save:是否存盘,置为"",旧的配置注释掉
dir:数据目录,根据实际调整
maxmemory:最大内存,根据实际调整
maxmemory-policy:数据替换策略,置为“allkeys-lru”
cluster-enabled:是否启用集群,置为“yes”
cluster-config-file:集群配置的文件名,根据实际调整
cluster-node-timeout:集群心跳,置为“5000”
使用 grep -v ^# /gap/app/redis/script/redis-3000.conf |grep -v ^$
查看如下:
daemonize yes
pidfile /gap/app/redis/3000/redis-3000.pid
port 3000
tcp-backlog 511
bind 172.0.0.9
timeout 0
tcp-keepalive 60
loglevel notice
logfile /gap/app/redis/3000/logs/redis-3000.log
databases 16
save ""
save 300 10
save 60 10000
stop-writes-on-bgsave-error yes
rdbcompression yes
rdbchecksum yes
dbfilename dump.rdb
dir /gap/app/redis/3000/data
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
maxmemory 256m
maxmemory-policy allkeys-lru
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-3000.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-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
集群节点3000创建和配置如上,接下来创建其他端口配置文件,
cd /gap/app/redis/script
cp redis-3000.conf redis-3001.conf
cp redis-3000.conf redis-4000.conf
cp redis-3000.conf redis-4001.conf
cp redis-3000.conf redis-5000.conf
cp redis-3000.conf redis-5001.conf
然后依次修改3001到5001配置文件中的端口信息,完善配置文件。
1.4 安装Ruby相关
只需要某一台服务器安装Ruby服务
安装Ruby
# cd /gap/redis
# tar -zxvf ruby-2.2.3.tar.gz
# cd ruby-2.2.3
# ./configure
# make
# make install
# ruby -v
安装RubyGems
# cd /gap/redis
# unzip redis-3.2.1-gem.zip
# gem install -l ./redis-3.2.1.gem
问题1:原因是缺少zlib依赖,需要安装zlib库
[root@hmb3 redis]# gem install -l ./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
解决1:
估计原因是gem运行缺少zlib库支持,所以需要
1、yum install zlib-devel
2、下载rails源码
3、进入ruby源码文件夹,安装ruby自身提供的zlib包
# cd /gap/redis/ruby-2.2.3/ext/zlib/
# cd ext/zlib
# ruby ./extconf.rb
# make
# make install
成功效果:
问题2:
ERROR: While executing gem ... (Gem::Exception)
Unable to require openssl, install OpenSSL and rebuild ruby (preferred) or use non-HTTPS sources
提示缺少openssl库,这两个库可以通过yum安装,但是安装了需要集成到ruby中。
解决:略
1.5 创建集群
1.5.1 启动所有redis服务
cd /gap/app/redis/script
./redis-server ./redis-3000.conf
./redis-server ./redis-3001.conf
./redis-server ./redis-4000.conf
./redis-server ./redis-4001.conf
./redis-server ./redis-5000.conf
./redis-server ./redis-5001.conf
ps -ef | grep redis
问题:路径或者文件或者文件夹写错缺失
[root@hmb3 script]# ./redis-server ./redis-3000.conf
*** FATAL CONFIG FILE ERROR ***
Reading the configuration file, at line 103
>>> 'logfile /gap/app/redis/3000/log/redis-3000.log'
Can't open the log file: No such file or directory
处理:
正常:
1.5.2 创建集群
进入Ruby集群命令目录
cd /gap/redis/redis-3.0.4/src
创建集群,命令如下:只需要执行一次集群创建命令
./redis-trib.rb create --replicas 1 172.0.0.9:3000 172.0.0.9:4000 172.0.0.9:5000 172.0.0.9:3001 172.0.0.9:4001 172.0.0.9:5001
注释:前面的IP:端口为主节点,接下去的IP:端口为从节点,需要一一对应:
1.5.3 查看集群状态
1.5.3.1 登录客户端
cd /gap/app/redis/script;
./redis-cli -c -h 172.0.0.9 -p 3000
1.5.3.2 查询状态
命令:cluster nodes
1.5.3.3 集群是否正常
命令:set 键 值,get 键
set key01 value02
get key01
问题:Redis群集转移故障行为
(error) CLUSTERDOWN The cluster is down
参考:https://github.com/antirez/redis/issues/1869 ,输入:yes
Can I set the above configuration? (type 'yes' to accept): yes
>>> Nodes configuration updated
>>> Assign a different config epoch to each node
>>> Sending CLUSTER MEET messages to join the cluster
Waiting for the cluster to join...
1.5.3.4 启动服务
如果服务器重启或者Redis关闭后,只需要启动Redis各个节点服务,不需要重新创建集群。
1.6 系统平台配置
Redis配置后,需要配置平台参数数据文件,执行如下脚本
update t_public_properties t
set t.dic_value = '172.0.0.9:3000/3001/4000/4001/5000/5001'
where t.dic_id = 'redis_cluster_nodes';
代码运行效果: