求助双机热备, VIP 的最好的中间件方案。 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
请不要在回答技术问题时复制粘贴 AI 生成的内容
KamL
V2EX    程序员

求助双机热备, VIP 的最好的中间件方案。

  •  
      KamL 2024-07-09 09:19:06 +08:00 2542 次点击
    这是一个创建于 461 天前的主题,其中的信息可能已经有所发展或是发生改变。
    这两天学习双机热备并且实际操作,但是没研究出来到底什么是比较适合的方案,网上搜出来的方案又太杂.
    想请教一下到底哪个方案最好?目前使用的是 keepalived ,有更好的方案选择吗?
    服务器上跑的服务中 mysql&redis 只有这两个需要使用 vip 做 ip 漂移!
    21 条回复    2024-07-10 16:48:51 +08:00
    vopsoft
        1
    vopsoft  
       2024-07-09 09:21:58 +08:00
    最好 那当然是买两台 F5 了
    njmaojing
        2
    njmaojing  
       2024-07-09 09:26:59 +08:00
    redis 官方有主从或者集群模式,为啥要 vip ?
    0608516518
        3
    0608516518  
       2024-07-09 09:35:59 +08:00   1
    如果特指 VIP ,它底层协议就是 VRRP ,无论是 F5 ,还是硬件路由器、防火墙,都用 VRRP ,所以本质功能没有区别。
    linux 下实现 VRRP 的软件就是 keepalived 了。

    但对于 Mysql 和 redis ,它双机热备恐怕并不*只*用 VIP 实现的吧?因为这两个服务都是有状态的。
    比如两个 mysql 实例,你还得考虑数据同步和一致性的问题。如果想实现高可用,推荐你使用 mysql 的另外的发行版 Percona XtraDB Cluster. 而 Redis 也要部署为 replica 模式。
    govictory66
        4
    govictory66  
       2024-07-09 10:00:49 +08:00
    目前在用的是 mysql+keepalived ,redis 哨兵
    defunct9
        5
    defunct9  
       2024-07-09 10:23:32 +08:00
    ucarp,keepalived 太复杂
    defunct9
        6
    defunct9  
       2024-07-09 10:24:28 +08:00
    更复杂的是 peacemaker+corosync
    vopsoft     7
    vopsoft  
       2024-07-09 10:30:53 +08:00
    看来这里问道的答案会更杂。 那还是用常有的吧 mysql 用 mha (新版自带 vip ) redis 用集群
    anubu
        8
    anubu  
       2024-07-09 10:39:55 +08:00
    整个系统的高可用分多个层面,复杂度主要集中在业务数据层面,各种有状态集群、选主算法、同步算法等等,花活太多了。网络层面就简单多了,一个 VIP 大部分场景都够了,keepalived 简单好用,久经考验。
    cheneydog
        9
    cheneydog  
       2024-07-09 11:20:50 +08:00
    keepalived + docker 方案,部署应该还是比较容易的,基本能用了。
    更高的需求就要更严肃的方案了。
    KamL
        10
    KamL  
    OP
       2024-07-09 13:19:19 +08:00
    @njmaojing #2
    @0608516518 #3
    @vopsoft #7
    @anubu #8
    可能是我问题描述不够详细,情况是这样的,最近公司整了个活,客户的服务器是双机热备(两台刀片服务器 ip 分别是 xx.xx.xx.2, xx.xx.xx.3 ),部署在客户的内网里,要求就是其中一台一旦出问题了,另一台能平滑切换使用,mysql 用的是 5.7 redis 用的 6.2 。
    现在已经配置好了 mysql 双主了,然后 redis 我看了一天网上的教程都是在单机 docker 里使用从库和使用哨兵,那这个 redis 的 vip 到底怎么做到切换呢....mysql 我看 keepalived 可以解决这个问题,那 redis 使用哨兵的话如果集中向外服务提供 vip ?还是用 keepalived 吗?
    sunxvvv
        11
    sunxvvv  
       2024-07-09 14:31:06 +08:00
    @cencoroll 引入哨兵就是为了主故障时,自动选主切换,你连接哨兵集群就行
    KamL
        12
    KamL  
    OP
       2024-07-09 14:58:40 +08:00
    @sunxvvv #11 刚刚发现 springboot 后端可以直接连接哨兵了,傻了,浪费了一上午。
    WashFreshFresh
        13
    WashFreshFresh  
       2024-07-09 17:08:16 +08:00
    直接连哨兵,不连 master 或 slave ,由哨兵告诉我目前的 master 。
    vopsoft
        14
    vopsoft  
       2024-07-10 10:36:45 +08:00
    看起来似乎有问题,mysql 双主有人在生产环境用吗?双主如果发生数据不一直以哪个为准呢

    “要求就是其中一台一旦出问题了,另一台能平滑切换使用” 那坏的那台恢复了 还需要自动恢复吧

    我们的生产环境 mysql 用的 mha 一主多从 也只能切换一次(即发生故障后自动切换,但需要手工恢复)
    还有另一套 sql server 用的两台 sql+一套存储的方式
    KamL
        15
    KamL  
    OP
       2024-07-10 10:56:19 +08:00
    不知道是配置有问题还是啥原因,试着手动关闭 redis-master 后无法自主切换,还是尝试重连 master ,试了 10 几次只有一次能切换。我是两边的服务器都需要配置 2 个哨兵吗?不知道是选举出问题还是什么原因。

    @vopsoft #14 说实话我自己是想搞集群的,问题是客户就只买了两台服务器。要搞双机热备,MHA 我也研究一下,谢谢
    vopsoft
        16
    vopsoft  
       2024-07-10 11:03:15 +08:00
    redis 不是问题 研究一 jredis 那库怎么连集群就好 只买两台的话 keepalived +脚本 的方式能实现 但不怎么靠谱
    vopsoft
        17
    vopsoft  
       2024-07-10 11:06:33 +08:00
    顺便踩下 mycat 那东西就个垃圾 只作者在自嗨吹
    KamL
        18
    KamL  
    OP
       2024-07-10 11:08:23 +08:00
    @vopsoft #17 细说一下咋了,我还考虑了一下用这个,但我看好就没维护了,而且同事推荐的是 keepalived
    vopsoft
        19
    vopsoft  
       2024-07-10 11:30:10 +08:00
    @cencoroll #18 坑特别多 例如默认 查数据只给返回 120 条 ,需要在 sql 语句中自己写 limit 这东西就不是给人类用的
    Vitumoc
        20
    Vitumoc  
       2024-07-10 16:25:30 +08:00
    如果只是切 IP 的话,其实挺简单的,刚好前几天项目需要,随手写了个垃圾工具

    https://github.com/vitsumoc/vwinvrrp/tree/main

    https://vitsumoc.github.io/%E7%AE%80%E5%8D%95%E5%AE%9E%E7%8E%B0windows%E4%B8%8B%E7%9A%84%E5%BA%94%E7%94%A8%E7%83%AD%E5%A4%87.html

    虽然写的很粗糙,但是能用,在客户那测试也通过了。

    可以考虑一下?
    Vitumoc
        21
    Vitumoc  
       2024-07-10 16:48:51 +08:00
    顺带一提,我的项目情况和你很类似

    我这边的 mysql 没有做任何的自动同步,因为项目客户没有 DBA ,我们也不可能给他们做无限期的维护,所以给他们做了个手动同步功能,明确要求客户更改配置数据(我们配置数据存在 mysql )后需要手动同步。

    而时序数据之类的,则是采集器同时发到两台服务器,这样服务器正常时两边都有数据,故障时则没有数据,这个客户也是认可的。

    所以我这边就简单做了个切 IP 的程序,让客户通过 VIP 访问业务就可以了。
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     2979 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 26ms UTC 13:43 PVG 21:43 LAX 06:43 JFK 09:43
    Do have faith in what you're doing.
    ubao snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86