redis 集群搭建

Redis集群

使用redis做缓存工具

实现系统高可用,redis需要做主备。使用redis做分片集群。

向业务逻辑中添加缓存。

1使用redis做缓存

1.1安装redis

版本说明

    使用redis4.0.9版本。redis4.0.9版本主要增加了redis集群功能。

安装的前提条件:

需要安装gcc:yum

    install gcc-c++

下载redis的源码包。

wget命令下载:

    yum -y  install wget

    wget http://download.redis.io/releases/redis-4.0.9.tar.gz

或去官网下载

把源码包上传到linux服务器

解压源码包

    tar -zxvf  redis-4.0.9.tar.gz

    cp -r redis-4.0.9 /usr/local/

Make编译       //在redis-4.0.9源码文件夹下执行

make

Make install 安装 

//指定安装的路径

[

root@localhost  redis-4.0.9]# make install PREFIX=/usr/local/redis

1.2启动redis

前端启动模式


    /usr/local/redis/bin/redis-server

默认是前端启动模式,端口是6379

后端启动

    从redis的源码文件夹redis.4.0.9中复制redis.conf到redis的安装目录。

    cp -r  /usr/local/redis-4.0.9/redis.conf  ../redis/bin

修改配置文件

    vi   /usr/local/redis/bin/redis.conf      修改下面两项

(在命令模式下使用 “/ 关键字” 来查找daemonize, 字母 n来查看下一个匹配项)

bind 127.0.01 表示外部不能访问。所以需要进行处理。

*注释掉bind 127.0.0.1 或者将127.0.0.1改成这个服务器的IP地址

[root@localhost bin]# ./redis-server redis.conf    //指定redis配置文件启动

[root@localhost bin]# ./redis-cli  //来启动redis客户端

127.0.0.1:6379>  shutdown        // 关闭 redis客户端

not connected> exit                    //退出

1.3Redis常用命令

测试安装是否成功:

127.0.0.1:6379>set redis  hello

OK

127.0.0.1:6379> get redis

"hello"

集群结构

    集群中有三个节点的集群,每个节点有一主一备。需要6台虚拟机。

    搭建一个伪分布式的集群,使用6个redis实例来模拟。

2.3搭建集群需要的环境

    搭建集群需要使用到官方提供的ruby脚本。

    需要安装ruby的环境。

    安装ruby

        1.

                yum install ruby

[root@localhost local]# yum install ruby


        2.

                yum install rubygems

[root@localhost local]# yum install rubygems

    redis集群管理工具redis-trib.rb在redis-4.0.9 的源码文件夹下面的

[root@localhost~]# cd  redis-4.0.9

[root@localhost redis-4.0.9]# cd src

[root@localhost src]# ll *.rb 

  -rwxrwxr-x.1 root root 48141 Apr  1 07:01redis-trib.rb

[root@localhost src]#

脚本需要的ruby包:

        需要将redis-4.0.2.gem上传到linux服务。

安装ruby的包:

            然后再在这个redis-4.0.2.gem文件所在路径下执行gem命令:

[root@localhost redis]# gem install redis-4.0.2.gem

发生错误:

ERROR:

Error installing redis-4.0.2.gem:

redis requires

Ruby version >= 2.2.2.  //Ruby version  版本必须要大于等于2.2.2。当前Ruby version 太低,Centos7 的yum源的ruby版本只支持2.0

查看当前ruby

-v  版本

[root@localhost redis]# ruby -v     

ruby官网推荐rvm

方式更新ruby版本:

1.

获取

[root@localhost local]# gpg --keyserver hkp://keys.gnupg.net --recv-keys

409B6B1796C275462A1703113804BB82D39DC0E3

7D2BAF1CF37B13E2069D6956105BD0E739499BDB

2.

[root@localhost local]# \curl -sSL https://get.rvm.io | bash -s stable

[root@localhost local]# find / -name rvm -print

[rooocalhost local]# source /usr/local/rvm/scripts/rvm

[root@localhost local]# rvm install 2.4.1          //安装一个ruby版本

[root@localhost local]# rvm use 2.4.1              // 使用指定版本的ruby

[root@localhost local]#  rvm use 2.4.1–default //设置默认版本

[root@localhost local]# rvm remove 2.0.0            // 删除2.0.0版本的

[root@localhost local]# ruby–version                //查看ruby版本,安装

[root@localhost redis]# gem install redis-4.0.2.gem 


Successfully

installed redis-4.0.2

1

gem installed

Installing

ri documentation for redis-4.0.2...

InstallingRDoc documentation for redis-4.0.2.…

2.4集群的搭建

第一步:创建6个redis实例,复制六次redis文件夹,修改端口号从7001~7006

[root@localhost redis-cluster]# cp -r ../redis/bin  ./redis01

[root@localhost redis-cluster]# cp -r ../redis/bin  ./redis02

[root@localhost redis-cluster]# cp -r ../redis/bin  ./redis03

[root@localhost redis-cluster]# cp -r ../redis/bin  ./redis04

[root@localhost redis-cluster]# cp -r ../redis/bin  ./redis05

[root@localhost redis-cluster]# cp -r ../redis/bin  ./redis06

第二步:删除dump.rdb

文件

[root@localhost redis01]# rm -rf dump.rdb

第三步:修改redis的配置文件     

1、修改端口号

2、打开cluster-enable前面的注释。

第四步:把创建集群的ruby脚本redis-4.0.9文件夹下的redis-trib.rb复制到redis-cluster目录下。

[root@localhost local]# cp redis-4.0.9/src/redis-trib.rb  ./redis-cluster/

第五步:启动6个redis实例

创建sh脚本:

[root@localhost redis-cluster]# vi startall.sh              // 在redis-cluster文件夹下面创建

//编写了个sh脚本,将linux命令放脚本文件中顺序执行

脚本命令内容如下:

cd redis01/

./redis-server ./redis.conf

cd ../

cd redis02/

./redis-server ./redis.conf

cd ../

cd redis03/

./redis-server ./redis.conf

cd ../

cd redis04/

./redis-server ./redis.conf

cd ../

cd redis05/

./redis-server ./redis.conf

cd ../

cd redis06/

./redis-server ./redis.conf

给startall.sh的执行权限:

[root@localhost redis-cluster]# chmod 777 ./startall.sh 

第六步:创建集群。//

1 代表一个备份

./redis-trib.rb

create --replicas 1 127.0.0.1:7001 127.0.0.1:7002 127.0.0.1:7003

127.0.0.1:7004 127.0.0.1:7005  127.0.0.1:7006

[root@bogon redis-cluster]# ./redis-trib.rb create --replicas 1

192.168.25.153:7001 192.168.25.153:7002 192.168.25.153:7003

192.168.25.153:7004 192.168.25.153:7005  192.168.25.153:7006

>>>

Creating cluster

>>>

Performing hash slots allocation on 6 nodes...

Using

3 masters:

127.0.0.1:7001

127.0.0.1:7002

127.0.0.1:7003

Adding

replica 127.0.0.1:7005 to 127.0.0.1:7001

Adding

replica 127.0.0.1:7006 to 127.0.0.1:7002

Adding

replica 127.0.0.1:7004 to 127.0.0.1:7003

>>>

Trying to optimize slaves allocation for anti-affinity

[WARNING]

Some slaves are in the same host as their master

M:

019dde9da0dfd6b7ce5091c0670dcd5514a66c45 127.0.0.1:7001

slots:0-5460

(5461 slots) master

M:

f65c3fd8019d85bddb526c5ac05514c40dec0ff3 127.0.0.1:7002

slots:5461-10922

(5462 slots) master

M:

ccbc6d6fd6d7c901065728d19e487a34451b8ab3 127.0.0.1:7003

slots:10923-16383

(5461 slots) master

S:

d92bd81cb4a35a01f0bb3643f704df2c1301c4d3 127.0.0.1:7004

replicates

ccbc6d6fd6d7c901065728d19e487a34451b8ab3

S:

ceb866951d9d8c1da3099370be1f9d9f3f4556f2 127.0.0.1:7005

replicates

019dde9da0dfd6b7ce5091c0670dcd5514a66c45

S:

85be972bf84b2cfb6bba07d148a7a6c2a4cafba1 127.0.0.1:7006

replicates

f65c3fd8019d85bddb526c5ac05514c40dec0ff3

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 127.0.0.1:7001)

M:

019dde9da0dfd6b7ce5091c0670dcd5514a66c45 127.0.0.1:7001

slots:0-5460

(5461 slots) master

1

additional replica(s)

S:

85be972bf84b2cfb6bba07d148a7a6c2a4cafba1 127.0.0.1:7006

slots: (0

slots) slave

replicates

f65c3fd8019d85bddb526c5ac05514c40dec0ff3

M:

f65c3fd8019d85bddb526c5ac05514c40dec0ff3 127.0.0.1:7002

slots:5461-10922

(5462 slots) master

1

additional replica(s)

S:

ceb866951d9d8c1da3099370be1f9d9f3f4556f2 127.0.0.1:7005

slots: (0

slots) slave

replicates

019dde9da0dfd6b7ce5091c0670dcd5514a66c45

M:

ccbc6d6fd6d7c901065728d19e487a34451b8ab3 127.0.0.1:7003

slots:10923-16383

(5461 slots) master

1

additional replica(s)

S:

d92bd81cb4a35a01f0bb3643f704df2c1301c4d3 127.0.0.1:7004

slots: (0

slots) slave

replicates

ccbc6d6fd6d7c901065728d19e487a34451b8ab3

[OK]

All nodes agree about slots configuration.

>>>

Check for open slots...

>>>

Check slots coverage...

[OK]

All 16384 slots covered.

[root@bogon redis-cluster]#

2.5测试集群

在任何一个实例都可以登录任何一个端口的数据库中

[root@bogonredis-cluster]# redis01/redis-cli -h 192.168.25.153 -p 7002-c

    // -c 是不可缺少的

[root@bogon redis-cluster]# redis01/redis-cli -h 192.168.25.153 -p 7002

192.168.25.153:7002>

set a 100

(error)

MOVED 15495 192.168.25.153:7003

192.168.25.153:7002>

[root@bogon redis-cluster]# redis01/redis-cli -h 192.168.25.153 -p 7002 -c

192.168.25.153:7002>set a 100

->

Redirected to slot [15495] located at 192.168.25.153:7003

OK

192.168.25.153:7003>

2.6关闭redis

//单机客户端关闭方式

[root@localhost redis-cluster]# redis01/redis-cli -p 7001 shutdown

//编写了个sh脚本,将linux命令放脚本文件中顺序执行,依次关闭redis客户端

[root@localhost redis-cluster]# vi shutdown.sh

[root@localhost redis-cluster]# chmod +x ./shutdown.sh

[root@localhost redis-cluster]# ./shutdown.sh

内容:

查看redis客户端信息

127.0.0.1:6379> info

或者

127.0.0.1:6379>info replication

或者

info clients

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 195,719评论 5 462
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 82,337评论 2 373
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 142,887评论 0 324
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,488评论 1 266
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 61,313评论 4 357
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,284评论 1 273
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,672评论 3 386
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,346评论 0 254
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,644评论 1 293
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,700评论 2 312
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,457评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,316评论 3 313
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,706评论 3 299
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 28,990评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,261评论 1 251
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,648评论 2 342
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,859评论 2 335

推荐阅读更多精彩内容