Redis cluster集群搭建集群增删集群节点

本文详细介绍了如何在三台Linux服务器上搭建RedisCluster,包括配置网络、安装Redis、创建配置文件、启动服务以及验证集群。同时,还展示了如何使用Java和SpringBoot操作Redis集群。
摘要由CSDN通过智能技术生成

1.Redis cluster集群架构(本机ip:192.168.2.100)

在这里插入图片描述
建立三台linux服务器,分别是192.168.2.61、192.168.2.62、192.168.2.63

1.1.建立192.168.2.61Linux服务器

1.配置Linux服务器

# 在 /etc/sysconfig/network-scripts/ifcfg-eno16777736文件里做如下配置
TYPE=Ethernet # 网络类型为以太网
BOOTPROTO=static # 手动分配ip
DEVICE=eno16777736 # 网卡设备名,设备名一定要跟文件名一致
ONBOOT=yes # 该网卡是否随网络服务启动
IPADDR=192.168.2.61# 该网卡ip地址
NETMASK=255.255.255.0 # 子网掩码
GATEWAY=192.168.2.1 # 网关
DNS1=8.8.8.8 # DNS,8.8.8.8为Google提供的免费DNS服务器的IP地址

# 2.	配置网络工作
在/etc/sysconfig/network文件里增加如下配置
NETWORKING=yes # 网络是否工作,此处一定不能为no

# 3.	配置公共DNS服务(可选)
在/etc/resolv.conf文件里增加如下配置
nameserver 8.8.8.8

# 4.	关闭防火墙
#systemctl stop firewalld # 临时关闭防火墙
#systemctl disable firewalld # 禁止开机启动

# 5.	重启网络服务
#service network restart

2.安装redis

安装步骤:
# 安装gcc
yum install gcc

# 把下载好的redis-5.0.3.tar.gz放在/usr/local文件夹下,并解压
wget http://download.redis.io/releases/redis-5.0.3.tar.gz
tar -zxvf redis-5.0.3.tar.gz
cd redis-5.0.3

# 进入到解压好的redis-5.0.3目录下,进行编译与安装
make

3.创建文件夹并先8001和8004创建redis.config文件

8004同8001

第一步:在第一台机器的/usr/local下创建文件夹redis-cluster,然后在其下面分别创建2个文件夾如下
(1)mkdir -p /usr/local/redis-cluster
(2)mkdir 8001 8004

第一步:把之前的redis.conf配置文件copy到8001下,修改如下内容:
(1)daemonize yes
(2)port 8001(分别对每个机器的端口号进行设置)
(3)pidfile /var/run/redis_8001.pid  # 把pid进程号写入pidfile配置的文件
(4)dir /usr/local/redis-cluster/8001/(指定数据文件存放位置,必须要指定不同的目录位置,不然会丢失数据)
(5)cluster-enabled yes(启动集群模式)
(6)cluster-config-file nodes-8001.conf(集群节点信息文件,这里800x最好和port对应上)
(7)cluster-node-timeout 10000
 (8)# bind 127.0.0.1(bind绑定的是自己机器网卡的ip,如果有多块网卡可以配多个ip,代表允许客户端通过机器的哪些网卡ip去访问,内网一般可以不配置bind,注释掉即可)
 (9)protected-mode  no   (关闭保护模式)
 (10)appendonly yes
如果要设置密码需要增加如下配置:
 (11)requirepass  nickel(设置redis访问密码)
 (12)masterauth nickel (设置集群节点间访问密码,跟上面一致)

4.启动redis服务

 /usr/local/redis-5.0.3/src/redis-server /usr/local/redis-cluster/8001/redis.conf
  
 /usr/local/redis-5.0.3/src/redis-server /usr/local/redis-cluster/8004/redis.conf

5.验证是否启动成功

ps -ef | grep redis

在这里插入图片描述

1.2.建立192.168.2.62Linux服务器

1.配置Linux服务器

# 在 /etc/sysconfig/network-scripts/ifcfg-eno16777736文件里做如下配置
TYPE=Ethernet # 网络类型为以太网
BOOTPROTO=static # 手动分配ip
DEVICE=eno16777736 # 网卡设备名,设备名一定要跟文件名一致
ONBOOT=yes # 该网卡是否随网络服务启动
IPADDR=192.168.2.62# 该网卡ip地址
NETMASK=255.255.255.0 # 子网掩码
GATEWAY=192.168.2.1 # 网关
DNS1=8.8.8.8 # DNS,8.8.8.8为Google提供的免费DNS服务器的IP地址

# 2.	配置网络工作
在/etc/sysconfig/network文件里增加如下配置
NETWORKING=yes # 网络是否工作,此处一定不能为no

# 3.	配置公共DNS服务(可选)
在/etc/resolv.conf文件里增加如下配置
nameserver 8.8.8.8

# 4.	关闭防火墙
#systemctl stop firewalld # 临时关闭防火墙
#systemctl disable firewalld # 禁止开机启动

# 5.	重启网络服务
#service network restart

2.安装redis

安装步骤:
# 安装gcc
yum install gcc

# 把下载好的redis-5.0.3.tar.gz放在/usr/local文件夹下,并解压
wget http://download.redis.io/releases/redis-5.0.3.tar.gz
tar -zxvf redis-5.0.3.tar.gz
cd redis-5.0.3

# 进入到解压好的redis-5.0.3目录下,进行编译与安装
make

3.创建文件夹并先8002和8005创建redis.config文件

8005同8002

第一步:在第一台机器的/usr/local下创建文件夹redis-cluster,然后在其下面分别创建2个文件夾如下
(1)mkdir -p /usr/local/redis-cluster
(2)mkdir 8002 8005

第一步:把之前的redis.conf配置文件copy到8001下,修改如下内容:
(1)daemonize yes
(2)port 8002(分别对每个机器的端口号进行设置)
(3)pidfile /var/run/redis_8002.pid  # 把pid进程号写入pidfile配置的文件
(4)dir /usr/local/redis-cluster/8002/(指定数据文件存放位置,必须要指定不同的目录位置,不然会丢失数据)
(5)cluster-enabled yes(启动集群模式)
(6)cluster-config-file nodes-8002.conf(集群节点信息文件,这里800x最好和port对应上)
(7)cluster-node-timeout 10000
 (8)# bind 127.0.0.1(bind绑定的是自己机器网卡的ip,如果有多块网卡可以配多个ip,代表允许客户端通过机器的哪些网卡ip去访问,内网一般可以不配置bind,注释掉即可)
 (9)protected-mode  no   (关闭保护模式)
 (10)appendonly yes
如果要设置密码需要增加如下配置:
 (11)requirepass  nickel(设置redis访问密码)
 (12)masterauth nickel (设置集群节点间访问密码,跟上面一致)

4.启动redis服务

 /usr/local/redis-5.0.3/src/redis-server /usr/local/redis-cluster/8002/redis.conf
  
 /usr/local/redis-5.0.3/src/redis-server /usr/local/redis-cluster/8005/redis.conf

5.验证是否启动成功

ps -ef | grep redis

在这里插入图片描述

1.3.建立192.168.2.63Linux服务器

1.配置Linux服务器

# 在 /etc/sysconfig/network-scripts/ifcfg-eno16777736文件里做如下配置
TYPE=Ethernet # 网络类型为以太网
BOOTPROTO=static # 手动分配ip
DEVICE=eno16777736 # 网卡设备名,设备名一定要跟文件名一致
ONBOOT=yes # 该网卡是否随网络服务启动
IPADDR=192.168.2.63# 该网卡ip地址
NETMASK=255.255.255.0 # 子网掩码
GATEWAY=192.168.2.1 # 网关
DNS1=8.8.8.8 # DNS,8.8.8.8为Google提供的免费DNS服务器的IP地址

# 2.	配置网络工作
在/etc/sysconfig/network文件里增加如下配置
NETWORKING=yes # 网络是否工作,此处一定不能为no

# 3.	配置公共DNS服务(可选)
在/etc/resolv.conf文件里增加如下配置
nameserver 8.8.8.8

# 4.	关闭防火墙
#systemctl stop firewalld # 临时关闭防火墙
#systemctl disable firewalld # 禁止开机启动

# 5.	重启网络服务
#service network restart

2.安装redis

安装步骤:
# 安装gcc
yum install gcc

# 把下载好的redis-5.0.3.tar.gz放在/usr/local文件夹下,并解压
wget http://download.redis.io/releases/redis-5.0.3.tar.gz
tar -zxvf redis-5.0.3.tar.gz
cd redis-5.0.3

# 进入到解压好的redis-5.0.3目录下,进行编译与安装
make

3.创建文件夹并先8003和8006创建redis.config文件

8006同8003

第一步:在第一台机器的/usr/local下创建文件夹redis-cluster,然后在其下面分别创建2个文件夾如下
(1)mkdir -p /usr/local/redis-cluster
(2)mkdir 8003 8006

第一步:把之前的redis.conf配置文件copy到8003下,修改如下内容:
(1)daemonize yes
(2)port 8003(分别对每个机器的端口号进行设置)
(3)pidfile /var/run/redis_8003.pid  # 把pid进程号写入pidfile配置的文件
(4)dir /usr/local/redis-cluster/8003/(指定数据文件存放位置,必须要指定不同的目录位置,不然会丢失数据)
(5)cluster-enabled yes(启动集群模式)
(6)cluster-config-file nodes-8003.conf(集群节点信息文件,这里800x最好和port对应上)
(7)cluster-node-timeout 10000
 (8)# bind 127.0.0.1(bind绑定的是自己机器网卡的ip,如果有多块网卡可以配多个ip,代表允许客户端通过机器的哪些网卡ip去访问,内网一般可以不配置bind,注释掉即可)
 (9)protected-mode  no   (关闭保护模式)
 (10)appendonly yes
如果要设置密码需要增加如下配置:
 (11)requirepass  nickel(设置redis访问密码)
 (12)masterauth nickel (设置集群节点间访问密码,跟上面一致)

4.启动redis服务

 /usr/local/redis-5.0.3/src/redis-server /usr/local/redis-cluster/8003/redis.conf
  
 /usr/local/redis-5.0.3/src/redis-server /usr/local/redis-cluster/8006/redis.conf

5.验证是否启动成功

ps -ef | grep redis

在这里插入图片描述

1.4.执行命令,创建redis cluster

/usr/local/redis-5.0.3/src/redis-cli -a nickel --cluster create --cluster-replicas 1 192.168.2.61:8001 192.168.2.62:8002 192.168.2.63:8003 192.168.2.61:8004 192.168.2.62:8005 192.168.2.63:8006 

在这里插入图片描述

1.5.验证集群

/usr/local/redis-5.0.3/src/redis-cli -a nickel -c -h 192.168.2.61 -p 8001

 cluster info

(1)连接任意一个客户端即可:./redis-cli -c -h -p (-a访问服务端密码,-c表示集群模式,指定ip地址和端口号)
如:/usr/local/redis-5.0.3/src/redis-cli -a zhuge -c -h 192.168.0.61 -p 800*
(2)进行验证: cluster info(查看集群信息)、cluster nodes(查看节点列表)
(3)进行数据操作验证
(4)关闭集群则需要逐个进行关闭,使用命令:
/usr/local/redis-5.0.3/src/redis-cli -a zhuge -c -h 192.168.0.60 -p 800* shutdown
在这里插入图片描述

1.6.java操作redis集群

1.导入pom文件

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

2.方法调用redis集群

package org.example;

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

import java.io.IOException;
import java.util.HashSet;
import java.util.Set;

public class RedisClousterTest {
    public static void main(String[] args) throws IOException {
        JedisPoolConfig config=new JedisPoolConfig();
        config.setMaxTotal(20);
        config.setMaxIdle(10);
        config.setMinIdle(5);


        Set<HostAndPort> jedisClusterNode=new HashSet<HostAndPort>();
        jedisClusterNode.add(new HostAndPort("192.168.2.61",8001));
        jedisClusterNode.add(new HostAndPort("192.168.2.62",8002));
        jedisClusterNode.add(new HostAndPort("192.168.2.63",8003));
        jedisClusterNode.add(new HostAndPort("192.168.2.61",8004));
        jedisClusterNode.add(new HostAndPort("192.168.2.62",8005));
        jedisClusterNode.add(new HostAndPort("192.168.2.63",8006));

        JedisCluster jedisCluster=null;
        try {
            jedisCluster=new JedisCluster(jedisClusterNode,6000,500,10,"nickel",config);
            System.out.println(jedisCluster.set("cluster","nickel"));
            System.out.println(jedisCluster.get("cluster"));
        }catch (Exception e){
            e.printStackTrace();
        }finally {
            if(jedisCluster!=null){
                jedisCluster.close();
            }
        }
    }
}

1.7.Spring Boot整合Redis集群

1.导入pom文件依赖

 <dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-data-redis</artifactId>
		</dependency>

		<dependency>
			<groupId>org.apache.commons</groupId>
			<artifactId>commons-pool2</artifactId>
		</dependency>

2.配置application.yml文件

server:
  port: 8080

spring:
  redis:
    database: 0
    timeout: 3000
    password: nickel
    cluster:
      nodes: 192.168.2.61:8001,192.168.2.62:8002,192.168.2.63:8003,192.168.2.61:8004,192.168.2.62:8005,192.168.2.63:8006
    lettuce:
      pool:
        max-idle: 50
        max-wait: 1000
        min-idle: 10
        max-active:  100

3.设置访问

package com.redis;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.StringRedisTemplate;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class TestRedisCluster {

    private static final Logger logger = LoggerFactory.getLogger(IndexController.class);

    @Autowired
    private StringRedisTemplate stringRedisTemplate;

    @RequestMapping("/test_cluster")
    public void testCluster() throws InterruptedException {
        stringRedisTemplate.opsForValue().set("nickel", "666");
        System.out.println(stringRedisTemplate.opsForValue().get("nickel"));
    }

}

在这里插入图片描述

1.8.新增集群节点

1新增8007、8008集群节点文件夹

mkdir 8007 8008

在这里插入图片描述

2把从8001复制redis.conf到8007、8008文件夹中,并修改其中配置

8008同下

第一步:把之前的redis.conf配置文件copy到8003下,修改如下内容:
(1)daemonize yes
(2)port 8007(分别对每个机器的端口号进行设置)
(3)pidfile /var/run/redis_8007.pid  # 把pid进程号写入pidfile配置的文件
(4)dir /usr/local/redis-cluster/8007/(指定数据文件存放位置,必须要指定不同的目录位置,不然会丢失数据)
(5)cluster-enabled yes(启动集群模式)
(6)cluster-config-file nodes-8007.conf(集群节点信息文件,这里800x最好和port对应上)
(7)cluster-node-timeout 10000
 (8)# bind 127.0.0.1(bind绑定的是自己机器网卡的ip,如果有多块网卡可以配多个ip,代表允许客户端通过机器的哪些网卡ip去访问,内网一般可以不配置bind,注释掉即可)
 (9)protected-mode  no   (关闭保护模式)
 (10)appendonly yes
如果要设置密码需要增加如下配置:
 (11)requirepass  nickel(设置redis访问密码)
 (12)masterauth nickel (设置集群节点间访问密码,跟上面一致)

在这里插入图片描述
在这里插入图片描述

3启动8007、8008配置文件

/usr/local/redis-5.0.3/src/redis-server /usr/local/redis-cluster/8007/redis.conf 

/usr/local/redis-5.0.3/src/redis-server /usr/local/redis-cluster/8008/redis.conf 

ps -ef | grep redis

在这里插入图片描述
在这里插入图片描述

3把8007加入集群

##获取帮助
src/redis‐cli ‐‐cluster help

/usr/local/redis-5.0.3/src/redis-cli -a nickel --cluster add-node 192.168.1.61:8007 192.168.1.61:8001

在这里插入图片描述
在这里插入图片描述

4给8007分配槽位

/usr/local/redis-5.0.3/src/redis-cli -a nickel --cluster reshard 192.168.1.61 8001
How many slots do you want to move (from 1 to 16384)? 600
(ps:需要多少个槽移动到新的节点上,自己设置,比如600个hash槽)
What is the receiving node ID? 2728a594a0498e98e4b83a537e19f9a0a3790f38
(ps:把这600个hash槽移动到哪个节点上去,需要指定节点id)
Please enter all the source node IDs.
  Type 'all' to use all the nodes as source nodes for the hash slots.
  Type 'done' once you entered all the source nodes IDs.
Source node 1:all
(ps:输入all为从所有主节点(8001,8002,8003)中分别抽取相应的槽数指定到新节点中,抽取的总槽数为600个)
 ... ...
Do you want to proceed with the proposed reshard plan (yes/no)? yes
(ps:输入yes确认开始执行分片任务)
... ...

在这里插入图片描述

4把8008分配位8007的slave

1.9.删除集群节点8

在这里插入图片描述

1.删除节点8008

/usr/local/redis-5.0.3/src/redis-cli -a nickel --cluster del-node 192.168.1.61:8008  73d19fc3ad290ae8e71dd41a370ab73896d01720

在这里插入图片描述

2.删除节点8007卡槽及8007节点

/usr/local/redis-5.0.3/src/redis-cli -a zhuge --cluster reshard 192.168.0.61:8007

/usr/local/redis-5.0.3/src/redis-cli -a nickel --cluster del-node 192.168.1.61:8007 d6c52d01ccfa8d69861132ebe6006727f436a1ea
 ... ...
How many slots do you want to move (from 1 to 16384)? 600
What is the receiving node ID? dfca1388f124dec92f394a7cc85cf98cfa02f86f
(ps:这里是需要把数据移动到哪?8001的主节点id)
Please enter all the source node IDs.
  Type 'all' to use all the nodes as source nodes for the hash slots.
  Type 'done' once you entered all the source nodes IDs.
Source node 1:2728a594a0498e98e4b83a537e19f9a0a3790f38
(ps:这里是需要数据源,也就是我们的8007节点id)
Source node 2:done
(ps:这里直接输入done 开始生成迁移计划)
 ... ...
Do you want to proceed with the proposed reshard plan (yes/no)? Yes
(ps:这里输入yes开始迁移)

在这里插入图片描述
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值