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

news2024/11/17 2:30:12

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"));
    }

}

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/689731.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

C# 读写ABPLC( Allen Bradley)

1.安装 libplctag.net库 GitHub - libplctag/libplctag.NET: This is a .NET wrapper for libplctag. 2.PLC IP和tag 3.写入值 var myTag new TagReal(){//Name is the full path to tag. Name "HMI_F26[0]",//Gateway is the IP Address of the PLC or communicat…

7-WebApis-3

Web APIs - 3 目标&#xff1a;学习事件流&#xff0c;事件委托&#xff0c;其他事件等知识&#xff0c;优化多个事件绑定和实现常见网页交互 事件流移除事件监听其他事件元素尺寸与位置综合案例 事件流 为什么要学习事件流&#xff1f; 可以帮我们解决一些疑惑&#xff0c;比…

npm全局安装的包在cmd能找到,在powershell中找不到

背景 使用npm i g 全局安装的包&#xff0c;比如&#xff1a;eslint&#xff1b;安装完成后&#xff0c;执行eslint相关命令&#xff0c;显示命令不存在&#xff1b;以为是node没配置全局环境变量&#xff0c;检查发现配置了&#xff1b;后来试了一下在cmd是可以使用的&#x…

蓝桥杯专题-试题版-【十进制转十六进制】【十六进制转八进制】【十六进制转十进制】【数的读法】

点击跳转专栏>Unity3D特效百例点击跳转专栏>案例项目实战源码点击跳转专栏>游戏脚本-辅助自动化点击跳转专栏>Android控件全解手册点击跳转专栏>Scratch编程案例点击跳转>软考全系列点击跳转>蓝桥系列 &#x1f449;关于作者 专注于Android/Unity和各种游…

TCP客户端的WPF实现

1、TCP实现类 internal class TcpClient{Socket ClientSocket { get; set; }public byte[] ReceiveBuffer { get; set; }/// <summary>/// 构造函数/// </summary>/// <param name"receiveBufferLength"></param>public TcpClient(int rece…

关于Eclipse 运行JavaWeb项目发生Source not found的情况

描述是说&#xff0c;class源文件未找到。其实问题就是出在没有部署。但是我们查看部署时&#xff0c;发现我们已经部署过了。 其实&#xff0c;这个比较细节的地方。 你可以右键单击这个jsp项目&#xff0c;然后点击 run as。发现它其实是没有配置run运行文件。这就导致是发现…

【wireshark】时间显示

默认的好像是个相对时间 可以显示当前时间 在视图里选择

Xcode 常用操作相关

代码折叠 选择 Xcode -> Preferences -> Text Editing勾选Code folding ribbon 清空最近打开项目 File -> Open Recent -> Clear Menu

模板匹配Template Matching

实现代码&#xff1a; import cv2 import numpy as np def template_demo(tpl,target):methods[cv2.TM_SQDIFF_NORMED,cv2.TM_CCORR_NORMED,cv2.TM_CCOEFF_NORMED]th,twtpl.shape[:2]for md in methods:start_timecv2.getTickCount()# 匹配结果resultcv2.matchTemplate(target…

【Linux】linux | shell | 获取日期

1、获取上一天 1&#xff09;代码 date -d "1 days ago" %Y-%m-%d 2&#xff09;结果 ~~

chatgpt赋能python:Python计算累乘的优秀解决方案

Python计算累乘的优秀解决方案 在python编程中&#xff0c;经常需要进行数值计算。其中一个最基本的计算就是累乘。累乘可以基于一组数字进行&#xff0c;计算它们的乘积。比如&#xff0c;如果输入的数字序列是[1,2,3,4]&#xff0c;则累乘结果为24。 在本文中&#xff0c;我…

MediaPipe简介

有没有想过“OK Google”背后的含义是什么?嗯,这就是 MediaPipe。如果您刚刚开始使用 MediaPipe,并且这是您阅读的第一篇文章,那么恭喜您,您找到了正确的地方。本文将介绍MediaPipe的基础知识、解决方案之间的差异以及框架。 官方文档指出,推理是实时的,只需几行代码即可…

Qt定时器类QTimer

目录 public/slot function signals static public function 示例&#xff08;获取系统时间并且将其显示到窗口中&#xff09;&#xff1a; 示例主要代码&#xff08;每间隔一秒向控制台发送一条消息&#xff09;&#xff1a; 注意事项&#xff1a; Qt定时器类QTimer是一个…

Bootstrap CSS 概览

文章目录 Bootstrap CSS 概览HTML 5 文档类型&#xff08;Doctype&#xff09;移动设备优先响应式图像全局显示、排版和链接基本的全局显示排版链接样式 避免跨浏览器的不一致容器&#xff08;Container&#xff09;Bootstrap 浏览器/设备支持 Bootstrap CSS 概览 在这一章中&a…

iOS-苹果内购的流程图

关于苹果内购的开发文章有很多&#xff0c;如&#xff1a; Flutter上线项目实战——苹果内购 苹果内购流程&#xff0c;看我就足够了 - 简书 。 下面这是一张苹果内购的流程图。 ​​​​​​​ 该图来源于苹果官网&#xff0c;但不够清晰&#xff0c;欢迎各位网络大牛 告知…

关于cdh环境中zookeeper启动失败NodeManager内存溢出无法链接等的问题

在此记录一下 1、zookeeper一直启动失败&#xff1a; 看你的事物目录配置的是什么 解决方法&#xff1a;删除掉/var/lib/zookeeper/version-2 为0kb的有问题文件&#xff0c;问题解决 2、NodeManager内存溢出无法链接等的问题 注意几点&#xff1a; 1、这里不能超过物理内存…

MySQL数据库学习(保姆级教程)(1.7W字)

1.初识MySQL JavaEE:企业级Java开发 Web 前端&#xff08;页面&#xff1a;展示&#xff0c;数据&#xff01;&#xff09; 后台&#xff08;连接点&#xff1a;连接数据库JDBC&#xff0c;链接前端&#xff08;控制&#xff0c;控制视图跳转&#xff0c;和给前端传递数据&a…

h.264与h.265有什么区别

H.265是新的编码协议&#xff0c;是H.264的升级版。H.265相比H.264最主要的改变是采用了块的四叉树划分结构&#xff0c;也极大了优化了算法&#xff0c;H.265比H.264占用的存储空间理论上要少50%。H.265在各方面都碾压了H.264。 1&#xff0c;H265优点&#xff1a;降低存储空间…

行列转换(一)• MySQL版

欢迎来到爱书不爱输的程序猿的博客, 本博客致力于知识分享&#xff0c;与更多的人进行学习交流 本文收录于SQL应知应会专栏,本专栏主要用于记录对于数据库的一些学习&#xff0c;有基础也有进阶&#xff0c;有MySQL也有Oracle 行列转换 • Mysql版 1.准备操作2.行转列1.1为何进…

vue前端和nodejs后端使用socket.io无法通信问题解决

(128条消息) 使用 socket.io 跨域问题的解决&#xff08;整理了四种方法&#xff0c;总有成功的&#xff01;&#xff09; Access to XMLHttpRequest at ‘http://localhost:4000/socket.io_socket io()出现跨域问题_it1790的博客-CSDN博客 socket.io的版本是4.6.2