当前使用redis版本 3.2.5
安装redis
将redis安装到指定目录。使用命令
make PREFIX=/usr/local/redis install
出现问题的话,可以参考我之前的《Redis单机版安装与配置》
安装结果如下
切换至redis安装路径
创建集群配置文件
[root@localhost loca]# mkdir redis_cluster
[root@localhost loca]# cd redis_cluster
[root@localhost redis_cluster]# mkdir conf
在此目录下,创建redis_7000.conf到redis_7005.conf六个配置文件。
创建一个redis_7000.conf文件,其余cp就可以,适当更改端口号等信息即可
将如下信息
daemonize yes #守护进程方式运行
pidfile /var/run/redis_7002.pid #pid进程文件存放位置
port 7002 #端口号
cluster-enabled yes #开启集群
cluster-config-file nodes_7002.conf #集群配置文件
cluster-node-timeout 5000 #请求超时时间单位 ms
cluster-slave-validity-factor 1 #当主节点宕机时,从节点变成主节点的时间因数
appendonly yes #aof日志开启
appendfilename "appendonly7002.aof" #aof日志名称
bind ip地址 #redis地址
masterauth 密码 #redis主机密码
requirepass 密码 #redis从机请求密码
当主节点宕机时,从节点变成主节点的时间计算方法为 cluster-node-timeout * cluster-slave-validity-factor
拷贝到redis_7002.conf中,其他复制。
[root@localhost conf]# cp redis_7000.conf redis_7001.conf
[root@localhost conf]# cp redis_7000.conf redis_7002.conf
[root@localhost conf]# cp redis_7000.conf redis_7003.conf
[root@localhost conf]# cp redis_7000.conf redis_7004.conf
[root@localhost conf]# cp redis_7000.conf redis_7005.conf
启动redis实例
/usr/loca/redis/bin/redis-server redis_7000.conf
启动结果如下
搭建集群
现在我们已经有了六个正在运行中的 Redis 实例,接下来我们需要使用这些实例来创建集群,并为每个节点编写配置文件。
通过使用 Redis 集群命令行工具 redis-trib , 编写节点配置文件的工作可以非常容易地完成: redis-trib 位于 Redis 源码的 src 文件夹中, 它是一个 Ruby 程序, 这个程序通过向实例发送特殊命令来完成创建新集群, 检查集群, 或者对集群进行重新分片(reshared)等工作。所以我们需要安装ruby.
安装ruby
yum install ruby
yum install rubygems
gem install redis
此时报错
解决方法如下
命令1
curl -L get.rvm.io | bash -s stable
如果出现没有公钥的提示,则按屏幕提示,安装公钥。(此处忘记截图,注意按文字描述,领会精神)
安装完成后,再次执行curl -L get.rvm.io | bash -s stable 进行rvm安装。
如果出现
curl: (35) TCP connection reset by peer 错误,可以尝试如下方法:
chown -R root ~root/.gnupg
chmod 600 ~/.gnupg/gpg.conf
chmod 700 ~/.gnupg/
执行完成后,按照上面的提示,首先退出ssh,然后再登陆ssh。然后执行source /etc/profile.d/rvm.sh指令。接下来执行一下rvm list known指令,看看当前查看rvm库中已知的ruby版本
rvm list known
rvm install 2.3.4
使用安装好的
rvm use 2.3.4
切换到redis3.2.5的src目录
执行命令
./redis-trib.rb
出现如下问题
再次执行
gem install redis
完成后,执行
./redis-trib.rb
出现上述画面,则表示可以开始利用./redis-trib.rb 进行集群搭建了
正式开始搭建集群
在当前文件夹下(redis的源码路径,如下图所示)
执行./redis-trib.rb info ip地址:7000等看看节点信息。
上图显示的信息表明节点连接正确,开始创建集群
集群创建命令
./redis-trib.rb create --replicas 1 ip1:port1 ip2:port2 ip3:port3 ip4:port4 ip5:port5 ip6:port6
出现如下画面则表示创建成功
题外话
1,密码设置(推荐)
如果集群想通过密码验证的话可做做如下配置
修改所有Redis集群中的redis.conf文件加入:
masterauth passwd123
requirepass passwd123
设置密码之后如果需要使用redis-trib.rb的各种命令,会提示ERR] Sorry, can’t connect to node 127.0.0.1:7000
解决方法
vim /usr/local/rvm/gems/ruby-2.3.3/gems/redis-4.0.0/lib/redis/client.rb,然后修改passord
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
client.rb路径可以通过find命令查找:find / -name 'client.rb'
2,关于防火墙
如果linux中,有防火墙启用,那么要将redis总线的端口也加到防火墙的策略中。
redis总线的端口一般为 redis客户端端口号+10000