文档章节

Redis集群安装,注册为系统服务,开机启动

lost_keke
 lost_keke
发布于 2017/08/24 14:13
字数 1583
阅读 236
收藏 1

1. 操作系统

CentOS 6.7

2. 集群部署准备工作

2.1. 先安装Redis

详细安装过程,请参考上篇博客Redis单点安装,注册为系统服务,开机启动

由于虚拟机数量有限,我就在一台虚拟机上部署了Redis集群,只需要安装一个Redis,复制出6份配置文件(三主三从),分别启动,就可拥有6个Redis实例。下面进行详细描述。

2.2. 目录构建

2.2.1. Redis安装目录

/usr/local/redis/bin

注:

       Redis自动安装在/usr/local/bin目录下,这里手动将文件移动到了/usr/local/redis/bin目录下。

2.2.2. 创建cluster目录,完成集群目录构建

$ cd /usr/local/redis

$ mkdir cluster

在cluster目录中放置集群,采用三主三从的模式,使用7000,7001,7002,7003,7004,7005端口,分别创建以端口号命名的目录。

$ cd cluster

$ mkdir 7000 7001 7002 7003 7004 7005

在每个目录下,创建data文件夹,用以存放数据,操作如下,以7000为例,其他类似。

$ cd 7000

$ mkdir data

至此,目录结构搭建完毕。

2.3. 配置文件

2.3.1. 配置文件修改

配置文件特别重要,在redis源码自带的redis.conf上修改

$ cp /usr/local/src/redis-4.0.1/redis.conf /usr/local/redis/cluster/7000/7000.conf

 以7000需要的配置文件为例:

$ cd /usr/local/redis/cluster/7000

$ vim 7000.conf

有几处需要更改或取消注释: 

port 7000
daemonize yes
pidfile /var/run/redis_7000.pid
dir /usr/local/redis/cluster/7000/data
appendonly yes
cluster-enabled yes
cluster-config-file /usr/local/redis/cluster/7000/nodes.conf
cluster-node-timeout 15000

注:

        nodes.conf不用手动创建,在redis集群启动的过程中会自动生成。

2.3.2. 配置文件复制与内容替换

将此配置文件分别复制到7001-7005的文件夹下:

$ cp 7000.conf ../7001/7001.conf
$ cp 7000.conf ../7002/7002.conf
$ cp 7000.conf ../7003/7003.conf
$ cp 7000.conf ../7004/7004.conf
$ cp 7000.conf ../7005/7005.conf

下面进行文本替换,以7001为例:

$ cd ../7001

$ vim 7001.conf

:%s/7000/7001

7002-7005也是这样操作,至此,准备工作已基本完毕。

3. 启动

3.1. 依次启动

$ cd /usr/local/redis
$ bin/redis-server cluster/7000/7000.conf
$ bin/redis-server cluster/7001/7001.conf
$ bin/redis-server cluster/7002/7002.conf
$ bin/redis-server cluster/7003/7003.conf
$ bin/redis-server cluster/7004/7004.conf
$ bin/redis-server cluster/7005/7005.conf

启动过程中,会有如下输出:

3.2. 端口占用

查看端口占用情况:

$ netstat -nltp

集群中,每个redis会占用两个端口,一个是本身设置的端口,如7000(用来服务客户端),还有一个是在设置的端口上加10000,也就成了17000(用作集群间nodes通信:用来处理节点的失效检测,配置更新,灾备授权等事情,称为集群总线)。

3.3. 完成集群创建

3.3.1. 随便连接一个node

会提示Hash slot还没有分配。

3.3.2. 使用redis-trib.rb完成集群创建

redis-trib位于Redis源码的src文件夹,它是一个Ruby程序,这个程序通过向实例发送特殊命令来完成创建新集群,检查集群,或者对集群进行重新分片(reshared)等工作。

先安装所需的Ruby环境:

$ yum install ruby
$ yum install rubygems
$ gem install redis

使用redis-trib.rb创建:

$ cd /usr/local/src/redis-4.0.1/src

$ ./redis-trib.rb create --replicas 1 127.0.0.1:7000 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

注:

        --replicas 1 表示为集群中的每个主节点创建一个从节点

在创建的过程中,需要手动写入一次yes表明同意上述配置。

至此集群搭建完毕。

3.4. 最终目录结构

再次说明,nodes.conf不必手动创建,集群在启动过程中会自动创建。

4. 注册为系统服务,开机启动

4.1. 改写启动脚本

此时,启动与关闭集群,需要对6个实例逐一操作,十分麻烦,需要改写启动脚本。启动脚本在源码自带的脚本上进行修改。可以先参考上篇博客Redis单点安装,注册为系统服务,开机启动对脚本的说明。

$ cp /usr/local/src/redis-4.0.1/utils/redis_init_script  /etc/init.d/redisc

重命名为redisc表示是reidis cluster。

修改后的脚本为:

#!/bin/sh
# chkconfig: 2345 80 90
#
# Simple Redis init.d script conceived to work on Linux systems
# as it does use of the /proc filesystem.

REDISPORT0=7000
REDISPORT1=7001
REDISPORT2=7002
REDISPORT3=7003
REDISPORT4=7004
REDISPORT5=7005
EXEC=/usr/local/redis/bin/redis-server
CLIEXEC=/usr/local/redis/bin/redis-cli

PIDFILE=/var/run/redis_${REDISPORT0}.pid

CONF0="/usr/local/redis/cluster/${REDISPORT0}/${REDISPORT0}.conf"
CONF1="/usr/local/redis/cluster/${REDISPORT1}/${REDISPORT1}.conf"
CONF2="/usr/local/redis/cluster/${REDISPORT2}/${REDISPORT2}.conf"
CONF3="/usr/local/redis/cluster/${REDISPORT3}/${REDISPORT3}.conf"
CONF4="/usr/local/redis/cluster/${REDISPORT4}/${REDISPORT4}.conf"
CONF5="/usr/local/redis/cluster/${REDISPORT5}/${REDISPORT5}.conf"

case "$1" in
    start)
        if [ -f $PIDFILE ]
        then
                echo "$PIDFILE exists, process is already running or crashed"
        else
                echo "Starting Redis cluster server..."
                $EXEC $CONF0 &
                $EXEC $CONF1 &
                $EXEC $CONF2 &
                $EXEC $CONF3 &
                $EXEC $CONF4 &
                $EXEC $CONF5 &

        fi
        ;;
    stop)
        if [ ! -f $PIDFILE ]
        then
                echo "$PIDFILE does not exist, process is not running"
        else
                PID=$(cat $PIDFILE)
                echo "Stopping ..."
                $CLIEXEC -p $REDISPORT0 shutdown
                $CLIEXEC -p $REDISPORT1 shutdown
                $CLIEXEC -p $REDISPORT2 shutdown
                $CLIEXEC -p $REDISPORT3 shutdown
                $CLIEXEC -p $REDISPORT4 shutdown                
                $CLIEXEC -p $REDISPORT5 shutdown                
                while [ -x /proc/${PID} ]
                do
                    echo "Waiting for Redis cluster to shutdown ..."
                    sleep 1
                done
                echo "Redis cluster stopped"
        fi
        ;;
    *)
        echo "Please use start or stop as first argument"
        ;;
esac

注:

       这块在网上没有找到参考资料(可能是我没有仔细找),之前也没有写过shell脚本,就按照自带的脚本写法做了一些修改。肯定是不完善的,首先判断条件就只看了7000,这点就不够充足。如果有更好的脚本,请告知我。不过一般也不会把所有的Redis装在一台机器上,所以这个脚本的实用性也不强,怪不得没有找到^_^

4.2. 注册为系统服务

$ chkconfig --add redisc

启动:service redisc start

关闭:service redisc stop

感觉清爽多了。

注:

      只要在第一次使用redis-trib.rb,之后再启动和关闭集群就不必再使用了,因为Hash slot在初次就分配完成啦。

4.3. 开机启动

$ chkconfig redisc on

4.4. 其他说明

连接的时候随便挑一个node即可,需要添加-c:

$ ./redis-cli -c -p 7000

使用:cluster info,cluster nodes可以查看集群状态

4.5. 参考资料

http://www.redis.cn/topics/cluster-tutorial.html

http://www.cnblogs.com/mafly/p/redis_cluster.html

© 著作权归作者所有

lost_keke
粉丝 15
博文 34
码字总数 17914
作品 0
深圳
程序员
私信 提问
Redis单点安装,注册为系统服务,开机启动

集群安装请看下一篇博客:Redis集群安装,注册为系统服务,开机启动 1. 操纵系统 CentOS: 6.7 2. 下载 官网下载,选择了最新稳定版(redis-4.0.1.tar.gz) 3. 安装步骤 3.1. 上传至/usr/lo...

lost_keke
2017/08/21
923
10
redis(一)单机部署与应用

本文所有描述均为作者亲自操作后总结出来的,如有疑问可直接留言,将及时回复,如本文理解或描述有误的地方欢迎指出,将及时改正 本章主要描述redis单机的安装部署过程及在Java中的简单使用,...

阿郎_
2017/05/29
0
0
CentOS7.X安装Redis-4.0.8以及Redis集群搭建

安装redis 安装前的准备 下载解压并安装 创建配置中要求的数据文件存储位置 添加修改配置文件参考配置 修改目录归属 启动redis并设置开机启动 存入数据 批量删除匹配规则数据 Redis宕机 aof文...

qq2233466866
2018/06/11
0
0
在CentOS7.5下安装配置Redis

By velin 杨伟聪 Redis Redis是一个开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API,对于前端来说,也可以简单的认为它是一个运行...

velin_杨伟聪
02/11
0
0
CentOS7 安装配置redis4.0.11并设置开机自启

绪论 Redis 是一个开源(BSD许可)的,内存中的数据结构存储系统,它可以用作数据库、缓存和消息中间件。 它支持多种类型的数据结构,如 字符串(strings), 散列(hashes), 列表(lists...

Bob_666
2018/08/10
566
0

没有更多内容

加载失败,请刷新页面

加载更多

Dubbo-自适应拓展机制

背景 在 Dubbo 中,很多拓展都是通过 SPI 机制进行加载的,比如 Protocol、Cluster、LoadBalance 等,这些都是Dubbo的基础组件。这些基础组件的拓展不是在系统框架启动阶段被加载,而是拓展方...

rock-man
8分钟前
2
0
Kali安装fcitx输入法(五笔)

安装fcitx > sudo apt-get install fcitx-rime fcitx-config-gtk3 重启 > sudo reboot fcitx配置 效果就是这样 配置输入法切换 系统设置...

yeahlife
10分钟前
2
0
IE之css3效果兼容

本文转载于:专业的前端网站▷IE之css3效果兼容 一、兼容css阴影效果(ie滤镜) 1.Shadow,阴影 .shadow { -moz-box-shadow: 3px 3px 4px #000; -webkit-box-shadow: 3px 3px 4px #000; box-sha...

前端老手
13分钟前
2
0
NiushopB2C开源商城功能列表说明:

B2C单商户免费版:PC商城+微商城 B2C单商户标准版:PC商城+微商城组合套餐+阶梯优惠核销功能 B2C单商户企业版:PC商城+微商城拼团+组合套餐阶梯优惠+核销功能 B2C单商户分销版:PC商城+微商城...

niushop-芳
15分钟前
2
0
图片如何转GIF图片呢

如何将生活中拍摄的好玩有趣的图片制作成GIF动图呢?相信很多小伙伴都不知道要如何制作,其实制作方法非常的简单,下面分享一个图片转GIF动图的方法,希望这个方法能够帮助大家在与好友斗图时...

白米稀饭2019
22分钟前
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部