第四阶段模块一作业

题目:
RedisCluster的安装、部署、扩容和Java客户端调用,如下图:
在这里插入图片描述
(1)搭建Redis5.0集群,要求三主三从,记录下安装步骤
(2)能够添加一主一从(Master4和Slaver4),记录下安装步骤
(3)能够通过JedisCluster向RedisCluster添加数据和取出数据

第一小题解题步骤:
拷贝redis-5.05.tar.gz的安装包到linux服务器,并解压

tar -zxvf redis-5.0.5.tar.gz -C /opt/modules/
[root@bfd01 software]# cd /opt/modules/
[root@bfd01 modules]# ll
drwxrwxr-x   6 root  root  4096 5月  16 2019 redis-5.0.5

创建集群安装目录

[root@bfd01 modules]# mkdir redis-cluster
[root@bfd01 modules]# cd redis-cluster/
[root@bfd01 redis-cluster]# mkdir master1
[root@bfd01 redis-cluster]# ll
总用量 24
drwxr-xr-x 2 root root 4096 6月  17 14:43 master1

安装redis

cd /opt/modules/redis-5.0.5/
make install PREFIX=/opt/modules/redis-cluster/master1

拷贝redis.conf文件到master1目录下

cd /opt/modules/redis-cluster/master1/bin/
[root@bfd01 bin]# cp /opt/modules/redis-5.0.5/redis.conf ./
[root@bfd01 bin]# ll
总用量 54384
-rwxr-xr-x 1 root root  9202987 6月  17 14:46 redis-benchmark
-rwxr-xr-x 1 root root 12277413 6月  17 14:46 redis-check-aof
-rwxr-xr-x 1 root root 12277413 6月  17 14:46 redis-check-rdb
-rwxr-xr-x 1 root root  9580032 6月  17 14:46 redis-cli
-rw-r--r-- 1 root root    61797 6月  17 14:48 redis.conf
lrwxrwxrwx 1 root root       12 6月  17 14:46 redis-sentinel -> redis-server
-rwxr-xr-x 1 root root 12277413 6月  17 14:46 redis-server

按照如下截图编辑redis.conf
在这里插入图片描述在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
复制文件夹

[root@bfd01 redis-cluster]# cp -r master1 master2
[root@bfd01 redis-cluster]# cp -r master1 master3
[root@bfd01 redis-cluster]# cp -r master1 slaver1
[root@bfd01 redis-cluster]# cp -r master1 slaver2
[root@bfd01 redis-cluster]# cp -r master1 slaver3
[root@bfd01 redis-cluster]# ll
总用量 24
drwxr-xr-x 3 root root 4096 6月  17 14:46 master1
drwxr-xr-x 3 root root 4096 6月  17 14:55 master2
drwxr-xr-x 3 root root 4096 6月  17 14:55 master3
drwxr-xr-x 3 root root 4096 6月  17 14:55 slaver1
drwxr-xr-x 3 root root 4096 6月  17 14:55 slaver2
drwxr-xr-x 3 root root 4096 6月  17 14:55 slaver3

分别修改master2,master3,slaver1,slaver2,slaver3中的redis.conf文件中的端口为7002,7003,7004,7005,和7006

[root@bfd01 redis-cluster]# vi master2/bin/redis.conf 
[root@bfd01 redis-cluster]# vi master3/bin/redis.conf 
[root@bfd01 redis-cluster]# vi slaver1/bin/redis.conf
[root@bfd01 redis-cluster]# vi slaver2/bin/redis.conf
[root@bfd01 redis-cluster]# vi slaver3/bin/redis.conf

创建start.sh脚本并修改权限

vi start.sh
#! /bin/bash
cd /opt/modules/redis-cluster/master1/bin/
./redis-server redis.conf
cd /opt/modules/redis-cluster/master2/bin/
./redis-server redis.conf
cd /opt/modules/redis-cluster/master3/bin/
./redis-server redis.conf
cd /opt/modules/redis-cluster/slaver1/bin/
./redis-server redis.conf
cd /opt/modules/redis-cluster/slaver2/bin/
./redis-server redis.conf
cd /opt/modules/redis-cluster/slaver3/bin/
./redis-server redis.conf

chmod 777 start.sh

执行start.sh脚本,并查看进程

[root@bfd01 redis-cluster]# ./start.sh 
12788:C 17 Jun 2021 15:04:19.173 # oO0OoO0OoO0Oo Redis is starting oO0OoO0OoO0Oo
12788:C 17 Jun 2021 15:04:19.173 # Redis version=5.0.5, bits=64, commit=00000000, modified=0, pid=12788, just started
12788:C 17 Jun 2021 15:04:19.173 # Configuration loaded
12790:C 17 Jun 2021 15:04:19.177 # oO0OoO0OoO0Oo Redis is starting oO0OoO0OoO0Oo
12790:C 17 Jun 2021 15:04:19.177 # Redis version=5.0.5, bits=64, commit=00000000, modified=0, pid=12790, just started
12790:C 17 Jun 2021 15:04:19.177 # Configuration loaded
12792:C 17 Jun 2021 15:04:19.192 # oO0OoO0OoO0Oo Redis is starting oO0OoO0OoO0Oo
12792:C 17 Jun 2021 15:04:19.192 # Redis version=5.0.5, bits=64, commit=00000000, modified=0, pid=12792, just started
12792:C 17 Jun 2021 15:04:19.192 # Configuration loaded
12800:C 17 Jun 2021 15:04:19.219 # oO0OoO0OoO0Oo Redis is starting oO0OoO0OoO0Oo
12800:C 17 Jun 2021 15:04:19.219 # Redis version=5.0.5, bits=64, commit=00000000, modified=0, pid=12800, just started
12800:C 17 Jun 2021 15:04:19.219 # Configuration loaded
12805:C 17 Jun 2021 15:04:19.241 # oO0OoO0OoO0Oo Redis is starting oO0OoO0OoO0Oo
12805:C 17 Jun 2021 15:04:19.241 # Redis version=5.0.5, bits=64, commit=00000000, modified=0, pid=12805, just started
12805:C 17 Jun 2021 15:04:19.241 # Configuration loaded
12810:C 17 Jun 2021 15:04:19.262 # oO0OoO0OoO0Oo Redis is starting oO0OoO0OoO0Oo
12810:C 17 Jun 2021 15:04:19.262 # Redis version=5.0.5, bits=64, commit=00000000, modified=0, pid=12810, just started
12810:C 17 Jun 2021 15:04:19.262 # Configuration loaded

[root@bfd01 redis-cluster]# ps -ef |grep redis
root      12789      1  0 15:04 ?        00:00:00 ./redis-server *:7001 [cluster]
root      12791      1  0 15:04 ?        00:00:00 ./redis-server *:7002 [cluster]
root      12796      1  0 15:04 ?        00:00:00 ./redis-server *:7003 [cluster]
root      12804      1  0 15:04 ?        00:00:00 ./redis-server *:7004 [cluster]
root      12809      1  0 15:04 ?        00:00:00 ./redis-server *:7005 [cluster]
root      12814      1  0 15:04 ?        00:00:00 ./redis-server *:7006 [cluster]
root      12890   6505  0 15:04 pts/0    00:00:00 grep redis

创建redis集群

[root@bfd01 bin]# cd /opt/modules/redis-cluster/master1/bin/
[root@bfd01 bin]# ./redis-cli --cluster create 192.168.200.201:7001 192.168.200.201:7002 

使用客户端连接并查看集群情况

[root@bfd01 bin]# cd /opt/modules/redis-cluster/master1/bin/
[root@bfd01 bin]# ./redis-cli -p 7001 -c
127.0.0.1:7001> cluster nodes
d3b17538282ab227d9699391d8b033de5c7296f8 192.168.200.201:7005@17005 slave d3da5b93e98d04a403f86081baa9aa77e520671f 0 1623913722338 5 connected
3f8bb019d771009d870422974b70ab0c8dfcd05a 192.168.200.201:7001@17001 myself,master - 0 1623913721000 1 connected 0-5460
3ade0bfecd3f579609d293fc1e514ed19add4fe8 192.168.200.201:7004@17004 slave 3f8bb019d771009d870422974b70ab0c8dfcd05a 0 1623913723350 4 connected
d3da5b93e98d04a403f86081baa9aa77e520671f 192.168.200.201:7002@17002 master - 0 1623913721324 2 connected 5461-10922
071ffc5b6e4eb7cef271dd3eb90bcd2050141dc6 192.168.200.201:7006@17006 slave e90a73bbca14aba85e5dbab54a48a859946247a6 0 1623913722000 6 connected
e90a73bbca14aba85e5dbab54a48a859946247a6 192.168.200.201:7003@17003 master - 0 1623913722000 3 connected 10923-16383

第二小题解题步骤:
创建master4和slaver节点

[root@bfd01 redis-cluster]# cp -r master1 ./master4
[root@bfd01 redis-cluster]# cp -r master1 ./slaver4
[root@bfd01 redis-cluster]# ll
总用量 36
drwxr-xr-x 3 root root 4096 6月  17 14:46 master1
drwxr-xr-x 3 root root 4096 6月  17 14:55 master2
drwxr-xr-x 3 root root 4096 6月  17 14:55 master3
drwxr-xr-x 3 root root 4096 6月  17 15:10 master4
drwxr-xr-x 3 root root 4096 6月  17 14:55 slaver1
drwxr-xr-x 3 root root 4096 6月  17 14:55 slaver2
drwxr-xr-x 3 root root 4096 6月  17 14:55 slaver3
drwxr-xr-x 3 root root 4096 6月  17 15:10 slaver4
-rwxrwxrwx 1 root root  427 6月  17 15:02 start.sh

修改master4端口为7007,slaver4端口号为7008

[root@bfd01 redis-cluster]# vi master4/bin/redis.conf 
[root@bfd01 redis-cluster]# vi slaver4/bin/redis.conf 

先启动master4

[root@bfd01 redis-cluster]# ./master4/bin/redis-server ./master4/bin/redis.conf 
13929:C 17 Jun 2021 15:17:15.602 # oO0OoO0OoO0Oo Redis is starting oO0OoO0OoO0Oo
13929:C 17 Jun 2021 15:17:15.602 # Redis version=5.0.5, bits=64, commit=00000000, modified=0, pid=13929, just started
13929:C 17 Jun 2021 15:17:15.602 # Configuration loaded

查看进程

[root@bfd01 redis-cluster]# ps -ef |grep redis
root      12789      1  0 15:04 ?        00:00:01 ./redis-server *:7001 [cluster]
root      12791      1  0 15:04 ?        00:00:01 ./redis-server *:7002 [cluster]
root      12796      1  0 15:04 ?        00:00:01 ./redis-server *:7003 [cluster]
root      12804      1  0 15:04 ?        00:00:01 ./redis-server *:7004 [cluster]
root      12809      1  0 15:04 ?        00:00:01 ./redis-server *:7005 [cluster]
root      12814      1  0 15:04 ?        00:00:01 ./redis-server *:7006 [cluster]
root      14324      1  0 15:22 ?        00:00:00 ./master4/bin/redis-server *:7007 [cluster]

添加节点

[root@bfd01 bin]# ./redis-cli --cluster add-node 192.168.200.201:7007 192.168.200.201:7001
[OK] All nodes agree about slots configuration.
>>> Check for open slots...
>>> Check slots coverage...
[OK] All 16384 slots covered.
>>> Send CLUSTER MEET to node 192.168.200.201:7007 to make it join the cluster.
[OK] New node added correctly.

登录集群查看,发现7007节点已经添加成功

[root@bfd01 bin]# ./redis-cli -p 7001 -c
127.0.0.1:7001> cluster nodes
d3b17538282ab227d9699391d8b033de5c7296f8 192.168.200.201:7005@17005 slave d3da5b93e98d04a403f86081baa9aa77e520671f 0 1623914701908 5 connected
3f8bb019d771009d870422974b70ab0c8dfcd05a 192.168.200.201:7001@17001 myself,master - 0 1623914700000 1 connected 0-5460
3ade0bfecd3f579609d293fc1e514ed19add4fe8 192.168.200.201:7004@17004 slave 3f8bb019d771009d870422974b70ab0c8dfcd05a 0 1623914699889 4 connected
d3da5b93e98d04a403f86081baa9aa77e520671f 192.168.200.201:7002@17002 master - 0 1623914700896 2 connected 5461-10922
5111144f400a8810555fb27ad46ac9ad6a60cf4b 192.168.200.201:7007@17007 master - 0 1623914697000 0 connected
071ffc5b6e4eb7cef271dd3eb90bcd2050141dc6 192.168.200.201:7006@17006 slave e90a73bbca14aba85e5dbab54a48a859946247a6 0 1623914702917 6 connected
e90a73bbca14aba85e5dbab54a48a859946247a6 192.168.200.201:7003@17003 master - 0 1623914700000 3 connected 10923-16383

重新分配hash槽,输入下面命令后,顺序输入yes–>5111144f400a8810555fb27ad46ac9ad6a60cf4b–>3000–>all–>yes

[root@bfd01 bin]# ./redis-cli --cluster reshard 192.168.200.201:7007

登录可以发现已经为master4分配了hash槽

[root@bfd01 bin]# ./redis-cli -p 7001 -c
127.0.0.1:7001> cluster nodes
d3b17538282ab227d9699391d8b033de5c7296f8 192.168.200.201:7005@17005 slave d3da5b93e98d04a403f86081baa9aa77e520671f 0 1623915181055 5 connected
3f8bb019d771009d870422974b70ab0c8dfcd05a 192.168.200.201:7001@17001 myself,master - 0 1623915174000 1 connected 999-5460
3ade0bfecd3f579609d293fc1e514ed19add4fe8 192.168.200.201:7004@17004 slave 3f8bb019d771009d870422974b70ab0c8dfcd05a 0 1623915179032 4 connected
d3da5b93e98d04a403f86081baa9aa77e520671f 192.168.200.201:7002@17002 master - 0 1623915178000 2 connected 6462-10922
5111144f400a8810555fb27ad46ac9ad6a60cf4b 192.168.200.201:7007@17007 master - 0 1623915180045 7 connected 0-998 5461-6461 10923-11921
071ffc5b6e4eb7cef271dd3eb90bcd2050141dc6 192.168.200.201:7006@17006 slave e90a73bbca14aba85e5dbab54a48a859946247a6 0 1623915178000 6 connected
e90a73bbca14aba85e5dbab54a48a859946247a6 192.168.200.201:7003@17003 master - 0 1623915179000 3 connected 11922-16383
127.0.0.1:7001> 

添加slaver4节点
启动slaver4

[root@bfd01 bin]# cd /opt/modules/redis-cluster/slaver4/bin/
[root@bfd01 bin]# ./redis-server redis.conf 
15686:C 17 Jun 2021 15:34:54.412 # oO0OoO0OoO0Oo Redis is starting oO0OoO0OoO0Oo
15686:C 17 Jun 2021 15:34:54.412 # Redis version=5.0.5, bits=64, commit=00000000, modified=0, pid=15686, just started
15686:C 17 Jun 2021 15:34:54.412 # Configuration loaded

[root@bfd01 bin]# ps -ef |grep redis
root      12789      1  0 15:04 ?        00:00:03 ./redis-server *:7001 [cluster]
root      12791      1  0 15:04 ?        00:00:03 ./redis-server *:7002 [cluster]
root      12796      1  0 15:04 ?        00:00:03 ./redis-server *:7003 [cluster]
root      12804      1  0 15:04 ?        00:00:02 ./redis-server *:7004 [cluster]
root      12809      1  0 15:04 ?        00:00:02 ./redis-server *:7005 [cluster]
root      12814      1  0 15:04 ?        00:00:02 ./redis-server *:7006 [cluster]
root      14324      1  0 15:22 ?        00:00:02 ./master4/bin/redis-server *:7007 [cluster]        
root      15687      1  0 15:34 ?        00:00:00 ./redis-server *:7008 [cluster]

添加从节点,命令为,如果添加节点报错,先删除所有redis目录下的nodes.conf文件,然后重新创建集群,在重试即可
在这里插入图片描述

[root@bfd01 bin]# ./redis-cli --cluster add-node 192.168.200.201:7008 192.168.200.201:7007 --cluster-slave --cluster-master-id 5111144f400a8810555fb27ad46ac9ad6a60cf4b

[OK] All nodes agree about slots configuration.
>>> Check for open slots...
>>> Check slots coverage...
[OK] All 16384 slots covered.
>>> Send CLUSTER MEET to node 192.168.200.201:7008 to make it join the cluster.
Waiting for the cluster to join

>>> Configure node as replica of 192.168.200.201:7007.
[OK] New node added correctly.

查看节点情况

[root@bfd01 bin]# ./redis-cli -p 7001 -c
127.0.0.1:7001> cluster nodes
dfecde06b33df99d22b1354d40a180a81b2db3b2 192.168.200.201:7008@17008 slave 2ee61fa564882a6a4480f77106e54023545e76f8 0 1623917086293 7 connected
2ee61fa564882a6a4480f77106e54023545e76f8 192.168.200.201:7007@17007 master - 0 1623917084000 7 connected 0-998 5461-6461 10923-11921
bdc5f78011ac07d05169342a32ccb8a112e07442 192.168.200.201:7006@17006 slave 59b6e8c0a50aa6b0eb0121b4780669e22f7deba7 0 1623917085286 6 connected
d32b58a219b4e2607133827e3172aa6d0bf7889d 192.168.200.201:7005@17005 slave 448dce43a99b183404bff0a1715435e879e2c70a 0 1623917084000 5 connected
59b6e8c0a50aa6b0eb0121b4780669e22f7deba7 192.168.200.201:7001@17001 myself,master - 0 1623917083000 1 connected 999-5460
448dce43a99b183404bff0a1715435e879e2c70a 192.168.200.201:7003@17003 master - 0 1623917085000 3 connected 11922-16383
b909aea513356d07e34e4532ba108e99caf2e16b 192.168.200.201:7002@17002 master - 0 1623917082262 2 connected 6462-10922
bffdce21c2e154144e2c8c2f2ba7aea445de7772 192.168.200.201:7004@17004 slave b909aea513356d07e34e4532ba108e99caf2e16b 0 1623917084277 4 connected

第三小题解题步骤:
pom文件

<dependency>
    <groupId>redis.clients</groupId>
    <artifactId>jedis</artifactId>
    <version>3.3.0</version>
 </dependency>

代码:

package com.lagou;

import redis.clients.jedis.HostAndPort;
import redis.clients.jedis.JedisCluster;
import redis.clients.jedis.JedisPoolConfig;

import java.util.HashSet;

public class JedisDemo {
    public static void main(String[] args) {
        JedisPoolConfig config = new JedisPoolConfig();
        HashSet<HostAndPort> jedisClusterNode = new HashSet<HostAndPort>();
        jedisClusterNode.add(new HostAndPort("192.168.200.201",7001));
        jedisClusterNode.add(new HostAndPort("192.168.200.201",7002));
        jedisClusterNode.add(new HostAndPort("192.168.200.201",7003));
        jedisClusterNode.add(new HostAndPort("192.168.200.201",7004));
        jedisClusterNode.add(new HostAndPort("192.168.200.201",7005));
        jedisClusterNode.add(new HostAndPort("192.168.200.201",7006));
        jedisClusterNode.add(new HostAndPort("192.168.200.201",7007));
        jedisClusterNode.add(new HostAndPort("192.168.200.201",7008));
        JedisCluster jcd = new JedisCluster(jedisClusterNode, config);
        jcd.set("name:01","张飞");
        String name = jcd.get("name:01");
        System.out.println("name ==>" + name);
    }

}

结果:
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值