高可用集群KEEPALIVED

.高可用集群

1.1 集群类型

  • LBLoad Balance 负载均衡
  • LVS/HAProxy/nginxhttp/upstream, stream/upstream
  • HAHigh Availability 高可用集群
  • 数据库、Redis
  • SPoF: Single Point of Failure,解决单点故障
  • HPCHigh Performance Computing 高性能集群

1.2 系统可用性

SLAService-Level Agreement 服务等级协议(提供服务的企业与客户之间就服务的品质、水准、性能等方面所达成的双方共同认可的协议或契约)
A = MTBF / (MTBF+MTTR
99.95%:(60*24*30)*(1-0.9995)=21.6分钟 #一般按一个月停机时间统计
指标 :99.9%, 99.99%, 99.999%,99.9999%

1.3 系统故障

硬件故障:设计缺陷、wear out(损耗)、非人为不可抗拒因素
软件故障:设计缺陷 bug

1.4 实现高可用

提升系统高用性的解决方案:降低MTTR- Mean Time To Repair(平均故障时间)
解决方案:建立冗余机制
  • active/passive /
  • active/active 双主
  • active --> HEARTBEAT --> passive
  • active <--> HEARTBEAT <--> active

1.5.VRRPVirtual Router Redundancy Protocol

虚拟路由冗余协议,解决静态网关单点风险
  • 物理层:路由器、三层交换机
  • 软件层:keepalived

1.5.1 VRRP 相关术语

  • 虚拟路由器:Virtual Router
  • 虚拟路由器标识:VRID(0-255),唯一标识虚拟路由器
  • VIPVirtual IP
  • VMACVirutal MAC (00-00-5e-00-01-VRID)
  • 物理路由器

                master:主设备

                backup:备用设备

                priority:优先级

1.5.2 VRRP 相关技术

通告:心跳,优先级等;周期性
工作方式:抢占式,非抢占式
安全认证:
  • 无认证
  • 简单字符认证:预共享密钥
  • MD5
工作模式:
  • /备:单虚拟路由器
  • /主:主/备(虚拟路由器1),备/主(虚拟路由器2

.Keepalived 部署

2.1 keepalived 简介

vrrp 协议的软件实现,原生设计目的为了高可用 ipvs服务
官网:http://keepalived.org/
功能:
  • 基于vrrp协议完成地址流动
  • vip地址所在的节点生成ipvs规则(在配置文件中预先定义)
  • ipvs集群的各RS做健康状态检测
  • 基于脚本调用接口完成脚本中定义的功能,进而影响集群事务,以此支持nginxhaproxy等服务

2.2 Keepalived 架构

官方文档:
https://keepalived.org/doc/
http://keepalived.org/documentation.html

用户空间核心组件

  • vrrp stackVIP消息通告
  • checkers:监测real server
  • system call:实现 vrrp 协议状态转换时调用脚本的功能
  • SMTP:邮件组件
  • IPVS wrapper:生成IPVS规则
  • Netlink Reflector:网络接口
  • WatchDog:监控进程
控制组件:提供keepalived.conf 的解析器,完成Keepalived配置
IO复用器:针对网络目的而优化的自己的线程抽象
内存管理组件:为某些通用的内存管理功能(例如分配,重新分配,发布等)提供访问权限

2.3 Keepalived 环境准备

  • 各节点时间必须同步:ntp, chrony
  • 关闭防火墙及SELinux
  • 各节点之间可通过主机名互相通信:非必须
  • 建议使用/etc/hosts文件实现:非必须
  • 各节点之间的root用户可以基于密钥认证的ssh服务完成互相通信:非必须

2.4 Keepalived 相关文件

  • 软件包名:keepalived
  • 主程序文件:/usr/sbin/keepalived
  • 主配置文件:/etc/keepalived/keepalived.conf
  • 配置文件示例:/usr/share/doc/keepalived/
  • Unit File/lib/systemd/system/keepalived.service
  • Unit File的环境配置文件:/etc/sysconfig/keepalived

2.5 Keepalived 安装

[root@KA1 ~]# yum install ipvsadm.x86_64 -y

2.6 KeepAlived 配置说明

2.6.1 配置文件组成部分

配置文件:/etc/keepalived/keepalived.conf
配置文件组成

.Keepalived 企业应用示例

3.1 配置主备模式

3.1.1 MASTER配置

[root@KA1 ~]# vim /etc/keepalived/keepalived.conf
! Configuration File for keepalived
global_defs {
   notification_email {
        1972520594@qq.com
   }
   router_id KA1.haha
   vrrp_skip_check_adv_addr
   #vrrp_strict
   vrrp_garp_interval 1
   vrrp_gna_interval 1
   vrrp_mcast_group4 224.0.0.44
}

vrrp_instance VI_1 {
    state MASTER
    interface eth0
    virtual_router_id 20
    priority 100
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        192.168.2.110/24 dev  eth0 label eth0:0
    }
    accept
}

 

3.1.2 BACKUP配置

[root@KA2 ~]# vim /etc/keepalived/keepalived.conf 

   router_id KA1.haha
   vrrp_skip_check_adv_addr
   #vrrp_strict
   vrrp_garp_interval 1
   vrrp_gna_interval 1
   vrrp_mcast_group4 224.0.0.44
}

vrrp_instance VI_1 {
    state MASTER
    interface eth0
    virtual_router_id 20
    priority 80
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        192.168.2.110/24 dev  eth0 label eth0:0
    }
    accept
}

效果查看

KA1监听组播地址

当KA1的keepalived挂掉的时候,再查看监听:

[root@KA1 ~]# systemctl stop keepalived.service

 

KA2,VIP在KA2上:

 再次启动

3.2启动keepalived日志功能

编辑/etc/sysconfig/keepalived文件,启动日志功能:

编辑/etc/syslog.conf文件:

重启syslog服务

 [root@KA1 ~]#  systemctl restart rsyslog.service 

3.3 配置独立子配置文件

创建 /etc/keepalived/keepalived.conf 目录

[root@KA1 ~]# vim /etc/keepalived/keepalived.conf 

编辑keepalived配置文件 

3.4 非抢占模式配置、抢占模式延迟

非抢占模式

默认为抢占模式preempt,即当高优先级的主机恢复在线后,会抢占低先级的主机的master角色,这样会使vipKA主机中来回漂移,造成网络抖动,
建议设置为非抢占模式 nopreempt ,即高优先级主机恢复后,并不会抢占低优先级主机的master角色
非抢占模块下,如果原主机down, VIP迁移至的新主机, 后续也发生down,仍会将VIP迁移回原主机

 

抢占模式延迟

抢占延迟模式,即优先级高的主机恢复后,不会立即抢回VIP,而是延迟一段时间(默认300s)再抢回VIP
注意:需要各keepalived服务器stateBACKUP,并且不要启用 vrrp_strict

3.5 实现 master/master Keepalived 双主架构

master/slave的单主架构,同一时间只有一个Keepalived对外提供服务,此主机繁忙,而另一台主机却很空闲,利用率低下,可以使用master/master的双主架构,解决此问题。
master/master 的双主架构:
即将两个或以上VIP分别运行在不同的keepalived服务器,以实现服务器并行提供web访问的目的,提高服务器资源利用率
KA1
! Configuration File for keepalived
global_defs {
   notification_email {
        1972520594@qq.com
   }
   notification_email_from keepalived@KA1.haha
   smtp_server 127.0.0.1
   smtp_connect_timeout 30
   router_id KA1.haha
   vrrp_skip_check_adv_addr
   #vrrp_strict
   vrrp_garp_interval 1
   vrrp_gna_interval 1
   vrrp_mcast_group4 224.0.0.44
}

vrrp_instance VI_1 {
    state MASTER
    interface eth0
    virtual_router_id 51
    priority 80
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        192.168.2.110/24 dev  eth0 label eth0:0
    }
}

vrrp_instance VI_2 {
    state BACKUP
    interface eth0
    virtual_router_id 52
    priority 80
    nopreempt
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        192.168.2.210/24 dev  eth0 label eth0:1
    }
}

virtual_server 192.168.2.110 80 {
    delay_loop 6
    lb_algo rr
    lb_kind DR
    protocol TCP

    real_server 192.168.2.40 80 {
        weight 1
        TCP_CHECK {
            connect_timeout 5
            retry 3
            delay_before_retry 3
            connect_port 80
        }
    }

    real_server 192.168.2.50 80 {
        weight 1
        HTTP_GET {
            url {
                path /
                status_code 200
            }
            connect_timeout 1
            retry 3
            delay_before_retry 1
        }
   }
}

KA2

! Configuration File for keepalived

global_defs {
   notification_email {
        1972520594@qq.com
   }
   notification_email_from keepalived@KA1.haha
   smtp_server 127.0.0.1
   smtp_connect_timeout 30
   router_id KA1.haha
   vrrp_skip_check_adv_addr
   #vrrp_strict
   vrrp_garp_interval 1
   vrrp_gna_interval 1
   vrrp_mcast_group4 224.0.0.44
}

vrrp_instance VI_1 {
    state BACKUP
    interface eth0
    virtual_router_id 51
    priority 80
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        192.168.2.110/24 dev  eth0 label eth0:0
    }
    accept
}

vrrp_instance VI_2 {
    state MASTER
    interface eth0
    virtual_router_id 52
    priority 100
    nopreempt
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        192.168.2.210/24 dev  eth0 label eth0:1
    }
}

virtual_server 192.168.2.110 80 {
    delay_loop 6
    lb_algo rr
    lb_kind DR
    protocol TCP

    real_server 192.168.2.40 80 {
        weight 1
        TCP_CHECK {
            connect_timeout 5
            retry 3
            delay_before_retry 3
            connect_port 80
        }
    }

    real_server 192.168.2.50 80 {
        weight 1
        HTTP_GET {
            url {
                path /
                status_code 200
            }
            connect_timeout 1
            retry 3
            delay_before_retry 1
        }
   }
}

效果

3.6 在其基础上配置后端RS服务、

RS1、RS2写默认网页区别:

RS1使用脚本绑定VIP至web服务器lo网卡:

RS2使用脚本绑定VIP至web服务器lo网卡:

KA1服务配置,KA2同理:

后端RS1、RS2配置回环IP:

RS1、RS2都添加环回网卡100:

[root@RS1 ~]# ip addr add 192.168.2.100/32 dev lo

编辑/etc/sysctl.conf文件

效果1

3.7 在此基础上再在RS上加一个服务,使得两个VIP都可以用上,实现KA的互相负载,RS的互相负载。

RS1、RS2都添加环回网卡210:

 编辑/etc/my.cnf文件,测试的时候标识是哪台数据库

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

高峰聚焦

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值