两台机器(由于个人电脑资源有限,最多两台机器)
1.下载redis
各版本地址(进入官网,点击最新版本下载按钮,复制出来下载连接,去掉最后的版本号,例如:http://download.redis.io/releases/redis-5.0.3.tar.gz)剩下的地址:http://download.redis.io/releases/
本次安装选择3.2.12
参考文档:https://redis.io/topics/cluster-tutorial
注意:该文档中没有明确的说明redis集群最少是3个主节点3个从节点,但是却有一段话来描述:
一:下载
wget http://download.redis.io/releases/redis-3.2.12.tar.gz
#解压
tar -zxfv redis-3.2.12.tar.gz
二:新建空目录 redis-cluster
#机器1:
mkdir redis-cluster
cd redis-cluster
mkdir 7000 7001 7002 #作为主节点
安装 gem gem 是ruby提供 一般要求ruby的版本是2.2以上,请自行google进行安装。
三:进入解压后的redis目录进行安装
sudo make #会向根目录写入一些文件,需要root权限,如果你的登录用户是root则不必要加sudo
sudo make install
#gem 安装 大致步骤
1、yum -y install ruby rubygems #可能会出现版本较低错误
2.如果版本低:
yum install centos-release-scl-rh #会在/etc/yum.repos.d/目录下多出一个CentOS-SCLo-scl-rh.repo源
yum install rh-ruby23 -y #直接yum安装即可
scl enable rh-ruby23 bash #必要一步
ruby -v #版本查看
3.执行 gem install redis
编译后的src文件中的redis-trib.rb,redis-server 等redis常用命令 拷贝到 /usr/local/bin下 将src和 redis.conf 拷贝到7000 7001 7002 文件夹下
修改每个文件夹下redis.conf配置文件
bind 192.168.56.103
port 7000(每个文件夹下各自的端口不一样)
cluster-config-file nodes-7000.conf
requirepass 密码
cluster-enabled yes
cluster-node-timeout 5000
appendonly yes
在另一台机器上进行上述下载、解压、移动文件等同样操作,修改配置文件(redis.conf)时切接注意ip和端口
分别进入目录启动redis (后期肯定统一启动shell脚本)
redis-server 7000/redis.conf
将其中一台机器作为集群管理机,启动集群
redis-trib.rb create --replicas 1 192.168.56.107:7000 192.168.56.107:7001 192.168.56.107:7002 192.168.56.106:7003 192.168.56.106:7004 192.168.56.106:7005
此时报错误:Sorry, can't connect to node
因为我连接redis时添加了密码,所以修改ruby中,每个人的位置应该是不一样的,请自行搜索(find / -name client.rb)
vi /home/sw/.rvm/gems/ruby-2.5.3-rubby/gems/redis-4.1.0/lib/redis/client.rb
#注意:password 值加''号
此时再次执行:
redis-trib.rb create --replicas 1 192.168.56.107:7000 192.168.56.107:7001 192.168.56.107:7002 192.168.56.106:7003 192.168.56.106:7004 192.168.56.106:7005
依旧报错,错误如下:MASTER aborted replication with an error: NOAUTH Authentication required
查看配置文件中有masterauth 所以尝试修改服务器中的配置文件,将该配置项打开填写设置的redis密码,个人认为密码最好是统一的。删除两台机器已经产生的文件,再次执行集群启动命令(先启动redis)
>>> Performing Cluster Check (using node 192.168.56.107:7000)
M: 0d81a13e906804289ae0f52b0cdbfeb8e4aa1c9a 192.168.56.107:7000
slots:0-5460 (5461 slots) master
1 additional replica(s)
S: e5ff70d8056babb32cf6c3a9b72e78c76b00c2b3 192.168.56.107:7002
slots: (0 slots) slave
replicates 1297ffde2a33a3e7aac8cb911d913d0a489d5325
M: e16e3e65a0d830b53ababc0ec1b6e320295aed76 192.168.56.107:7001
slots:10923-16383 (5461 slots) master
1 additional replica(s)
M: 1297ffde2a33a3e7aac8cb911d913d0a489d5325 192.168.56.106:7003
slots:5461-10922 (5462 slots) master
1 additional replica(s)
S: 9557032dafb1a1f604ff430da7589e65d5375765 192.168.56.106:7004
slots: (0 slots) slave
replicates 0d81a13e906804289ae0f52b0cdbfeb8e4aa1c9a
S: 8302614f9b24d0f7ac4d6cc350c2bd7e085ace96 192.168.56.106:7005
slots: (0 slots) slave
replicates e16e3e65a0d830b53ababc0ec1b6e320295aed76
四:至此集群启动完成,我们进行验证登录其中一台机器:
redis-cli -h 192.168.56.107 -p 7000 -a admin
出现错误:(error) MOVED 5798 192.168.56.106:7003,有可能redis换成集群之后,客户端操作发生变化,查看文档发现登录命令相对于单机增加了-c命令:
- 在
redis-cli
与开始时在GitHub上的Redis的存储库的不稳定分支工具实现了一个非常基本的集群支持-c
开关。
再次登录:
redis-cli -c -h 192.168.56.107 -p 7000 -a admin
#成功之后,随便进行设置一个key value信息, 会看到
# -> Redirected to slot[5789] located 192.168.56.106:7003
# "value"
#在其它机器登录后,在其它机器则可获取到该name信息
至此redis集群简单部署完成,其中ruby是关键,网上的例子很多,请自行参考!