Atlas 配置高可用
keepalived安装
#下载keepalived ./configure --prefix=/usr/local Make && make install Atlas主安装keepalived Atlas备安装keepalived
Atlas1 keepalived配置文件修改
Atlas1 Keepalived.conf文件如下: ! Configuration File for keepalived global_defs { } #自定义vrrp脚本 vrrp_script chk_port { script /etc/keepalived/atlas.sh #60秒检查一次 interval 60 } vrrp_instance VI_1 { #指定节点状态 state BACKUP #制定绑定的网卡 interface eth0 #vrrp 组ID,同一组内必须相同 virtual_router_id 51 #优先权,值大优先级大 priority 100 #组播信息发送间隔 advert_int 1 #禁止抢占 nopreempt #验证信息,两节点设置相同 authentication { auth_type PASS auth_pass 99989 } track_script { chk_port } #虚拟IP,两节点设置相同 virtual_ipaddress { #虚拟IP 申请 192.168.0.221/24 dev eth0 } ##扩展 #notify_master /etc/keepalived/m.sh #notify_backup /etc/keepalived/b.sh }
Atlas1 脚本 /etc/keepalived/atlas.sh
10秒检查一次,如果3次Atlas都是关闭,停止keepalived服务,vip切换 #!/bin/bash v_port=3100 v_j=0 for ((i=0; i<3; i++)); do #检测端口是否存在,用端口 或者 用进程 v_num=`netstat -npl | grep $v_port | grep mysql-proxy | wc -l` v_mysql_proxy_num=`ps -C mysql-proxy --no-header |wc -l` #端口不在,进程不在,关闭keepalived,切换VIP if [ "$v_num" == "0" -a "$v_mysql_proxy_num" == "0" ] then v_j=`expr $v_j + 1` fi sleep 10 done if [ "$v_j" == "3" ] then killall keepalived fi
Atlas2 keepalived配置文件修改
! Configuration File for keepalived global_defs { } #自定义vrrp脚本 vrrp_script chk_port { script /etc/keepalived/atlas.sh interval 60 } vrrp_instance VI_1 { #指定节点状态 state BACKUP #制定绑定的网卡 interface eth0 #vrrp 组ID,同一组内必须相同 virtual_router_id 51 #优先权,值大优先级大 priority 100 #组播信息发送间隔 advert_int 1 #禁止抢占 nopreempt #验证信息,两节点设置相同 authentication { auth_type PASS auth_pass 99989 } track_script { chk_port } #虚拟IP,两节点设置相同 virtual_ipaddress { 192.168.0.221/24 dev eth0 } ##扩展 #notify_master /etc/keepalived/m.sh #notify_backup /etc/keepalived/b.sh }
Atlas2 脚本 /etc/keepalived/atlas.sh
10秒检查一次,如果3次Atlas都是关闭,停止keepalived服务,vip切换 #!/bin/bash v_port=3100 v_j=0 for ((i=0; i<3; i++)); do #检测端口是否存在,用端口 或者 用进程 v_num=`netstat -npl | grep $v_port | grep mysql-proxy | wc -l` v_mysql_proxy_num=`ps -C mysql-proxy --no-header |wc -l` #端口不在,进程不在,关闭keepalived,切换VIP if [ "$v_num" == "0" -a "$v_mysql_proxy_num" == "0" ] then v_j=`expr $v_j + 1` fi sleep 10 done if [ "$v_j" == "3" ] then killall keepalived fi
说明
Atlas1,Atlas2 keepalived配置相同,BACKUP-BACKUP
三次扫描3100端口,如果不存在,关闭keepalived。VIP切换,注意目前Atlas主,从之间端口不一致。
主从端口最好一致,端口不一致,jdbc failover控制,不知道会不会出问题.
发生vip切换,需要查找原因,keepalived关闭后,需要手动启动,启动后不会占vip。
关于haproxy
连接池暂不考虑haproxy,如果性能出问题,最先在数据库,而不是中间件
分类:
2019年01月
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix