keepalived原理及常用的配置参数

------本文大纲

简介

keepalived原理

keepalived配置文件注解

---------------------------------

一、简介

Keepalived:它的诞生最初是为ipvs(一些服务,内核中的一些规则)提供高可用性的,最初最主要目的是能够自主调用ipvsadm来生成规则,并且能够自动实现将用户访问的地址转移到其他节点上进行实现的。

Keepalived:核心包含两个ckeckers和VRRP协议。

ckeckers

检查服务检查reserved的健康状况的,基于脚本也可检查服务本身的健康状况。这里是实现ipvs后端健康状况的检测的。

VRRP

是一种容错协议,它保证当主机的下一跳路由器出现故障时,由另一台路由器来代替出现故障的路由器进行工作,从而保持网络通信的连续性和可靠性。VRRP中每个节点之间都有优先级的一般为0-255(0,255有特殊用法)数字越大优先级越高。

  • 相关术语解析

虚拟路由器

由一个Master路由器和多个Backup路由器组成。主机将虚拟路由器当作默认网关;

VRID

虚拟路由器的标识。有相同VRID的一组路由器构成一个虚拟路由器;

Master路由器

虚拟路由器中承担报文转发任务的路由器;

Backup路由器

Master路由器出现故障时,能够代替Master路由器工作的路由器;

虚拟IP 地址

虚拟路由器的IP 地址。一个虚拟路由器可以拥有一个或多个IP地址;

IP地址拥有者

接口IP地址与虚拟IP地址相同的路由器被称为IP地址拥有者;

虚拟MAC地址

一个虚拟路由器拥有一个虚拟MAC地址。通常情况下,虚拟路由器回应ARP请求使用的是虚拟MAC地址,只有虚拟路由器做特殊配置的时候,才回应接口的真实MAC地址;

优先级

VRRP根据优先级来确定虚拟路由器中每台路由器的地位;

非抢占方式

如果Backup路由器工作在非抢占方式下,则只要Master路由器没有出现故障Backup路由器即使随后被配置了更高的优先级也不会成为Master路由器;

抢占方式

如果Backup路由器工作在抢占方式下,当它收到VRRP报文后,会将自己的优先级与通告报文中的优先级进行比较。如果自己的优先级比当前的Master路由器的优先级高,就会主动抢占成为Master路由器;否则,将保持Backup状态.

二、Keepalived原理

  • 组成模块

keepalived也是模块化设计,不同模块复杂不同的功能,下面是keepalived的组件
core check vrrp libipfwc libipvs-2.4 libipvs-2.6

core

是keepalived的核心,复杂主进程的启动和维护,全局配置文件的加载解析等

check

负责healthchecker(健康检查),包括了各种健康检查方式,以及对应的配置的解析包括LVS的配置解析

vrrp

VRRPD子进程,VRRPD子进程就是来实现VRRP协议的

libipfwc

iptables(ipchains)库,配置LVS会用到

libipvs*

配置LVS会用到

  • 进程

keepalived启动后会有三个进程
父进程:内存管理,子进程管理等等
子进程:VRRP子进程

子进程:checkers子进程

两个子进程都被系统WatchDog看管,两个子进程各自复杂自己的事,checkers子进程复杂检查各自服务器的健康程度,例如HTTP,LVS等等,如果checkers子进程检查到MASTER上服务不可用,就会通知本机上的兄弟VRRP子进程,让他删除通告,并且去掉虚拟IP,转换为BACKUP状态

三、keepkeepalived配置文件介绍

  • 安装
[[email protected] yum.repos.d]# yum install -y keepalived

只有一个配置文件/etc/keepalived/keepalived.conf,里面主要包括以下几个比较常用的配置区域,分别是global_defs、vrrp_script、vrrp_instance和virtual_server。

  • global_defs区域主要是配置故障发生时的通知对象以及机器标识
global_defs {
   notification_email {
     [email protected]
     [email protected]
     [email protected]
   }
   notification_email_from [email protected]
   smtp_server 192.168.200.1
   smtp_connect_timeout 30
   router_id LVS_DEVEL
}

notification_email

故障发生时给谁发邮件通知

notification_email_from

通知邮件从哪个地址发出

smpt_server

通知邮件的smtp地址

smtp_connect_timeout

连接smtp服务器的超时时间

router_id

标识本节点的字条串,通常为hostname,但不一定非得是hostname。故障发生时,邮件通知会用到

  • vrrp_instance区域
vrrp_script  switch {
   script "[[ -f /etc/keepalived/down ]] && exit 1 || exit 0"
   interval 1
   weight 2
}
vrrp_instance VI_1 {
    state MASTER
    interface eth0
    virtual_router_id 51
    priority 100
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
track_script {
      switch
}
    virtual_ipaddress {
        192.168.200.16
        192.168.200.17
        192.168.200.18
    }
notify_master /path/to/to_master.sh
notify_backup /path_to/to_backup.sh
notify_fault "/path/fault.sh VG_1"
}

vrrp_script

定义vrrp_script 区域名称

script

所要执行的脚本

interval

脚本执行间隔时间

weight

脚本结果导致的优先级变更:2表示优先级+2;-2则表示优先级-2

vrrp_instance

用来定义对外提供服务的VIP区域及其相关属性

state

可以是MASTER或BACKUP,不过当其他节点keepalived启动时会将priority比较大的节点选举为MASTER,因此该项其实没有实质用途

interface

节点固有IP(非VIP)的网卡,用来发VRRP包

virtual_router_id

取值在0-255之间,用来区分多个instance的VRRP组播。

注意: 同一网段中virtual_router_id的值不能重复,否则会出错。

priority

用来选举master的,要成为master,那么这个选项的值最好高于其他机器50个点,该项取值范围是1-255(在此范围之外会被识别成默认值100)

advert_int

检查间隔,默认为1秒

authentication

这里设置认证

auth type

认证方式,可以是PASS或AH两种认证方式

auth pass认证密码

track_script

对vrrp_script定义的脚本进行追踪

switch

对那一个区域进行追踪

notify_master /path/to/to_master.sh

切换到主状态要发的通知

notify_backup /path_to/to_backup.sh

切换到备状态要执行的通知

notify_fault "/path/fault.sh VG_1"

故障时要执行的通知(如果路径中有空格,需要加双引号引用)

注:

以上三个参数指的脚本要自定义

  • virtual_server区域
virtual_server 192.168.200.100 443 {
    delay_loop 6
    lb_algo rr
    lb_kind NAT
    nat_mask 255.255.255.0
    persistence_timeout 50
    protocol TCP
    real_server 192.168.201.100 443 {
        weight 1
        SSL_GET {
            url {
              path /
              digest ff20ad2481f97b1754ef3e12ecd3a9cc
            }
            url {
              path /mrtg/
              digest 9b3a0c85a887a256d6939da88aabd8cd
            }
            connect_timeout 3
            nb_get_retry 3
            delay_before_retry 3
        }
    }
}

virtual_server 192.168.200.100 443

对外通过ip地址192.168.200.100 提供443端口的服务

delay_loop

延迟轮询时间(s)

lb_algo

后端指定的调度算法

lb_kind

调度模式

nat_mask

网络地址

persistence_timeout

会话保持时间(秒为单位),用户在50秒内被分配到同一个后端realserver

protocol TCP

健康检查用的是TCP还是UDP

real_server <IPADDR> <PORT>

后端真实节点主机的权重等设置,主要,后端有几台这里就要设置几个

weight

每一台realserver的权重

SSL_GET

健康检查方式

url

要坚持的URL,可以有多个

path

具体的路径

digest

表示用genhash算出的结果

connect_timeout

超时时长

nb_get_retry

重试次数

delay_before_retry

下次重试的时间延迟

在realserver也可自定义服务器状态发生变化后所执行的脚本

notify_up <STRING> | <QUOTED-STRING>

检查服务器正常(UP)后,要执行的脚本
notify_down <STRING> | <QUOTED-STRING>

检查服务器失败(down)后,要执行的脚本

以上则常用到的参数,更多参数及用法请man keepalived.conf

======================================完========================================

keepalived原理及常用的配置参数

时间: 2024-10-07 06:13:13

keepalived原理及常用的配置参数的相关文章

【JVM虚拟机】(1)---常用JVM配置参数

常用JVM配置参数 常用JVM配置参数主要有:Trace跟踪参数.堆的分配参数.栈的分配参数. 一.Trace跟踪参数 跟踪参数用于跟踪监控JVM,对于开发人员来讲用于JVM调优以及故障排查的. 1.打印GC的简要信息 -verbose:gc -XX:+PrintGC 这两个配置参数效果是一样的,都是在发生GC时打印出简要的信息,例如执行代码 public static void main(String[] args) { byte[] bytes = null; for (int i = 0;

Java虚拟机详解----常用JVM配置参数

本文主要内容: Trace跟踪参数 堆的分配参数 栈的分配参数 零.在IDE的后台打印GC日志: 既然学习JVM,阅读GC日志是处理Java虚拟机内存问题的基础技能,它只是一些人为确定的规则,没有太多技术含量. 既然如此,那么在IDE的控制台打印GC日志是必不可少的了.现在就告诉你怎么打印. (1)如果你用的是Eclipse,打印GC日志的操作如下: 在上图的箭头处加上-XX:+PrintGCDetails这句话.于是,运行程序后,GC日志就可以打印出来了: (2)如果你用的是IntelliJ

天地图常用WMTS配置参数

wmts常用参数 var matrixIds = ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9', '10', '11', '12', '13', '14', '15', '16', '17', '18', '19','20'];var resolutions = [0.703125, 0.3515625,0.17578125,0.087890625, 0.0439453125, 0.02197265625,0.010986328125, 0.

常用JVM配置参数

Trace跟踪参数 -verbose:gc -XX:+printGC -XX:+PrintGCDetails -XX:+PrintGCTimeStamps -Xloggc:log/gc.log // 指定GC log的位置,以文件输出 -XX:PrintHeapAtGC // 每一次GC后,都打印堆信息 // 类加载信息 -XX:TraceClassLoading -XX:+PrintClassHistogram -Ctrl +Break  打印类信息, 类的使用情况 堆的分配参数 -Xmx  

php源码安装常用配置参数和说明

常用的配置参数1. --prefix=/usr/local/php 指定 php 安装目录 install architecture-independent files in PREFIX 默认/usr/local2.--with-config-file-path=PATH php.ini的存放位置 Set the path in which to look for php.ini [PREFIX/lib] --with-config-file-scan-dir=PATH php.ini的扩展目

PHP 源码安装常用配置参数和说明

常用的配置参数1. --prefix=/usr/local/php指定 php 安装目录install architecture-independent files in PREFIX 默认/usr/local2.--with-config-file-path=PATHphp.ini的存放位置Set the path in which to look for php.ini [PREFIX/lib]--with-config-file-scan-dir=PATHphp.ini的扩展目录Set t

log4j配置参数详解——按日志文件大小、日期切分日志文件

项目中尽管对log4j有基本的配置,例如按天生成日志文件以作区分,但如果系统日志文件过大,则就需要考虑以更小的单位切分或者其他切分方式.下面就总结一下log4j常用的配置参数以及切分日志的不同方式. 一.基本配置解析 常用配置1: [java] view plain copy #日志级别,还可以log4j.rootLogger=INFO,file2,file3 指定file2.3的输出文件 log4j.rootLogger=info,exception,thread #info #每一天产生1个

keepalived简单原理及配置参数介绍_2015101601

>>>keepalived是什么? keepalive是HA(High Available)高可用集群的一种实现方案,用来防止系统架构中的单点故障.其是vrrp协议的实现. >>>vrrp协议工作简介 vrrp(Virtual Router Redundancy Protocol),即是虚拟路由冗余协议.用于实现多个路由器的高可用性.其工作原理是将一组路由器虚拟成一个虚拟路由器对外提供一个或多个IP地址.在这组路由器当中,实际对外提供IP地址的路由器被称为MASTER,

Keepalived原理及配置应用总结

Keepalived——保持存活,在网络里的含义就是保持在线.Keepalived提供高可用和热备的功能,用来防止单点故障的发生. 1.VRRP协议基本原理介绍 Keepalived实现的基础是VRRP协议,我们将会在这一节中简要介绍VRRP协议的基本原理. 1.1 协议 VRRP协议是为消除在静态缺省路由环境下的缺省路由器单点故障引起的网络失效而设计的主备模式的协议,使得在发生故障而进行设备功能切换时可以不影响内外数据通信,不需要再修改内部网络的网络参数.VRRP协议具有IP地址备份,优先路由