您好,欢迎来到爱玩科技网。
搜索
您的当前位置:首页Keepalived学习笔记(LVS+Keepalived)

Keepalived学习笔记(LVS+Keepalived)

来源:爱玩科技网


Keepalived学习笔记

--LVS+Keepalived

学习LVS,自然会想到解决DR单独故障问题,Heartbeat也能很好实现,不过对于LVS,Keepalived显得更加理想选择。理由:相比Hearbeat ,Keepalived配置更加简单,故障切换速度也最快。Keepalived只想安装DR服务器上,并根据需要进配置即可。

Keealived简介

来自百度本科的简介,我觉得就就很简洁和清楚了。

keepalived是一个类似于layer3, 4 & 5交换机制的软件,也就是我们平时说的第3层、第4层和第5层交换。Keepalived的作用是检测web服务器的状态,如果有一台web服务器死机, 或工作出现故障,Keepalived将检测到,并将有故障的web服务器从系统中剔除,当web服务器工作正常后Keepalived自动将web服务 器加入到服务器群中,这些工作全部自动完成,不需要人工干涉,需要人工做的只是修复故障的web服务器。

Layer3,4&5工作在IP/TCP协议栈的IP层,TCP层,及应用层,原理分别如下:

Layer3:Keepalived使用Layer3的方式工作式时,Keepalived会定期向服务器群中的服务器

发送一个ICMP的数据包(既我们平时用的Ping程序),如果发现某台服务的IP地址没有激 活,Keepalived便报告这台服务器失效,并将它从服务器群中剔除,这种情况的

典型例子是某台服务器被非法关机。Layer3的方式是以服务器的 IP地址是否有效作为服务器工作正常与否的标准。在本文中将采用这种方式。

Layer4:如果您理解了Layer3的方式,Layer4就容易了。Layer4主要以 TCP端口的状态来决定服务器工作正常与否。如web server的服务端口一般是80,如果Keepalived检测到80端口没有启动,则Keepalived将把这台服务器从服务器群中剔除。

Layer5:Layer5就是工作在具体的应用层了,比Layer3,Layer4要复杂一 点,在网络上占用的带宽也要大一些。Keepalived将根据用户的设定检查服务器程序的运行是否正常,如果与用户的设定不相符,则 Keepalived将把服务器从服务器群中剔除。

Keealived安装

首先得下载Keealived安装包:http://www.keepalived.org/download.html

后进行解压安装。

# tar –xzvf keepalived-1.2.2.tar.gz

# ./configure

若出现以下错误。

解决办法:# yum install openssl-devel

若出现错误:configure: error: Popt libraries is required

解决办法:yum install libnel-dev

configure时若出现以下结果:

只有一项为yes,因为keepalived没有找到内核目录导致的,解决的方法是在编译的时候:

./configure --sysconf=/etc \\ # 指定配置文件的安装路径。

--with-kernel-dir=/usr/src/kernels/2.6.18-194.el5-i686/

若/usr/src/kernel目录下没有内核目录,则需要安装内核开发包:

用命令uname -a查看内核版本,然后可以在这里查找对应的

http://zid-luxinst.uibk.ac.at/linux/rpm2html/centos/5/os/i386/CentOS/kernel-devel-2.6.18-194.el5.i686.html

不推荐使用yum install -y kernel-devel安装

安装完成后建立一下链接:

ln -s /usr/src/kernels/2.6.18-194.el5-i686/ /usr/src/linux/

上述过程完毕后,在进行configure:

若还是出现no或者make的时候出现:“ error: linux/ip_masq.h: No such file or directory”之类的错误时,在/usr/src/kernels/2.6.18-194.el5-i686/include/linux /version.h中增加声明:

#define UTS_RELEASE \"2.6.18\"

再进行configure就会都是yes了:

接着执行make是若出现“types.h:62: error: conflicting types for ‘dev_t’”错误,需要修改源码目录下的keepalived/libipvs-2.6/ip_vs.h

把#include linux/types.h移到#include sys/types.h 这行的下面

上述错误都解决后make&&make install就可以通过了,然后运行:

# ln –s/usr/local/sbin/keepalived /sbin #启动配置文件链接路径(启动文件依赖)

#否则:启动 keepalived:/bin/bash: keepalived: command not found[失败]

#查看帮助

keepalived -h

#运行 由于keepalived配置文件不是在启动时一次性加载并读取完成的,所以必须是完整路径,可以根据log判断是否加载了正确的配置文件

keepalived –f /usr/local/etc/keepalived/keepalived.conf

运行过程可以查看log:

tail -f /var/log/message

Keealived配置

Keepalived.conf配置文件有3个部分组成,分别为全局定义部分、vrrp实例定义部分以及虚拟服务器定义部分。下面详细介绍这个配置文件中的每个选项的详细含义和用法。

# 全局定义部分

global_defs {

notification_email {

acassen@firewall.loc # 设置邮件相关。可设置多个。

}

notification_email_from Alexandre.Cassen@firewall.loc

smtp_server 192.168.200.1

smtp_connect_timeout 30

router_id LVS_DEVEL

}

# vrrp实例定义部分

vrrp_instance VI_1 {

state MASTER # 设置主服务器,备份服务器为:BACKUP。

interface eth0

virtual_router_id 51 # 虚拟路由标示,这个标示是一个数字,同一个vrrp实例使用唯一标示,即同一个vrrp_instance下,MASTER和BACKUP必须是一致的。

priority 100 # MASTER优先级必须大于BACKUP的优先级。

advert_int 1 #设置MASTER与BACKUP负载平衡器之间同步检查的时间间隔,单位为秒。

authentication {

auth_type PASS #设置验证类型,主要为PASS何AH二种。

auth_pass 1111 #MASTER和BACKUP必须使用相同的验证密码才能正常通行。

}

virtual_ipaddress {

192.168.2.180 #虚拟机IP地址,可以多个每个一行。

192.168.200.17

}

}

# 虚拟服务器定义

virtual_server 192.168.2.180 8080 { # 设置虚拟机服务器IP地址和端口,二者用空格隔开。

delay_loop 3 #设置运行情况检查时间,单位为秒。

lb_algo rr #设置负载平衡调度算法,设置设置为rr,即轮询算法。

lb_kind DR # 设置LVS实现负载平和的机制,有NAT、TUN和DR是个可选模式。

nat_mask 255.255.255.255

persistence_timeout 50 # 会话保持时间,单位为描述。对动态网页非常有用。

protocol TCP

real_server 192.168.2.152 8080 {

weight 1 # 权值:数字越大,权值越高。高性能的服务器可设较高的权值,以分载。

HTTP_GET {

url {

path /testurl/test.jsp

digest 0205b7b0fc66c1ea91c463fac6334d

}

url {

path /testurl2/test.jsp

digest 0205b7b0fc66c1ea91c463fac6334d

}

url {

path /testurl3/test.jsp

digest 0205b7b0fc66c1ea91c463fac6334d

}

connect_timeout 3 # 表示3秒无响应超时。

nb_get_retry 3 # 表示重试次数。

delay_before_retry 3 # 表示重试间隔。

}

}

# 节点2

real_server 192.168.2.153 8080 {

weight 1

HTTP_GET {

url {

path /testurl/test.jsp

digest 0205b7b0fc66c1ea91c463fac6334d

}

url {

path /testurl2/test.jsp

digest 0205b7b0fc66c1ea91c463fac6334d

}

url {

path /testurl3/test.jsp

digest 0205b7b0fc66c1ea91c463fac6334d

}

connect_timeout 3

nb_get_retry 3

delay_before_retry 3

}

}

}

注意: 在配 置Keepalived时,需要特别注意配置文件的语法格式,因为keepalived在启动时并不检测配置文件的正确性,即使没有配置文件,keepalived也照样能够启动,所以一定要保证配置文件的正确。

在默认情况下,keealived在启动时会查找/etc/keealived/keepalived.conf配置文件,如果配置文件放在其他路径下,可以通过“keepalived –f”参数指定配置文件路径即可。

在keealived配置完成后,将此文件复制到备用的DR对应的路径下,然后修改以下二点即可:

 将”state MASTER”更改为“state BACKUP”。

 将“priority 100”更为一个较小的值,如:priority 80。

在LVS的DR和TUN模式下,在Real Server服务中创建/etc/init.d/lvsrs脚本,以达到NORAP的问题。并修改其权限 # chmod 755 /etc/init.d/lvsrs,然后启动#/etc/init.d/lvsrs start

#!/bin/bash

VIP=192.168.2.180

/etc/rc.d/init.d/functions

case \"$1\" in

start)

ifconfig lo:0 $VIP netmask 255.255.255.255 broadcast $VIP

/sbin/route add -host $VIP dev lo:0

echo \"1\" >/proc/sys/net/ipv4/conf/lo/arp_ignore

echo \"2\" >/proc/sys/net/ipv4/conf/lo/arp_announce

echo \"1\" >/proc/sys/net/ipv4/conf/all/arp_ignore

echo \"2\" >/proc/sys/net/ipv4/conf/all/arp_announce

sysctl -p >/dev/null 2>&1

echo \"RealServer Start OK\"

;;

stop)

ifconfig lo:0 down

route del $VIP >/dev/null 2>&1

echo \"0\" >/proc/sys/net/ipv4/conf/lo/arp_ignore

echo \"0\" >/proc/sys/net/ipv4/conf/lo/arp_announce

echo \"0\" >/proc/sys/net/ipv4/conf/all/arp_ignore

echo \"0\" >/proc/sys/net/ipv4/conf/all/arp_announce

echo \"RealServer Stoped\"

;;

*)

echo \"Usage: $0 {start|stop}\"

exit 1

esac

注意: 启动服务时:

先启动Keepalived服务#/etc/init.d/keepalived start

后启动LVS服务#/etc/init.d/ipvsadm start

否则可能出现VIP地址丢弃情况(重启系统恢复)。至少,我在ESXi5.0+Redhat5.4-32bit环境中遇到此情况。

参考文件:

介绍参考:http://baike.baidu.com/view/4175422.htm

安装参考:http://www.cnblogs.com/wsky/archive/2011/04/12/2013903.html

配置参考:《高性能Linux服务器构建实战》

2012-2-15

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- aiwanbo.com 版权所有 赣ICP备2024042808号-3

违法及侵权请联系:TEL:199 18 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务