暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

聊聊Redis的集群模式- 环境搭建

码农半亩田 2021-11-09
461

        Redis一直以它的高性能,高可用,分布式的特性被大家选用,特别是在一些ToC的场景中被大家广泛使用,比如做缓存,分布式锁等等。

        今天我们就来聊聊Redis的高可用的集群模式,并演练一下在集群模式下的它是怎么故障转移的。我会分多篇来介绍对应的内容,当前这篇是搭建Redis集群环境,先来张集群架构图熟悉一下。


一、环境搭建:

  0x01:依赖环境:Linux+Redis

  0x02:下载编译文件

$ wget https://download.redis.io/releases/redis-6.2.6.tar.gz
$ tar xzf redis-6.2.6.tar.gz
$ cd redis-6.2.6/src
$ make

0x03:创建目录

$ mkdir -p /usr/local/redis/etc /usr/local/redis/data\
 /usr/local/redis/bin /usr/local/redis/logs

0x04:把编译好的二进制文件复制到相应的目录中

$  cp redis-benchmark redis-check-aof\
redis-check-rdb redis-cli redis-sentinel\
 redis-server redis-trib.rb /usr/local/redis/bin

0x05:设置客户端软链

$ ln -s /usr/local/redis/bin/redis-cli /usr/local/bin/redis-cli

0x06:创建集群脚本

$ cd /usr/local/redis/
$ touch cluster.sh
$ chmod +x cluster.sh
$ vim cluster.sh

添加如下内容:

#!/bin/bash


#set -x


REDIS_DIR=/usr/local/redis
REDIS_BIN=${REDIS_DIR}/bin/


# 配置目录
REDIS_ETC=${REDIS_DIR}/etc/


# 工作目录
REDIS_DATA=${REDIS_DIR}/data/


# 日志目录
REDIS_LOG=${REDIS_DIR}/logs/


# 服务端口
PORTS="7000 7001 7002 7003 7004 7005"


# 集群创建指令
TEMP="${REDIS_BIN}redis-cli --cluster create"


for port in ${PORTS}; do
CONF=${REDIS_ETC}${port}
# 创建配置目录与数据目录
if [ ! -d ${CONF} ]; then
mkdir -p ${CONF}
mkdir -p ${REDIS_DATA}${port}
fi


# 创建配置文件
if [ ! -e ${CONF}/redis.conf ]; then
touch ${CONF}/redis.conf
# 写入配置
cat >${CONF}/redis.conf<<EOF
port ${port}
cluster-enabled yes
cluster-config-file nodes.conf
cluster-node-timeout 5000
appendonly yes
daemonize yes
dir ${REDIS_DATA}${port}
loglevel notice
logfile "${REDIS_LOG}${port}.log"
EOF
fi


# 启动对应的服务
${REDIS_BIN}redis-server ${CONF}/redis.conf


# 集群指令
TEMP="${TEMP} 127.0.0.1:${port} "
done


TEMP="${TEMP} --cluster-replicas 1"
echo "请在终端中运行下面的指令,如果之前运行过请忽略:"
echo ${TEMP}


0x07:运行脚本并启动对应的服务

./cluster.sh

运行后你会看到这个

请在终端中运行下面的指令,如果之前运行过请忽略:
/usr/local/redis/bin/redis-cli --cluster create 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 --cluster-replicas 1

0x08: 查看Redis是否启动

$ ps x | grep redis
885207 ? Ssl 0:00 /usr/local/redis/bin/redis-server *:7000 [cluster]
885213 ? Ssl 0:00 /usr/local/redis/bin/redis-server *:7001 [cluster]
885227 ? Ssl 0:00 /usr/local/redis/bin/redis-server *:7002 [cluster]
885237 ? Ssl 0:00 /usr/local/redis/bin/redis-server *:7003 [cluster]
885247 ? Ssl 0:00 /usr/local/redis/bin/redis-server *:7004 [cluster]
885253 ? Ssl 0:00 /usr/local/redis/bin/redis-server *:7005 [cluster]
885873 pts/0 S+ 0:00 grep --color=auto redis

0x09:执行0x07中输出的指令来创建集群

$ /usr/local/redis/bin/redis-cli --cluster create 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 --cluster-replicas 1

看到这样的一句话,请一定输入:yes回车执行

Can I set the above configuration? (type 'yes' to accept):yes

运行后看到如下内容说明集群创建成功:

[OK] All 16384 slots covered.

0x0A:用客户端连接到服务体验一下:

$ redis-cli -c -p 7000
redis 127.0.0.1:7000> set foo bar
-> Redirected to slot [12182] located at 127.0.0.1:7002
OK
redis 127.0.0.1:7002> set hello world
-> Redirected to slot [866] located at 127.0.0.1:7000
OK
redis 127.0.0.1:7000> get foo
-> Redirected to slot [12182] located at 127.0.0.1:7002
"bar"
redis 127.0.0.1:7002> get hello
-> Redirected to slot [866] located at 127.0.0.1:7000
"world"

至此整个集群已运行起来了。 


二、查看集群状态:

0x01: 查看状态

$ redis-cli -p 7000 cluster nodes
7e4983679f4733b7c57f5880d08b54f60da1b20e 127.0.0.1:7001@17001 master - 0 1636459919000 2 connected 5461-10922
e52cce0aba2fad9008b594afa1eb75a86fa7a617 127.0.0.1:7002@17002 master - 0 1636459920668 3 connected 10923-16383
78dcb2561f35b195890e8b9b6899b3748508d8e7 127.0.0.1:7004@17004 slave e52cce0aba2fad9008b594afa1eb75a86fa7a617 0 1636459920567 3 connected
280dc6d63a858fe93c85bb2de2d2f52d80090b22 127.0.0.1:7003@17003 slave 7e4983679f4733b7c57f5880d08b54f60da1b20e 0 1636459919565 2 connected
023fbcdc385841810a5056c148b89d88bd497c93 127.0.0.1:7000@17000 myself,master - 0 1636459919000 1 connected 0-5460
a6d284c75bbfc2c829596ff18a3fbbbc82dd9b7b 127.0.0.1:7005@17005 slave 023fbcdc385841810a5056c148b89d88bd497c93 0 1636459920000 1 connected

输出的内容可以清晰的看到对应的关系

master nodes

127.0.0.1:7000

127.0.0.1:7001

127.0.0.1:7002


slave nodes 及对应的master node

127.0.0.1:7003 -> 127.0.0.1:7001

127.0.0.1:7004 -> 127.0.0.1:7002

127.0.0.1:7005 -> 127.0.0.1:7000


总结:集群的搭建已完成了,并可以清晰的看到对应的关系,最后再来放一下开始的图片,让大家更直观的认识。


后面我会增加一篇《聊聊Redis的集群模式- 故障转移》,对Redis的高可用有更清晰的认知。


喜欢的朋友请一键三连:点赞,在看,+分享

redis
文章转载自 码农半亩田,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论

PHP网站源码贵阳关键词按天扣费清徐关键词按天扣费价格绍兴网站优化排名公司张北网站排名优化多少钱唐山外贸网站建设推荐洛阳网站推广兰州推广网站价格晋城网站推广工具公司昌都关键词按天计费哪家好湖州关键词按天收费哪家好莱芜seo价格红河网站seo优化多少钱朝阳seo排名多少钱巢湖seo报价衢州英文网站建设多少钱潍坊营销网站公司同乐SEO按天扣费推荐宿州网站关键词优化公司毕节关键词排名包年推广价格泸州网站优化排名多少钱珠海seo排名哪家好吕梁网站seo优化鞍山关键词排名公司诸城seo网站优化公司沈阳SEO按天收费多少钱大浪网站建设设计承德网站推广系统价格普洱网站优化推广多少钱江门seo排名报价福田网站优化按天收费公司歼20紧急升空逼退外机英媒称团队夜以继日筹划王妃复出草木蔓发 春山在望成都发生巨响 当地回应60岁老人炒菠菜未焯水致肾病恶化男子涉嫌走私被判11年却一天牢没坐劳斯莱斯右转逼停直行车网传落水者说“没让你救”系谣言广东通报13岁男孩性侵女童不予立案贵州小伙回应在美国卖三蹦子火了淀粉肠小王子日销售额涨超10倍有个姐真把千机伞做出来了近3万元金手镯仅含足金十克呼北高速交通事故已致14人死亡杨洋拄拐现身医院国产伟哥去年销售近13亿男子给前妻转账 现任妻子起诉要回新基金只募集到26元还是员工自购男孩疑遭霸凌 家长讨说法被踢出群充个话费竟沦为间接洗钱工具新的一天从800个哈欠开始单亲妈妈陷入热恋 14岁儿子报警#春分立蛋大挑战#中国投资客涌入日本东京买房两大学生合买彩票中奖一人不认账新加坡主帅:唯一目标击败中国队月嫂回应掌掴婴儿是在赶虫子19岁小伙救下5人后溺亡 多方发声清明节放假3天调休1天张家界的山上“长”满了韩国人?开封王婆为何火了主播靠辱骂母亲走红被批捕封号代拍被何赛飞拿着魔杖追着打阿根廷将发行1万与2万面值的纸币库克现身上海为江西彩礼“减负”的“试婚人”因自嘲式简历走红的教授更新简介殡仪馆花卉高于市场价3倍还重复用网友称在豆瓣酱里吃出老鼠头315晚会后胖东来又人满为患了网友建议重庆地铁不准乘客携带菜筐特朗普谈“凯特王妃P图照”罗斯否认插足凯特王妃婚姻青海通报栏杆断裂小学生跌落住进ICU恒大被罚41.75亿到底怎么缴湖南一县政协主席疑涉刑案被控制茶百道就改标签日期致歉王树国3次鞠躬告别西交大师生张立群任西安交通大学校长杨倩无缘巴黎奥运

PHP网站源码 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化