linux下redis4.0.2集群部署(利用原生命令)

时间:2022-02-08 23:54:14

一、部署架构如下

linux下redis4.0.2集群部署(利用原生命令)

每台服务器准备2个节点,一主一从,主节点为另外两台其中一台的主,从节点为另外两台其中一台的从。

二、准备6个节点配置文件

在172.28.18.75上操作

cd /etc/redis

vim redis-25701.conf

内容如下

bind 172.28.18.75
port 25701
masterauth "Zaq1xsw@"
requirepass "Zaq1xsw@"
protected-mode yes
daemonize yes
dir "/etc/redis"
pidfile "/var/run/redis_25701.pid"
loglevel notice
logfile "redis-25701.log"
dbfilename "dump-25701.rdb" cluster-enabled yes
cluster-node-timeout 15000
cluster-config-file node-25701.conf
cluster-require-full-coverage no

替换端口号,并生成一个从节点配置文件

sed 's/25701/25702/g' redis-25701.conf > redis-25702.conf

复制这两个配置文件到172.28.18.103和172.28.18.104对应的目录下

scp -P25601 redis-25701.conf root@172.28.18.103:/etc/redis/

scp -P25601 redis-25702.conf root@172.28.18.103:/etc/redis/

scp -P25601 redis-25701.conf root@172.28.18.104:/etc/redis/

scp -P25601 redis-25702.conf root@172.28.18.104:/etc/redis/

三、启动6个节点

redis-server redis-25701.conf

查看redis-25701.log

linux下redis4.0.2集群部署(利用原生命令)

集群模式运行

打开node-25701.conf文件,里面有如下内容

linux下redis4.0.2集群部署(利用原生命令)

表示自己的nodeid,并且是一个master,发现自己,

启动从节点:

redis-server redis-25702.conf

linux下redis4.0.2集群部署(利用原生命令)

按照以上操作,启动另外两台服务器的4个节点

启动完毕,可以使用redis-cli来查看集群信息:

redis-cli -h 172.28.18.75 -p 25701 -a password  cluster nodes

linux下redis4.0.2集群部署(利用原生命令)

查看集群配置文件内容

redis-cli -h 172.28.18.75 -p 25701 -a password    cluster info

linux下redis4.0.2集群部署(利用原生命令)

当前集群状态是失败的,分配的槽为0

四、执行节点之间的meet操作,使相互之间可以通信感知对方

在172.28.18.75上执行

linux下redis4.0.2集群部署(利用原生命令)

将25701节点和25702节点之间通信,返回OK,成功,此时我们查看25701的节点信息,已经感知到了25702节点信息

linux下redis4.0.2集群部署(利用原生命令)

同样查看25702,也感知到了25701

linux下redis4.0.2集群部署(利用原生命令)

继续执行meet操作,使172.28.18.75的25701和另外两台服务器的25701和25702通信

redis-cli -h 172.28.18.75 -p 25701 -a password cluster meet 172.28.18.103 25701

redis-cli -h 172.28.18.75 -p 25701 -a password cluster meet 172.28.18.103 25702

redis-cli -h 172.28.18.75 -p 25701 -a password cluster meet 172.28.18.104 25701

redis-cli -h 172.28.18.75 -p 25701 -a password cluster meet 172.28.18.104 25702

此时,所有节点都感知到了对方,总共6个节点

linux下redis4.0.2集群部署(利用原生命令)

linux下redis4.0.2集群部署(利用原生命令)

握手操作成功完成,目前配置显示所有节点都是master,所以接下来需要设置主从

五、设置主从节点

172.28.18.75 25701(主)--》172.28.18.103 25702(从)

172.28.18.103 25701(主)--》172.28.18.104 25702(从)

172.28.18.104 25701(主)--》172.28.18.75 25702(从)

1、172.28.18.75 25701(主)--》172.28.18.103 25702(从)

在从节点172.28.18.103上操作

redis-cli -h 172.28.18.103 -p 25702 -a password cluster replicate 5f5939a7b9f6c1290173b7d326b076ee0736a268

linux下redis4.0.2集群部署(利用原生命令)

25702:从节点端口

5f5939a7b9f6c1290173b7d326b076ee0736a268:主节点nodeid,可通过 redis-cli 的cluster nodes 来查询

linux下redis4.0.2集群部署(利用原生命令)

返回ok,查询cluster nodes,25702已经变成172.28.18.75 25701的从节点

linux下redis4.0.2集群部署(利用原生命令)

再查询172.28.18.75 25701节点信息,103的25702成为了他的从节点

linux下redis4.0.2集群部署(利用原生命令)

再按照以上操作设置另外两台主从

在172.28.18.104上执行

linux下redis4.0.2集群部署(利用原生命令)

将104 25702变成103 25701的从节点

在172.28.18.75上执行

linux下redis4.0.2集群部署(利用原生命令)

将75 25702变成104 25701的从节点

此时,查看75 25701集群节点信息

linux下redis4.0.2集群部署(利用原生命令)

3主3从设置完毕

六、为主节点分配槽slot

3主:将16384个槽分为3份,0到5461的数据分到75 25701端口,将5462到10922的数据分到103 25701端口,10923到16383的数据分到104 25701端口

在172.28.18.75上编写脚本

vim add_slots.sh

#!/bin/bash

start=$ #定义一个起始变量
end=$ #定义一个结束变量 for slot in `seq $start $end` #利用for循环来重复执行命令,在slot中
do
echo "slot:$slot"
redis-cli -h 172.28.18.75 -p 25701 -a password cluster addslots $slot
done

执行脚本:

chmod +x add_slots.sh

./add_slots.sh 0 5461

完毕后,查看节点信息

linux下redis4.0.2集群部署(利用原生命令)

成功分配5462个槽

在另外两台服务器也分配剩余的槽

./add_slots.sh 5462 10922

./add_slots.sh 10923 16383

查看槽分配结果

redis-cli -h 172.28.18.75 -p 25701 -a password cluster slots

linux下redis4.0.2集群部署(利用原生命令)

5461个槽分配到172.28.18.75 25701上,并且它的从节点为172.28.18.103  25702

到此,分配槽操作完毕。

七、测试结果

连接172.28.18.75 25701,注意一定要加"-c"参数,否则如果数据没有分配到当前节点则不会自动连接其他集群的节点。

redis-cli -c -h 172.28.18.75 -p 25701 -a password

linux下redis4.0.2集群部署(利用原生命令)

返回OK,并且数据被分配到了104 25701节点的槽里。并且连接也自动变为104的25701,此时get

linux下redis4.0.2集群部署(利用原生命令)

返回数据。集群已经正常工作。

此时,停掉172.28.18.75 25701主节点,172.28.18.103 25702将晋升为主节点

linux下redis4.0.2集群部署(利用原生命令)

查看172.28.18.103 25702节点信息

linux下redis4.0.2集群部署(利用原生命令)

此时自己成为master,而172.28.18.75 25701则显示失败状态,此时把172.28.18.75 25701节点启动

linux下redis4.0.2集群部署(利用原生命令)

此时自己成为从节点,再查看172.28.18.103 25702节点信息,172.28.18.75 25701,已经成为salve。

linux下redis4.0.2集群部署(利用原生命令)

至此,redis原生安装集群设置完毕。

linux下redis4.0.2集群部署(利用原生命令)的更多相关文章

  1. linux下redis4.0.2集群部署(利用Ruby脚本命令)

    一.原生命令方式和Ruby脚本方式区别 利用Ruby脚本部署和用原生命令部署,节点准备的步骤都是一样的,节点启动后的握手,以及主从.槽分配,利用Ruby脚本一步就能完成,利用原生命令需要一步一步地执行 ...

  2. linux下redis4.0.2安装与部署

    一.redis的介绍 Redis是当前比较热门的NOSQL系统之一,它是一个key-value存储系统.和Memcache类似,但很大程度补偿了Memcache的不足,它支持存储的value类型相对更 ...

  3. Linux下搭建Lotus Domino集群

    Linux下搭建Lotus Domino 集群 本文内容是Linux平台下Lotus Domino服务器部署案例(http://chenguang.blog.51cto.com/350944/1334 ...

  4. Linux下MySQL/MariaDB Galera集群搭建过程【转】

    MariaDB介绍 MariaDB是开源社区维护的一个MySQL分支,由MySQL的创始人Michael Widenius主导开发,采用GPL授权许可证. MariaDB的目的是完全兼容MySQL,包 ...

  5. Linux下Hadoop2.7.3集群环境的搭建

    Linux下Hadoop2.7.3集群环境的搭建 本文旨在提供最基本的,可以用于在生产环境进行Hadoop.HDFS分布式环境的搭建,对自己是个总结和整理,也能方便新人学习使用. 基础环境 JDK的安 ...

  6. hbase-2.0.4集群部署

    hbase-2.0.4集群部署 1. 集群节点规划: rzx1 HMaster,HRegionServer rzx2 HRegionServer rzx3 HRegionServer 前提:搭建好ha ...

  7. redis4.0.1集群安装部署

    安装环境 序号 项目 值 1 OS版本 Red Hat Enterprise Linux Server release 7.1 (Maipo) 2 内核版本 3.10.0-229.el7.x86_64 ...

  8. Redis-4.0.11集群配置

    版本:redis-3.0.5 redis-3.2.0  redis-3.2.9  redis-4.0.11 参考:http://redis.io/topics/cluster-tutorial. 集群 ...

  9. redis-5.0.5 集群部署

    之前写过一套基于redis-4.0.6版本的测试集群部署 https://www.cnblogs.com/mrice/p/10730309.html 最近生产环境需要部署一套redis-5.0.5版本 ...

随机推荐

  1. WCF Restful 服务器配置文件

    <?xml version="1.0" encoding="utf-8"?> <configuration> <configSec ...

  2. 同一个主机上的JVM实例之间通信

    hadoop yarn里用了RPC调用.NM里面文件本地化类ContainerLocalizer用RPC心跳方式跟本机的ResourceLocalizationService通信. 用shared m ...

  3. &lbrack;HDOJ1698&rsqb;Just a Hook(线段树,区间更新)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1698 陈题,更新后查询所有叶节点的和.撸一遍模版,形成自己的风格. #include <algo ...

  4. oracle多表查询

    多表查询首先要避免笛卡尔集,要避免笛卡尔集,那么查询条件不得少于表的个数-1. 1.显示雇员名,雇员工资以及雇员所在的部门: 2.显示部门号为10的部门名.员工名和工资: 3.显示各个雇员的姓名,工资 ...

  5. projecteuler之58题Spiral primes

    package com.android; public class SpiralPrimes { public static void main(String args[]) { long numPr ...

  6. URL中的&num;

    作者:阮一峰   http://www.ruanyifeng.com/blog/2011/03/url_hash.html 一.#的涵义 #代表网页中的一个位置.其右面的字符,就是该位置的标识符.比如 ...

  7. openFileDialog的使用

    这两天应用了一下openFileDialog,做的是上传的功能,在打开页面的时候进行的一系列操作虽说远远没有asp.net的上传控件好使,但是学习起来也是蛮还用的,下面是一个简单的应用 //点击浏览按 ...

  8. 我们为什么要使用Spring Cloud?简介

    转载:https://blog.csdn.net/smallsunl/article/details/78778790 单体架构 在网站开发的前期,项目面临的流量相对较少,单一应用可以实现我们所需要的 ...

  9. Codeforces 285C - Building Permutation

    285C - Building Permutation 思路:贪心.因为每个数都不同且不超过n,而且长度也为n,所有排列只能为1 2 3 ......n.所以排好序后与对应元素的差值的绝对值加起来就是 ...

  10. python 数据合并

    1. 数据合并 前言 一.横向合并 1. 基本合并语句 2. 键值名不一样的合并 3. “两个数据列名字重复了”的合并 二.纵向堆叠 统计师的Python日记[第6天:数据合并] 前言 根据我的Pyt ...