一、编译Redis
-
下载Redis(5.0.8版本)源码并解压 https://redis.io/download/、https://github.com/redis/redis/
-
安装gcc, yum install gcc
-
进入src目录,执行 make MALLOC=libc 进行编译
-
生成的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=ansonredisREDISPORT1=5804REDISPORT2=5805# redis-server可执行脚本所在目录EXEC=/usr/local/bin/redis-server# redis-cli可执行脚本所在目录CLIEXEC=/usr/local/bin/redis-cliPIDFILE1=/var/run/redis_${REDISPORT1}.pidPIDFILE2=/var/run/redis_${REDISPORT2}.pidCONF1="/etc/redis/${REDISPORT1}.conf"CONF2="/etc/redis/${REDISPORT2}.conf"case "$1" instart)if [ -f $PIDFILE1 ]thenecho "$PIDFILE1 exists, process is already running or crashed"elseecho "Starting Redis server..."$EXEC $CONF1$EXEC $CONF2echo "Redis Cluster started"fi;;stop)if [ ! -f $PIDFILE1 ]thenecho "$PIDFILE1 does not exist, process is not running"elsePID=$(cat $PIDFILE1)echo "Stopping ..."$CLIEXEC -h $IP -p $REDISPORT1 -a $PWD shutdown$CLIEXEC -h $IP -p $REDISPORT2 -a $PWD shutdownwhile [ -x /proc/${PID} ]doecho "Waiting for Redis to shutdown ..."sleep 1doneecho "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