keepalived
keepalived是集群管理中保证集群高可用的一个服务软件,其功能类似于heartbeat,用来防止单点故障。
keepalived工作原理
keepalived是以VRRP(Virtual Router Redundancy Protocol,即虚拟路由冗余协议)协议为实现基础的。
虚拟路由冗余协议,可以认为是实现路由器高可用的协议,即将N台提供相同功能的路由器组成一个路由器组,这个组里面有一个master和多个backup,master上面有一个对外提供服务的vip(该路由器所在局域网内其他机器的默认路由为该vip),master会发组播,当backup收不到vrrp包时就认为master宕掉了,这时就需要根据VRRP的优先级来选举一个backup当master。这样的话就可以保证路由器的高可用了。
keepalived主要有三个模块,分别是core、check和vrrp。core模块为keepalived的核心,负责主进程的启动、维护以及全局配置文件的加载和解析。check负责健康检查,包括常见的各种检查方式。vrrp模块是来实现VRRP协议的。
keepalived的配置文件
keepalived只有一个配置文件keepalived.conf,里面主要包括以下几个配置区域,分别是global_defs、(static_ipaddress、static_routes)、vrrp_script、vrrp_instance和virtual_server。
配置前提:
(1) 各节点时间必须同步;
(2) 确保iptables及selinux不会成为阻碍;
配置文件详解
#全局定义块
global_defs { # 邮件通知配置
notification_email { # 故障发生时给谁发邮件通知
email1
email2
}
notification_email_from email # 通知邮件从哪个地址发出
smtp_server host         # 通知邮件的smtp地址
smtp_connect_timeout num # 连接smtp服务器的超时时间
lvs_id string                         # lvs负载均衡器标识,在一个网络内,它的值应该是唯一的
router_id string                         # 标识本节点的字条串,通常为hostname,故障发生时,邮件通知会用到
}
#本节点的IP和路由信息,一般不用配置
static_ipaddress {
    10.210.214.163/24 brd 10.210.214.255 dev eth0
    ...
}
static_routes { 
  10.0.0.0/8 via 10.210.214.1 dev eth0
    ...
}
#VRRP健康检查,当时检查失败时会将vrrp_instance的priority减少相应的值 
vrrp_script check_nginx {                     
    script "/root/check_nginx.sh"   #定义监控nginx的脚本
    interval 2                             #监控时间间隔  
    weight 2                              #失败之后减少2点
#VRRP实例定义块
#用来定义vrrp_intance组,使得这个组内成员动作一致
vrrp_sync_group string {
group {
string
string
}
notify_master /path/xx.sh #指定当切换到master时,执行的脚本
netify_backup /path/xx.sh #指定当切换到backup时,执行的脚本
notify_fault "path/xx.sh VG_1" #故障时执行的脚本
notify /path/xx.sh 
smtp_alert #使用global_defs中提供的邮件地址和smtp服务器发送邮件通知
}
vrrp_instance string { #vrrp实例名,可以配置多个,至少要需要修改id,即vrrp组名
state MASTER|BACKUP #实例状态,MASTER 和 BACKUP两种,全部大写。抢占模式下,其中MASTER为工作状态,BACKUP为备用状态。当MASTER所在的服务器失效时,BACKUP所在的服务会自动把它的状态由BACKUP切换到MASTER状态。当失效的MASTER所在的服务恢复时,BACKUP从MASTER恢复到BACKUP状态,如果设置了nopreempt这个值不起作用,主备考priority决定
virtual_router_id num #vrrp组名,每个节点设置必须一样,可选择IP最后一段使用
  interface string #对外提供服务的网卡接口,实例绑定网卡
       dont_track_primary       #忽略vrrp的interface错误(默认不设置)
         mcast_src_ip @IP       #发送多播包的地址,如果不设置默认使用绑定网卡的primary ip
         priority num       #节点优先级,取值范围0~254,MASTER比BACKUP高
         advert_int num       #MASTER与BACKUP节点间同步检查的时间间隔,单位为秒 
      nopreempt      #禁止抢占服务。MASTER从挂掉到恢复,不再将服务抢占过来
smtp_alert       #有故障时是否激活邮件通知 
      preempt_delay       #抢占延时,默认5分钟
        debug       #debug级别
        lvs_sync_daemon_interface string #负载均衡器之间的监控接口,类似于 HA HeartBeat 的心跳线。但它的机制优于 Heartbeat,因为它没有“裂脑”这个问题,它是以优先级这个机制来规避这个麻烦的。在 DR 模式中,lvs_sync_daemon_inteface与服务接口interface使用同一个网络接口。一般不调 authentication {     #验证类型和验证密码,两节点必须一致。类型有 PASS、AH ,通常使用PASS,据说AH使用时有问题。验证密码为明文,同一vrrp 实例使用相同的密码才能正常通信
auth_type PASS|AH
auth_pass string
}
virtual_ipaddress {                         # 虚拟IP地址池,可有多个IP,每个IP占一行,不需要指定子网掩码。注意:这个IP必须与我们的设定的vip保持一致。
IP
IP
}
}
#虚拟服务器定义块
virtual_server (IP PORT)|(fwmark num) { 定义一个虚拟服务器,这个ip是virtual_ipaddress中定义的其中一个,后面一个空格,然后加上虚拟服务的端口号
delay_loop num 健康检查时间间隔,单位:秒
  lb_algo rr|wrr|lc|wlc|sh|dh|lblc 负载均衡调度算法,互联网应用常用方式为wlc或rr
  lb_kind NAT|DR|TUN 负载均衡转发规则。DR|NAT|TUN 3种,一般使用路由(DR)
persistence_timeout num http服务会话保持时间,单位:秒
  protocol TCP|UDP 转发协议,分为TCP和UDP两种
persistence_granularity <NETMASK> lvs会话保持粒度
    virtualhost <string> 检查的web服务器的虚拟主机(host:头)    
    sorry_server<IPADDR> <port> 备用机,所有realserver失效后启用
real_server @IP PORT { 真实服务器IP和端口,可以定义多个
weight num         负载权重,值越大,转发的优先级越高
  notify_down /path/script.sh 服务停止后执行的脚本
TCP_CHECK {         TCP服务有效性检测
  connect_port num 服务健康检查的端口
nb_get_retry 3 重连次数
            delay_before_retry 3 重连间隔时间
connect_timeout num 服务连接超时时长,单位:秒
  }
HTTP_GET|SSL_GET {         HTTP健康检查
url { 检查url,可指定多个
path /
         digest <string> 页面的MD5值,不能乱写
         status_code 200 检查的返回状态码
}
connect_port num 服务健康检查的端口
connect_timeout num 服务连接超时时长,单位:秒
nb_get_retry num 服务连接失败重试次数 
delay_before_retry num 重试连接间隔,单位:秒
}
MISC_CHECK{             MISC健康检查,调用脚本检查
    misc_path <string> | <quoted-string> 外部脚本路径
    misc_timeout 脚本执行超时时间
   misc_dynamic 如设置该项,则退出状态码会用来动态调整服务器的权重,返回0 正常,不修改;返回1,检查失败,权重改为0;返回2-255,正常,权重设置为:返回状态码-2
    }
}
进阶:keepalived+LVS
安装keeplived和lvs
在keeplived中配置虚拟服务器模块
简单说一下DR原理:  假设A为前端负载均衡服务器, B,C为后端真实服务器。 A接收到数据包以后,会把数据包的MAC地址改成B的(根据调度算法,假设发给B服务器),然后把数据包重新发出去,交换机收到数据包根据MAC地址找到B,把数据包交给B。 这时B会收到数据包,同时验证请求IP地址,由于数据包里的IP地址是给A的,所以正常情况下B会丢弃数据包,为了防止这种情况,需要在B机器的回环网卡上配置A的IP地址。并设置ARP压制。在真是服务器上运行脚本
#!/bin/bash
#description : start realserver
VIP=192.168.1.110
/etc/rc.d/init.d/functions
case "$1" in
start)
echo " start LVS of REALServer"
/sbin/ifconfig lo:0 $VIP broadcast $VIP netmask 255.255.255.255 up
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
;;
stop)
/sbin/ifconfig lo:0 down
echo "close LVS Directorserver"
echo "0" >/proc/sys/net/ipv4/conf/lo/arp_ignore
echo "0" >/proc/sys/net/ipv4/conf/lo/arp_announce
echo "0" >/proc/sys/net/ipv4/conf/all/arp_ignore
echo "0" >/proc/sys/net/ipv4/conf/all/arp_announce
;;
*)
echo "Usage: $0 {start|stop}"
exit 1
esac
需要修改为你自己的VIP,然后检查虚拟网卡是否已绑定到回环网卡即可

Keepalived配置文件详解相关推荐

  1. keepalived配置文件详解   ​

    keepalived配置文件详解 keepalived配置文件分为三个部分:全局配置(Globals configurations).vrrp配置(VRRP configuration). LVS配置 ...

  2. keepalived安装及配置文件详解

    一.安装Keepalived服务 两种安装方式: (1)yum方式安装 yum -y install keepalived# 查看安装路径 rpm -ql keepalived (2)源码安装 1)安 ...

  3. keepalived配置文件keepalived.conf详解

    keepalived.conf详解 一个功能比较完整的常用的 keepalived 配置文件,主要包含以下三块 第2行全局定义块是必须配置项, 一,全局定义块 这部分主要用来设置Keepalived的 ...

  4. mybatis mysql 配置文件_Mybatis配置文件详解(4)

    本次主要来了解: MyBatis数据库配置文件SqlMapConfig.xml SQL映射配置中输入映射的配置 SQL映射配置中输出映射的配置 SQL映射配置中动态SQL语句的配置 1. SqlMap ...

  5. MyBatis复习笔记2:配置文件详解

    配置文件详解 属性(properties) MyBatis可以使用 properties 来引入外部 properties 配置文件的内容 resource:引入类路径下的资源 url:引入网络路径或 ...

  6. vuecli 编译后部署_基于vue-cli 打包时抽离项目相关配置文件详解

    前言:当使用vue-cli进行开发时时常需要动态配置一些设置,比如接口的请求地址(axios.defaults.baseURL),这些设置可能需要在项目编译后再进行设置的,所以在vue-cli里我们需 ...

  7. (转) SpringBoot非官方教程 | 第二篇:Spring Boot配置文件详解

    springboot采纳了建立生产就绪spring应用程序的观点. Spring Boot优先于配置的惯例,旨在让您尽快启动和运行.在一般情况下,我们不需要做太多的配置就能够让spring boot正 ...

  8. CENTOS7 高性能Linux集群 通过yum进行 haproxy配置 !安装 !使用!HAProxy配置文件详解

    Haproxy配置 永久修改名字:便于区分虚拟机! Haproxy:hostnamectl set-hostname haproxy Web1: hostnamectl set-hostname WE ...

  9. 用户管理 之 用户(User)和用户组(Group)配置文件详解

    作者:北南南北 来自:LinuxSir.Org 摘要:本文详解用户(User)和用户组(Group)的配置文件,本文是<Linux 用户(User)和用户组(Group)管理概述>文档的关 ...

最新文章

  1. ateq测漏仪f620说明书_手环测漏仪规格齐全-同江
  2. executequery方法_在IDEA的maven项目中连接使用MySQL8.0方法教程
  3. 自定义SpringBoot start 自动打印日志
  4. mysql performance tuning_MySQL Performance tuning
  5. 实例58:python
  6. 求整数 在二进制表示中有多少个1的方法
  7. python画3D图
  8. 杭州电子科技大学计算机学院复试细则,2020杭州电子科技大学计算机学院考研复试公告...
  9. c#(webapi)获取当前项目路径
  10. 360浏览器打不开微信的连接服务器,360浏览器打不开网页怎么办-解决360浏览器打不开网页的方法 - 河东软件园...
  11. fx3u4ad一adp说明书_三菱FX3U-4AD-ADP用户手册FX3U-4AD-ADP模拟控制版本手册 - 广州凌控...
  12. 杜蕾斯鞋套?又污又高级!
  13. 同样是程序员 为什么薪资不同
  14. 学生社团管理系统c语言代码,毕业设计—校园社团活动助手小程序
  15. 利用Python控制德国Vialux DMD 2021-10-03
  16. 给网站添加代码统计-实现流量的变现
  17. html5实现百度语音播报功能
  18. 数字ip和ip的转化(自编版)
  19. 基于PyQt5和requests的小说在线阅读器(小说爬虫)
  20. 如何运行脚本文件linux,linux如何执行脚本文件逆水寒

热门文章

  1. 解决:com.mysql.jdbc.MysqlDataTruncation: Data truncation: Data too long for column ‘ip‘ at row 1
  2. 解决 List 执行 remove 时报异常 java.lang.UnsupportedOperationException
  3. springboot/git学习资源记录
  4. WinForms多线程编程之摇奖程序
  5. 使用delegate类型设计自定义事件
  6. H3C 以太网集线器
  7. PHP工程师需要掌握的知识(转载)
  8. mybatis大于小于等于
  9. [LeetCode]Search Insert Position
  10. 关于VC++6.0中getline函数的一个bug