高可用集群(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,虚拟路由冗余协议,是针对路由器的 ...
随机推荐
- Makefile的几个赋值运算符(转:笔记)
http://www.cnblogs.com/pengdonglin137/p/3801060.html 在Makefile中我们经常看到 = := ?= +=这几个赋值运算符,那么他们有什么区别呢? ...
- Choose the best route--hdu2680
Choose the best route Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Ot ...
- css3绘制几何图形
用css3绘制你需要的几何图形 1.圆形 示例: 思路:给任何正方形元素设置一个足够大的 border-radius ,就可以把它变成一个圆形.代码如下: html: <div class=&q ...
- 用jquery可以用使用serialize()序列化表单值,那有没有什么方法可以将值填充到表单中呢? (一段不错的代码)
serialize()的作用,是生成一个类似这种格式的字符串用于ajax提交 a=&b=&c=.你想将值填写到表单,首先要有值,然后就是表单控件的id或者能唯一定位控件的属性.然后就$ ...
- Effective Java实作toString() - 就是爱Java
Object class中,也定义了toString()这个方法,因此所有的class也都继承这个方法.默认是传回这个对象完整类别名称,后面接一个"@",及一个不带正副号的十六进制 ...
- Cmake中的find_package功能
find_package其实在windows下扮演的角色并不是很重要.在Unix下就非常重要了,find_package可以根据cmake内置的.cmake的脚本去找相应的库的模块,当然,内建了很多库 ...
- Intent.ACTION_TIME_TICK 广播
Intent.ACTION_TIME_TICK 广播需要动态注册,不能在清单文件配置. TimeReceiver mBroadcastReceiver = new TimeReceiver(); In ...
- Prime Palindrome Golf
Prime Palindrome Golf Do you know how to play Prime Palindrome Golf? You are given a number and your ...
- Spiral Matrix II 解答
Question Given an integer n, generate a square matrix filled with elements from 1 to n2 in spiral or ...
- HDU3336——KMP算法
题意是问所有前缀出现的次数和,mod10007: 想一想next数组代表什么意思,是从当前失配位置走到上一个匹配位置的后面,next[i]的值说明以当前位置为结尾,长度为next[i]的后缀,与以开头 ...