Redis5.0.7的部署与集群搭建
一、单机版部署
第一步:下载最新稳定版
wget http://download.redis.io/releases/redis-5.0.7.tar.gz
第二步:解压
tar -zxvf redis-5.0.7.tar.gz
第三步:进入解压后文件夹并编译
$ cd redis-5.0.7
$ make
第四步:运行
$ src/redis-server
此时不是后台运行,需要另起一窗口,打开客户端进行测试:
[root@host-192-168-54-16 redis-5.0.7]# src/redis-cli
127.0.0.1:6379> set foo hao
OK
127.0.0.1:6379> get foo
"hao"
此时单机版的已经构建完毕。接下来就是搭建集群。
二、集群版搭建
我有三台服务器
192.168.54.16,192.168.54.17,192.168.54.18
第一步:创建redis_cluster文件夹,在里面创建7000,8000文件夹
三台机器都做这个操作
mkdir redis_cluster
cd redis_cluster
mkdir 7000 8000
第二步:将redis.conf赋值进刚才创建的文件夹
三台机器都做这个操作
cp redis.conf redis_cluster/7000
cp redis.conf redis_cluster/8000
第三步:修改配置文件
6个节点里的配置文件:
redis集群配置
port 7000 //端口7000,7002,7003
bind 本机ip //默认ip为127.0.0.1 需要改为其他节点机器可访问的ip 否则创建集群时无法访问对应的端口,无法创建集群
daemonize yes //redis后台运行
pidfile /var/run/redis_7000.pid //pidfile文件对应7000,7001,7002
cluster-enabled yes //开启集群 把注释#去掉
cluster-config-file nodes_7000.conf //集群的配置 配置文件首次启动自动生成 7000,7001,7002
cluster-node-timeout 15000 //请求超时 默认15秒,可自行设置
appendonly yes //aof日志开启 有需要就开启,它会每次写操作都记录一条日志(建议开发时开启)
第四步:分别启动节点(三台机器、六个节点):
src/redis-server redis_cluster/7000/redis.conf
src/redis-server redis_cluster/8000/redis.conf
第五步:检查状态
ps -ef | grep redis
root 18923 1 0 15:00 ? 00:00:00 src/redis-server 192.168.54.16:7000 [cluster]
root 18928 1 0 15:00 ? 00:00:00 src/redis-server 192.168.54.16:8000 [cluster]
后面有[cluster]则是正常
第六步:创建集群
src/redis-trib.rb create --replicas 1 192.168.54.16:7000 192.168.54.16:8000 192.168.54.17:7000 192.168.54.17:8000 192.168.54.18:7000 192.168.54.18:8000
此时有了一个报错:(若是没有报错,直接去第八步)
/usr/bin/env: ruby: No such file or directory
第七步:解决异常(安装ruby)
这个报错异常明显是ruby未安装,此时我们安装上ruby应该就可以了。
yum -y install ruby ruby-devel rubygems rpm-build
gem install redis
继续报错:
ERROR: Error installing redis:
redis requires Ruby version >= 2.3.0.
问题分析:ruby版本过低
检查版本:
ruby -v
ruby 2.0.0p648 (2015-12-16) [x86_64-linux]
解决措施:升级ruby。考虑到CentOS库里版本最高只有2.0.
所以从红宝石官网下载。
# 我这个是新服务器,所以首先下载curl,有的服务器可能不需要下载了
yum -y install curl
# 安装rvm:
# 从红宝石官网下载RVM:http://rvm.io/rvm/install
gpg --keyserver hkp://pool.sks-keyservers.net --recv-keys 409B6B1796C275462A1703113804BB82D39DC0E3 7D2BAF1CF37B13E2069D6956105BD0E739499BDB
# 检查一哈
curl -L https://raw.githubusercontent.com/wayneeseguin/rvm/master/binscripts/rvm-installer | bash -s stable
# 生效
source /usr/local/rvm/scripts/rvm
# RVM库中已知的红宝石版本
rvm list known
# 结果
[ruby-]1.8.6[-p420]
[ruby-]1.8.7[-head] # security released on head
[ruby-]1.9.1[-p431]
[ruby-]1.9.2[-p330]
[ruby-]1.9.3[-p551]
[ruby-]2.0.0[-p648]
[ruby-]2.1[.10]
[ruby-]2.2[.10]
[ruby-]2.3[.8]
[ruby-]2.4[.6]
[ruby-]2.5[.5]
[ruby-]2.6[.3]
[ruby-]2.7[.0-preview1]
# 选择最近稳定版2.6.3
rvm install 2.6.3
# 使用2.6.3版本
rvm use 2.6.3
# 添加默认(有强迫症的人可以将2.0的卸载掉:rvm remove 2.0.0)
rvm use 2.6.3 --default
# 检查版本
ruby --v
第八步:继续创建集群
[root@host-192-168-54-16 redis-5.0.7]# gem install redis
Fetching redis-4.1.3.gem
Successfully installed redis-4.1.3
Parsing documentation for redis-4.1.3
Installing ri documentation for redis-4.1.3
Done installing documentation for redis after 1 seconds
1 gem installed
# 继续执行redis-trib.rb命令
src/redis-trib.rb create --replicas 1 192.168.54.16:7000 192.168.54.16:8000 192.168.54.17:7000 192.168.54.17:8000 192.168.54.18:7000 192.168.54.18:8000
# 提示redis5.0.7版本已经舍弃redis-trib.rb,再次使用redis-cli命令创建
redis-cli --cluster create 192.168.54.16:7000 192.168.54.16:8000 192.168.54.17:7000 192.168.54.17:8000 192.168.54.18:7000 192.168.54.18:8000 --cluster-replicas 1
接下来Can I set the above configuration? (type ‘yes’ to accept):
输入yes
第九步:结果
第十步:验证
进入随便一台服务器,启动任意一节点:
# 加参数 -C 可连接到集群,因为上面 redis.conf 将 bind 改为了ip地址,所以 -h 参数不可以省略。
src/redis-cli -h 192.168.54.16 -c -p 7000
执行结果是:
192.168.54.16:7000> set name haosc
-> Redirected to slot [5798] located at 192.168.54.17:7000
OK
192.168.54.17:7000> get name
"haosc"
可以看到存储值的时候,节点发生了变化。这正是因为集群的原因。接下来如果还有时间就详细说集群的特点与优势。