keepalived高可用的常用功能介绍

Keepalived的作用是检测web服务器的状态,如果有一台web服务器死机,或工作出现故障,Keepalived将检测到,并将有故障的web服务器从系统中剔除,当web服务器工作正常后Keepalived自动将web服务器加入到服务器群中,这些工作全部自动完成,不需要人工干涉,需要人工做的只是修复故障的web服务器。本篇文章会介绍keepalived的安装,配置,还有keepalived的一些脚本,keepalived+nginx高可用实现和keepalived双机互为主从的实现。

keepalived环境安装:

centos6.5上默认提供的keepalived版本为1.2.7的版本,但是官网最新的版本已经为1.2.13,所以这里我们源码的方式来安装keepalived。首先去http://www.keepalived.org/software/keepalived-1.2.13.tar.gz下载最新的keepalived。然后直接编译安装的话就可以,如果没有装上默认的开发环境,编译过程中会报一些常见的错误,遇到什么错误,装上对应的环境包即可。当然如果为了方便,可以直接装上centos 6提供的开发包,这样编译过程中就不会出现什么问题。yum
groupinstall "Desktop Platform Development" "Development tools" "Server Platform Development"。我的编译安装过程如下:

[[email protected] ~]#  tar xf keepalived-1.2.13.tar.gz

[[email protected] ~]#  cd keepalived-1.2.13

[[email protected] ~]# ./configure --prefix=/usr/local/keeaplived --sysconfdir=/etc/

[[email protected] ~]# make && make install

[[email protected] ~]# chkconfig --add keepalived

上面装的keepalived在使用service keepalived start的时候会报错,因为我们把keepalived的脚本安装在了/usr/local/keepalived/sbin目录下,而/etc/rc.rd下的keepalived中直接使用的是keepalived脚本。因此可以在PATH中加入/usr/local/keepalived/sbin这个目录或者在keepalived把调用keepalived的地方全部改成/usr/local/keepalived/sbin/keepalived即可。

为了查阅keepalived.conf文件的方便,可以在/etc/man.config文件中加入如下配置:

MANPATH /usr/local/keepalived/share/man

这样以后就可以直接使用man keepalived.conf来方便的查看keepalived的配置文件了

keepalived+ipvs实现httpd的高可用实验环境(centos6.5):

1.keepalived的MASTER节点(192.168.1.134)

2.keepalived的BACKUP节点(192.168.1.136)

3.两台real server的地址分别是(192.168.1.143,192.168.1.170)

4.vip的地址是192.168.1.200

一。首先在两台real server下配置好arp协议,vip地址和路由策略:

[[email protected] ~]# echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore

[[email protected] ~]# echo 1 > /proc/sys/net/ipv4/conf/eth0/arp_ignore

[[email protected] ~]# echo 2 > /proc/sys/net/ipv4/conf/eth0/arp_announce

[[email protected] ~]# echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce

[[email protected] ~]# ifconfig lo:0 192.168.1.200 broadcast 192.168.1.200 netmask 255.255.255.255

[[email protected] ~]# route add -host 192.168.1.200 dev lo:0

二。在192.168.1.134和192.168.1.136两台节点上装上keepalived和ipvsadm。

并且为MASTER节点的/etc/keepalived/keepalived.conf中提供如下的配置文件

! Configuration File for keepalived

global_defs {

notification_email {

[email protected] #邮件的收信人地址

}

notification_email_from [email protected] #邮件的发信人地址

smtp_server 127.0.0.1

smtp_connect_timeout 30

router_id LVS_DEVEL

}

vrrp_instance VI_1 {

state MASTER

interface eth0

virtual_router_id 51

priority 110

advert_int 1  #两台节点之间同步信息的间隔

authentication {

auth_type PASS

auth_pass 123456

}

virtual_ipaddress {

192.168.1.200

}

}

virtual_server 192.168.1.200 80 {

delay_loop 6 #选举服务投票的延迟时间

lb_algo rr  #调度算法

lb_kind DR  #LVS的类型

nat_mask 255.255.255.0

#    persistence_timeout 50  #持久连接的超时时间

protocol TCP

real_server 192.168.1.143 80 {

weight 1

HTTP_GET {

url {

path /

status_code 200

}

connect_timeout 3  #连接的超时时间

nb_get_retry 3   #尝试的次数

delay_before_retry 3 #尝试的延迟

}

}

real_server 192.168.1.170 80 {

weight 1

HTTP_GET {

url {

path /

status_code 200

}

connect_timeout 3

nb_get_retry 3

delay_before_retry 3

}

}

}

把上面的内容复制到BACKUP节点上,只需要修改state MASTER为state BACKUP和priority 110为priority 100即可。然后启动keepalived服务,观察ipvsadm中是否有对应的列表,如果有,证明我们的keepalived已经配置成功.

keepalived默认支持的检查机制不止HTTP的方式,还有SSL_GET,TCP_CHECK,SMTP_CHECK,MISC_CHECK。如果想要插叙具体的用法,直接man keepalived.conf即可

扩展keepalived的功能:

1.在real server中所有的节点都挂了的时候,再次访问的时候将不会得到服务,为了用户的体验友好性,可以在MASTER和SLAVE节点上提供一个错误,当所有的节点都不在的时候,提供一个错误的页面。因此在MASTER和BACKUP两台主机上装上httpd服务,并且提供默认的页面。在此需要在MASTER和BACKUP上修改keepalived.conf配置文件

virtual_server 192.168.1.200 80 {

delay_loop 6

lb_algo rr

lb_kind DR

nat_mask 255.255.255.0

#   persistence_timeout 50

protocol TCP

sorry_server 127.0.0.1 80  #virtual_server的配置地方和上面一样,只是这里需要新增一行

real_server 192.168.1.143 80 {

weight 1

HTTP_GET {

url {

path /

status_code 200

}

connect_timeout 3

nb_get_retry 3

delay_before_retry 3

}

}

real_server 192.168.1.170 80 {

weight 1

HTTP_GET {

url {

path /

status_code 200

}

connect_timeout 3

nb_get_retry 3

delay_before_retry 3

}

}

}

通过上述的配置以后,当所有的real server都挂掉的时候,默认MASTER上的httpd服务器将启用,而当有一台real server上线的时候,MASTER上面的http服务器将会下线。

2.默认情况下,keepalived的默认配置邮件服务功能,只会在real server发生宕机或者恢复功能的时候发出邮件。很多时候,更希望看到的是提供keepalived的节点发生故障的时候提供邮件服务。keepalived默认提供了三个参数为notify_master,notify_backup和notify_fault。他们分别表示在节点变为master,节点变为backup和节点不可用时可以执行的脚本。具体的信息可以通过man查看。因此下面的配置是为keepalived的MASTER节点发生转移的时候提供邮件功能:

在/etc/keepalived/下面建立一个新的脚本文件keepalived_message.sh,这个脚本接收2个参数,分别是状态和VIP的地址。当我们调用前面notify_master等脚本的时候就去自动调用这个脚本对应的参数,实现发送邮件的功能。脚本内容如下:

#!/bin/bash

VIP=$2

Usage (){

echo "Usage: `basename $0` {mater|backup} VIP"

}

Send_message (){

subject="${VIP}‘s server keepalived state is translate"

content="`date +‘%F %T‘`: `hostname`‘s state change to $1"

echo $content | mail -s "$subject" [email protected]

}

[ $# -lt 2 ] && Usage && exit

case $1 in

master)

Send_message master

;;

backup)

Send_message backup

;;

fault)

Send_message fault

;;

*)

Usage

exit 1

;;

esac

然后在配置文件keepalived.conf中添加如下内容:

vrrp_instance VI_1 {

state MASTER

interface eth0

virtual_router_id 51

priority 110

advert_int 1

authentication {

auth_type PASS

auth_pass qiguo139

}

virtual_ipaddress {

192.168.1.200

}

#下面的内容是我们新添加的三行,当keepalived的节点变成对应状态的时候就去执行上面给出的脚本发邮件

notify_master "/etc/keepalived/keepalived_message.sh master 192.168.1.200"

notify_backup "/etc/keepalived/keepalived_message.sh backup 192.168.1.200"

notify_fault "/etc/keepalived/keepalived_message.sh fault 192.168.1.200"

}

把上面新添加的keepalived_message.sh脚本和主配置文件中新添加的三条信息传给另外一台keepalived服务器,然后测试,会发现,对应keepalived的关闭,启动都会有相应的邮件过来了。

3.keepalived还提供了vrrp_script脚本,可以扩展当前的监控,这样我们就可以让keepalived用在nginx和haproxy的高可用上了。vrrp_script的默认语法为:

vrrp_script check_name {

script ""   需要执行的脚本内容或脚本文件存放的位置

interval 2  每隔多少秒做一次检测

weight -2   如果失败了,降低多少权重

fail 2      检测多少次失败,才认为是真的失败

rise 1      检测一次成功,就认为在线了

}

vrrp_script脚本定义在实例之外。

上面只是定义了一个vrrp_script脚本,还需要执行它,执行的话可以通过track_script来执行。track_script需要放在实例中,让实例随时的去执行这个脚本,判断服务的状况。因此如果我们定义的是vrrp_script check_name{xxx},在vrrp_instance中需要相应的添加:

track_script{

check_name

}

下面实现keepalived+nginx的高可用功能脚本,这里的nginx服务器仍然做的是负载均衡服务器,MASTER上的脚本如下:

! Configuration File for keepalived

global_defs {

notification_email {

[email protected]

}

notification_email_from [email protected]

smtp_server 127.0.0.1

smtp_connect_timeout 30

router_id LVS_DEVEL

}

vrrp_script check_nginx {

script "killall -0 nginx"

interval 2

weight -2

}

vrrp_instance VI_1 {

state MASTER

interface eth0

virtual_router_id 51

priority 101

advert_int 1

authentication {

auth_type PASS

auth_pass qiguo139

}

virtual_ipaddress {

192.168.1.200

}

track_script {

check_nginx

}

}

在BACKUP节点上只需要把priority 的值换成100,把state的状态换成BACKUP即可.

4.有时候让一台BACKUP长期处于空闲状态容易造成资源浪费,因此可以配置双机互为主从。其主要的思路就是创建2个虚拟路由器,并以两个节点互为主从。我们修改上面顶一个nginx+keepalived的高可用脚本来实现互为主从:

! Configuration File for keepalived

global_defs {

notification_email {

[email protected]

}

notification_email_from [email protected]

smtp_server 127.0.0.1

smtp_connect_timeout 30

router_id LVS_DEVEL

}

vrrp_script check_nginx {

script "killall -0 nginx"

interval 2

weight -2

}

vrrp_instance VI_1 {

state MASTER

interface eth0

virtual_router_id 51

priority 101

advert_int 1

authentication {

auth_type PASS

auth_pass qiguo139

}

virtual_ipaddress {

192.168.1.200

}

track_script {

check_nginx

}

}

vrrp_instance VI_2 {

state BACKUP  #对于另外一台主的从

interface eth0

virtual_router_id 52  #定义一个新的虚拟路由的时候,不能和原来的虚拟路由ID的值一样

priority 100  #对于另外一台的优先级

advert_int 1

authentication {

auth_type PASS

auth_pass qiguo139

}

virtual_ipaddress {

192.168.1.201  #定义在BACKUP上的VIP

}

track_script {

check_nginx

}

}

然后在BACKUP上面互换关系即可。然后再次查看会发现在原来的MASTER上面会绑定192.168.1.200的VIP,原来的BACKUP上面会绑定192.168.1.201的VIP。

keepalived高可用的常用功能介绍,布布扣,bubuko.com

时间: 2024-08-02 06:45:08

keepalived高可用的常用功能介绍的相关文章

keepalived高可用集群技术介绍及实战演练

一.Keepalived是什么 Keepalived的作用是检测服务器的状态,如果有一台web服务器宕机,或工作出现故障,Keepalived将检测到,并将有故障的服务器从系统中剔除,同时使用其他服务器代替该服务器的工作,当服务器工作正常后Keepalived自动将服务器加入到服务器群中,这些工作全部自动完成,不需要人工干涉,需要人工做的只是修复故障的服务器. 二.Keepalived的特性 配置文件简单:配置文件比较简单,可通过简单配置实现高可用功能 稳定性强:keepalived是一个类似于

高可用群集HA介绍与LVS+keepalived高可用群集

一.Keepalived介绍 通常使用keepalived技术配合LVS对director和存储进行双机热备,防止单点故障,keepalived专为LVS和HA设计的一款健康检查工具,但演变为后来不仅仅为LVS提供方案,Keepaliced支持故障自动切换(Failover),支持节点健康状态检查(Health Checking),官方网站http://www.keepalived.org/ Keepalived采用VRRP的热备份协议实现Linux服务器的多机热备功能,VRRP,虚拟路由冗余协

linux企业常用服务---lvs+Keepalived高可用集群

部署前准备: iptables和selinux没配置,关掉 挂载系统镜像作为本地yum源,修改yum文件 源码包准备keepalived-1.2.13.tar.gz 环境介绍: 主服务器ip:192.168.100.157(keeplived+lvs) 从服务器ip:192.168.100.156(keeplived+lvs) 节点服务器ip:192.168.100.153-192.168.100.155(httpd) 集群vip:192.168.100.95 1.安装keepalived(在两

Nginx反向代理,负载均衡,redis session共享,keepalived高可用

相关知识自行搜索,直接上干货... 使用的资源: nginx主服务器一台,nginx备服务器一台,使用keepalived进行宕机切换. tomcat服务器两台,由nginx进行反向代理和负载均衡,此处可搭建服务器集群. redis服务器一台,用于session的分离共享. nginx主服务器:192.168.50.133 nginx备服务器:192.168.50.135 tomcat项目服务器1:192.168.50.137 tomcat项目服务器2:192.168.50.139 redis服

企业级Nginx负载均衡与keepalived高可用实战(二)keepalived篇

1.Keepalived高可用软件 1.1.Keepalived介绍 Keepalived软件起初是专门为LVS负载均衡软件设计的,用来管理并监控LVS集群系统中各个服务节点的状态,后来又加入了可以实现高可用的VRRP功能.因此,Keepalived除了能够管理LVS软件外,还可以作为其他服务(例如:Nginx,Haproxy,MySQL等)的高可用解决方案软件. Keepalived软件主要是通过VRRP协议实现高可用功能的.VRRP是Virtual Router Redundancy Pro

keepalived高可用调度器配置详解

一.VRRP概述 1.VRRP协议 虚拟路由冗余协议(Virtual Router Redundancy Protocol,简称VRRP)是由IETF提出的解决局域网中配置静态网关出现单点失效现象的路由协议,1998年已推出正式的RFC2338协议标准.VRRP广泛应用在边缘网络中,它的设计目标是支持特定情况下IP数据流量失败转移不会引起混乱,允许主机使用单路由器,以及及时在实际第一跳路由器使用失败的情形下仍能够维护路由器间的连通性. 2.vrrp术语 参考:H3C VRRP技术白皮书 虚拟路由

lvs+keepalived高可用负载均衡集群双主实现

项目说明 1.         使用LVS负载均衡用户请求到后端web服务器,并且实现健康状态检查 2.         使用keepalived高可用LVS,避免LVS单点故障 3.         集群中分别在LK-01和LK-02运行一个VIP地址,实现LVS双主 4.         用户通过DNS轮训的方式实现访问集群的负载均衡(不演示) 环境拓扑 环境介绍 IP地址 功能描述 LK-01 172.16.4.100 调度用户请求到后端web服务器,并且和LK-02互为备份 LK-02

keepalived高可用lvs-dr 负载均衡httpd

这次实践主要是尝试:keepalived高可用lvs,完成对后端主机的负载均衡.lvs使用最为常用的DR模型,DIP,RIPs使用内网地址,节省公网IP的使用. 一.实验要求 要求任何一台代理服务器不可用时,不影响正常访问,任何一台真实主机服务不可用时,不影响正常访问. 二.实验环境 这里假设192.168.0.0/24作为外网地址(因为它确实能连接外网),192.168.100.0/24作为内网网络,前端代理放置在外网,真实服务器放在内网.这样设计可以使用更少的IP完成架构.这里要注意的是:1

基于linux实现keepalived高可用的集群网站架构

模拟场景: 随着业务的发展,网站的访问量越来越大,网站访问量已经从原来的1000QPS,变为3000QPS,目前业务已经通过集群LVS架构可做到随时拓展,后端节点已经通过集群技术(ldirectord)保障了可用性,但对于前端负载均衡器来说,是个比较大的安全隐患,因为当前端负载均衡器出现故障时,整个集群就处于瘫痪状态,因此,负载均衡器的可用性也显得至关重要,那么怎么来解决负载均衡器的可用性问题呢?(当然是用keepalived的arrp实现地址偏移来实现最简单啦~) 技术说明: 群(cluste