1、安装Redis
解压 tar -xzvf redis-3.2.8.tar.gz
编译安装 cd /data/redis-3.2.8
make && make install
[root@centos redis-3.2.8]# make && make install cd src && make all make[1]: Entering directory `/data/redis-3.2.8/src' CC adlist.o /bin/sh: cc: command not found make[1]: *** [adlist.o] Error 127 make[1]: Leaving directory `/data/redis-3.2.8/src' make: *** [all] Error 2
提示gcc和cc命令令未找到
解决方法
yum -y install gcc gcc-c++ libstdc++-devel
再次执行make && make install
cc: error: ../deps/hiredis/libhiredis.a: No such file or directory cc: error: ../deps/lua/src/liblua.a: No such file or directory cc: error: ../deps/geohash-int/geohash.o: No such file or directory cc: error: ../deps/geohash-int/geohash_helper.o: No such file or directory make[1]: *** [redis-server] Error 1 make[1]: Leaving directory `/data/redis-3.2.8/src' make: *** [all] Error 2
解决方法
cd deps/
make lua hiredis linenoise
再次执行make && make install
[root@centos redis-3.2.8]# make && make install cd src && make all make[1]: Entering directory `/data/redis-3.2.8/src' LINK redis-server cc: error: ../deps/geohash-int/geohash.o: No such file or directory cc: error: ../deps/geohash-int/geohash_helper.o: No such file or directory make[1]: *** [redis-server] Error 1 make[1]: Leaving directory `/data/redis-3.2.8/src' make: *** [all] Error 2
解决方法:
进入源码包目录下的deps目录中执行
make geohash-int hiredis jemalloc linenoise lua
再次make && make install
[root@centos redis-3.2.8]# make && make install cd src && make all make[1]: Entering directory `/data/redis-3.2.8/src' LINK redis-server INSTALL redis-sentinel CC redis-cli.o LINK redis-cli CC redis-benchmark.o LINK redis-benchmark INSTALL redis-check-rdb CC redis-check-aof.o LINK redis-check-aof Hint: It's a good idea to run 'make test' ;) make[1]: Leaving directory `/data/redis-3.2.8/src' cd src && make install make[1]: Entering directory `/data/redis-3.2.8/src' Hint: It's a good idea to run 'make test' ;) INSTALL install INSTALL install INSTALL install INSTALL install INSTALL install make[1]: Leaving directory `/data/redis-3.2.8/src'
cd redis-5.0.8
cp redis.conf /data/redis-cluster/conf/redis_7000.conf
cp redis.conf /data/redis-cluster/conf/redis_7001.conf
2.修改Redis配置文件
1、修改redis-master配置文件
vi /data/redis-cluster/conf/redis_7000.conf
port 7000 #修改redis监听端口(可以自定义) bind 0.0.0.0 #表示redis允许所有地址连接。默认127.0.0.1,仅允许本地连接。 daemonize yes #允许redis后台运行 pidfile /var/run/redis_7000.pid #pid存放目录 logfile "/var/log/redis-sentinel.log" #设置Sentinel日志存放路径 dir /data/redis-cluster/data/redis_7000 #工作目录 cluster-enabled yes #是否开启集群 cluster-config-file /data/redis-cluster/conf/nodes_7000.conf #集群配置文件的名称,每个节点都有一个集群相关的配置文件,持久化保存集群的信息 #这个文件并不需要手动配置,这个配置文件有Redis生成并更新, cluster-node-timeout 15000 #节点互连超时的阀值。集群节点超时毫秒数,默认15秒 appendonly yes #Redis会把每次写入的数据在接收后都写入 appendonly.aof 文件, #每次启动时Redis都会先把这个文件的数据读入内存里,先忽略RDB文件。 requirepass 123456 #设置redis密码 masterauth 123456 #主从同步master的密码(如果没有设置redis密码,则无需配置)
2、修改redis-slave配置文件
vi /data/redis-cluster/conf/redis_7001.conf #修改redis-slave配置文件,具体如下:
port 7001 bind 0.0.0.0 daemonize yes pidfile /var/run/redis-cluster/redis_7001.pid logfile "/data/redis-cluster/log/redis_7001.log" dir /data/redis-cluster/data/redis_7001 cluster-enabled yes cluster-config-file /data/redis-cluster/conf/nodes_7001.conf cluster-node-timeout 15000 appendonly yes requirepass 123456 masterauth 123456
3.分发到集群其他服务器
复制redis以及工作目录到其他服务器
scp -r /data/redis-3.2.8 redis-cluster root@10.58.20.16:/data
scp -r /data/redis-3.2.8 redis-cluster root@10.58.20.17:/data
设置软链接,方便启动redis服务
ln -s /data/redis-3.2.8/src/redis-server /usr/bin/redis-server
ln -s /data/redis-3.2.8/src/redis-cli /usr/bin/redis-cli
4.启动Redis
集群内每台服务器分别启动两个redis
redis-server /data/redis-cluster/conf/redis_7000.conf
redis-server /data/redis-cluster/conf/redis_7001.conf
验证是否启动成功
ps -ef | grep redis
查看版本
redis-cli --version
redis-server --version
5.创建Redis Cluster
复制redis-trib.rb
redis-trib.rb 复制到 /usr/local/bin 目录
cd src
cp redis-trib.rb /usr/local/bin/
注意:redis5.0以上集群创建方式改为了C编写的redis-cli创建,不用再安装麻烦的ruby。
创建集群,--cluster-replicas 1指定从库数量1,创建顺序三主-三从。即主-主-主-从-从-从。
redis-trib.rb create --replicas 1 10.58.20.15:7000 10.58.20.16:7000 10.58.20.17:7000 10.58.20.15:7001 10.58.20.16:7001 10.58.20.17:7001
[root@centos src]# redis-trib.rb create --replicas 1 10.58.20.15:7000 10.58.20.16:7000 10.58.20.17:7000 10.58.20.15:7001 10.58.20.16:7001 10.58.20.17:7001 /usr/bin/env: ruby: No such file or directory
若执行以上命令报错,则服务器上没有安装 ruby,需要参考下一步骤安装ruby
安装ruby
下载ruby-2.4.0.tar.gz ,并安装
下载Ruby的归档文件后,解压后得到文件并转入到新创建的目录:
$ tar -xvzf ruby-2.4.0.tar.gz
$ cd ruby-2.4.0
配置和编译源代码
$ ./configure
最后安装
$ su root
$ make install
$ exit
redis还需要下载并安装ruby的第三方接口
下载 redis-3.3.3.gem
并安装: gem install -l redis-3.3.3.gem
若安装 gem报错,则是缺少openssl ,需要先安装openssl 才行
yum install openssl ,再执行 install -l redis-3.3.3.gem
[root@zhoulei rubygems-2.6.11]# gem install -l redis-3.3.3.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,那我们进行安装
(1)yum -y install zlib-devel
(2)cd ruby-2.4.0/ext/zlib/
(3)ruby ./extconf.rb
(4)make
(5)make install
紧接着报这错:
[root@zhoulei zlib]# make make: *** No rule to make target `/include/ruby.h', needed by `zlib.o'. Stop.
解决办法:
find / -name 'client.rb'
vi /usr/local/lib/ruby/gems/2.4.0/gems/redis-3.3.3/lib/redis/client.rb
修改路径 为../../include/ruby.h
make
make install
gem install -l redis-3.3.3.gem
完成。
集群时出现的问题:
[root@centos data]# redis-trib.rb create --replicas 1 10.58.20.15:7000 10.58.20.16:7000 10.58.20.17:7000 10.58.20.15:7001 10.58.20.16:7001 10.58.20.17:7001
>>> Creating cluster
[ERR] Sorry, can't connect to node 10.58.20.15:7000
class Client DEFAULTS = { :url => lambda { ENV["REDIS_URL"] }, :scheme => "redis", :host => "127.0.0.1", :port => 6379, :path => nil, :timeout => 5.0, :password => "passwd123", :db => 0, :driver => nil, :id => nil, :tcp_keepalive => 0, :reconnect_attempts => 1, :inherit_socket => false
以后部署不使用3.2.8版本了,折腾了一晚,之后改用5.0版本。
redis5.0以上集群创建方式改为了C编写的redis-cli创建,不用再安装麻烦的ruby。