高可用集群KEEPALIVED

目录

一、高可用集群

1.1集群类型

1.2 系统可用性

1.3 系统故障

1.4 实现高可用

1.5 VRRP:(Virtual Router Redundancy Protocol)

1.5.1 VRRP 相关术语

1.5.2 VRRP 相关技术

二、Keepalived 部署

2.1 keepalived 简介

2.2 Keepalived 架构

2.3 配置文件语法

2.3 Keepalived 环境准备

1. 配环境

1.1 配置IP地址+主机名字

1.2 检查环境:确保每一台

1.3 相关服务配置 ---配虚拟路由的VIP

 1.4 VIP通信

1.5 日志独立  

 1.6 实现独立子文件配置

三、Keepalived 企业应用示例

1. 抢占模式和非抢占模式

   1.1非抢占 

 1.2 抢占 延迟

2. VIP单播

 抓包测试

 3. 邮件配置

  3.1安装邮件发送工具

3.2 生成授权码

4. 邮件通知脚本配置

        4.1  编辑脚本

4.2  加权限

4.3  脚本调用

4.4 剩余节点 ---ka2

4.6 测试

5. master/master 的 Keepalived 双主架构

5.1 实战

5.1.1 实现单主的LVS-DR

 6. 实现其它应用的高可用性 VRRP Script

6.1 实战案例:利用脚本实现主从角色切换

    自定义监控源脚本

 7. keepalived与haproxy搭配实现高可用

   装haproxy


一、高可用集群

可以解决单个主机出现的问题

1.1集群类型

  • LB:(Load Balance )负载均衡

  • LVS/HAProxy/nginx(http/upstream, stream/upstream)

  • HA:(High Availability )高可用集群

数据库、Redis

  • SPoF: Single Point of Failure,解决单点故障

  • HPC:(High Performance Computing )高性能集群

1.2 系统可用性

SLA:Service-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 VRRP:(Virtual Router Redundancy Protocol)

  • 物理层:路由器、三层交换机

  • 软件层:keepalived

1.5.1 VRRP 相关术语
  • 虚拟路由器:Virtual Router

  • 虚拟路由器标识:VRID(0-255),唯一标识虚拟路由器

  • VIP:Virtual IP

  • VMAC:Virutal MAC (00-00-5e-00-01-VRID)

  • 物理路由器:

    • master:主设备

    • backup:备用设备

    • priority:优先级

1.5.2 VRRP 相关技术
  1. 通告:心跳,优先级等;周期性

  2. 工作方式:抢占式,非抢占式

  3.  安全认证:

  • 无认证

  • 简单字符认证:预共享密钥

  • MD5

  1. 工作模式:

  • 主/备:单虚拟路由器

  • 主/主:主/备(虚拟路由器1),备/主(虚拟路由器2)  

二、Keepalived 部署

2.1 keepalived 简介

vrrp 协议的软件实现,原生设计目的为了高可用 ipvs服务

  1. 官网:Keepalived for Linux

  2. 功能:

  • 基于vrrp协议完成地址流动

  • 为vip地址所在的节点生成ipvs规则(在配置文件中预先定义)

  • 为ipvs集群的各RS做健康状态检测

  • 基于脚本调用接口完成脚本中定义的功能,进而影响集群事务,以此支持nginx、haproxy等服务

2.2 Keepalived 架构

官方文档:

Keepalived User Guide — Keepalived 1.4.3 documentation

Keepalived for Linux

 图:

  • 用户空间核心组件:

  • vrrp stack:VIP消息通告

  • checkers:监测real server

  • system call:实现 vrrp 协议状态转换时调用脚本的功能

  • SMTP:邮件组件

  • IPVS wrapper:生成IPVS规则

  • Netlink Reflector:网络接口

  • WatchDog:监控进程

  • 控制组件:提供keepalived.conf 的解析器,完成Keepalived配置

  • IO复用器:针对网络目的而优化的自己的线程抽象

  • 内存管理组件:为某些通用的内存管理功能(例如分配,重新分配,发布等)提供访问权限

2.3 配置文件语法

查看配置文件的帮助

man keepalived.conf

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

2.3 Keepalived 环境准备

主机4台

realserver1 172.25.254.110

realserver2 172.25.254.120

KA1 172.25.254.11

KA2 172.25.254.21

VIP 客户端发出的 172.25.254.200/241.

1. 配环境

给主机克隆7.9(依据自己电脑配置-几核来设定,本实验,防止卡,我都设计为1)

1.1 配置IP地址+主机名字

 

 

1.2 检查环境:确保每一台

1.3 相关服务配置 ---配虚拟路由的VIP

现在在 110与120主机上装 apache服务(测试还是使用web)

[root@realserver1 ~]# yum install httpd -y

[root@realserver2 ~]# yum install httpd -y


[root@realserver1 ~]# echo 172.25.254.110 > /var/www/html/index.html

[root@realserver2 ~]# echo 172.25.254.120 > /var/www/html/index.html

 安装服务在ka1与ka2上keeplived

[root@ka1 ~]# yum install keepalived -y

打开主配置文件 配置+全局   配虚拟路由的VIP 在配置文件里

 出现问题,清空日志,在启动,在查看,排错

 重启生效

 同理ka2,可以直接考配置文件

在启动

此时20拿不到VIP

检查 ,用抓包命令,测试

此时那不到20,抢占原则,优先级原因

出现20,可以去110服务上远程登录ka1关闭keepalived服务

重启ka1服务

 1.4 VIP通信

此时在110上 ping VIP 说不通的

 现在让Ping通,让vip通信

  • 放法一:配置文件修改  注意9版本加上没有用

 在ping ,则通

  • 方法二: 都关闭

 

 

1.5 日志独立  

默认是混合的

[root@ka1 ~]# vim /etc/sysconfig/keepalived

 重启+配置日志文件

[root@ka1 ~]# systemctl restart keepalived.service

 

 [root@ka1 ~]# ll /var/log/keepalived.log

 1.6 实现独立子文件配置
  •   在ka1上 编辑配置文件  主配置文件  

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

  •  创建一个目录
[root@ka1 ~]# vim /etc/keepalived//keepalived.conf
[root@ka1 ~]# mkdir -p /etc/keepalived/conf.d
# 在编辑
[root@ka1 ~]# vim /etc/keepalived//keepalived.conf
#重启
[root@ka1 ~]# systemctl restart keepalived.service
[root@ka1 ~]#

  • 相关子配置文件

三、Keepalived 企业应用示例

1. 抢占模式和非抢占模式

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

注意:要关闭 VIP抢占,必须将各 keepalived 服务器state配置为BACKUP  

   1.1非抢占 

对ka1与ka2上配置文件

重启:

此时VIP在ka1上,只有当ka2 down ka1上才能拿到

 

 down ka1

 看ka2

 停止ka2后ka1开启就有了

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

 

重启:

 

 重启后

2. VIP单播

组播换单播

默认keepalived主机之间利用多播相互通告消息,会造成网络拥塞,可以替换成单播,减少网络流量

 注意:启用 vrrp_strict 时,不能启用单播

 ka1 

ka2

 抓包测试

[root@ka1 ~]# tcpdump -i  eth0 -nn src host 172.25.254.11 and dst 172.25.254.21

停下ka1的

则看到ka2上 ,重启则没有

当ka1关闭,ka2上又了,开启后,默认的是抢占模式,ka1上又有了

 3. 邮件配置

  3.1安装邮件发送工具
[root@ka1 ~]# yum install mailx -y

[root@ka2 ~]# yum install mailx -y
3.2 生成授权码

此时发不了,因为没有文件分发系统,则需要配置相关文件,配置需要网页授权码

 

[root@ka1 ~]# vim /etc/mail.rc

4. 邮件通知脚本配置

        4.1  编辑脚本
[root@ka1 ~]# vim /etc/keepalived/mail.sh

4.2  加权限

4.3  脚本调用

编辑配置文件

4.4 剩余节点 ---ka2

先配置邮件文件

[root@ka2 ~]#  vim /etc/mail.rc

脚本

4.6 测试

  • [root@ka1 ~]# systemctl restart keepalived.service

 

先让ka2处于关闭状态,重启ka1,在重启ka2

 

开ka2

此时关掉ka1,ka2为master

(关闭是收不到,服务都down掉咯)

5. master/master Keepalived 双主架构

 

5.1 实战
5.1.1 实现单主的LVS-DR
  • 配主机 sever1和2的网卡   准备web服务器并使用脚本绑定VIPweb服务器lo网卡

 

 

  •  配置文件

 配置内容如下

  • 再ka1和ka2上装ipvsadm 服务,方便看效果        

  •  写脚本

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

 配置脚本

 

  • 重启动

    查看+清策略

 

  •  客户端访问

  •  关闭ka1,还是可以访问

 

 6. 实现其它应用的高可用性 VRRP Script

VRRP Script 脚本配置

6.1 实战案例:利用脚本实现主从角色切换
  •     自定义监控源脚本

  •  权限

  • 定义vrrp_script

    进入vim /etc/keepalived/keepalived.conf

     
  • 调用

重启后,创建一个文件,则ka1,优先级变70了,ka2上会出现200vip  (优先级70<80)

 删除文件后,优先级又恢复100 ,此时重启ka2,ka2上没有了vip

 7. keepalived与haproxy搭配实现高可用

  •    装haproxy
[root@ka1 ~]# yum install haproxy -y
  •  还原环境,lvs与haproxy冲突,关闭lvs服务

 

 

  •  简单配置

    此时需要设置内核参数 两台都需要做

 

  • 写haproxy脚本

 

  •  ka1与ka2中配置keepalived脚本

 

  •  配置haproxy
[root@ka1 ~]# vim /etc/haproxy/haproxy.cfg


同理ka2

  • 启动两台的keepalived与haproxy服务

  • 26
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值