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

[经验分享] 高可用集群企业级应用实战

[复制链接]

尚未签到

发表于 2018-12-31 11:21:17 | 显示全部楼层 |阅读模式
  Keepalived的作用是检测服务器的状态,如果有一台web服务器宕机,或工作出现故障,Keepalived将检测到,并将有故障的服务器从系统中剔除,同时使用其他服务器代替该服务器的工作,当服务器工作正常后Keepalived自动将服务器加入到服务器群中,这些工作全部自动完成,不需要人工干涉,需要人工做的只是修复故障的服务器。
  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高可用基于LVS-DR模式的双主架构
  一:环境准备:
  四台centos虚拟机分别命名为:lvs-master、lvs-backup、realserver1、realserver2
  都是双网卡模式:桥接和仅主机
  lvs-master: vip1:172.17.250.11
  dip:172.17.27.10
  lvs-backup:vip2:172.17.250.12
  dip:172.17.250.43

  realserver1:rip:172.17.0.66
  realserver2:rip:172.17.250.41
  分别在lvs-master和lvs-backup上安装keepalived
  清空防火墙策略:iptables -F,关闭selinux策略
  二:配置相关文件
  1、修改keepalived主(lvs-server-master)配置文件实现virtual_instance
  vrrp_instance VI_1 {
  state MASTER
  interface ens33
  virtual_router_id 90
  priority 100
  advert_int 1
  authentication {
  auth_type PASS
  auth_pass 1015
  }
  virtual_ipaddress {
  172.17.250.11
  }
  }
  

  virtual_server 172.17.250.11 80 {
  delay_loop 6
  lb_algo wrr
  lb_kind DR
  nat_mask 255.255.255.255
  persistence_timeout 120
  protocol TCP
  

  real_server 172.17.0.66 80 {
  weight 1
  HTTP_GET {
  url {
  path /
  }
  connect_timeout 3
  nb_get_retry 3
  delay_before_retry 3
  }
  }
  real_server 172.17.250.41 80 {
  weight 1
  HTTP_GET {
  url {
  path /
  }
  connect_timeout 3
  nb_get_retry 3
  delay_before_retry 3
  }
  }
  }
  

  vrrp_instance VI_2 {
  state BACKUP
  interface ens33
  virtual_router_id 93
  priority 98
  advert_int 1
  authentication {
  auth_type PASS
  auth_pass 1234
  }
  virtual_ipaddress {
  172.17.250.12
  }
  }
  virtual_server 172.17.250.12 443 {
  delay_loop 6
  lb_algo wrr
  lb_kind DR
  nat_mask 255.255.255.255
  persistence_timeout 120
  protocol TCP
  

  real_server 172.17.0.66 443 {
  weight 1
  HTTP_GET {
  url {
  path /
  }
  connect_timeout 3
  nb_get_retry 3
  delay_before_retry 3
  }
  }
  real_server 172.17.250.41 443 {
  weight 1
  HTTP_GET {
  url {
  path /
  }
  connect_timeout 3
  nb_get_retry 3
  delay_before_retry 3
  }
  }
  }
  2,lvs-backup与lvs-master配置文件大致相同,所以就只列出不同的地方,没列出的都是相同的代码

  vrrp_instance VI_1 {
  state MASTER
  interface ens33
  virtual_router_id 90
  priority 98    ###由原来的100改为了98
  advert_int 1
  authentication {
  auth_type PASS
  auth_pass 1015
  }
  virtual_ipaddress {
  172.17.250.11
  }
  }
  vrrp_instance VI_2 {
  state BACKUP
  interface ens33
  virtual_router_id 93
  priority 100    ###由原来的98改为了100
  advert_int 1
  authentication {
  auth_type PASS
  auth_pass 1234
  }
  virtual_ipaddress {
  172.17.250.12
  }
  }
  3,realserver1和realserver2配置都一样
  因为realserver使用了443端口,所以说需要进行加密所以应该打开nginx中的https server
  cd /etc/pki/tls/certs

  生成密钥和证书:make cert.pem
  拷贝cert.pem到nginx配置文件中:
  cp cert.pem /etc/nginx
  cd /etc/nginx
  创建一个密钥文件,并把cert.pem中的密钥拷到此文件中
  vim cert.key


  

  HTTPS server
  server {
  listen       443 ssl;
  server_name  localhost;
  root html;
  ssl_certificate      cert.pem;     ###存放证书的文件
  ssl_certificate_key  cert.key;    ####存放密钥的文件
  

  ssl_session_cache    shared:SSL:1m;
  ssl_session_timeout  5m;
  

  ssl_ciphers  HIGH:!aNULL:!MD5;
  ssl_prefer_server_ciphers  on;
  

  location / {
  index  index.html index.htm;
  }
  }
  

  }
配置回环网卡:
ifconfig lo:0 172.17.250.11 broadcast 172.17.250.11 netmask 255.255.255.255 up
route add -host 172.17.250.11 lo:0

ifconfig lo:1 172.17.250.12 broadcast 172.17.250.12 netmask 255.255.255.255 up
route add -host 172.17.250.11 lo:0
          忽略ip与mac不匹配的问题:
            echo "1" >/proc/sys/net/ipv4/conf/lo/arp_ignore
            echo "2" >/proc/sys/net/ipv4/conf/lo/arp_announce
            echo "1" >/proc/sys/net/ipv4/conf/all/arp_ignore
            echo "2" >/proc/sys/net/ipv4/conf/all/arp_announce
  

  

  三:测试检验高可用的效果
  1、配置完成后,观察两侧IP的是情况,看是否虚拟IP在主上配置成功
  2、停掉主服务上的keepalived服务,看虚拟IP是否正常转移到从节点上
  

  a,首先查看虚拟ip是否在lvs-master和lvs-backup上配置成功
  ipvsadm -L -n


  从图中可以看到vip1:172.17.250.11
  vip2:172.17.250.12

  b,关掉lvs-backup的keepalived服务
  systemctl stop keepalived
  查看vip2:172.17.250.12是否跑到了lvs-master主机上


  图中看出lvs-backup上已经没有了vip2:172.17.250.12
  而是出现在了lvs-master上
  

  





运维网声明 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-657915-1-1.html 上篇帖子: 高可用集群企业级应用实战 下篇帖子: Centos6下nginx+keepalived构建高可用web集群
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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