redis集群构建过程 linux windows

redis集群的构建过程

本人初次构建redis集群时,通过查阅资料整理的文档

目录

Linux Redis cluster集群方案... 1

Windows redis集群方案... 5

Linux Redis cluster集群方案

1 安装:

下载地址:http://download.redis.io/releases/

下载版本:redis3.0.7.tar.gz

[[email protected] soft]$ tar -zxzf redis-3.0.7.tar.gz

[[email protected] soft]$ cd redis-3.0.7

[[email protected] redis-3.0.7]$ make

编译后src目录下生成6个可执行文件

redis-server(启动服务端)、

redis-cli(调用客户端)、

redis-benchmark、

redis-check-aof、

redis-check-dump、

redis-sentinel

2 测试redis

[[email protected] redis-3.0.7]$ src/redis-server (启动服务)

[[email protected] redis-3.0.7]$ src/redis-cli (启动客户端)

127.0.0.1:6379> set name lixiaodong

OK

127.0.0.1:6379> get name

"lixiaodong"

127.0.0.1:6379>

3 开机自启动可以继续参考博客

http://blog.csdn.net/zhenzhendeblog/article/details/52161515

4集群配置 redis3.0以后才支持cluster集群所以要下载正确的redis

创建文件夹redis_cluster,创建三个子文件夹node1,node2,node3作为集群的三个节点

拷贝redis的配置文件redis.conf分别到node1,node2,node3

[[email protected] redis_cluster]$ cp ../soft/redis-3.0.7/redis.conf node1/

[[email protected] redis_cluster]$ cp ../soft/redis-3.0.7/redis.conf node2/

[[email protected] redis_cluster]$ cp ../soft/redis-3.0.7/redis.conf node3/

修改配置文件redis.conf 以node1为例子

修改端口号:6380

绑定ip: 指的是本机网ip。 bind 172.20.16.158

修改pid文件位置:新安装的程序在运行后会在/var/run目录下面产生自己的pid文件,目的是为了防止进程启动多个副本等pidfile /var/run/redis_6380.pid

开启集群: cluster-enabled yes

指定集群配置文件:cluster-config-file nodes-6380.conf 通过注释了解到这个文件不用手动修改,redis会自己生成

指定生成文件的目录:dir /home/lixiaodong/redis_cluster/node1 这样redis生成的文件就会到指定目录,不然的话在哪个目录启动redis这些文件就会生成在相应的目录

5 创建集群

需要提前安装:

yum install ruby //安装ruby

    yum install rubygems //安装rubygems

   gem install redis //

如果安装不成功,

下载安装

wget https://rubygems.global.ssl.fastly.net/gems/redis-3.0.7.gem

  安装命令:gem install -l ./redis-3.0.7.gem

通过命令创建集群,linux下运行如下

[[email protected] lixiaodong]$ soft/redis-3.0.7/src/redis-trib.rb create --replicas 0 172.20.16.158:6380 172.20.16.158:6381 172.20.16.158:6382

>>> Creating cluster

>>> Performing hash slots allocation on 3 nodes...

Using 3 masters:

172.20.16.158:6380

172.20.16.158:6381

172.20.16.158:6382

M: d276f248a4e0fba1f9e24f19ac97b330b45b2ab3 172.20.16.158:6380

   slots:0-5460 (5461 slots) master

M: 51eb3b27006cac78672344646a50e4ae6f02215f 172.20.16.158:6381

   slots:5461-10922 (5462 slots) master

M: 08612b4236d4f4733157ec45f98bc19ff319118e 172.20.16.158:6382

   slots:10923-16383 (5461 slots) master

Can I set the above configuration? (type ‘yes‘ to accept): yes

>>> Nodes configuration updated

>>> Assign a different config epoch to each node

>>> Sending CLUSTER MEET messages to join the cluster

Waiting for the cluster to join.

>>> Performing Cluster Check (using node 172.20.16.158:6380)

M: d276f248a4e0fba1f9e24f19ac97b330b45b2ab3 172.20.16.158:6380

   slots:0-5460 (5461 slots) master

M: 51eb3b27006cac78672344646a50e4ae6f02215f 172.20.16.158:6381

   slots:5461-10922 (5462 slots) master

M: 08612b4236d4f4733157ec45f98bc19ff319118e 172.20.16.158:6382

   slots:10923-16383 (5461 slots) master

[OK] All nodes agree about slots configuration.

>>> Check for open slots...

>>> Check slots coverage...

[OK] All 16384 slots covered.

[[email protected] lixiaodong]$

6测试集群

启动客户端命令如下, –c的作用就是如果key对应的slot不是当前连接的redis-server,那么自动重定向到其对应的redis-server

[[email protected] lixiaodong]$ soft/redis-3.0.7/src/redis-cli -h 172.20.16.158 -p 638 –c

172.20.16.158:6381> set k1 123

-> Redirected to slot [12706] located at 172.20.16.158:6382

OK

172.20.16.158:6382> get k1

"123"

172.20.16.158:6382>

7 主从搭建

现在的redis集群如果有一个节点挂了,集群就挂了,反正我把node2干掉之后就这样了,下面就是干掉之后现场

[[email protected] lixiaodong]$ soft/redis-3.0.7/src/redis-cli -h 172.20.16.158 -p 6380 -c

172.20.16.158:6380> set k1 12

-> Redirected to slot [12706] located at 172.20.16.158:6382

Could not connect to Redis at 172.20.16.158:6382: Connection refused

Could not connect to Redis at 172.20.16.158:6382: Connection refused

not connected> set k2 12

Could not connect to Redis at 172.20.16.158:6382: Connection refused

not connected> set name lixiaodong

Could not connect to Redis at 172.20.16.158:6382: Connection refused

not connected> set key 1

Could not connect to Redis at 172.20.16.158:6382: Connection refused

not connected>

redis主从的作用显现出来:

添加新的redis node:

当然新节点可以作为主节点也可以作为从节点,这里主要介绍作为从节点

   a)       添加:

     我准备了三个从节点,分别作为node1, node2, node3的从节点

  首先将集群与待添加节点都启动了,然后执行添加节点的命令,命令如下

    [[email protected] lixiaodong]$soft/redis-3.0.7/src/redis-trib.rb add-node 172.20.16.158:6383 172.20.16.158:6380

     通过如下命令查看集群节点信息:

     [[email protected] lixiaodong]$ soft/redis-3.0.7/src/redis-cli -c -p 6380 cluster nodes

     

      可以看到6383被加进来了,但是并没有分摊slot,这个需要把它变成主节点的时候设置

  这里的IP地址是127.0.0.1而不是172.20.16.158,这是前后修改过几次文档导致的,然而截图无法修改,不要在意这个

    b)       把添加的接点搞成6380(node1)的从接点 命令如下:注意好长一串的字符串是redis节点的id

      [[email protected] lixiaodong]$ soft/redis-3.0.7/src/redis-cli -c -p 6383 cluster replicate 4757c6352105f7ac77f5a9913da659d9e423e4d4

      OK

   c)       查看接点信息

      [[email protected] lixiaodong]$ soft/redis-3.0.7/src/redis-cli -c -p 6380 cluster nodes

      

      可以看到6383这个redis状态已经是slave了

8 测试从节点是否生效

图一

图二

第一张图貌似没啥意义,不过从图二看,当我停掉三个主redis后,6383这哥们现在翻身做主人了, 他现在是主服务器了, 当然不必停掉三个,只不过是我写了个脚本让三个都停掉了

当我在次把主服务器启动之后发现,6380自动变成6383的从服务器了

Windows redis cluster集群方案

1 首先需要下载redis 3.0以上版本

2 创建几个节点文件夹

其中redis是下载的windows版的redis 3.2.100, 其他六个文件夹是作为集群的各个节点, node1, node2, node3,node4, node5, node6作为主节点

3 将redis的配置文件redis.conf拷贝到各个节点文件夹中,redis的配置文件redis.conf需要修改的几个配置如下

  1)       port 6379 这个是redis的端口, 每个节点不能重复

  2)       bind 127.0.0.1 绑定的ip, 由于现在部署在同一台物理机,所以不用需改,如果是在不同物理机的话,需要填写本机ip

  3)       cluster-config-file nodes-6380.conf 集群配置文件名字修改下

  4)       appendonly yes 持久化策略yes的话, 会优先使用aof文件恢复缓存

  5)       dir node1  默认是redis server的启动目录,redis运行过程中生成的一些文件会放到该路径下, 如appendonly.aof文件,而我是在各个节点同级目录启动redis, 为了避免各个节点相互冲突,修改dir为各个节点的路径

4 接下来使用构建集群的命令 报错如下:

D:\project\Tools\redis cluster\redis>redis-trib.rb create --replicas 1 127.0.0.1:6380 127.0.0.1:6381 127.0.0.1:6382 127.0.0.1:6383 127.0.0.1:6384 127.0.0.1:6385

C:/Ruby23-x64/lib/ruby/2.3.0/rubygems/core_ext/kernel_require.rb:55:in `require‘: cannot load such file -- redis (LoadError)

        from C:/Ruby23-x64/lib/ruby/2.3.0/rubygems/core_ext/kernel_require.rb:55:in `require‘

        from D:/project/Tools/redis cluster/redis/redis-trib.rb:25:in `<main>‘

别慌,先安装个rubyinstaller-2.3.3-x64.exe,能勾选的都勾选了, 不包括第三方插件等等,完后命令行测试安装是否成功ruby –v, gem –v

提示版本号信息,说明安装成功

接下来 安装下redis

D:\project\Tools\redis cluster\redis>gem install redis

Fetching: redis-3.3.3.gem (100%)

Successfully installed redis-3.3.3

Parsing documentation for redis-3.3.3

Installing ri documentation for redis-3.3.3

Done installing documentation for redis after 3 seconds

1 gem installed

再次执行构建集群命令,妥妥成功了,注意命令中的replicas后的1是自动分配主从关系的意思

以下提供几个本人用的脚本

linux一键构建集群

#!/bin/sh

echo "backup data..."
rm -rf redis_cluster/node1/backup
rm -rf redis_cluster/node2/backup
rm -rf redis_cluster/node3/backup
rm -rf redis_cluster/slaveof-node1/backup
rm -rf redis_cluster/slaveof-node2/backup
rm -rf redis_cluster/slaveof-node3/backup

mkdir redis_cluster/node1/backup
mkdir redis_cluster/node2/backup
mkdir redis_cluster/node3/backup
mkdir redis_cluster/slaveof-node1/backup
mkdir redis_cluster/slaveof-node2/backup
mkdir redis_cluster/slaveof-node3/backup

mv redis_cluster/node1/dump.rdb redis_cluster/node1/backup
mv redis_cluster/node2/dump.rdb redis_cluster/node2/backup
mv redis_cluster/node3/dump.rdb redis_cluster/node3/backup
mv redis_cluster/slaveof-node1/dump.rdb redis_cluster/slaveof-node1/backup
mv redis_cluster/slaveof-node2/dump.rdb redis_cluster/slaveof-node2/backup
mv redis_cluster/slaveof-node3/dump.rdb redis_cluster/slaveof-node3/backup

mv redis_cluster/node1/nodes-6380.conf redis_cluster/node1/backup
mv redis_cluster/node2/nodes-6381.conf redis_cluster/node2/backup
mv redis_cluster/node3/nodes-6382.conf redis_cluster/node3/backup
mv redis_cluster/slaveof-node1/nodes-6383.conf redis_cluster/slaveof-node1/backup
mv redis_cluster/slaveof-node2/nodes-6384.conf redis_cluster/slaveof-node2/backup
mv redis_cluster/slaveof-node3/nodes-6385.conf redis_cluster/slaveof-node3/backup

echo "start redis................................................"
nohup soft/redis-3.0.7/src/redis-server redis_cluster/node1/redis.conf &
nohup soft/redis-3.0.7/src/redis-server redis_cluster/node2/redis.conf &
nohup soft/redis-3.0.7/src/redis-server redis_cluster/node3/redis.conf &
nohup soft/redis-3.0.7/src/redis-server redis_cluster/slaveof-node1/redis.conf &
nohup soft/redis-3.0.7/src/redis-server redis_cluster/slaveof-node2/redis.conf &
nohup soft/redis-3.0.7/src/redis-server redis_cluster/slaveof-node3/redis.conf &
echo "start redis done!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"

echo "create cluster begin........................................."
echo yes| soft/redis-3.0.7/src/redis-trib.rb create --replicas 0 172.20.16.158:6380 172.20.16.158:6381 172.20.16.158:6382
echo "create cluster done!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"

echo "add slave nodes ............................................"
sleep 5
soft/redis-3.0.7/src/redis-trib.rb add-node 172.20.16.158:6383 172.20.16.158:6380
soft/redis-3.0.7/src/redis-trib.rb add-node 172.20.16.158:6384 172.20.16.158:6381
soft/redis-3.0.7/src/redis-trib.rb add-node 172.20.16.158:6385 172.20.16.158:6382

sleep 5
node1Id=$(soft/redis-3.0.7/src/redis-cli -c -h 172.20.16.158 -p 6380 cluster nodes|grep 6380|cut -d " " -f 1)
node2Id=$(soft/redis-3.0.7/src/redis-cli -c -h 172.20.16.158 -p 6381 cluster nodes|grep 6381|cut -d " " -f 1)
node3Id=$(soft/redis-3.0.7/src/redis-cli -c -h 172.20.16.158 -p 6382 cluster nodes|grep 6382|cut -d " " -f 1)

echo "node 1 Id =" $node1Id
echo "node 2 Id =" $node2Id
echo "node 3 Id =" $node3Id

window 构建集群脚本

create.bat

@echo off
echo start redis...
call start.bat

echo wait 3 second...
ping -n 3 127.0>nul

echo create redis cluster...
start redis/redis-trib.rb create --replicas 1 127.0.0.1:6380 127.0.0.1:6381 127.0.0.1:6382 127.0.0.1:6383 127.0.0.1:6384 127.0.0.1:6385

echo done!

pause

start.bat

start redis/redis-server node1/redis.windows.conf
start redis/redis-server node2/redis.windows.conf
start redis/redis-server node3/redis.windows.conf
start redis/redis-server node4/redis.windows.conf
start redis/redis-server node5/redis.windows.conf
start redis/redis-server node6/redis.windows.conf
时间: 2024-10-23 17:20:08

redis集群构建过程 linux windows的相关文章

Redis集群部署过程记录(3台服务器共6个节点)

这是我的第一篇博文,整理了我在部署Redis集群踩过的坑,以及详细的部署过程,同时归结了部署过程中遇到的问题的处理方法.1.部署的环境:SUSE Linux Enterprise 11 sp42.涉及到的安装包如下:(1) 安装包:redis-4.0.2.tar.gz下载地址:http://download.redis.io/releases/ redis官网http://www.redis.io(2) 接口包:redis-4.0.0.gem(3) 脚本语言包:ruby-2.4.2.tar.gz

Redis集群 之 Sentinel模式Windows篇

1.环境 a.下载Redis:访问 https://github.com/MicrosoftArchive/redis/releases 下载Windows版Redis,并解压 2.哨兵模式配置 a.复制3份Redis作为3个节点,分别命名为8081.8082.8083 b.修改 Redis 各节点中的 redis.windows.conf 配置文件 1)8081节点: #端口号改为8081 port 8081 2)8082节点: #端口号改为8082 port 8082 #设置该slave的m

(转)理想化的 Redis 集群

一个豁达的关键是正确乐观的面对失败的系统.不需要过多的担心,需要一种去说那又怎样的能力.因此架构的设计是如此的重要.许多优秀的系统没有进一步成长的能力,我们应该做的是去使用其他的系统去共同分担工作. Redis是其中一个吸引我的系统,一个持久性的,键值对 存储内存操作高性能的平台.他是一个优秀的键值对数据库.我已经在使用了.即使AWS最近宣布开始支持ElasticCache的下级缓存.但是一个无主 的redis集群仍然起着重要的作用.我们需要多系统去完成工作.同时,我们能够集合多种组件在一个容错

最新Windows下Redis集群

实现简单的Windows下Redis集群配置,以下是配置过程中出现的几个问题: [1]逐个启动7001 7002 7003 7004 7005 7006节点时,出现createing server TCP listening socket *:7000:listen:Unknown error错误时,可以在7001目录下的redis.conf文件(节点配置信息包含端口等的文件)第一行加入(bind 127.0.0.1)这一行即可解决 [2]执行到gem install redis时,出现SSL

在windows下面配置redis集群遇到的一些坑

最近工作不忙,就决定学习一下redis.因为一直在windows下工作,不会linux,没办法就选择在windows下配置redis. windows下配置redis集群的文章有很多,比如:http://www.cnblogs.com/linjisong/p/6081312.html, 我这里主要说一下我遇到的一些坑. 1.配置文件 安装完redis服务以后,会有两个配置文件,如下图: 按官方解释,一个是命令提示符下启动redis使用的,一个是服务专用的, 但是我有一台机子,改了服务器的配置文件

Windows 环境搭建Redis集群

环境以及引用资料 1.windows server 2008 r2 enterprise  (木有办法,公司的服务器全是如此,就这种环境搭建吧) 2.redis官方资料下载: https://redis.io/download 3.redis官方没有提供相关的程序包,但是Microsoft Open Tech group提供并维护了相关的redis安装包 https://github.com/MSOpenTech/redis(只是提供64位程序) 这里说一句,很多公司的redis都是部署在lin

Linux Redis集群搭建与集群客户端实现

我们要在单台机器上搭建Redis集群,方式是通过不同的TCP端口启动多个实例,然后组成集群. 1.启动Redis多个实例 我们在Redis安装目录下创建目录cluster,并编写7000.conf~7005.conf 6个配置文件,这6个配置文件用来启动6个实例,后面将使用这6个实例组成集群. 以7000.conf为例,配置文件需要填写如下几项. port 7000 //端口7000,7002,7003 bind 10.93.84.53 //默认ip为127.0.0.1 需要改为其他节点机器可访

windows下redis集群安装和部署

1.下载windows版本的Redis 官网只提供linux版本的下载 官网下载地址:http://redis.io/download github下载地址:https://github.com/MSOpenTech/redis/tags 解压之后,拷贝到自定义的Redis目录下,例如D:\Redis\Redis 打开cmd,切换到Redis目录下,执行 redis-server redis.windows.conf 再重新打开一个cmd窗口,连接Redis执行 redis-cli.exe -h

在windows上搭建redis集群

一 所需软件 Redis.Ruby语言运行环境.Redis的Ruby驱动redis-xxxx.gem.创建Redis集群的工具redis-trib.rb 二 安装配置redis redis下载地址   https://github.com/MSOpenTech/redis/releases ;  下载Redis. 集群规划有三个节点的集群,每个节点有一主一备.需要6台虚拟机. 把 redis 解压后,再复制出 5 份,配置 三主三从集群. 由于 redis 默认端口号为 6379,那么其它5份的