搜索泥称 发表于 2018-12-31 11:12:46

基于linux实现keepalived高可用的集群网站架构

  模拟场景:

  随着业务的发展,网站的访问量越来越大,网站访问量已经从原来的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(大型解决方案,一个用于心跳检测,一个用于资源转移。两个结合起来使用,可以实现对高可用架构的自动管理。)
https://s3.运维网.com/oss/201711/10/f32d80c0f2598547cca2fa24d0e7b9bb.png
  

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

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


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

  实现基于keepalived高可用集群:
  https://s3.运维网.com/oss/201711/10/8016c48a4f2dcf64357da895024d63b6.png
  一、环境准备: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)

  }
  }
  

  https://s3.运维网.com/oss/201711/10/946f37fd08014ccc59378e7a45c35af0.png

  (backup从)配置文件设置
  https://s3.运维网.com/oss/201711/10/4f8566187050f34198c8c84c97717112.png
  这样就实现了地址漂移了(意思就是master主机器不行了,设置的虚拟VIP会飘到backup从机器上,这样的话在主从机器上提供同样的服务,这样主机器坏了也不影响服务,实现了高可用。
https://s1.运维网.com/oss/201711/10/f70dea75a946199c6195852f3f5d10b7.png
https://s2.运维网.com/oss/201711/10/751ba17c5b4bcf6b5e8264b44926b2b3.png



页: [1]
查看完整版本: 基于linux实现keepalived高可用的集群网站架构