项目要用Redis,事先调查构筑一下cluster,上网一通查找,最后总结一下流程。
首先下载下面三个东西,我选的都是最新的版本。
忘了说了,是在linux下安装构筑的。
1.redis-6.2.6.tar.gz
①tar xzf redis-6.2.6.tar.gz 解压
②cd redis-6.2.6 到指定目录中
③make
④make install PREFIX=指定路径
PS:也可以不指定,默认安装到·usr,但是给我的linux用户没有权限,只给了一个文件夹的权限,我只能安装到那里。
⑤redis-server -v
PS:如果不是默认usr文件夹的话,redis-server命令要加你的实际路径
2.ruby-2.3.1.tar.gz
①tar -zxvf ruby-2.3.1.tar.gz
②./configure –-prefix=指定路径
③make && make install
④ruby -v 同上,非默认路径,ruby命令前面要加实际路径
redis5.0以后,就不需要ruby运行了,所以这个不用装了。
3.redis-3.3.0.gem
ruby不要了,当然这个gem也不需要了。
好了装完了,下面开始构筑cluster
①mkdir cluster-test 建一个专用文件夹
②cd cluster-test
③mkdir 7000 7001 7002 7003 7004 7005 7006 下面建7个文件夹
目标构筑三主四从
/etc/redis.conf复制七份,改下面的参数,红字部分是七份不同的,分别放到刚才七个文件夹里
port 7000 | ||||||
cluster-enabled yes | ||||||
cluster-node-timeout 5000 | ||||||
appendonly yes | ||||||
daemonize yes | ||||||
loglevel debug | ||||||
logfile /home/ec2-user/cluster-test/7000/redis.log | ||||||
cluster-config-file /home/ec2-user/cluster-test/7000/nodes-7000.conf |
启动这七个,
$ sudo redis-server ./7000/redis.conf |
$ sudo redis-server ./7001/redis.conf |
$ sudo redis-server ./7002/redis.conf |
$ sudo redis-server ./7003/redis.conf |
$ sudo redis-server ./7004/redis.conf |
$ sudo redis-server ./7005/redis.conf |
$ sudo redis-server ./7006/redis.conf |
确认一下启动情况:$ ps aux | grep redis | grep -v grep
构筑cluster的三个主
redis-cli --cluster create 127.0.0.1:7000 127.0.0.1:7001 127.0.0.1:7002
然后构筑四个从
$ ./redis-trib.rb add-node --slave --master-id 8437edc8825ef2cb0d33fcaff028ad6eb13ed5bf 127.0.0.1:7003 127.0.0.1:7000 | |||||||||||
$ ./redis-trib.rb add-node --slave --master-id 8437edc8825ef2cb0d33fcaff028ad6eb13ed5bf 127.0.0.1:7003 127.0.0.1:7000 | |||||||||||
$ ./redis-trib.rb add-node --slave --master-id 8437edc8825ef2cb0d33fcaff028ad6eb13ed5bf 127.0.0.1:7004 127.0.0.1:7000 | |||||||||||
$ ./redis-trib.rb add-node --slave --master-id eb6c6a4924cd449dcac420159cab592bc7dc8a4e 127.0.0.1:7005 127.0.0.1:7001 | |||||||||||
$ ./redis-trib.rb add-node --slave --master-id 6082772a27ae6465b9f3d26959e1de5991b41356 127.0.0.1:7006 127.0.0.1:7002 |
如图构筑完成。
看一下7000
$ redis-cli -p 7000 cluster nodes
结果如下:
004e547e24fbdede970cd95a8801fdef6c51ee3c 127.0.0.1:7006 slave 6082772a27ae6465b9f3d26959e1de5991b41356 0 1458647137056 3 connected | ||||||||||||
00697c7f90fc0d5a3d1c55bf51b2790881b6c36a 127.0.0.1:7003 slave 8437edc8825ef2cb0d33fcaff028ad6eb13ed5bf 0 1458647136055 1 connected | ||||||||||||
8437edc8825ef2cb0d33fcaff028ad6eb13ed5bf 127.0.0.1:7000 myself,master - 0 0 1 connected 0-5460 | ||||||||||||
eb7278d6b3018e321d1fdb4a79e630d295776e63 127.0.0.1:7005 slave eb6c6a4924cd449dcac420159cab592bc7dc8a4e 0 1458647141066 2 connected | ||||||||||||
f0784fa504d9a64ba3cedf8a66d2c23cea9f6e16 127.0.0.1:7004 slave 8437edc8825ef2cb0d33fcaff028ad6eb13ed5bf 0 1458647139061 1 connected | ||||||||||||
eb6c6a4924cd449dcac420159cab592bc7dc8a4e 127.0.0.1:7001 master - 0 1458647140064 2 connected 5461-10922 | ||||||||||||
6082772a27ae6465b9f3d26959e1de5991b41356 127.0.0.1:7002 master - 0 1458647138058 3 connected 10923-16383 |
测试一下,杀掉7002,sudo kill 23217
如上图,7002的仆从7006自动上位变成主,同时仆从自动平均分配,7000有两个仆从,其中一个7003给了刚上位的7006当仆从。
再杀掉刚上位的7006
7006的仆从7003自动上位,没有多余仆从分给他了
最后测试一下,在7001存了一个andy,自动存到7002了,从7002成功取到。
1. [root@localhost redis01]# ./redis-cli -c -p 7001 | |||||
2. 127.0.0.1:7001> set name andy | |||||
3. -> Redirected to slot [5798] located at 127.0.0.1:7002 | |||||
4. OK | |||||
5. 127.0.0.1:7002> get name | |||||
6. "andy" |
头一回写文章,有点混乱,看不懂的直接私信我。