keepalived+haproxy+redis-cluster 高可用负载均衡redis集群搭建

本文涉及的产品
Redis 开源版,标准版 2GB
推荐场景:
搭建游戏排行榜
云数据库 Tair(兼容Redis),内存型 2GB
应用型负载均衡 ALB,每月750个小时 15LCU
简介: keepalived+haproxy+redis-cluster 高可用负载均衡redis集群搭建

搭建高可用redis-cluster集群


KeepAlived+Redis+Haproxy实现主从热备、负载均衡、秒级切换实战


Redis+Keepalived+Haproxy 的集群架构,分别用六个端口,实现多路复用,最终实现主从热备、负载均衡、秒级切换。


一、部署Redis集群


1、环境

一台虚拟机模拟6个节点,创建出3 master、3 salve 环境

redis1: 192.168.182.120:(6001~6006)

2、安装 redis 实例 (6节点)

配置截图

[root@redis-s redis]# ls
6001  6002  6003  6004  6005  6006


其中一个节点的conf文件


[root@redis-s redis]# cat 6001/conf/redis.conf 
bind 0.0.0.0
protected-mode no
port 6001
daemonize no
dir /redis/6001/data
cluster-enabled yes
cluster-config-file /redis/6001/conf/nodes.conf
cluster-node-timeout 5000
appendonly yes
daemonize yes
pidfile /redis/6001/redis.pid
logfile /redis/6001/log/redis.log
requirepass redis
masterauth redis

3、检查 redis 启动情况

[root@redis-s ~]# sh start.redis.sh 
[root@redis-s ~]# netstat -tnlp |grep redis
tcp        0      0 0.0.0.0:6001            0.0.0.0:*               LISTEN      88031/redis-server  
tcp        0      0 0.0.0.0:6002            0.0.0.0:*               LISTEN      88034/redis-server  
tcp        0      0 0.0.0.0:6003            0.0.0.0:*               LISTEN      88041/redis-server  
tcp        0      0 0.0.0.0:6004            0.0.0.0:*               LISTEN      88048/redis-server  
tcp        0      0 0.0.0.0:6005            0.0.0.0:*               LISTEN      88055/redis-server  
tcp        0      0 0.0.0.0:6006            0.0.0.0:*               LISTEN      88061/redis-server  
tcp        0      0 0.0.0.0:16001           0.0.0.0:*               LISTEN      88031/redis-server  
tcp        0      0 0.0.0.0:16002           0.0.0.0:*               LISTEN      88034/redis-server  
tcp        0      0 0.0.0.0:16003           0.0.0.0:*               LISTEN      88041/redis-server  
tcp        0      0 0.0.0.0:16004           0.0.0.0:*               LISTEN      88048/redis-server  
tcp        0      0 0.0.0.0:16005           0.0.0.0:*               LISTEN      88055/redis-server  
tcp        0      0 0.0.0.0:16006           0.0.0.0:*               LISTEN      88061/redis-server


4、创建集群

[root@redis-s redis]#./redis-cli --cluster create 192.168.182.120:6001 192.168.182.120:6002 192.168.182.120:6003 192.168.182.120:6004 192.168.182.120:6005 192.168.182.120:6006 --cluster-replicas 1 -a redis


查看redis集群状态

127.0.0.1:6001> CLUSTER NODES
5b140543ba736c7429783086a4698ce23f5ea009 192.168.182.120:6004@16004 slave e40ed46e827115fabf18fe71a527d8b9279761c0 0 1593782850256 4 connected
e40ed46e827115fabf18fe71a527d8b9279761c0 192.168.182.120:6003@16003 master - 0 1593782849000 3 connected 10923-16383
dbb64e167721771fb57acd37f0c4510eb23dc9b5 192.168.182.120:6001@16001 myself,master - 0 1593782850000 1 connected 0-5460
a703d5e2a4a47627d56d964c4ab524542d5a9c66 192.168.182.120:6002@16002 master - 0 1593782849000 2 connected 5461-10922
b8081e72a84b826abc33801aeae397deb8810e60 192.168.182.120:6005@16005 slave dbb64e167721771fb57acd37f0c4510eb23dc9b5 0 1593782849037 5 connected
e2908aaae69ed7f239927d2a62977877cafb0b65 192.168.182.120:6006@16006 slave a703d5e2a4a47627d56d964c4ab524542d5a9c66 0 1593782849247 6 connected


5、集群验证

127.0.0.1:6001> set name haitao
-> Redirected to slot [5798] located at 192.168.182.120:6002
OK


验证

127.0.0.1:6006> get name
-> Redirected to slot [5798] located at 192.168.182.120:6002
"haitao"


二、部署Keepalived,实现主从热备、秒级切换


1、环境

两台虚拟机或者选择集群中的任意两个节点配置

keepalived1+haproxy:192.168.182.100

keepalived2+haproxy:192.168.182.110

VIP地址:192.168.182.200

2、安装keepalived

3、修改配置文件

1、keepalived1 配置

[root@ha1 ~]# cat /etc/keepalived/keepalived.conf 
[root@ha2 ~]# cat /etc/keepalived/keepalived.conf 
! Configuration File for keepalived
global_defs {
   router_id HA1        
}
vrrp_script check_haproxy {
   script "/etc/keepalived/check_haproxy.sh"
   interval 5
}
vrrp_instance VI_1 {
    state BACKUP
    nopreempt                           
    interface eth0                              
    virtual_router_id 80                
    priority 100                            
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        192.168.182.200
    }
track_script {
        check_haproxy
    }
}

2、keepalived2 配置

[root@ha2 ~]# cat /etc/keepalived/keepalived.conf 
! Configuration File for keepalived
global_defs {
   router_id HA2        
}
vrrp_script check_haproxy {
   script "/etc/keepalived/check_haproxy.sh"
   interval 5
}
vrrp_instance VI_1 {
    state BACKUP
    nopreempt                           
    interface eth0                              
    virtual_router_id 80                
    priority 100                            
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        192.168.182.200
    }
track_script {
        check_haproxy
    }
}


3、健康检测脚本 haproxy_chk.sh

[root@ha2 ~]# cat /etc/keepalived/check_haproxy.sh 
#!/bin/bash                                                                                                     
/usr/bin/curl -I http://127.0.0.1:1314/haproxystats &>/dev/null 
if [ $? -ne 0 ];then                                                                            
        /usr/bin/systemctl stop keepalived                                      
fi


4、开启服务验证是VIP

[root@ha2 ~]# ip a |grep eth
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 00:0c:29:13:2a:a8 brd ff:ff:ff:ff:ff:ff
    inet 192.168.182.110/24 brd 192.168.182.255 scope global noprefixroute eth0
    inet 192.168.182.200/32 scope global eth0


三、部署haproxy,实现访问6379端口时,轮询访问六个节点


1、安装 haproxy

2、创建 haproxy.conf

[root@ha2 ~]# cat /etc/haproxy/haproxy.cfg
global
    log                     127.0.0.1 local0
    chroot                  /var/lib/haproxy
    pidfile                 /var/run/haproxy.pid
    maxconn                 4000
    user                    haproxy
    group                   haproxy
    daemon
defaults
    mode                     http
    log                      global
    option                   dontlognull
    retries                  3
    maxconn                  3000
    contimeout               50000
    clitimeout               50000
    srvtimeout               50000
listen stats
    bind                    *:1314
    stats                   enable
    stats                   hide-version
    stats uri               /haproxystats
    stats realm             Haproxy\ stats
    stats auth              admin:admin
    stats admin             if TRUE
listen  redis
        bind *:6379
        mode tcp   #{ tcp|http|health } 设定启动的实例的协议类型,此处要选择tcp,因为redis是基于tcp协议运行的
        balance roundrobin
        server redis1 192.168.182.120:6001 check
        server redis2 192.168.182.120:6002 check
        server redis3 192.168.182.120:6003 check
        server redis4 192.168.182.120:6004 check
        server redis5 192.168.182.120:6005 check
        server redis6 192.168.182.120:6006 check


3、haproxy 监控页面访问验证

http://192.168.182.200:1314/haproxystats


端口1314 账号密码 admin:admin

有以下效果

相关实践学习
基于Redis实现在线游戏积分排行榜
本场景将介绍如何基于Redis数据库实现在线游戏中的游戏玩家积分排行榜功能。
云数据库 Redis 版使用教程
云数据库Redis版是兼容Redis协议标准的、提供持久化的内存数据库服务,基于高可靠双机热备架构及可无缝扩展的集群架构,满足高读写性能场景及容量需弹性变配的业务需求。 产品详情:https://www.aliyun.com/product/kvstore &nbsp; &nbsp; ------------------------------------------------------------------------- 阿里云数据库体验:数据库上云实战 开发者云会免费提供一台带自建MySQL的源数据库&nbsp;ECS 实例和一台目标数据库&nbsp;RDS实例。跟着指引,您可以一步步实现将ECS自建数据库迁移到目标数据库RDS。 点击下方链接,领取免费ECS&amp;RDS资源,30分钟完成数据库上云实战!https://developer.aliyun.com/adc/scenario/51eefbd1894e42f6bb9acacadd3f9121?spm=a2c6h.13788135.J_3257954370.9.4ba85f24utseFl
目录
相关文章
|
3月前
|
运维 负载均衡 网络协议
LVS+Keepalived 负载均衡
LVS+Keepalived 负载均衡
77 8
LVS+Keepalived 负载均衡
|
3月前
|
域名解析 运维 负载均衡
LVS+Keepalived 负载均衡(二)28-1
【8月更文挑战第28天】LVS+Keepalived 负载均衡 配置 LVS VIP
67 5
|
4月前
|
负载均衡 算法 前端开发
HAProxy 和负载均衡概念简介
HAProxy 和负载均衡概念简介
78 3
|
5月前
|
负载均衡 NoSQL 应用服务中间件
搭建高可用及负载均衡的Redis
【7月更文挑战第10天】
150 1
|
5月前
|
负载均衡 安全 Cloud Native
云上负载均衡:构建高可用、高性能的网络应用架构
与云原生技术深度融合:随着云原生技术的普及和发展未来的云上负载均衡将更加紧密地与云原生技术相结合。例如与Kubernetes等容器编排平台集成实现自动化的服务发现和路由管理;与Serverless架构结合提供无缝的流量接入和请求处理能力。 安全性能提升:面对日益严峻的网络安全威胁云上负载均衡将更加注重安全性能的提升。通过引入加密传输、访问控制、DDoS防护等安全措施确保网络流量的安全性和隐私性;同时还将建立完善的安全监控和应急响应机制以应对各种安全事件和突发事件。 支持多协议和多场景:未来的云上负载均衡将支持更多种类的网络协议和应用场景以满足不同用户和业务的需求。例如支持HTTP/2、
248 0
|
5月前
|
负载均衡 算法 Java
实现高可用和可扩展的负载均衡系统的Java方法
实现高可用和可扩展的负载均衡系统的Java方法
|
6月前
|
负载均衡 应用服务中间件 开发工具
技术笔记:nginx和keeplive实现负载均衡高可用
技术笔记:nginx和keeplive实现负载均衡高可用
|
7月前
|
负载均衡 网络协议 应用服务中间件
【亮剑】在Linux中构建高可用性和高性能网络服务的负载均衡工具HAProxy、Nginx和Keepalived。
【4月更文挑战第30天】本文介绍了在Linux中构建高可用性和高性能网络服务的负载均衡工具HAProxy、Nginx和Keepalived。HAProxy是一个高性能的开源TCP和HTTP负载均衡器,适合处理大量并发连接;Nginx是一个多功能Web服务器和反向代理,支持HTTP、HTTPS和TCP负载均衡,同时提供缓存和SSL功能;Keepalived用于监控和故障切换,通过VRRP实现IP热备份,保证服务连续性。文中详细阐述了如何配置这三个工具实现负载均衡,包括安装、配置文件修改和启动服务,为构建可靠的负载均衡系统提供了指导。
166 0
|
2月前
|
消息中间件 缓存 NoSQL
Redis 是一个高性能的键值对存储系统,常用于缓存、消息队列和会话管理等场景。
【10月更文挑战第4天】Redis 是一个高性能的键值对存储系统,常用于缓存、消息队列和会话管理等场景。随着数据增长,有时需要将 Redis 数据导出以进行分析、备份或迁移。本文详细介绍几种导出方法:1)使用 Redis 命令与重定向;2)利用 Redis 的 RDB 和 AOF 持久化功能;3)借助第三方工具如 `redis-dump`。每种方法均附有示例代码,帮助你轻松完成数据导出任务。无论数据量大小,总有一款适合你。
78 6
|
18天前
|
缓存 NoSQL 关系型数据库
大厂面试高频:如何解决Redis缓存雪崩、缓存穿透、缓存并发等5大难题
本文详解缓存雪崩、缓存穿透、缓存并发及缓存预热等问题,提供高可用解决方案,帮助你在大厂面试和实际工作中应对这些常见并发场景。关注【mikechen的互联网架构】,10年+BAT架构经验倾囊相授。
大厂面试高频:如何解决Redis缓存雪崩、缓存穿透、缓存并发等5大难题