安装redis需要gcc环境,ruby环境
yum install gcc-c++
yum install ruby
yum install rubygems
创建集群需要用到以下名令
gem install redis
注意:这里执行gem需要ruby版本2.2以上(手动安装ruby会有各种各样的问题详情请看结尾)
安装redis
下载redis
解压redis
tar -zxvf redis
cd redis
编译
./configure
make
cd src
make install
若看到以下信息,说明安装成功
如果只是想要单机,不存在集群功能,我们现在就可以将Redis运行起来,我们直接在刚刚解压的Redis目录下运行命令就可以将单机的Redis 运行起来
cd /usr/local/redis-3.2.9
redis-server redis.conf
验证是否安装且远程是否可以连接:
参考:
最后用RedisDesktopManager工具远程连接上之后,如下图所示,即redis安装部署完成
集群配置:
集群可以单台服务器以及多台,这里我们使用两台服务器
172.16.201.89 redsi1
172.16.201.90 redis2
这里先在/usr/local下创建文件夹cluster
mkdir cluster
在cluret下创建文件夹用来存放节点的文件(redis要求最少需要6个节点,这里配置的是两台服务器,每台服务器3台节点)
mkdir 7000
mkdir 7001
mkdir 7002
先将redis文件夹下的redis.conf文件复制到cluret目录下
cp redis.conf /usr/local/cluster
修改配置文件
cd /usr/local/cluster
vim redis.conf
修改以下选项:
bind填写指定访问ip,最好填写真实ip地址,或者填写0.0.0.0(0.0.0.0默认是全部IP地址可访问,不设置,多台之间无法进行连接)
ifconfig -a 查看真实服务器地址
将bind绑定
修改端口号,每个节点端口号不同
进程文件存放地址
指定数据文件存放位置
appendonly yes表示开启守护进程
修改文件存放路径
cluster-enabled yes表示启动集群
cluster-config-file 关联集群配置文件
cluster -node-timeout 设置超时时间
日志文件存放路径,可有可无这里我没配置
将修改后的文件先后复制到节点文件夹内
cp redis.conf /usr/local/cluster/7000
cp redis.conf /usr/local/cluster/7001
cp redis.conf /usr/local/cluster/7002
根据节点修改ip以及端口后和文件存放路径
服务器redis2同样,这里我的端口号分别为7003,7004,7005
接下来将节点启动
进入redis目录下的src目录
cd /usr/local/redis/src
启动节点的命令为redis-server
执行命令:
./redis-server /usr/local/cluster/7000/redis.conf
./redis-server /usr/local/cluster/7001/redis.conf
./redis-server /usr/local/cluster/7002/redis.conf
./redis-server /usr/local/cluster/7003/redis.conf
./redis-server /usr/local/cluster/7004/redis.conf
./redis-server /usr/local/cluster/7005/redis.conf
./redis-server /usr/local/cluster/7006/redis.conf
也可以创建shell脚本进行批量执行
vim startall.sh
将下面命令写入:
cd /usr/local/redis/src ./redis-server /usr/local/cluster/700X/redis.conf
然后给文件加上权限,执行
chmod 777 startall.sh
./startall
执行netstat -tnulp | grep redis和ps aux | grep redis查看节点是否启动
同时节点文件夹会生成相应的文件
接下来将redis1和redis2服务器上的节点做成集群
在两台机器的redis的src目录下执行(可使用xshell自带功能
)
./redis-trib.rb create --replicas 1 192.168.111.98:7000 192.168.111.98:7001 192.168.111.98:7002 192.168.111.99:7003 192.168.111.99:7004 192.168.111.99:7005
我们选择yes,意思是服从这种主从分配方式,我们也可以通过配置文件自己指定slave
这里集群就配置完成。
集群测试:
通过连接任一redis端口,添加数据,在redis的src下执行
redis-cli -p 7001 -c
redis-cli -c -h 127.0.0.1 -p 7001 shutdown //关闭集群,如果没有-h参数,默认连接127.0.0.1,如果没有-p参数,默认连接6370端口(所有如果用默认的,就没有-h -p)
说明:-h+host –p+端口号 –c 是要连接集群,注意坑,不加会报错的
可以看到连接的是7001的节点,set name的时候计算了存在哪个hash槽上,会跳转到那个槽对应的节点
问题汇总:
在执行创建集群命令时./redis-trib.rb create --replicas 1 192.168.111.98:7000 192.168.111.98:7001 192.168.111.98:7002 192.168.111.99:7003 192.168.111.99:7004 192.168.111.99:7005
遇到gem报错时,说明需要使用命令gem install redis
安装不成功会提示版本要求不符合的命令,这里我们删除yum安装的低版本ruby进行手动安装
现在版本符合要求的包进行解压
curl -O -L https://cache.ruby-lang.org/pub/ruby/2.2/ruby-2.2.7.tar.gz
tar -zxvf ruby-2.2.7
./configure –-prefix=/usr/local/ruby (这里路径指定,可自行创建)
make
make install
配置软连接
ln -s /usr/local//ruby /usr/bin/ruby
再次执行gem命令
有时会提示:
这里先使用yum安装zlib,进入ruby下
cd /home/ruby/ext/zlib
ruby extconf.rb
make && make install
接下来可能报错,需要修改Makefile文件
将文件内$(top_srcdir)/include/ruby.h修改为…/…/include/ruby.h
再次执行make&make install
继续执行命令:gem install redis
又出现了错误,原来我们还需要安装OpenSSL,因为Redis集群交互是需要OpenSSL
同样,yum下载openssl
进入ruby文件下
cd /usr/local/ruby/ext/openssl
ruby extconf.rb
make && make install
make 之前同样将生成的Makefile文件中的$(top_srcdir)/include/ruby.h修改为…/…/include/ruby.h
继续执行命令:gem install redis
成功