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

[经验分享] 基于linux实现keepalived高可用的集群网站架构

[复制链接]

尚未签到

发表于 2018-12-31 11:12:46 | 显示全部楼层 |阅读模式
  模拟场景:

  随着业务的发展,网站的访问量越来越大,网站访问量已经从原来的1000QPS,变为3000QPS,目前业务已经通过集群LVS架构可做到随时拓展,后端节点已经通过集群技术(ldirectord)保障了可用性,但对于前端负载均衡器来说,是个比较大的安全隐患,因为当前端负载均衡器出现故障时,整个集群就处于瘫痪状态,因此,负载均衡器的可用性也显得至关重要,那么怎么来解决负载均衡器的可用性问题呢?(当然是用keepalived的arrp实现地址偏移来实现最简单啦~
  技术说明:
  群(cluster)技术是一种较新的技术,通过集群技术,可以在付出较低成本的情况下获得在性能、可靠性、灵活性方面的相对较高的收益,其任务调度则是集群系统中的核心技术。集群是一组相互独立的、通过高速网络互联的计算机,它们构成了一个组,并以单一系统的模式加以管理。一个客户与集群相互作用时,集群像是一个独立的服务器。集群组成后,可以利用多个计算机和组合进行海量请求处理(负载均衡),从而获得很高的处理效率,也可用多个计算机做备份(高可用),使得任何一个机器坏了整个系统还是能正常运行。集群在目前互联网公司是必备的技术,极大提高互联网业务的可用性和可缩放性
  
  高可用集群技术(理论概念)
  高可用(High Availability )
  HA(High Available), 高可用性群集是通过系统的可靠性(reliability)和可维护性(maintainability)来度量的。工程上,通常用平均无故障时间(MTTF)来度量系统的可靠性,用平均维修时间(MTTR)来度量系统的可维护性。于是可用性被定义为:HA=MTTF/(MTTF+MTTR)*100%
  具体HA(可用性)衡量标准:
  99% 一年宕机时间不超过4
  99.9% 一年宕机时间不超过10小时(目前这个阶段的就可以了,往下的要求就有点高了)
  99.99% 一年宕机时间不超过1小时
  99.999% 一年宕机时间不超过6分钟
  
  高可用集群技术实现
  高可用工作方式:主从方式 (非对称方式)、双机双工方式(互备互援)、集群工作方式(多服务器互备方式)
  高可用的资源分类:网络高可用、服务器高可用、存储高可用、服务高可用等
  开源高可用解决方案:keepalived:通过实现vrrp协议来实现地址漂移;heartbeat(开源社区项目),cman+rgmanager (RHCS:redhat cluster suite)corosync+pacemaker(大型解决方案,一个用于心跳检测,一个用于资源转移。两个结合起来使用,可以实现对高可用架构的自动管理。)

  


  Keepalived是什么:
  Keepalived的作用是检测服务器的状态,如果有一台web服务器宕机,或工作出现故障,Keepalived将检测到,并将有故障的服务器从系统中剔除,同时使用其他服务器代替该服
  务器的工作,当服务器工作正常后Keepalived自动将服务器加入到服务器群中,这些工作全部自动完成,不需要人工干涉,需要人工做的只是修复故障的服务器。
  
  Keepalived的特性:
  配置文件简单:配置文件比较简单,可通过简单配置实现高可用功能
  稳定性强:keepalived是一个类似于layer3, 4 & 7交换机制的软件,具备我们平时说的第3层、第4层和第7层交换机的功能,常用于前端负载均衡器的高可用服务,当主服务器出现故障时,可快速进行切换,监测机制灵活,成功率高。
  成本低廉:开源软件,可直接下载配置使用,没有额外费用。
  应用范围广:因为keepalived可应用在多个层面,所以它几乎可以对所有应用做高可用,包括LVS、数据库、http服务、nginx负载均衡等等
  支持多种类型:支持主从模式、主主模式高可用,可根据业务场景灵活选择
  


  
  Keepalived工作流程图详解:
  如上图,keepalived主要是模块是VRRP StackCheackers,实现HA集群中失败切换(Failover)功能。Keepalived通过VRRP功能能再结合LVS负载均衡软件即可部署一个高性能的负载均衡集群系统。,Cheackers主要实现可实现对服务器运行状态检测和故障隔离。其中ipvs和realserver健康状态检查通过配置文件配置就可以实现,而其他服务高可用则需要通过自己编写脚本,然后配置keepalived调用来实现。
  Keepalived运行有3个守护进程。父进程主要负责读取配置文件初始化、监控2个子进程等;然后两个子进程,一个负责VRRP,另一个负责Cheackers健康检查。其中父进程监控模块为WacthDog,工作实现:每个子进程打开一个接受unix域套接字,父进程连接到那些unix域套接字并向子进程发送周期性(5shello包。
  
上图是Keepalived的功能体系结构,大致分两层:用户空间(user space)和内核空间(kernel space)。
内核空间:主要包括IPVS(IP虚拟服务器,用于实现网络服务的负载均衡)和NETLINK(提供高级路由及其他相关的网络功能)两个部份。


  
  什么是VRRP协议
  VRRP(Virtual Router Redundancy Protocol,虚拟路由冗余协议)可以认为是实现路由器高可用的协议,简单的说,当一个路由器故障时可以由另一个备份路由器继续提供相同的服务。
  VRRP根据优先级来确定虚拟路由器中每台路由器的角色(Master路由器或Backup路由器)。VRRP优先级的取值范围为0255(数值越大表明优先级越高),可配置的范围是1到254,优先级0为系统保留给路由器放弃Master位置时候使用,255则是系统保留给IP地址拥有者使用。优先级越高,则越有可能成为Master路由器。当两台优先级相同的路由器同时竞争Master时,比较接口IP地址大小。接口地址大者当选为Master
  

  实现基于keepalived高可用集群:
  
  一、环境准备:centos系统主从两台、yum源、防火墙关闭、各节点时钟服务同步、各节点之间可以通过主机名互相通信
  二、安装步骤:
  1、iptables -F && setenforing 清空防火墙策略,关闭selinux
  2、两台服务器都使用yum方式安装keepalived服务 yum install keepalived
  三、修改配置文件:
  1.修改/etc/keepalived/keepalived.conf配置文件内容
  2、对glob段进行定义,添加管理员邮箱等
  3、对vrrp_instance 进行配置,配置一主一从,定义一个基于虚拟IP的实例
  

  Keepalived配置文件讲解
  global_defs { #全局配置
  notification_email { #realserver故障时通知邮件的收件人地址,可以多个
  root@localhost
  }
  notification_email_from root_keepalived #发件人信息(可以随意伪装,因为邮件系统不会验证处理发件人信息)
  smtp_server 127.0.0.1 #发邮件的服务器(一定不可为外部地址)
  smtp_connect_timeout 30 #连接超时时间
  router_id KEEPALIVED #路由器的标识(可以随便改动)
  }
  
  vrrp_instance VI_1 { #配置虚拟路由器的实例,VI_1是自定义的实例名称
  state MASTER #初始状态,MASTER|BACKUP,当state指定的instance的初始化状态,在两台服务器都启动以后,马上发生竞选,优先级高的成为MASTER,所以这里的MASTER并不是表示此台服务器一直是MASTER
  interface eth0 #通告选举所用端口
  virtual_router_id 51 #虚拟路由的ID号(一般不可大于255
  priority 101 #优先级信息 #备节点必须更低
  advert_int 1 #VRRP通告间隔,秒
  authentication {
  auth_type PASS #认证机制
  auth_pass 5344 #密码(尽量使用随机)
  }
  nopreempt #非抢占模式
  virtual_ipaddress {

  172.17.10.100(设置的虚拟VIP)

  }
  }
  

  

  (backup从)配置文件设置
  
  这样就实现了地址漂移了(意思就是master主机器不行了,设置的虚拟VIP会飘到backup从机器上,这样的话在主从机器上提供同样的服务,这样主机器坏了也不影响服务,实现了高可用。






运维网声明 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-657906-1-1.html 上篇帖子: keepalived双主模式实现nginx高可用及LNAMMP架构 下篇帖子: 基于LVS
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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