高可用集群(HA)之Keeplived原理+配置过程



vrrp:虚拟冗余路由协议,作用就是将多个网关虚拟成一个虚拟网关(vip和vmac都是虚拟的),从而解决默认网关失效
! Configuration File for keepalived
#****************************************全局配置段************************************
global_defs {
#定义接收邮箱
   notification_email {
       root@localhost
   }
#定义发送邮箱(可随意,即便不存在也可以)
   notification_email_from admin@localhost
#定义邮件服务器
   smtp_server 127.0.0.1 
   smtp_connect_timeout 30
   router_id LVS_DEVEL
}
#********************************虚拟路由配置段:定义虚拟路由相关信*************************************
#为keepalived定义服务检测脚本,定义关键字就是vrrp_script
vrrp_script chk_keepalived_down {
#如果存在down文件,则返回1(表示keepalived服务失效),否则返回0(表示服务没有失效)
    script "[ -e /etc/keepalived/down ] && exit 1 || exit 0"
#检测间隔1秒
    interval 1
#如果失效,权重减2
    weight -2
}
#为nginx提供高可用
vrrp_script chk_nginx {
#检测nginx是否存在,如果存在返回0,如果不存在返回1
    script "killall -0 nginx"
#检测间隔时间
    interval 1
#如果失败,权重减2
    weight 2
#失败检测次数
    fall 2
#成功检测次数
    rise 1
}
#定义vrrp实例VI_1(即一个虚拟路由器)
vrrp_instance VI_1 {
#若权重高,则定义此实例为主(主从区别),从为BACKUP
    state MASTER
#定义接口(便于从哪个网卡进行宣告,从而进行优先级选举)
    interface eth0
#定义vrrp虚拟路由唯一标识,即确定vmac
    virtual_router_id 51
#初始权重(主从区别),从需要比此数据小
    priority 100
#通告
    advert_int 1
#认证机制,防止未知设备,成为节点
    authentication {
#认证类型:密码
        auth_type PASS
#认证密钥随机字符串
        auth_pass 1111
    }
#定义vip
    virtual_ipaddress {
        10.10.10.2
    }
#追踪脚本
    track_script {
    chk_keepalived_down
    chk_nginx
    }
}
#为ipvs提供高可用,需要与vip相同(也可以根据防火墙标识来定义,virtual_server fwmark int)
virtual_server 10.10.10.2 80 {
    delay_loop 6
#负载均衡算法,若使用wrr,则real server中的权重不能相同
    lb_algo rr 
#负载均衡模式
    lb_kind DR
#vip掩码
    net_mask 255.255.255.0
#持久连接
    persistence_timeout 50
#负载均衡协议
    protocol TCP
#类似于fail_back
    sorry_server 192.168.200.200 80
#定义第一个真实服务器
    real_server 192.168.200.2 80 {
#权重
        weight 1
#real server的状态信息检测,定义http判定,并使用HTTP_GET方法检测(也可以使用SSL_GET/TCP_CHECK检测,其中TCP_CHECK检测,仅仅只需要定义connect_timeout就可以了)
        HTTP_GET {
            url { 
              path /
              status_code 200
            }
#超时时间
            connect_timeout 3
#重试次数
            nb_get_retry 3
#重试等待间隔时间
            delay_before_retry 3
        }
    }
#定义第二个真实服务器
    real_server 192.168.200.3 80 {
        weight 1
        HTTP_GET {
            url { 
              path /
              status_code 200
            }
            connect_timeout 3
            nb_get_retry 3
            delay_before_retry 3
        }
    }
}
notify_master "/path/to/master.sh master"
notify_backup "/path/to/backup.sh backup"
notify_fault "/path/to/fault.sh fault"
#!/bin/bash
#
vip=192.168.1.250
contact='root@localhost'
thisip=`ifconfig eth0 | awk -F : '/inet addr/{print $2}' | awk '{print $1}'`
notify(){
#定义邮件内容
    mailbody="vrrp transaction:vrrp changed the keepalived service to $1."
    subject="$thisip is to be $1."
    echo $mailbody | mail -s "$subject" $contact
}
case "$1" in 
    master)
        notify master
        exit 0
    ;;
    backup)
        notify backup
        exit 0
    ;;
    fault)
        notify fault
        exit 0
    ;;
    *)
        echo 'Usage:`basename $0` {master|backup|fault}'
        exit 1
    ;;
esac
virtual_server 10.10.10.2 80 {
    delay_loop 6
#负载均衡算法
    lb_algo rr
#负载均衡模式
    lb_kind DR
#持久连接
    persistence_timeout 50
#负载均衡协议
    protocol TCP
#类似于fail_back
    sorry_server 192.168.200.200 80
#定义第一个真实服务器
    real_server 192.168.200.2 80 {
#权重
        weight 1
#定义http判定,并使用get方法
        HTTP_GET {
            url {
              path /
              status_code 200
            }
#超时时间
            connect_timeout 3
#重试次数
            nb_get_retry 3
#重试等待间隔时间
            delay_before_retry 3
        }
    }
#定义第二个真实服务器
    real_server 192.168.200.3 80 {
        weight 1
        HTTP_GET {
            url {
              path /
              status_code 200
            }
            connect_timeout 3
            nb_get_retry 3
            delay_before_retry 3
        }
    }
高可用集群(HA)之Keeplived原理+配置过程的更多相关文章
- 高可用集群(HA)之DRBD原理和基础配置
		
目录 1.工作原理图 2.用户空间工具 3.工作模式 4.实现主备故障自动切换 5.所需软件 6.配置文件 7.详细配置 1.配置通用属性信息 2.定义一个资源 3.初始化资源 ...
 - linux高可用集群(HA)原理详解(转载)
		
一.什么是高可用集群 高可用集群就是当某一个节点或服务器发生故障时,另一个 节点能够自动且立即向外提供服务,即将有故障节点上的资源转移到另一个节点上去,这样另一个节点有了资源既可以向外提供服务.高可用 ...
 - linux高可用集群(HA)原理详解
		
高可用集群 一.什么是高可用集群 高可用集群就是当某一个节点或服务器发生故障时,另一个节点能够自动且立即向外提供服务,即将有故障节点上的资源转移到另一个节点上去,这样另一个节点有了资源既可以向外提供服 ...
 - 分布式架构高可用架构篇_02_activemq高可用集群(zookeeper+leveldb)安装、配置、高可用测试
		
参考: 龙果学院http://www.roncoo.com/share.html?hamc=hLPG8QsaaWVOl2Z76wpJHp3JBbZZF%2Bywm5vEfPp9LbLkAjAnB%2B ...
 - 分布式架构高可用架构篇_activemq高可用集群(zookeeper+leveldb)安装、配置、高可用测试
		
原文:http://www.iteye.com/topic/1145651 从 ActiveMQ 5.9 开始,ActiveMQ 的集群实现方式取消了传统的Master-Slave 方式,增加了基于Z ...
 - rabbitmq+haproxy+keepalived实现高可用集群搭建
		
项目需要搭建rabbitmq的高可用集群,最近在学习搭建过程,在这里记录下可以跟大家一起互相交流(这里只是记录了学习之后自己的搭建过程,许多原理的东西没有细说). 搭建环境 CentOS7 64位 R ...
 - Mycat节点扩缩容及高可用集群方案
		
数据迁移与扩容实践: 工具目前从 mycat1.6,准备工作:1.mycat 所在环境安装 mysql 客户端程序. 2.mycat 的 lib 目录下添加 mysql 的 jdbc 驱动包. 3.对 ...
 - Hadoop高可用集群
		
1.简介 若HDFS集群中只配置了一个NameNode,那么当该NameNode所在的节点宕机,则整个HDFS就不能进行文件的上传和下载. 若YARN集群中只配置了一个ResourceManager, ...
 - LVS+Keepalived-DR模式负载均衡高可用集群
		
LVS+Keepalived DR模式负载均衡+高可用集群架构图 工作原理: Keepalived采用VRRP热备份协议实现Linux服务器的多机热备功能. VRRP,虚拟路由冗余协议,是针对路由器的 ...
 
随机推荐
- 临时表妙用、连表更新、sqlserver group contant
			
一.临时表妙用 -- 1.将老库中的mediaid和新库中的regionid对应上,然后插入到临时表中 SELECT * INTO #TempMediaRegion FROM (SELECT ww.C ...
 - Effective Java2读书笔记-类和接口(五)
			
第21条:用函数对象表示策略 这一条其实也没说啥,就是策略模式.碰到这种场景时,定义一个策略接口,然后不同策略子类实现它,主类包含这个接口的引用就可以了. 第22条:优先考虑静态成员类 嵌套类是指被定 ...
 - poj2484--A Funny♂Game
			
题意:n个硬币围成环,每次可以取相邻两个硬币或者一个,不能取者负. Ans:n<=2的时候先手必胜,其他任意情况后手必胜,因为不论我先手取什么,我后手总有中心对称与它配对. #include&l ...
 - 为什么ASCII是7位(导致各家编码的128~256字符都不同,给我带来很多困惑)——在标准ASCII中,其最高位(b7)用作奇偶校验位,附ASCII每个控制符的中文解释
			
ASCII编码 ASCII是基于拉丁字母的一套电脑编码系统.它主要用于显示现代英语和其他西欧语言.它是现今最通用的单字节编码系统,并等同于国际标准ISO/IEC 646. 请注意,ASCII是Amer ...
 - 瑞柏匡丞:app商业价值如何体现
			
在互联网行业,想要实现商业价值,必须先实现用户价值.这个观点发源自PC统治互联网的时代,如今PC端的用户停留时间下降,用户行为趋于稳定保守,移动端则蒸蒸日上.而PC与移动端的区别之一是,PC端的用户流 ...
 - wireshark使用心得
			
关于pcap文件的文件解析网上资料有很多,我在这就不说明了 心得一:wireshark Runtime Error 一般来说,wireshark不适合长时间捕获包,也就是随着时间增长,总会报出上述错误 ...
 - spring3 jsp页面使用<form:form modelAttribute="xxxx" action="xxxx">报错,附连接数据库的spring MVC annotation 案例
			
在写一个使用spring3 的form标签的例子时,一直报错,错误信息为:java.lang.IllegalStateException: Neither BindingResult nor plai ...
 - IOS Main函数
			
int main(int argc, char * argv[]) { @autoreleasepool { return UIApplicationMain(argc, argv, nil, NSS ...
 - 配置数据库连接池,Tomcat6.0 连接池的配置
			
Tomcat6.0 连接池的配置1.本人当前使用的Tomcat版本为:6.0.20,oracle为稳定的9i版本 2.下文为方便起见,依习惯以%Tomcat_Home%表示Tomcat安装的目录,本人 ...
 - 飘逸的python - 解决一个有限制的组合需求
			
假设有一个团队技能的需求. 这类技能是要集齐所有指定的人就能激活. 但是因为同一个人又2种身份存在,比如杨戬/神杨戬,于是便产生了组合. 这种组合跟普通组合不一样,普通组合可以随意组合.而这种组合是每 ...