keepalive
高可用解决方案:
heartbeat
corosync
cman
keepalived
前面我们讲解了,LVS(负载均衡器)、Heartbeat、Corosync、Pacemaker、Web高可用集群、MySQL高可用集群、DRDB、iscsi、gfs2、cLVM等,唯一没有讲解的就是LVS可用,也就是前端高可用,我们这一篇博文主要讲解内容。在说这个之前我们得和大家讨论一个问题,也是好多博友问的问题。Heartbeat、Corosync、Keepalived这三个集群组件我们到底选哪个好,首先我想说明的是,Heartbeat、Corosync是属于同一类型,Keepalived与Heartbeat、Corosync,根本不是同一类型的。Keepalived使用的vrrp协议方式,虚拟路由冗余协议 (Virtual Router Redundancy Protocol,简称VRRP);Heartbeat或Corosync是基于主机或网络服务的高可用方式;简单的说就是,Keepalived的目的是模拟路由器的高可用,Heartbeat或Corosync的目的是实现Service的高可用。所以一般Keepalived是实现前端高可用,常用的前端高可用的组合有,就是我们常见的LVS+Keepalived、Nginx+Keepalived、HAproxy+Keepalived。而Heartbeat或Corosync是实现服务的高可用,常见的组合有Heartbeat v3(Corosync)+Pacemaker+NFS+Httpd 实现Web服务器的高可用、Heartbeat v3(Corosync)+Pacemaker+NFS+MySQL 实现MySQL服务器的高可用。总结一下,Keepalived中实现轻量级的高可用,一般用于前端高可用,且不需要共享存储,一般常用于两个节点的高可用。而Heartbeat(或Corosync)一般用于服务的高可用,且需要共享存储,一般用于多节点的高可用。这个问题我们说明白了,又有博友会问了,那heartbaet与corosync我们又应该选择哪个好啊,我想说我们一般用corosync,因为corosync的运行机制更优于heartbeat,就连从heartbeat分离出来的pacemaker都说在以后的开发当中更倾向于corosync,所以现在corosync+pacemaker是最佳组合。但说实话我对于软件没有任何倾向性,所以我把所有的集群软件都和大家说了一下,我认为不管什么软件,只要它能存活下来都有它的特点和应用领域,只有把特定的软件放在特定的位置才能发挥最大的作用,那首先我们得对这个软件有所有了解。学习一种软件的最好方法,就是去查官方文档。好了说了那么多希望大家有所收获,下面我们来说一说keepalived。
keepalived与heartbeat/corosync等比较:
Heartbeat、Corosync、Keepalived这三个集群组件我们到底选哪个好呢?
首先要说明的是,Heartbeat、Corosync是属于同一类型,Keepalived与Heartbeat、Corosync,根本不是同一类型的。
Keepalived使用的vrrp协议方式,虚拟路由冗余协议 (Virtual Router Redundancy Protocol,简称VRRP);
Heartbeat或Corosync是基于主机或网络服务的高可用方式;
简单的说就是,Keepalived的目的是模拟路由器的高可用,Heartbeat或Corosync的目的是实现Service的高可用。
所以一般Keepalived是实现前端高可用,常用的前端高可用的组合有,就是我们常见的LVS+Keepalived、Nginx+Keepalived、HAproxy+Keepalived。而Heartbeat或Corosync是实现服务的高可用,常见的组合有Heartbeat v3(Corosync)+Pacemaker+NFS+Httpd 实现Web服务器的高可用、Heartbeat v3(Corosync)+Pacemaker+NFS+MySQL 实现MySQL服务器的高可用。总结一下,Keepalived中实现轻量级的高可用,一般用于前端高可用,且不需要共享存储,一般常用于两个节点的高可用。而Heartbeat(或Corosync)一般用于服务的高可用,且需要共享存储,一般用于多节点的高可用。这个问题我们说明白了。
那heartbaet与corosync又应该选择哪个好?
一般用corosync,因为corosync的运行机制更优于heartbeat,就连从heartbeat分离出来的pacemaker都说在以后的开发当中更倾向于corosync,所以现在corosync+pacemaker是最佳组合。
双机高可用一般是通过虚拟IP(飘移IP)方法来实现的,基于Linux/Unix的IP别名技术。
双机高可用方法目前分为两种:
1)双机主从模式:即前端使用两台服务器,一台主服务器和一台热备服务器,正常情况下,主服务器绑定一个公网虚拟IP,提供负载均衡服务,热备服务器处于空闲状态;当主服务器发生故障时,热备服务器接管主服务器的公网虚拟IP,提供负载均衡服务;但是热备服务器在主机器不出现故障的时候,永远处于浪费状态,对于服务器不多的网站,该方案不经济实惠。
2)双机主主模式:即前端使用两台负载均衡服务器,互为主备,且都处于活动状态,同时各自绑定一个公网虚拟IP,提供负载均衡服务;当其中一台发生故障时,另一台接管发生故障服务器的公网虚拟IP(这时由非故障机器一台负担所有的请求)。这种方案,经济实惠,非常适合于当前架构环境。
一、keepalived简介
keepalived不同于以前三种高可用解决方案的是为了调用ipvsd命令,并且自动生成规则,并将用户请求访问转移到各个节点上实现的,实质就是对ipvs的高可用。
keepalived通过vrrp协议通过各个高可用节点上的信息,保证设备的高可用,主节点称为master,备用节点称为backup。
模块化设计
核心:
vrrp的实现
基于vrrp之上的对虚拟服务器的控制
checkers:监控服务器是否正常,如果主节点故障通过降低优先级并通过来转移服务。
特点:
只能有一个节点处于活动状态,并不能实现负载均衡。如何实现负载均衡呢,这里可以创建多组资源,每组资源定义不同的内容,使他们直接产生相互主被的关系。
应用场景:
基于上面所讲的负载均衡方式,必然会产生两个完全不同的地址,这样的话对于用户来说就由两个不同的选择,如何实现负载均衡呢?
1、适用于路由器,网关设备,可以将用户自定义不同的网关,来分担路由器的负担。
2、适用于应用类服务,比如web服务,可以通过修改DNS来对同一个域名定义多个ip地址来实现负载均衡。
安全认证机制:
1、明文认证
2、md5认证
主配置文件:/etc/keepalived/keepalived.conf
启动脚本:/etc/init.d/keepalived
通过man命令可以查看keepalived.conf的使用帮助
[root@node5.dtedu.com ~]# man keepalived.conf
配置文件讲解:
1、global configuration
全局定义
静态路由
2、vrrpd configuration
vrrpd同步组(一般不用)
vrrp实例(instance),不同节点的实例配置不同。
3、lvs configuration
虚拟服务器组
虚拟服务器,包含realserver。
global_defs {
notification_email {
xxxxxx@sina.com #设置报警邮件地址,可以设置多个,每行一个。需要开启sendmail服务。
}
notification_email_from keepalived@localhost #设置邮件的发送地址
smtp_server 127.0.0.1 #设置SMTP Server地址
smtp_connect_timeout 30 #设置SMTP Server的超时时间
router_id LVS_DEVEL #表示运行Keepalived服务器的一个标识。发邮件时显示大邮件主题中的信息
}
vrrp_instance VI_1 { #vrrp 实例定义部分
state MASTER #指定Keepalived的角色,MASTER表示此主机是主服务器。BACKUP表示此主机是备用服务器
interface eth1 #指定HA监测网络的接口
virtual_router_id 51 #虚拟路由标识,这个标识是一个数字,同一个vrrp实例使用唯一的标识,即同一个vrrp_instance下MASTER与BACKUP必须是一致的
priority 50 #定义优先级,数字越大,优先级越高
authentication {
auth_type PASS #设置验证类型和密码,MASTER和BACKUP必须使用相同的密码才能正常通信
auth_pass 1111
}
virtual_ipaddress { #设置虚拟IP地址,可以设置多个虚拟IP地址,每行一个
192.168.100.250
}
}
virtual_server 192.168.100.250 80 { #设置虚拟服务器,需要指定虚拟IP地址和服务端口,IP与端口之间用空格隔开
delay_loop 6 #设置运行情况检查时间,单位为秒
lb_algo rr #设置负载调度算法,这里设置rr,即轮询算法
lib_kind DR #设置LVS实现负载均衡机制,有NAT、TUN、DR三个模式可选
persistence_timeout 60 #会话保持单位时间,单位是秒
protocol TCP #指定转发协议类型,有TCP和UDP两种
real_server 192.168.100.60 80 { #配置服务节点1,需要指定real server的真实IP地址和端口
weight 1 #配置服务节点的权值,权值数字越大,权值越高
TCP_CHECK { #relserve的状态检测设置部分,单位是秒
connect_timeout 10 #表示10秒无响应超时
nb_get_retry 3 #表示重试次数
dealy_before_retry 3 #表示重试间隔
}
}
real_server 192.168.100.80 80 {
weight 1
TCP_CHECK {
connect_timeout 10 #表示10秒无响应超时
nb_get_retry 3 #表示重试次数
dealy_before_retry 3 #表示重试间隔
}
}
}
============================================================================================
全局配置:
global_defs {
notification_email {
123456@qq.com 接收报警的邮箱,可以用多个。
654321@qq.com
}
notification_email_from keepalived@localhost
smtp_server 127.0.0.1 本机转发email(smtp.server地址)
smtp_connect_timeout 30 连接snmp超时时间
router_id LVS_MASTER 运行Keepalived服务器的一个标识。发邮件时显示在邮件标题中
的信息
}
VRRP实例虚拟服务器部分:
vrrp_instance VI_1 {
state MASTER 状态级别,根据priority来设定的,master的值大于slave的值
interface eth0 检测端口
virtual_router_id 相当于组ID master.slave必须在一个组内,这样slave才能接收到
master发送的vrrp包。
priority 100 优先级
advert_int 1 主从通告间隔秒数
authentication {
auth_type PASS 密钥
auth_pass 1111
}
virtual_ipaddress {
192.168.200.16 (VIP可有多个)
192.168.200.17
192.168.200.18
}
}
virtual_server 192.168.200.100 80{
delay_loop 6 每隔6秒查询realserver状态
lb_algo rr lvs调度算法,这里使用轮询
lb_kind DR lvs负载均衡机制,这里使用直连路由
nat_mask 255.255.255.0
persistence_timeout 60 同一IP的连接60秒内被分配到同一台realserver
protocol TCP 指定转发协议类型,有tcp和udp两种
real_server 192.168.201.100 80 {
weight 1 根据性能分配权值大小,负载不同
TCP_CHECK {
connect_timeout 3 连接超时3秒
nb_get_retry 3 重试次数
delay_before_retry 3 重试间隔
}
}
real_server 192.168.201.101 80{
weight 1
TCP_CHECK {
connect_timeout 3
nb_get_retry 3
delay_before_retry 3
}
}
}
global_defs {
notification_email {
gongbing_shenlan@163.com ##收件人地址
}
notification_email_from administartor@dtedu.com.cn ##发件人地址
smtp_server 127.0.0.1 ##centos5使用的是sendmail.centos6使用的是postfix,如果要发送到外外网邮箱,需要单独配置postfix配置文件。
smtp_connect_timeout 30 ##超时时间
router_id LVS_DEVEL_dtedu ##路由器标识,可以不用管
}
vrrp_instance VI_1 { ##一个instance定义一个实例
state MASTER ##定义当前服务器是主状态,如果有多个keepalived节点,同一个实例只能有一个master。
interface eth0 ##通告选举使用的网卡接口
virtual_router_id 51 ##虚拟路由id,此id也是虚拟mac最后一位地址的来源。
priority 100 ##主的优先级要高于backup的优先级
advert_int 1 ##通告时间间隔
authentication { ##认证方式pass(明文)
auth_type PASS
auth_pass 123123
}
virtual_ipaddress { ##虚拟ip地址
10.40.0.227
}
}
#virtual_server 192.168.200.100 443 {
# delay_loop 6 ##ipvs工作模型
# lb_algo rr ##负载均衡算法
# lb_kind NAT
# nat_mask 255.255.255.0
# persistence_timeout 50 ##持久链接时间多长,不使用则为 “0”
# protocol TCP ##使用的协议,目前只支持tcp
#
# real_server 192.168.201.100 443 {
# weight 1
# SSL_GET {
# url {
# path /
# digest ff20ad2481f97b1754ef3e12ecd3a9cc
# }
# url {
# path /mrtg/
# digest 9b3a0c85a887a256d6939da88aabd8cd
# }
# connect_timeout 3
# nb_get_retry 3
# delay_before_retry 3
# }
# }
#}
#
#virtual_server 10.10.10.2 1358 {
# delay_loop 6
# lb_algo rr
# lb_kind NAT
# persistence_timeout 50
# protocol TCP
#
# sorry_server 192.168.200.200 1358 ##最后稻草,告诉用户所有可应用服务器已经关闭的一台服务器。
#
# real_server 192.168.200.2 1358 {
# weight 1
# HTTP_GET { ##适用于httpd服务,tcp_check适用于msyql之类的链接检查,ssl_check适用于https。
# url {
# path /testurl/test.jsp
# digest 640205b7b0fc66c1ea91c463fac6334d
# }
# url {
# path /testurl2/test.jsp
# digest 640205b7b0fc66c1ea91c463fac6334d
# }
# url {
# path /testurl3/test.jsp
# digest 640205b7b0fc66c1ea91c463fac6334d
# }
# connect_timeout 3 ##链接超时时间为3秒
# nb_get_retry 3 ##超时后尝试次数为3次
# delay_before_retry 3 ##每次尝试链接等待时间为3秒
# }
# }
#
# real_server 192.168.200.3 1358 {
# weight 1
# HTTP_GET {
# url {
# path /testurl/test.jsp
相关文章:

普元王葱权:数字化时代需要新一代的大数据应用平台架构
记者 | 杨丽出品 | AI 科技大本营(rgznai100)2018 年 12 月 6 日,北京新云南皇冠假日酒店,由中国计算机学会主办,CCF 大数据专家委员会承办,CSDN、中科天玑数据科技股份有限公司协办的 2018 中国大数据技术…

Agile DSL Development in Ruby 笔记
pdf见:http://obiefernandez.com/presentations/obie_fernandez-agile_dsl_development_in_ruby.pdf 1. What is DSL ——designed for a specific domain ——captures jargon in executable form ——can be internal or external 2. How to design Ruby DSL (…

人生的出口。在哪
清晨,雨停了。到处都是滴滴答答的雨滴声。似乎这场空洞漫长的过程一直在延续着。也不知道是为什么。在下完雨之后。自己的心情会特别的低落沉重。似乎经历了一场浩劫。没有太多的言语可以去描述。只有自己内心乏味的明白那些含义深刻的东西。约了好友。我迟到了十多…

zabbix专题:第十一章 zabbix之SNMP方式监控
(SNMP基本都是监控网络设备,本文介绍点理论知识) 概述 如果我们需要监控打印机、路由器、UPS等设备,肯定不能使用zabbix agentd,因为他们不能安装软件的,还好他们一般都支持SNMP协议,这样我可以使用SNMP来监控他们.如果你希望使用SNMP agent来…

Some Rules from wrting your own dsl with ruby
来自:http://blog.nofail.de/2010/02/writing-your-own-dsl-with-ruby/ Some Rules from wrting your own dsl with ruby 1. let the user choose how to use it all implemented methods return the object instance itself,so one can chain method calls for con…

免费报名 | 微软全双工语音对话以及在智能硬件上的应用
微软小冰第六代发布会上正式宣布上线全新的共感模型,同时也开始公测一种融合了文本、全双工语音与实时视觉的新感官。这项新技术可以实时预测人类即将说出的内容,实时生成回应,并控制对话节奏,从而使长程语音交互成为可能。而采用…

文件服务器迁移
不论大小,几乎每个公司都有自己的文件服务器,或者简单点的共享文件夹。随着数据的爆炸式增长,以及天长日久累积下来,数据量往往在一年两之后就超出服务器的容量。要解决这个问题,首先当然是做好数据管理,用…

Windows脚本初探之PowerShell流程控制if
Windows Powershell中if语句为可以为一下三种形式,只用表达式为True时才执行相应花括号中的命令语句/块: 示例1: 1234if (表达式1) { 命令语句/块1 } 示例2: 12345678if (表达式1) { 命令语句/块1 } else{ 命令语句/块2 } 示例3&a…

“万人迷”小冰背后的AI故事
作者 | Jane出品 | AI科技大本营从 2014 年的夏天小冰出现在我们的视野到今天,谈到小冰,你的第一印象是什么?一款可爱、萌萌哒的聊天机器人?一款随时在你身边,可以帮你做一些场景任务的语音助手?如果说&…

开放式Android联盟成立
在Google采取行动反对CyanogenMod项目的几天之后,提供了定制的Android固件。一组Android开发者成立了开发式Android联盟。根据项目的网站介绍,这个联盟是‘pro-Android’而不是‘anti-Google’。他们的目的取代封闭的源代码,专有的应用程序包…

QQ卖手办,用AI分析用户评论
作者 | 徐汉彬指导 | 宋彦编辑 | Jane出品 | AI科技大本营徐汉彬,腾讯鹅漫前台研发团队 Leader,T3-3 级工程师,负责鹅漫U品和 AMS 平台(高峰期 PV 超过 13 亿)的研发工作,在 Web 研发、活动运营服务领域有丰…

使用svn时碰到的一个的问题
做技术的人,需要有完美主义,很多问题,如果当时不能彻底解决,往往会留下更大的麻烦。这个字符编码的问题,当时碰到的时候没有主义,以后遇到的时候也是抱着躲避的鸵鸟主义的态度,今天认真对待了一…

远程为服务器安装Windows 2008 Server
命苦,老早就定好10.1期间要把服务器重新安装一次,今天反正也没有事情,来尝试下远程安装,因为以后的MOSS公司要远程的管理和使用 先登录到远程控制卡的管理地址 然后输入用户名和密码,以下是登录成功后的界面 然后在左侧的功能树中选择“介质”…

Spring装配Bean---使用xml配置
声明Bean Spring配置文件的根元素是<beans>. 在<beans>元素内,你可以放所有的Spring配置信息,包括<bean>元素的声明. 除了Beans命名空间,Spring的核心框架总共自带了10个命名空间配置: 命名空间用途 aop 为声…

Ruby DSL介绍及其在测试数据构造中的使用(1)
什么是DSL?英文全称Domain Specific Language,中文解释为领域专用语言。顾名思义,DSL是针对某个特定领域而开发的语言。像我们平时接触到的C/C,Java,Python/Ruby,都属于通用语言,可以为各个领域…

2017年度最受欢迎开源中国项目:roncoo-pay投票评选
2019独角兽企业重金招聘Python工程师标准>>> roncoo-pay项目正在参加 2017年度最受欢迎中国开源软件评选,请大家投上宝贵的一票,支持roncoo-pay更好的发展,为大家带来更多好用的支付功能! 2017年度最受欢迎中国开源软件…

编程小问题系列(2)——为什么WPF里MediaElement等视频控件不起作用
为什么WPF里MediaElement等视频控件不起作用?非常可能的原因是因为没有安装Microsoft Windows Media Player 10或者10以上的播放器,MSDN文档里就写有下面一句话:Both and are used to present audio, video, and video with audio content. B…

国行版HomePod售价2799元,本周五发售
(图片源自苹果中国官网截图)整理 | 一一出品 | AI科技大本营去年 12 月,苹果表示将于今年年初在中国销售其 HomePod 智能音箱。1 月 14 日,苹果公司正式宣布,HomePod 将于 1 月 18 日(本周五)在…

维基百科联手谷歌翻译,结果“惨不忍睹”!
作者 | 琥珀出品 | AI科技大本营作为前沿科技新闻报道的一线工作者,我们经常会碰到各种陌生难懂、语言不通的词句。这直接导致我们在引用和查找信息时,往往辅助以维基百科和谷歌翻译为代表的两大信息引擎,其重要性不言而喻。然而,…

Ruby DSL介绍及其在测试数据构造中的使用(2)
在(1)中介绍了DSL和普通的函数定义之间的区别。在(1)的最后提到,DSL分为内部DSL和外部DSL,我们再看一遍他们的定义:1. External DSLs 用不同于host语言的语言来编写,通过编译和解释器来翻译成host语言 2. Internal DSLs 将host语言…

批量编译fla文件
jsfl太神奇了不过内存不高的机器还是少编译一点,会同时打开你选择的文件夹下的所有fla文件,然后一个一个自动编译。Compile flas.jsfl//----------------------------------Start--------------------------------//Brent Arnolds kick butt batch folde…

字符串转换成utf-8编码
a、将字符串转换成utf-8编码的字节,并输出,然后将该字节在转换成utf-8编码字符串,在输出 b、将字符串转换后才能gbk编码的字节,并输出,然后将该字节在转换成gbk编码字符串,在输出 123456789101112def main(…

50万奖金+京东数科offer,JDD-2018全球总决赛冠军诞生
(JDD 大赛总决赛选手与导师、评委合影)整理 | 一一出品 | AI科技大本营1 月 13 日,JDD-2018 京东数字科技全球探索者大赛全球总决赛落下帷幕。在经过 24 小时极限挑战和 2 小时商业路演的较量后,来自以色列赛区的团队“Cheese&…

三星笔记本FN功能键操作大全
Samsung 的快捷键都很简单,提供的都是最常用的功能,但新出的X系列和P系列机的FN快捷键差异很大,例如X10和P25。现在介绍FN快捷键以巧的X10为主,补充说明P25。FN上方向键/下方向键:增加/减低亮度FN左方向键/右方向键:增…

[翻译] Ruby Golf
原文地址:http://rubysource.com/ruby-golf/ Ruby golf is the art of writing code that uses as few characters as possible. The idea originates in the world of Perl (where it is, unsurprisingly, known as Perl Golf). As a language, Perl is well suite…

AI删库,程序员背锅?
作者 | 一一出品 | AI科技大本营又一代码清库的惨案发生了,不过这次要背锅是 AI。近日,美国最大点评网站 Yelp 的工程师训练的神经网络闯祸了。他们训练了一个用来消除 bug 的神经网络,万万没想到,该网络删除一切,从根…

OpenStack Keystone架构一:Keystone基础
一 什么是keystone keystone是OpenStack的身份服务,暂且可以理解为一个与权限有关的组件。 二 为何要有keystone Keystone项目的主要目的是为访问openstack的各个组件(nova,cinder,glance...)提供一个统一的验证方式,具体的&#…

用gdb调试mpi程序的一些心得
Linux下MPI (Message Passage Interface) 的程序不太好调试,在windows下vs2005以上的IDE有集成的简便MPI调试工具,没有用过,有兴趣的可以试验一下。下面总结了一些最近在用MPI和c语言写程序时的调试经验(Ubuntu环境,c语…

开源如何占领软件世界?
作者 | Mike Volpimavolpi译者 | 风车云马编辑 | 一一出品 | AI科技大本营5 年前,投资商对开源这种商业模式的可行性持有怀疑态度。他们普遍认为,红帽(redhat)公司犹如雪花飘零——在软件世界里开源公司不可能占据举足轻重的地位。…

软件工程概论——课堂测试1
设计思想:1.用1个页面,实现课程录入,提交后直接返回课程界面。2.应用html表单属性进行数据的提交。3.用servlet进行写入数据库和验证输入。 源代码: <% page language"java" import"java.util.*" contentT…