设为首页 收藏本站
查看: 1388|回复: 0

[经验分享] Keepalived 使用指南

[复制链接]

尚未签到

发表于 2015-9-4 07:33:26 | 显示全部楼层 |阅读模式
Keepalived 使用指南
1.    简介
  负载均衡是虚拟服务的一种好的处理方案。当设计一种负载均衡的拓扑时一定要考虑到如下两点:
  真实服务器的可用性使用健康检测机制。
  负载均衡器的可用性使用故障转移协议。
  负载均衡真实服务,提供了一个全局的高可用虚拟服务。为增加负载均衡服务的可用性,需要检测每个真实服务器节点的状态。这个问题可以通过使用健康检测框架来操作一个服务器池来解决。
  另一方面,当使用一个负载均衡器director,对虚拟服务引入了一个故障节点。因负载均衡器的高可用性必须被处理,使用专用的路由协议对director的故障转移/虚拟化。
  Keepalived解决这两个问题:一方面,增加一个强壮和健壮的监控检测框架;另一方面,实现了一个热待机协议。这两个框架可以处理lvs框架来操作lvs真实服务器池,对lvs真实服务池的操作可以通过增加或者删除基于健康检测的真实服务器来完成。
2. 术语
DSC0000.jpg
  LVS 代表了linux virtual Server. LVS 是linux 内核内嵌的一个负载均衡工具。更多信息参考工程主页:http://www.linux-vs.org. LVS作为一个网桥(通过nat)来负载均衡TCP/UDP流。LVS路由器组件如下:

  • WAN 接口。可以被所有用户访问到的以太网接口控制器。
  • LAN接口。管理所有负载均衡服务器的以太网接口控制器。
  • linux内核。内核内嵌了最新的LVS,并且当作路由器的操作系统。
  关键词:
  LVS组件:
  VIP: 可以被所有用户访问的虚拟IP,所有的用户通过这个IP访问服务器。
  真实服务器:应用服务部署在真实的服务器上,处理用户的请求。上图中的web server1 和webserver2 即是。
  服务器池:一组真实服务器。
  虚拟服务器:被应用访问的服务器池地址。
  虚拟服务: 关联到VIP的TCP/UDP服务。
  VRRP 组件:
  VRRP:虚拟路由器冗余协议是一种选择协议,它可以把一个虚拟路由器的责任动态分配到局域网上的 VRRP 路由器中的一台。
  VRRP实例:a thread manipulating vrrpv2 specific set of ip addresses。
  一个VRRP实例可以作为一个或者多个VRRP实例的备份。
  IP地址拥有者:用户IP地址作为真实接口地址的VRRP实例。
  主机状态:一种VRRP实例状态,当VRRP实例处于这种状态就可以认为关联此实例的IP地址负责处理发送的请求。
  备机状态:一种VRRP实例状态,当当前的处于主机状态的VRRP实例宕机时,处于该状态的VRRP实例有能力处理发送来的请求。
  真实负载均衡器:运行一个或者多个VRRP实例的一个LVS director。
  虚拟负载均衡器:一组真实负载均衡器。
  被同步实例:一个将要被同步的VRRP实例,被监控的VRRP实例。
  通知:发送给处于一组处于主机状态的VRRP实例的一个简单VRRPv2包的名称。
3. 软件架构
3.1 全局和局部
DSC0001.jpg
  软件架构涉及4个linux 内核组件:

  • LVS核心框架:Kernel2.2使用setsockopt,kernel 2.4使用setsockopt netfilter。
  • IPCHAINS 框架:kernel 2.2 LVS NAT架构使用内部的IPCHAINS 包装器来发送MASQ链到内核。这个仅仅在linux 2.2内核上运行。在kernel 2.4 ipvs代码使用netfilter call来处理特定的NAT规则。
  • Netlink接口:对于热待机协议(VRRP),我们使用netlink接口来设置/去除VRRP的VIP.
  • 组播:对于VRRP部分,通告被发送到组播组。
3.2软件设计
DSC0002.jpg
  下面将阐述keepalived软件的内部实现组件。Keepalived使用一个基于中央I/O复用器的多线程框架。2个主要的组件如下:
  健康检测工作线程:每个健康检测被注册到全局的调度框架。这些工作线程在keepalived 健康检测框架下执行健康检测。健康检测框架当前执行3个检测:
  TCP检测:应用第三层检测。
  HTTP GET:检测一个远程http服务器的html 内容完整性。
  SSL GET:检测一个远程SSL服务器的html内容完整性。
  混合检测:应用用户定义的完整性检测。
  
  VRRP 包分发器:解服用特定I/O来处理VRRP实例的响应。
  这两个主要组件使用到下面的底层primitives
  SMTP通知:一个SMTP包装器使用异步数据流处理。这个primitive使得keepalived可以发送邮件通知。
  IPVS框架:LVS NAT,DR&TUN等。
  Netlink:提供VRRP VIP操作。
  组播:使用多播来发送VRRP通告。
  IPCHAINS框架,如上所述。
  SYSLOG: 所有后台通知消息使用syslog后台来记录。
  
4.    健康检测框架
  如上《略》
  为了director故障转移,keepalived实现了VRRP协议。这个协议可以这样简洁的描述为:
  虚拟路由器冗余协议(VRRP)是一种选择协议,它可以把一个虚拟路由器的责任动态分配到局域网上的 VRRP 路由器中的一台。控制虚拟路由器 IP 地址的 VRRP 路由器称为主路由器,它负责转发数据包到这些虚拟 IP 地址。一旦主路由器不可用,这种选择过程就提供了动态的故障转移机制,这就允许虚拟路由器的 IP 地址可以作为终端主机的默认第一跳路由器。使用 VRRP 的好处是有更高的默认路径的可用性而无需在每个终端主机上配置动态路由或路由发现协议。 VRRP 包封装在 IP 包中发送。[ 引用自rfc2338]。
  
5.    Keepalived 配置语法
  配置文件分为三个部分:
5.1     全局定义的语法
DSC0003.jpg
5.2     虚拟服务器定义语法
DSC0004.jpg
5.3     VRRP实例定义语法
DSC0005.jpg
  
  

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-109169-1-1.html 上篇帖子: keepalived+lvs实现调度、高可用、高性能集群 下篇帖子: PostgreSQL+pgpooll+Keepalived双机HA方案
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表