微系列:2、在Centos中,搭建Redis集群

一、编译Redis

  1. 下载Redis(5.0.8版本)源码并解压  https://redis.io/download/、https://github.com/redis/redis/

  2. 安装gcc, yum install gcc

  3. 进入src目录,执行 make MALLOC=libc 进行编译

  4. 生成的redis-server和redis-cli为可执行文件.

二、修改配置

在Redis源码目录中,有配置文件redis.conf,打开并修改如下配置

# 端口port 5800# 绑定ipbind xxx.xxx.xxx.xxx# 后台运行daemonize yes# 进程号文件位置pidfile /var/run/redis_5800.pid# 日志文件位置logfile "/var/log/redis_5800.log"# 数据文件目录dir "/opt/redis-cluster/5800"# 连接master认证密码masterauth ansonredis# 认证密码requirepass ansonredis# 开启集群模式cluster-enabled yes# 集群配置文件名称,启动集群后自动生成cluster-config-file nodes-5800.conf

三、搭建集群

新建文件夹5800,将redis-server、redis-cli、redis.conf拷贝到新建的文件夹中

执行命令 

./redis-server redis.conf &

启动该节点

搭建多个节点,可以复制5800文件夹,修改相关配置,并依次启动

设置防火墙

firewall-cmd --add-port=5800/tcp --permanentfirewall-cmd --reload

使用redis-cli搭建集群

./redis-cli --cluster create 192.168.0.1:5800 192.168.0.1:5801 \192.168.0.2:5802 192.168.0.2:5803 \192.168.0.3:5804 192.168.0.3:5805 \--cluster-replicas 1 -a ansonredis

执行完以上命令,redis会自动分配master节点及replica节点供我们确认,输入yes,完成集群搭建

查看master节点

./redis-cli -h 192.168.0.1 -p 5800 -a ansonredis cluster nodes | grep master

停止某个Redis节点

./redis-cli -h 192.168.0.1 -p 5800 -a ansonredis shutdown

重新将某个节点加入集群

# 移除节点./redis-cli -h 192.168.0.1 -p 5800 -a xxx cluster forget 节点id# 重启# 将节点加入集群./redis-cli -a xxx --cluster add-node 192.168.0.3:5805 192.168.0.3:5804 --cluster-slave

四、设置开机启动

由于搭建集群时,Redis会自动生成集群配置文件,由cluster-config-file参数指定,所以,重启Redis时,会自动加入集群

为了重启电脑Redis可以正常启动,我们需要设置Redis开机启动,

在/etc/rc.d/init.d新建redisc脚本,写入以下内容,以下为启动两个节点

IP=192.168.0.3PWD=ansonredis
REDISPORT1=5804REDISPORT2=5805# redis-server可执行脚本所在目录EXEC=/usr/local/bin/redis-server# redis-cli可执行脚本所在目录CLIEXEC=/usr/local/bin/redis-cli
PIDFILE1=/var/run/redis_${REDISPORT1}.pidPIDFILE2=/var/run/redis_${REDISPORT2}.pidCONF1="/etc/redis/${REDISPORT1}.conf"CONF2="/etc/redis/${REDISPORT2}.conf"
case "$1" in    start)        if [ -f $PIDFILE1 ]        then                echo "$PIDFILE1 exists, process is already running or crashed"        else                echo "Starting Redis server..."                $EXEC $CONF1                $EXEC $CONF2                echo "Redis Cluster started"        fi        ;;    stop)        if [ ! -f $PIDFILE1 ]        then                echo "$PIDFILE1 does not exist, process is not running"        else                PID=$(cat $PIDFILE1)                echo "Stopping ..."                $CLIEXEC -h $IP -p $REDISPORT1 -a $PWD shutdown                $CLIEXEC -h $IP -p $REDISPORT2 -a $PWD shutdown                while [ -x /proc/${PID} ]                do                    echo "Waiting for Redis to shutdown ..."                    sleep 1                done                echo "Redis stopped"        fi        ;;    *)        echo "Please use start or stop as first argument"        ;;esac

添加可执行权限 chmod +x /etc/rc.d/init.d/redisc

注册为系统服务 chkconfig --add redisc

添加开机自启动 chkconfig redisc on

启动服务 service redisc start

停止服务 service redisc stop