当前位置: 首页 > news >正文

Keepalived 配置电信/联通双线高可用集群

Keepalived配置电信/联通双线高可用集群

by Purple Grape


最近准备配置一个nginx+keepalived 负载均衡兼高可用集群投入生产,其中keepalived的配置思路如下图:

193052278.jpg




天不如人愿,在配置过程中遇到了公网IP不够用的尴尬情况,于是想破头皮,在这过程中也逐渐掌握了keepalived的奥妙和真谛,获得了新的思路图,整个公网双线高可用集群只需要电信、联通各一个IP并且经过测试成功。如下图:

194110561.jpg


配置策略路由


1
2
3
4
5
6
echo  252 tel >> /etc/iproute2/rt_tables
echo  251 cnc >> /etc/iproute2/rt_tables
echo  ip route flush table tel >> /etc/rc . local
echo  ip rule add from 14.x.x.112 /28  table tel >> /etc/rc . local
echo  ip route flush table cnc >> /etc/rc . local
echo  ip rule add from 122.x.x.152 /29  table cnc >> /etc/rc . local


直接上配置文件(主服务器)


global_defs{

 notification_email{

 root@localhost

 purplegrape4@gmail.com

 }

 notification_email_from keepalived@web01

 smtp_server 127.0.0.1

 smtp_connect_timeout 30

 router_id web01

}


vrrp_instanceVI_1 {

 state BACKUP

 interface em1

 virtual_router_id 51

 priority 120

 advert_int 1

 nopreempt

 authentication {

   auth_type PASS

   auth_pass 654321

 }

 virtual_ipaddress{

   14.x.x.117/28 dev em2  label em2:1

   122.x.x.157/2dev em2 label em2:2

 }


 virtual_routes{

   default via 14.x.x.113 dev em2 src 14.x.x.117 table tel

   default via 122.x.x.153 dev em2 src 122.x.x.157 table cnc

 }

}



配置文件慎用tab制表符,会引起莫名奇妙的问题!


加亮的地方都是需要注意的地方,特别是静态路由!


从服务器需要修改的地方有:

1、修改email地址和route_id中的名称

2、优先级更低一些,比如70

3、去掉nopeempt,这样主服务器恢复后不会抢占VIP 

(注:本文用的是两个优先级不同BACKUP,这样才支持nopeempt)


配置的要点在于理解一下几点:

1vrrp协议跟VIP无关;

2vrrp心跳网卡与VIP所在网卡可以不同;

3、私网卡不需配网关,公网卡不需配置公网地址,但仍然需要ONBOOT=yes


必要的内核优化

echo“net.ipv4.ip_nonlocal_bind= 1” >>/etc/sysctl.conf

sysctl -q -p

该选项允许程序监听在一个非本地IP上,而不报错。


很多同学最后关头防火墙调不通,于是干脆关闭了iptables服务,这是不可取的。

keepalived的健康检查走的是D段IP地址,协议是vrrp


/sbin/iptables-A INPUT -d 224.0.0.0/8 -j ACCEPT

/sbin/iptables-A INPUT -p 112 -j ACCEPT


update 2014-05-20

为了充分利用备机,可以在keepalived内部做2个实例,互相冗余,让电信走一台机器,联通走另一台。


update 20170112

keepalived 存在脑裂风险,即BACKUP 不释放VIP,可使用arping检测(arping是ping不通本地mac地址的),集群节点运行在BACKUP 状态的情况下,

如果本地ping不通VIP,则证明VIP在本地,需要手动移除VIP

如果本地ping通VIP,则VIP已顺利漂移。










本文转自 紫色葡萄 51CTO博客,原文链接:http://blog.51cto.com/purplegrape/1259940,如需转载请自行联系原作者

相关文章:

  • NeHe OpenGL第十课:3D世界
  • Lync 小技巧-17-查询Lync 2013聊天记录
  • RTX 无法刷新组织架构的处理方法总结
  • java18 任务调度
  • redis允许远程访问
  • 分分钟带你玩转 Web Services【1】JAX-WS
  • 7.linux同步服务器 rsync+sersync的配置
  • 【前端】手机端网页自动播放背景音乐相关资料
  • 使用require.js
  • 对Cookie和Session的深入理解
  • Spring MVC中@ControllerAdvice注解实现全局异常拦截
  • 【移动端兼容【移动端兼容问题研究】javascript事件机制详解(涉及移动兼容)研究】javascript事件机制详解(涉及移动兼容)...
  • 基于Jquery UI的autocompelet改写,自动补全控件,增加下拉选项,动态设置样式,点击显示所有选项,并兼容ie6+...
  • 第94天:CSS3 盒模型详解
  • 56.随机产生的id重复问题
  • ABAP的include关键字,Java的import, C的include和C4C ABSL 的import比较
  • ES2017异步函数现已正式可用
  • ES6 ...操作符
  • iOS仿今日头条、壁纸应用、筛选分类、三方微博、颜色填充等源码
  • MySQL主从复制读写分离及奇怪的问题
  • session共享问题解决方案
  • Shell编程
  • vue-cli在webpack的配置文件探究
  • Xmanager 远程桌面 CentOS 7
  • 互联网大裁员:Java程序员失工作,焉知不能进ali?
  • 简单基于spring的redis配置(单机和集群模式)
  • 精彩代码 vue.js
  • 普通函数和构造函数的区别
  • 前端面试之闭包
  • 如何抓住下一波零售风口?看RPA玩转零售自动化
  • 使用Tinker来调试Laravel应用程序的数据以及使用Tinker一些总结
  • 算法---两个栈实现一个队列
  • Java数据解析之JSON
  • ​批处理文件中的errorlevel用法
  • # 20155222 2016-2017-2 《Java程序设计》第5周学习总结
  • ### Cause: com.mysql.jdbc.exceptions.jdbc4.MySQLTr
  • #define MODIFY_REG(REG, CLEARMASK, SETMASK)
  • (51单片机)第五章-A/D和D/A工作原理-A/D
  • (编程语言界的丐帮 C#).NET MD5 HASH 哈希 加密 与JAVA 互通
  • (一)kafka实战——kafka源码编译启动
  • (原創) 人會胖會瘦,都是自我要求的結果 (日記)
  • (转)Linux整合apache和tomcat构建Web服务器
  • .NET 8 编写 LiteDB vs SQLite 数据库 CRUD 接口性能测试(准备篇)
  • .NET 设计模式—适配器模式(Adapter Pattern)
  • .NET设计模式(8):适配器模式(Adapter Pattern)
  • .NET中GET与SET的用法
  • /var/log/cvslog 太大
  • @NoArgsConstructor和@AllArgsConstructor,@Builder
  • @RequestParam @RequestBody @PathVariable 等参数绑定注解详解
  • @TableLogic注解说明,以及对增删改查的影响
  • [ vulhub漏洞复现篇 ] Jetty WEB-INF 文件读取复现CVE-2021-34429
  • [Android]如何调试Native memory crash issue
  • [CentOs7]iptables防火墙安装与设置
  • [DP 训练] Longest Run on a Snowboard, UVa 10285
  • [GXYCTF2019]BabyUpload1 -- 题目分析与详解