您的位置:首页 > 其它

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

2015-10-16 22:21 429 查看

>>>keepalived是什么?

keepalive是HA(High Available)高可用集群的一种实现方案,用来防止系统架构中的单点故障。其是vrrp协议的实现。

>>>vrrp协议工作简介

vrrp(Virtual Router Redundancy Protocol),即是虚拟路由冗余协议。用于实现多个路由器的高可用性。其工作原理是将一组路由器虚拟成一个虚拟路由器对外提供一个或多个IP地址。在这组路由器当中,实际对外提供IP地址的路由器被称为MASTER,其他路由器除了接收MASTER的存活状态通告以外,不会执行对外的网络功能,被称之为BACKUP。MASTER由选举产生,当MASTER失效时,BACKUP便会称为MASTER,接管原先MASTER的网络功能。 MASTER的选举方式: 1、如果对外的虚拟路由器IP就是路由器本身的IP的话,该路由器始终将是MASTER,这时的优先级值为255。
2、否则如果不具备虚拟IP的话,将进行MASTER选举,各路由器都宣告自己是MASTER,发送VRRP通告信息;
3、如果收到其他机器的发来的通告信息的优先级比自己高,将转回BACKUP状态;
4、如果优先级相等的话,将比较路由器的实际IP,IP值较大的优先权高;

>>>keepalived程序架构及重要组件介绍



当keepalived启动时,一般会启动一个主进程(master),和两个子进程(checker和vrrp核心模块) 重要组件: 1、checkers:用于实现ipvs后端的RealServer健康状态检测 2、watchDog:linux内核核心中的模块,用于监控keepalived的各进程的健康状态,当keepalived启动后,checkers和vrrp会定期通过linux中的一个套接字向watchdog发送状态通告信息,一旦watchdog接收不到进程的状态信息,master进程会将其杀死并重新启动 3、VRRP stack:此模块便是keepalived的核心模块,用于实现vrrp协议 4、IPVS wrappers:根据配置文件生成ipvs规则的组件

>>>keepalived的配置前提

1、本机的主机名与hosts中定义的主机保持一致,要与hostname或uname -n命令获得名称一致。 2、各节点要能互相解析主机名:一般建议通过hosts文件进行解析 3、各个节点的时间必须同步

>>>keepalived的配置详解

配置文件为/etc/keepalived/keepalived.conf ,其主要分为三大部分,每个配置端都需使用花括号"{}"括起来: 全局配置段:global_defs,配置文件中只能有一个 vrrp协议配置段: vrrp_instance (实例配置) vrrp synchronization group (同步组配置,将多个实例捆绑同步进退) lvs配置段:virtual_server 配置文件主要参数详解: //可通过man keepalived.conf 查看更详细的参数信息全局配置段global_defs { ##全局配置段notification_email { ##定义故障通知邮箱acassen@firewall.loc ##邮箱地址failover@firewall.loc ##邮箱地址sysadmin@firewall.loc ##邮箱地址 }notification_email_from Alexandre.Cassen@firewall.loc ##发件人地址smtp_server 192.168.200.1 ##邮件服务器地址smtp_connect_timeout 30 ##联系邮件服务器的超时时长router_id nod1 ##当前物理设备在网络中的唯一ID标识 vrrp_mcast_group4 224.0.0.18 ##定义IPv4的组播地址,可自行定义在224.0.0.0/8网段内} ##默认vrrp工作于抢占模式,即优先级高的会自行抢占为MASTER; 脚本配置段vrrp_script SRIPT_NAME { ##定义一个名为SCRIPT_NAME(自定义)的脚本,需在实例外部定义,在内部调用 script "COMMAND" ##script关键字,执行引号内的命令 interval 1 ##此脚本端的运行周期,单位为秒 weight [-|+]NUMBER ##执行优先级增加或减少指定个数}例如:vrrp_sript test { script "[[ -f /etc/keepalived/down ]] && exit 1 || exit0" interval 2 weight -2} ##此脚本意为:每隔两秒检查一下/etc/keepalived/目录下是否存在名为down的文件,若存在则返回失败状态码1,并执行优先级减2在实例中调用如下:vrrp_instance VI_1 { xxxxx xxxxx track_script { test }} notify_master "/etc/keepalived/notify.sh master" notify_backup "/etc/keepalived/notify.sh backup" notify_fault "/etc/keepalived/notify.sh fault" 实例配置段vrrp_instance instance_NAME { ##实例名在配置文件中不能重复 state MASTER或BACKUP ##定义当前节点默认为主或从节点 interface eth0 ##自动配置虚拟路由IP的网卡接口 virtual_router_id 51 ##当前虚拟路由的标识符,必须全局唯一(0-255) priority 100 ##定义当前实例的优先级(0-255) advert_int 1 ##状态通告周期(秒)---用于主节点向BACKUP节点通告心跳信息 authentication { ##消息认证配置auth_type PASS ##认证方式(MD5或PASS简单字符认证)auth_pass 1111 ##认证密码,所有同一虚拟实例节点的必须保持一致 } virtual_ipaddress { ##自动配置在interface上的(vip)虚拟IP地址,可以是多个 <IPADDR>/<MASK> brd <IPADDR> dev <STRING> scope <作用域> label <LABEL> 192.168.200.17/24 dev eth1 192.168.200.18/24 dev eth2 label eth2:1 } nopreempt ##非抢占模式 notify_master "/etc/keepalived/notify.sh master" ##定义状态转换为master时所执行的脚本(脚本实例后面给出)notify_backup "/etc/keepalived/notify.sh backup" ##定义状态转换为backup时所执行的脚本(脚本实例后面给出)notify_fault "/etc/keepalived/notify.sh fault" ##定义状态转换为fault时所执行的脚本(脚本实例后面给出)}notify脚本示例:(放置在/etc/keepalived/)#!/bin/bash# Author: MageEdu <linuxedu@foxmail.com># description: An example of notify script# vip=172.16.100.1contact='root@localhost' notify() {mailsubject="`hostname` to be $1: $vip floating"mailbody="`date '+%F %H:%M:%S'`: vrrp transition, `hostname` changed to be $1"echo $mailbody | mail -s "$mailsubject" $contact} case "$1" inmaster)notify master/etc/rc.d/init.d/haproxy startexit 0;;backup)notify backup/etc/rc.d/init.d/haproxy stopexit 0;;fault)notify fault/etc/rc.d/init.d/haproxy stopexit 0;;*)echo 'Usage: `basename $0` {master|backup|fault}'exit 1;;esac LVS配置段:virtual_server 192.168.200.100 443 {delay_loop 6 ##RealServer的健康状态探查的时间间隔lb_algo rr ##负载均衡的调度算法(Scheduler)lb_kind NAT ##LVS类型。支持NAT/DR/TUNpersistence timeout NUMBER ##定义持久连接的时长,单位秒。0为不适用持久连接nat_mask 255.255.255.0persistence_timeout 50 ##持久连接超时时间protocol TCP ##只能适用TCP,若适用UDP则使用ops参数 virtualhost STRING ##定义对指定虚拟主机基于HTTP_GET或SSL_GET做健康状态监测 sorry_server IP PORT real_server 192.168.201.100 443 { ##定义RealServer notify_up <STRING>|<QUOTED-STRING> ##RealServer上线执行的脚本 notify_down <STRING>|<QUOTED-STRING> ##RealServer下线执行的脚本weight 1 ##权重SSL_GET {url { path / digest ff20ad2481f97b1754ef3e12ecd3a9cc或status_code <INT>}url { path /mrtg/ digest 9b3a0c85a887a256d6939da88aabd8cd或status_code <INT>}connect_timeout 3 ##健康状态监测超时时间nb_get_retry 3 ##number of get retrydelay_before_retry 3 ##每次重试之前延迟3秒} }} NO1:虚拟实例的简单配置:


拓扑简介:内网只有一个网关地址172.16.13.1 ,简单配置网关服务器的高可用nod1配置:>>>关闭selinux并清空防火墙规则[root@nod1 ~]# setenforce 0[root@nod1 ~]# iptables -F >>>设置周期性任务计划,进行时间同步[root@nod1 ~]# crontab -e ##编辑添加如下内容*/3 * * * * /usr/sbin/ntpdate ntp.sjtu.edu.cn &> /dev/null && /sbin/hwclock -w &> /dev/null >>>设置主机名,并定义hosts文件,实现主机名解析[root@nod1 ~]# sed -i 's/\(HOSTNAME=\).*/\1nod1/' /etc/sysconfig/network && hostname nod1[root@nod1 ~]# echo -e '127.0.0.1 nod1\n172.16.13.22 nod22' >> /etc/hosts >>>安装keepalived,并进行配置[root@nod1 ~]# yum install -y keepalived[root@nod1 ~]# mv /etc/keepalived/keepalived.conf /etc/keepalived/keepalived.conf.bak ##将配置文件改变,以便于自行创建简单配置文件[root@nod1 ~]# vim /etc/keepalived/keepalived.conf ##创建配置文件,并加入如下内容! Configuration File for keepalived global_defs {notification_email {root@localhost }notification_email_from kaadmin@stu.comsmtp_server 127.0.0.1smtp_connect_timeout 30router_id nod1} vrrp_instance VI_1 {state MASTERinterface eth0virtual_router_id 51priority 100advert_int 1authentication {auth_type PASS auth_pass 1111 }virtual_ipaddress {172.16.13.1 dev eth0 label eth0:0 }}[root@nod1 ~]# chkconfig keepalived on ##设置开机自动启动[root@nod1 ~]# service keepalived start ##启动 nod22配置:[root@nod22 ~]# setenforce 0[root@nod22 ~]# iptables -F >>>设置周期性任务计划,进行时间同步[root@nod22 ~]# crontab -e ##编辑添加如下内容*/3 * * * * /usr/sbin/ntpdate ntp.sjtu.edu.cn &> /dev/null && /sbin/hwclock -w &> /dev/null >>>设置主机名,并定义hosts文件,实现主机名解析[root@nod22 ~]# sed -i 's/\(HOSTNAME=\).*/\1nod22/' /etc/sysconfig/network && hostname nod22[root@nod22 ~]# echo -e '127.0.0.1 nod22\n172.16.13.11 nod1' >> /etc/hosts >>>安装keepalived,并进行配置[root@nod22 ~]# yum install -y keepalived[root@nod22 ~]# mv /etc/keepalived/keepalived.conf /etc/keepalived/keepalived.conf.bak ##将配置文件改变,以便于自行创建简单配置文件[root@nod22 ~]# vim /etc/keepalived/keepalived.conf ##创建配置文件,并加入如下内容! Configuration File for keepalivedglobal_defs {notification_email {root@localhost }notification_email_from kaadmin@stu.comsmtp_server 127.0.0.1smtp_connect_timeout 30router_id nod22} vrrp_instance VI_1 {state BACKUPinterface eth0virtual_router_id 51 priority 99advert_int 1authentication {auth_type PASSauth_pass 1111 }virtual_ipaddress {172.16.13.1 dev eth0 label eth0:0 }} [root@nod22 ~]# chkconfig keepalived on ##设置开机自动启动[root@nod22 ~]# service keepalived start ##启动 查看nod1的ip地址

配置已生效 >>>将nod1的keepalived设置为down,测试nod22是否会自动切换为MASTER并配置VIP地址:[root@nod1 ~]# service keepalived stopStopping keepalived: [ OK ]

测试成功
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  keepalived