运维实战 Redis负载均衡+去中心化+持久化存储
Posted 洛冰音
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了运维实战 Redis负载均衡+去中心化+持久化存储相关的知识,希望对你有一定的参考价值。
运维实战 Redis负载均衡+去中心化+持久化存储
持久化存储
Redis 提供了不同级别的持久化方式
RDB
持久化方式能够在指定的时间间隔能对你的数据进行快照存储.AOF
持久化方式记录每次对服务器写的操作, 当服务器重启的时候会重新执行这些命令来恢复原始的数据, AOF命令以redis
协议追加保存每次写的操作到文件末尾. Redis还能对AOF文件进行后台重写,使得AOF文件的体积不至于过大.RDB
主要用于主从复制AOF
保存的数据更为完整, 但同时其大小也更大- 默认采用
RDB
的方式进行持久化存储
##主配置文件中的持久化相关设置
save 900 1 当有一条Keys数据被改变时, 900秒刷新到Disk一次
save 300 10 当有10条Keys数据被改变时, 300秒刷新到Disk一次
save 60 10000 当有10000条Keys数据被改变时, 60秒刷新到Disk一次
appendonly yes 启用AOF持久化方式
appendfsync everysec 每秒钟强制写入磁盘一次
三条不同的save
规则分别对应不同的数据频率.
Redis负载均衡
一般情况下, 没有部署负载均衡时, 用户在使用redis
过程中会导致某个master
节点负载过高,并且其它节点资源也不能被充分利用,因此我们的目标是利用twemproxy
实现对redis master
的负载均衡
部署流程
- 将三台主机的
Redis
都设置为MASTER
vim /etc/redis/redis.conf
#replicaof 192.168.0.13 6379
systemctl restart redis_server.service
- 开启新的主机
Server4
并在上面部署twemproxy
[root@Server4 ~]# yum install -y unzip
[root@Server4 ~]# unzip twemproxy-master.zip
[root@Server4 ~]# cd twemproxy-master/
[root@Server4 twemproxy-master]# yum install -y automake libtool
[root@Server4 twemproxy-master]# autoreconf -fvi
[root@Server4 twemproxy-master]# ls
aclocal.m4 ChangeLog config configure contrib m4 Makefile.in notes README.md src travis.sh
autom4te.cache conf config.h.in configure.ac LICENSE Makefile.am man NOTICE scripts tests
[root@Server4 twemproxy-master]# ./configure
[root@Server4 twemproxy-master]# make
[root@Server4 twemproxy-master]# make install
[root@Server4 twemproxy-master]# which nutcracker
/usr/local/sbin/nutcracker
- 对其进行配置
[root@Server4 twemproxy-master]# cd conf/
[root@Server4 conf]# ls
nutcracker.leaf.yml nutcracker.root.yml nutcracker.yml
[root@Server4 conf]# mkdir /etc/twemproxy
[root@Server4 conf]# cp nutcracker.yml /etc/twemproxy
[root@Server4 conf]# cd /etc/twemproxy
[root@Server4 twemproxy]# vim nutcracker.yml
alpha:
listen: 0.0.0.0:22121
hash: fnv1a_64
distribution: ketama
auto_eject_hosts: true
redis: true
server_retry_timeout: 2000
server_failure_limit: 1
servers:
- 172.25.5.1:6379:1 app1
- 172.25.5.2:6379:1 app2
- 172.25.5.3:6379:1 app3
[root@Server4 twemproxy]# nutcracker -d -c /etc/twemproxy/nutcracker.yml
[root@Server4 twemproxy]# netstat -antlp
在Server4
上通过redis-cli -p 22121
连接Redis
数据库时, 写入的数据会均衡调度到三个MASTER
节点上进行存储.
如果其中某个节点Down
掉了,Server4
的使用情况也不会受到影响.
同理, 每个Master
也可以做主从, 实现高可用和负载均衡一体.
Redis-Cluster实现去中心化
安装部署
[root@Server1 create-cluster]# pwd
/root/redis-6.2.1/utils/create-cluster
[root@Server1 create-cluster]# ls
create-cluster README
##集群启动脚本
[root@Server1 create-cluster]# ./create-cluster start
Starting 30001
Starting 30002
Starting 30003
Starting 30004
Starting 30005
Starting 30006
##创建集群
[root@Server1 create-cluster]# ./create-cluster create
##查看集群状态
[root@Server1 create-cluster]# redis-cli --cluster check 127.0.0.1:30001
当访问集群时,会自动被重定向.
由于集群中每个节点均可读写, 因此从任何一个节点接入集群都可以进行读写操作, 也就是俗称的去中心化.
同时其内部自带高可用设置.
如刚才的设置中开启了6
个进程, 三主三从.
假设Server2
为主, Server4
为其从机.那么当Server2
down掉了之后, Server4
接管其位置继续维持服务.
但由于Cluster
是通过哈希槽的方式进行数据分配的,将16384个哈希槽分配给各主节点进行存储.任意一个哈希槽丢失, 整个集群都无法正常运作.
因此一旦任意一对主从完全down掉之后,整个集群都会瘫痪.
以上是关于运维实战 Redis负载均衡+去中心化+持久化存储的主要内容,如果未能解决你的问题,请参考以下文章