keepalived:基于Linux的高可用与负载均衡工具

一、VEEP:Virtual Router Redundancy Protocol

1.1.VRRP介绍

虚拟路由冗余协议,用来解决静态网关单点风险。

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

软件层:keepalived

1.2.VRRP相关术语

虚拟路由器:Virtual Router

虚拟路由标识:VRID

VIP:Virtual IP

VMAC:Virtual Mac

物理路由器:

  • master:主设备
  • backup:备用设备
  • priority:优先级

1.3.VRRP相关技术

  • 通告:心跳,优先级等;周期性
  • 工作方式:抢占式,非抢占式
  • 安全认证:

                无认证

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

                MD5

  • 工作模式:
  • /备:单虚拟路由器
  • /主:主/备(虚拟路由器1),备/主(虚拟路由器2

二、keepalived

2.1.简介

Keepalived是一款开源的、基于Linux的网络服务高可用性和负载均衡工具,它主要用于实现VIP(Virtual IP)漂移,确保在主服务器故障时能自动切换到备用服务器,从而提供不间断的服务。其核心功能包括VRRP(Virtual Router Redundancy Protocol)协议的实现和健康检查,为网络服务提供了强大的冗余备份机制。

Keepalived的核心组件主要有两部分:

1. VRRP模块:VRRP是虚拟路由器冗余协议,用于在网络中创建虚拟路由器,当主路由器失效时,备份路由器能够接管其IP地址,保持网络连接不中断。Keepalived实现了VRRP标准,通过心跳检测来监控路由器状态,确保服务高可用性。

2. LVS(Linux Virtual Server)模块:LVS是Linux内核中的一个负载均衡模块,它允许将多台服务器组织成集群,对外表现为单一的高性能服务器。Keepalived可以配合LVS进行健康检查,根据服务器的实际状态动态调整流量分配,实现负载均衡。

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

功能:

  • 基于vrrp协议完成地址流动
  • vip地址所在的节点生成ipvs规则(在配置文件中预先定义)
  • ipvs集群的各RS做健康状态检测
  • 基于脚本调用接口完成脚本中定义的功能,进而影响集群事务,以此支持nginxhaproxy等服务。

2.2.keepalived架构

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

2.3.keepalived环境准备

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

2.4.keepalived企业应用示例

2.4.1.keepalived的全局配置

yum install keepalived -y #安装keepalived
vim /etc/keepalived/keepalived.conf  #keepalived的配置文件

设置VIP为172.25.254.100

 可以在ka1中看到VIP:

当ka1挂掉后,可以在ka2中看到VIP:

2.4.2.keepalived的日志功能

编辑keepalived日志配置文件:

vim /etc/sysconfig/keepalived 

编辑系统日志配置文件:

vim /etc/rsyslog.conf

 将keepalived的日志都放在/var/log/keepalived.log

查看该日志文件:

2.4.3.keepalived实现子独立配置文件

新建子配置文件目录:/etc/keepalived/conf.d

mkdir /etc/keepalived/conf.d

进入主配置文件编辑修改:将主配置文件的注释掉,并添加子配置文件路径,将注释掉的内容复制到子配置文件。

vim /etc/keepalived/keepalived.conf

 

编辑子配置文件:

vim /etc/keepalived/conf.d/172.25.254.100.conf

查看IP:VIP依然生效

2.4.4.非抢占模式

配置文件:两台keepalived

测试:当ka1挂掉后重新上线,VIP依然在ka2主机。

2.4.5.抢占延迟模式

配置文件:两个keepalived主机

测试:当ka1挂掉重新上线后,过10sVIP会回到ka1主机上。

2.4.6.VIP单播配置

配置文件:ka1

ka2

测试:

2.4.7.实现keepalived状态切换的邮件通知

配置邮件客户端:qq邮箱

1、进入qq邮箱账号与安全

2、获取授权码

  • 修改ka1,ka2邮件配置文件:
vim /etc/mail.rc 

 写自己的qq邮箱

  •  编写ka1,ka2通知邮箱脚本:
vim /etc/keepalived/mail.sh 

  •  修改ka1,ka2的主配置文件:
vim /etc/keepalived/keepalived.conf 

 测试:模拟ka1故障和上线会收到邮件通知

三、keepalived实战案例

3.1.实现单主的 LVS-DR 模式

配置两台后端server:

两台server都要下载apache并写入内容

yum install httpd
#server1
echo webserver1:172.25.254.110 > /var/www/html/index.html
#server2
echo webserver2:172.25.254.120 > /var/www/html/index.html

添加vip:

vim /etc/sysconfig/network-scripts/ifcfg-eth0 

配置keepalived

查看策略:

模拟故障,停掉ka1检测:流量全部流向ka2

3.2.利用脚本实现主从角色切换

创建脚本:

vim /etc/keepalived/test.sh

配置keepalived:

创建文件:

touch /mnt/gyj

检测:

3.4.实现HAProxy高可用

下载haproxy:

yum install haproxy -y

在ka1、ka2先配置haproxy

vim /etc/haproxy/haproxy.cfg 

在ka1、ka2中启用内核参数:

vim /etc/sysctl.conf
sysctl -p

在ka1中编辑脚本:

[root@ka1 ~]# vim /etc/keepalived/test.sh
[root@ka1 ~]# chmod +x /etc/keepalived/test.sh 

在ka1配置keepalived:

vim /etc/keepalived/keepalived.conf 

测试:停掉ka1后,后端访问不受影响

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值