安装redis-集群 三主机六实例

1.准备环境: 三台干净的虚拟机 并关闭防火墙和selinux

  192.168.46.129    redis-1     7001   7002

  192.168.46.132    redis-2     7003   7004

  192.168.46.135   redis-3      7005    7006

2.安装redis

使用上面所给的脚本安装或者其他安装方式 脚本安装注意修改成可用的yum源

3.配置不同的节点及监听的端口 目录、端口区分并且对应起来

以192.168.46.129的7001/   7002/为例,另外两台机子操作相同

[root@redis-1 ~]# sh install_redis.sh
[root@redis-1 ~]# systemctl status redis
[root@redis-1 ~]# ss -lnatup | grep redis
tcp    LISTEN     0      128    127.0.0.1:6379                  *:*                   users:(("redis-server",pid=15831,fd=6)) 
[root@redis-1 ~]# kill -9 15831
[root@redis-1 ~]# mkdir -p /data/application/{7001,7002}
[root@redis-1 ~]# mkdir /data/application/7001/data
[root@redis-1 ~]# mkdir /data/application/7002/data
[root@redis-1 ~]# cd /data/application/
[root@redis-1 application]# vim 7001/redis.conf

在redis.conf中添加如下配置  另外两台机子操作相同,注意修改端口。

ort 7001
cluster-enabled yes
cluster-config-file nodes.conf
cluster-node-timeout 5000
appendonly yes
daemonize yes
bind 0.0.0.0
pidfile  /data/application/7001/redis_7001.pid
dir  /data/application/7001/data

 192.168.46.129的7002/同理

[root@redis-1 application]# vim 7001/redis.conf

 将以下配置加入redis.conf文件

ort 7002
cluster-enabled yes
cluster-config-file nodes.conf
cluster-node-timeout 5000
appendonly yes
daemonize yes
bind 0.0.0.0
pidfile  /data/application/7002/redis_7002.pid
dir  /data/application/7002/data

以上面相同的操作完成 192.168.46.132  7003/   7004/     以及  192.168.46.135   7005/    7006/  的配置。注意修改创建的目录以及配置文件内的端口、路径、文件的数字。

 4.添加完配置后,启动服务,并查看端口是否正常在监听状态

[root@redis-1 application]# ./redis-5.0.10/src/redis-server 7001/redis.conf 
15892:C 02 Nov 2023 13:05:03.143 # oO0OoO0OoO0Oo Redis is starting oO0OoO0OoO0Oo
15892:C 02 Nov 2023 13:05:03.143 # Redis version=5.0.10, bits=64, commit=00000000, modified=0, pid=15892, just started
15892:C 02 Nov 2023 13:05:03.143 # Configuration loaded
[root@redis-1 application]# ss -lnatup | grep redis
tcp    LISTEN     0      128       *:17001                 *:*                   users:(("redis-server",pid=15893,fd=9))
tcp    LISTEN     0      128       *:7001                  *:*                   users:(("redis-server",pid=15893,fd=6))
[root@redis-1 application]# ./redis-5.0.10/src/redis-server 7002/redis.conf 
15899:C 02 Nov 2023 13:05:17.784 # oO0OoO0OoO0Oo Redis is starting oO0OoO0OoO0Oo
15899:C 02 Nov 2023 13:05:17.784 # Redis version=5.0.10, bits=64, commit=00000000, modified=0, pid=15899, just started
15899:C 02 Nov 2023 13:05:17.784 # Configuration loaded
[root@redis-1 application]# ss -lnatup | grep redis
tcp    LISTEN     0      128       *:17001                 *:*                   users:(("redis-server",pid=15893,fd=9))
tcp    LISTEN     0      128       *:17002                 *:*                   users:(("redis-server",pid=15900,fd=9))
tcp    LISTEN     0      128       *:7001                  *:*                   users:(("redis-server",pid=15893,fd=6))
tcp    LISTEN     0      128       *:7002                  *:*                   users:(("redis-server",pid=15900,fd=6))

 以相同方式启动 192.168.46.132  7003/   7004/     以及  192.168.46.135   7005/    7006/ 并查看端口是否正常在监听状态

5、创建集群

三台机子配置完成且所有服务启动成功后,任选一台机子创建集群

[root@redis-1 application]# cd redis-5.0.10/src/
[root@redis-1 src]# pwd
/data/application/redis-5.0.10/src
[root@redis-1 src]# ./redis-cli --cluster create --cluster-replicas 1 192.168.46.129:7001 192.168.46.129:7002 192.168.46.132:7003 192.168.46.132:7004 192.168.46.135:7005 192.168.46.135:7006

5、登录集群并测试

a.登陆时记得加-c,不然会报以下错误

[root@redis-1 src]# ./redis-cli -h 192.168.46.129 -p 7001
192.168.46.129:7001> set name xiaoming
(error) MOVED 12182 192.168.46.135:7005

 b.正确登录方式

[root@redis-1 src]# ./redis-cli -c -h 192.168.46.129 -p 7001
192.168.46.129:7001> set name xiaoming
-> Redirected to slot [12182] located at 192.168.46.135:7005
OK

1、写入数据,看如何分配

[root@redis-1 src]#  ./redis-cli -c -h 192.168.46.129 -p 7001
192.168.46.129:7001> set name wanglin
-> Redirected to slot [5798] located at 192.168.46.135:7006
OK
192.168.46.135:7006> set age 1800
-> Redirected to slot [741] located at 192.168.46.132:7004
OK
192.168.46.132:7004> set sex man
OK

结论:随机分配在不同的节点

2、查看是否在任意节点都能查到数据

a.登录不同节点查询1中输入的数据

[root@redis-1 src]#  ./redis-cli -c -h 192.168.46.129 -p 7002
192.168.46.129:7002> get name
-> Redirected to slot [5798] located at 192.168.46.135:7006
"wanglin"
[root@redis-1 src]#  ./redis-cli -c -h 192.168.46.132 -p 7003
192.168.46.132:7003> get age
-> Redirected to slot [741] located at 192.168.46.132:7004
"1800"
[root@redis-1 src]#  ./redis-cli -c -h 192.168.46.135 -p 7006
192.168.46.135:7006> get sex
-> Redirected to slot [2584] located at 192.168.46.132:7004
"man"

 结论:无论是哪个节点都可以查询到数据 

3、宕机测试,停某一个主,看集群状态变化,在启动停止的主,看集群的状态变化

a.登录任意一个redis查看集群信息

[root@redis-1 src]#  ./redis-cli -c -h 192.168.46.129 -p 7001
192.168.46.129:7001> cluster nodes
3f25e206a5df9ed60c1de89b6956e891370ba312 192.168.46.135:7006@17006 master - 0 1698916073722 7 connected 5461-10922
d5a799a486efe90c6aa20e45e3d171d83b45108b 192.168.46.132:7003@17003 slave 3f25e206a5df9ed60c1de89b6956e891370ba312 0 1698916074727 7 connected
8c17c775d53d49843378ca9c5adf61b641046e22 192.168.46.129:7002@17002 slave bbf159991cb2a5ca5debfbaf828dd3d411a86bb3 0 1698916072716 5 connected
bbf159991cb2a5ca5debfbaf828dd3d411a86bb3 192.168.46.135:7005@17005 master - 0 1698916073220 5 connected 10923-16383
63cf5411d594fb606584991f032b1e08d59258c8 192.168.46.129:7001@17001 myself,slave 863b12c51f8366998e4652869d5f21342fa50c88 0 1698916071000 1 connected
863b12c51f8366998e4652869d5f21342fa50c88 192.168.46.132:7004@17004 master - 0 1698916074224 8 connected 0-5460

 b.根据查询结果 92.168.46.135:7005(主)和192.168.46.129:7002(从)是一对主从 将虚拟机ip为192.168.46.135的7005 端口停掉

[root@redis-3 ~]# ss -lnatup | grep redis | grep LISTEN 
tcp    LISTEN     0      128       *:17006                 *:*                   users:(("redis-server",pid=16217,fd=9))
tcp    LISTEN     0      128       *:7005                  *:*                   users:(("redis-server",pid=16212,fd=6))
tcp    LISTEN     0      128       *:7006                  *:*                   users:(("redis-server",pid=16217,fd=6))
tcp    LISTEN     0      128       *:17005                 *:*                   users:(("redis-server",pid=16212,fd=9))
[root@redis-3 ~]# kill -9 16212

 c.重新查看集群信息,发现192.168.46.135:7005 已经报错  192.168.46.129:7002 变为master

[root@redis-1 src]#  ./redis-cli -c -h 192.168.46.129 -p 7001
192.168.46.129:7001> cluster nodes
3f25e206a5df9ed60c1de89b6956e891370ba312 192.168.46.135:7006@17006 master - 0 1698916402982 7 connected 5461-10922
d5a799a486efe90c6aa20e45e3d171d83b45108b 192.168.46.132:7003@17003 slave 3f25e206a5df9ed60c1de89b6956e891370ba312 0 1698916403488 7 connected
8c17c775d53d49843378ca9c5adf61b641046e22 192.168.46.129:7002@17002 master - 0 1698916402982 9 connected 10923-16383
bbf159991cb2a5ca5debfbaf828dd3d411a86bb3 192.168.46.135:7005@17005 master,fail - 1698916310990 1698916309884 5 disconnected
63cf5411d594fb606584991f032b1e08d59258c8 192.168.46.129:7001@17001 myself,slave 863b12c51f8366998e4652869d5f21342fa50c88 0 1698916403000 1 connected
863b12c51f8366998e4652869d5f21342fa50c88 192.168.46.132:7004@17004 master - 0 1698916404492 8 connected 0-5460

d.重启 192.168.46.135:7005

[root@redis-3 ~]# /data/application/redis-5.0.10/src/redis-server /data/application/7005/redis.conf 
16798:C 02 Nov 2023 17:15:08.465 # oO0OoO0OoO0Oo Redis is starting oO0OoO0OoO0Oo
16798:C 02 Nov 2023 17:15:08.465 # Redis version=5.0.10, bits=64, commit=00000000, modified=0, pid=16798, just started
16798:C 02 Nov 2023 17:15:08.465 # Configuration loaded

e.再次查看集群信息,发现192.168.46.135:7005与192.168.46.129:7002主从已互换

[root@redis-2 src]#  ./redis-cli -c -h 192.168.46.129 -p 7001
192.168.46.129:7001> cluster nodes
3f25e206a5df9ed60c1de89b6956e891370ba312 192.168.46.135:7006@17006 master - 0 1698916555102 7 connected 5461-10922
d5a799a486efe90c6aa20e45e3d171d83b45108b 192.168.46.132:7003@17003 slave 3f25e206a5df9ed60c1de89b6956e891370ba312 0 1698916554398 7 connected
8c17c775d53d49843378ca9c5adf61b641046e22 192.168.46.129:7002@17002 master - 0 1698916554900 9 connected 10923-16383
bbf159991cb2a5ca5debfbaf828dd3d411a86bb3 192.168.46.135:7005@17005 slave 8c17c775d53d49843378ca9c5adf61b641046e22 0 1698916555906 9 connected
63cf5411d594fb606584991f032b1e08d59258c8 192.168.46.129:7001@17001 myself,slave 863b12c51f8366998e4652869d5f21342fa50c88 0 1698916553000 1 connected
863b12c51f8366998e4652869d5f21342fa50c88 192.168.46.132:7004@17004 master - 0 1698916555404 8 connected 0-5460

结论:主从互换

4、停掉一对主从,看集群是否正常

[root@redis-2 src]#  ./redis-cli -c -h 192.168.46.129 -p 7001
192.168.46.129:7001> cluster nodes
3f25e206a5df9ed60c1de89b6956e891370ba312 192.168.46.135:7006@17006 master - 0 1698916744337 7 connected 5461-10922
d5a799a486efe90c6aa20e45e3d171d83b45108b 192.168.46.132:7003@17003 slave 3f25e206a5df9ed60c1de89b6956e891370ba312 0 1698916745000 7 connected
8c17c775d53d49843378ca9c5adf61b641046e22 192.168.46.129:7002@17002 master - 0 1698916745343 9 connected 10923-16383
bbf159991cb2a5ca5debfbaf828dd3d411a86bb3 192.168.46.135:7005@17005 slave 8c17c775d53d49843378ca9c5adf61b641046e22 0 1698916745042 9 connected
63cf5411d594fb606584991f032b1e08d59258c8 192.168.46.129:7001@17001 myself,slave 863b12c51f8366998e4652869d5f21342fa50c88 0 1698916742000 1 connected
863b12c51f8366998e4652869d5f21342fa50c88 192.168.46.132:7004@17004 master - 0 1698916743333 8 connected 0-5460
192.168.46.129:7001> 

a.根据查询结果可知192.168.46.135:7006和192.168.46.132:7003是一对主从分别将他们停掉

[root@redis-2 src]# ss -lnatup | grep redis | grep LISTEN 
tcp    LISTEN     0      128       *:17003                 *:*                   users:(("redis-server",pid=16320,fd=9))
tcp    LISTEN     0      128       *:17004                 *:*                   users:(("redis-server",pid=16256,fd=9))
tcp    LISTEN     0      128       *:7003                  *:*                   users:(("redis-server",pid=16320,fd=6))
tcp    LISTEN     0      128       *:7004                  *:*                   users:(("redis-server",pid=16256,fd=6))
[root@redis-2 src]# kill -9 16320
[root@redis-3 ~]# ss -lnatup | grep redis | grep LISTEN 
tcp    LISTEN     0      128       *:17006                 *:*                   users:(("redis-server",pid=16217,fd=9))
tcp    LISTEN     0      128       *:7005                  *:*                   users:(("redis-server",pid=16799,fd=6))
tcp    LISTEN     0      128       *:7006                  *:*                   users:(("redis-server",pid=16217,fd=6))
tcp    LISTEN     0      128       *:17005                 *:*                   users:(("redis-server",pid=16799,fd=9))
[root@redis-3 ~]# kill -9 16217

b.登录 redis  产看集群  并定义变量进行测试

[root@redis-1 src]# ./redis-cli -c -h 192.168.46.129 -p 7001
192.168.46.129:7001> cluster nodes
3f25e206a5df9ed60c1de89b6956e891370ba312 192.168.46.135:7006@17006 master,fail - 1698917022330 1698917020722 7 disconnected 5461-10922
d5a799a486efe90c6aa20e45e3d171d83b45108b 192.168.46.132:7003@17003 slave,fail 3f25e206a5df9ed60c1de89b6956e891370ba312 1698917026260 1698917024749 7 disconnected
8c17c775d53d49843378ca9c5adf61b641046e22 192.168.46.129:7002@17002 master - 0 1698917101342 9 connected 10923-16383
bbf159991cb2a5ca5debfbaf828dd3d411a86bb3 192.168.46.135:7005@17005 slave 8c17c775d53d49843378ca9c5adf61b641046e22 0 1698917102853 9 connected
63cf5411d594fb606584991f032b1e08d59258c8 192.168.46.129:7001@17001 myself,slave 863b12c51f8366998e4652869d5f21342fa50c88 0 1698917099000 1 connected
863b12c51f8366998e4652869d5f21342fa50c88 192.168.46.132:7004@17004 master - 0 1698917103359 8 connected 0-5460
192.168.46.129:7001> set name xiaoming
(error) CLUSTERDOWN The cluster is down

结论:定义变量时报错,集群已经不正常

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值