Keepalived配置文件详解

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,然后检查虚拟网卡是否已绑定到回环网卡即可



本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/454777.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

php高等数学,中国大学《高等数学(四)》期末答案高校邦《PHP语言程序设计》见面课答案...

参考答案如下Conversation 2Pretco-A12.9-10.mp3:9、中国 A) Some shoes are missing. B) Itsdelivery is delayed.C) The order is cancelled. D) Some packages are damaged.10、中国 A) Giving an additional discount. B) Renewing the contract.C) Sending the goods by a…

深入剖析ThreadLocal实现原理以及内存泄漏问题

关于ThreadLocalMap<ThreadLocal, Object>弱引用问题&#xff1a; 当线程没有结束&#xff0c;但是ThreadLocal已经被回收&#xff0c;则可能导致线程中存在ThreadLocalMap<null, Object>的键值对&#xff0c;造成内存泄露。&#xff08;ThreadLocal被回收&#xf…

解读《普通大学应届毕业生如何成功应聘微软》

《普通大学应届毕业生如何成功应聘微软》这篇文章很有实践性&#xff0c;我所要提的&#xff0c;是最后一道面试&#xff0c;也就是唐骏本人对作者的面试&#xff0c;这一轮看似平常的面试大有门道。仔细想想&#xff0c;为什么这些问题由唐骏本人来问&#xff0c;他为什么要这…

grep 命令的 12 个实例

2019独角兽企业重金招聘Python工程师标准>>> 你是否遇到过需要在文件中查找一个特定的字符串或者样式&#xff0c;但是不知道从哪儿开始&#xff1f;那么,就请grep来帮你吧。 grep是每个Linux发行版都预装的一个强有力的文件模式搜索工具。无论何种原因&#xff0c;…

php 怎么从memcache缓存数据中统计某一字段总数,php和memcache统计在线人数的方法...

$mc new Memcache ();// 连接memcache$mc->connect("127.0.0.1", 11211);// 获取 在线用户 IP 和 在线时间数据$online_members $mc->get(online_members);// 如果为空&#xff0c;初始化数据if (!$online_members) {$online_members array();}// 获取用户i…

ubuntu之ufw防火墙

UFW是Ubuntu下的一个主机端的iptables类防火墙配置工具(底层调用iptables来处理)。这个工具的目的是提供给用户一个可以轻松驾驭的界面&#xff0c;就像包集成和动态检测开放的端口一样。虽然功能较简单&#xff0c;但对桌面型应用来说比较实用&#xff0c;基本常用功能都有&am…

background-size在IE8不兼容问题

background-size在IE8及以下浏览器不兼容&#xff1b;要解决的话要用滤镜&#xff1a; filter: progid: DXImageTransform.Microsoft.AlphaImageLoader( src, sizingMethodscale); 注意&#xff1a;此处src的路径必须是绝对路径&#xff0c;相对路径不可以&#xff01; 当写完…

程序员 大牛 面试

水 滴 石 穿 -- 找工作记 -- yurking&#xff08;yurkinggmail.com&#xff09; 一日一钱&#xff0c;千日千钱&#xff0c;绳锯木断&#xff0c;水滴石穿! 这个东西写出来有一段时间了&#xff0c;但是一直没发&#xff0c;想着等有时间了再好好的看一看&#xff0c;改一…

Linux : shell基础(慕课网Linux达人养成计划课程笔记)

Shell概述 shell是Linux中的命令行解释器&#xff0c;为用户提供了一个向Linux内核发送请求一边运行程序的界面系统级程序&#xff0c;用户可以用shell来启动、挂起、停止甚至编写一些程序。shell还是一个功能相当强大的编程语言&#xff0c;易编写&#xff0c;易调试&#xff…

基于matlab的大米,大米颗数计算MATLAB软件

应用背景大米是人类的主食之一&#xff0c;是稻谷经清理、砻谷、碾米、成品整理等工序后制成的成品。人们购买米大多采用直接称量的方法&#xff0c;市面上也有许多仪器采用光电传感器等方式用于生产加工时米粒的计数。然而这样的方法都比较依赖于设备&#xff0c;不方便人们日…

ubuntu17.04之apt-get源

不要问我这么简单的也要写&#xff0c;我只想说在网上百度了一堆源&#xff0c;在笔者这里只有一个能用&#xff0c;悲伤的表情&#xff0c;还是记录一下吧 这个是清华的apt-get源&#xff0c;适用于ubuntu17.04apt-get源文件目录 /etc/apt/sources.list &#xff0c;记得先备份…

HttpClient通过Post方式发送Json数据

服务器用的是Springmvc&#xff0c;接口内容&#xff1a; [java] view plaincopy print?ResponseBody RequestMapping(value"/order",methodRequestMethod.POST) public boolean order(HttpServletRequest request,RequestBody List<Order> orders) throws …

openssl、ssh

PKI&#xff1a;公钥基础设施&#xff0c;保证服务器向客户端发送的证书的可靠性&#xff1b;签证机构&#xff1a;CA注册机构&#xff1a;RA证书吊销列表&#xff1a;CRL证书存取库&#xff1a;CAB威瑞信——verisignGlobalSign赛门铁克AsiaCOM国际标准化组织定义了证书的标准…

php图型分析插件,IMAGE缩略图插件

应用信息 名称: IMAGE缩略图插件 售价: (免费) 应用ID: IMAGE 最低要求: Z-BlogPHP 1.5.1 Zero Build 151740版 本: 2 发布日期: 2014-08-27PHP最低版本要求: 5.3 更新日期: 2018-05-21立即购买 加入购物车作者信息 开发者ID: 十五楼的鸟儿 本站用户组: 管理员 联系邮箱: adm…

职业生涯步步高

在担任公司高管的几年间&#xff0c;我面试过数以百计的各个层面的员工&#xff0c;其中最让我感到遗憾的一个现象就是很多人有着非常好的素质&#xff0c;甚至有的还是名校的毕业生&#xff0c;因为不懂得去规划自己的职业&#xff0c;在工作多年后&#xff0c;依然拿着微薄的…

httpd2.2配置文件详解

一丶Apache常用目录详解1) /etc/httpd/conf/httpd.confhttpd.conf是Apache的主配文件&#xff0c;整个Apache也不过就是这个配置文件&#xff0c;里面几乎包含了所有的配置。有的distribution都将这个文件拆分成数个小文件分别管理不同的参数。但是主要配置文件还是以这个文件为…

2017.9.5 postgresql加密函数的使用

需要安装的插件的名字&#xff1a;pgcrypto官网地址&#xff1a;https://www.postgresql.org/docs/9.4/static/pgcrypto.htmlstackoverflow:https://stackoverflow.com/questions/8000740/how-do-i-install-pgcrypto-in-postgresql-9-1-on-windows/46046367#46046367https://st…

php 序列化方法,PHP序列化操作方法分析

本文实例讲述了PHP序列化操作方法。分享给大家供大家参考&#xff0c;具体如下&#xff1a;序列化就是将变量数据转换为字符串(跟类型转换机制不同)&#xff0c;一般应用于存储数据(文件)&#xff0c;然后在别的情形下恢复(反序列化)序列化&#xff1a;$val serialize($var);f…

Redis入门到精通-Redis数据类型

2019独角兽企业重金招聘Python工程师标准>>> 登录Redis数据库 [rootlocalhost bin]# /usr/local/redis/bin/redis-cli String类型 ​ String 数据结构是简单的key-value类型&#xff0c;value其实不仅是String&#xff0c;也可以是数字&#xff0c;是包含很多种类型…

装机之 BIOS、EFI与UEFI详解

在我们的电脑中&#xff0c;都有一块黑色的小芯片。但是请千万不要小看它&#xff0c;如果它损坏或者数据错误乱套的话&#xff0c;恭喜&#xff0c;如果不会“救回”这个小芯片&#xff0c;那么这台电脑可以挂闲鱼卖零件了…… 这个小芯片是什么呢&#xff1f;对&#xff0c;…