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

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

转载于:https://my.oschina.net/u/3149614/blog/1522823

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值