redis集群搭建笔记
不使用集群工具搭建一个三主三从的高可用集群,redis节点规划如下
redis主节点:
192.168.17.155:7001
192.168.17.155:7002
192.168.17.155:7003
redis从节点:
192.168.17.155:8001
192.168.17.155:8002
192.168.17.155:8003
##开始搭建
安装并配置redis
-
下载redis源码
mkdir -p /redis/src wget -c -P /redis/src/ http://download.redis.io/releases/redis-4.0.1.tar.gz
-
解压缩
cd /redis/src/ && tar -zxvf redis-4.0.1.tar.gz -C /usr/local/
-
修改原始配置文件
cd /usr/local/redis-4.0.1/ && vi redis.conf
主要的修改如下
修改绑定IP地址为全部网卡地址: bind 192.168.17.155
守护进程启动的方式: daemonize yes
指定pid文件位置: pidfile /var/run/redis-7001.pid
设置请求密码: requirepass 000000
设置主从连接密码: masterauth 000000
设置日志路径: logfile “/var/log/redis/redis-server-7001.log”
设置集群模式: cluster-enabled yes
redis集群配置: cluster-config-file nodes-7001.conf
超时时间: cluster-node-timeout 15000
开启持久化AOF: appendonly yes
设置文件名:appendfilename “appendonly-7001.aof”
端口号:port 7001 -
编译并安装
yum install -y gcc make make && make install
-
将刚才的原始配置文件复制六份并修改信息
vi cp-conf.sh
内容如下:
#!/bin/bash CONF_PATH=/etc/redis mkdir -p ${CONF_PATH} for ((i=7001;i<=7003;i++)) do cp /usr/local/redis-4.0.1/redis.conf ${CONF_PATH}/redis-${i}.conf sed -i "s/7001/${i}/g" ${CONF_PATH}/redis-${i}.conf done for ((i=8001;i<=8003;i++)) do cp /usr/local/redis-4.0.1/redis.conf ${CONF_PATH}/redis-${i}.conf sed -i "s/7001/${i}/g" ${CONF_PATH}/redis-${i}.conf done
-
执行脚本
chmod +x cp-conf.sh && sh cp-conf.sh
-
现在分别启动六个redis实例
vi redis-start.sh
内容如下
#!/bin/bash CONF_PATH=/etc/redis for ((i=7001;i<=7003;i++)) do redis-server ${CONF_PATH}/redis-${i}.conf done for ((i=8001;i<=8003;i++)) do redis-server ${CONF_PATH}/redis-${i}.conf done
-
执行脚本
mkdir -p /var/log/redis/ chmod +x redis-start.sh && sh redis-start.sh
-
用ss命令查看一下服务是否正常启动
ss -tlnup | grep redis
到此六个实例就已经安装并启动完毕了。
开始构建集群
-
传统方式
-
六个节点握手
vi meet.sh
内容如下
#!/bin/bash for ((i=7002;i<=7003;i++)) do redis-cli -h 192.168.17.155 -p 7001 -a 000000 CLUSTER MEET 192.168.17.155 ${i} done for ((i=8001;i<=8003;i++)) do redis-cli -h 192.168.17.155 -p 7001 -a 000000 CLUSTER MEET 192.168.17.155 ${i} done
-
执行脚本
chmod +x meet.sh && sh meet.sh
-
分配槽位
vi redis-slot.sh
内容如下
#!/bin/bash n=0 for ((i=n;i<=5461;i++)) do redis-cli -h 192.168.17.155 -p 7001 -a 000000 CLUSTER ADDSLOTS $i done n=5462 for ((i=n;i<=10922;i++)) do redis-cli -h 192.168.17.155 -p 7002 -a 000000 CLUSTER ADDSLOTS $i done n=10923 for ((i=n;i<=16383;i++)) do redis-cli -h 192.168.17.155 -p 7003 -a 000000 CLUSTER ADDSLOTS $i done
-
执行脚本
chmod +x redis-slot.sh && sh redis-slot.sh
查看一下cluster节点信息
-
添加slave
可以看到上图的节点信息中的第一列,即为我们需要的信息,用于添加主从,让我们截取一下
vi redis-rep.sh
内容如下
#!/bin/bash M7001=`redis-cli -h 192.168.17.155 -p 7001 -a 000000 CLUSTER NODES | grep myself | cut -f 1 -d " "` M7002=`redis-cli -h 192.168.17.155 -p 7002 -a 000000 CLUSTER NODES | grep myself | cut -f 1 -d " "` M7003=`redis-cli -h 192.168.17.155 -p 7003 -a 000000 CLUSTER NODES | grep myself | cut -f 1 -d " "` for ((i=8001;i<=8003;i++)) do TMP_REDIS_NUM=M$((i-1000)) TMP_RP_NUM=`eval echo '$'"${TMP_REDIS_NUM}"` redis-cli -h 192.168.17.155 -p ${i} -a 000000 CLUSTER REPLICATE ${TMP_RP_NUM} done
-
执行
chmod +x redis-rep.sh && sh redis-rep.sh
-
现在再去看一下集群信息
-
到此redis的三主三从的集群就已经搭建完毕了,但是这种方法比较费时,有外网的环境下建议使用redis-trib构建集群。