|
一、什么是keepalived?
1、keepalived简介
keepalived是一个类似于layer3, 4 & 5交换机制的软件,也就是我们平时说的第3层、第4层和第5层交换。Keepalived的作用是检测web服务器的状态,如果有一台web服务器死机,或工作出现故障,Keepalived将检测到,并将有故障的web服务器从系统中剔除,当web服务器工作正常后Keepalived自动将web服务器加入到服务器群中,这些工作全部自动完成,不需要人工干涉,需要人工做的只是修复故障的web服务器。
2、keepalived理论工作原理
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将把服务器从服务器群中剔除
3、keepalived作用
网站业务量增大需要负载均衡方案,提供持续的服务质量—高可用性HA,通过对服务器的监控检测,实现对失效机器或服务故障隔离
4、keepalived体系结构
keepalived大致分两层结构,用户空间user space 和内核空间kernel space
其他如下:
1)WatchDog 负责监控checkers和VRRP进程的状况。
2)Checkers 负责真实服务器的监控检查healthchecking 是keepalived最主要的功能
3)VRRP Stack 负责负责均衡器之间的失败切换Failover,如果只用一个负载均衡器,则VRRP不是必须得
4)IPVS wrapper 用来发送设定的规则到内核ipvs代码
5)Netlink Reflector 用来设定vrrp的vip 地址等
二、keepalived的安装
1、安装keepalived
# wget http://www.keepalived.org/software/keepalived-1.2.1.tar.gz
# tar -zxvf keepalived-1.2.1.tar.gz -C /usr/src/
# cd /usr/src/keepalived-1.2.1/
# ./configure && make && make install
# ln -s /usr/src/kernels/2.6.18-164.el5-i686/ /usr/src/linux //这里的内核信息版本不同会不同的信息
2、keepalived验证
默认实在/usr/local/etc/keepalived/samples/下面
启动/usr/local/sbin/keepalived -D,当然我们也可以用其他的方法方便启动。
# cp /usr/local/etc/rc.d/init.d/keepalived /etc/rc.d/init.d/
# cp /usr/local/etc/sysconfig/keepalived /etc/sysconfig/
# mkdir /etc/keepalived
# cp /usr/local/etc/keepalived/keepalived.conf /etc/keepalived/
# cp /usr/local/sbin/keepalived /usr/sbin/
# service keepalived start
Starting keepalived: [ OK ]
3、keepalived配置简介
全集配置:就是对整keepalived 起作用的配置,不管是否使用LVS
VRRPD:是Keepalived 的核心
LVS配置:只在使用keepalived来配置和管理LVS时需要使用
1)全局配置
global_defs {
notification_email {
acassen@firewall.loc
failover@firewall.loc
sysadmin@firewall.loc
}
notification_email_from Alexandre.Cassen@firewall.loc
smtp_server 192.168.200.1
smtp_connect_timeout 30
router_id LVS_DEVEL
}
配置选项说明:
notification_email:指定Keepalived在发送生事件时,需要发送email到的对象
smtp_*:指定发送email的smtp服务器
route_id:运行keepalived的机器的一个标识
2、VRRPD配置
VRRPD的配置包括两个部分,VRRP同步组(synchroization group)、VRRP实例(VRRP Instance)
1)同步组(解决机器或路由有两个网段,不检查外网的问题)
notify_master:指定当切换到master是,执行的脚本,这个脚本可以传人参数
smpt_alert:使用global_defs里面定义的邮件地址和smtp服务器在切换后发送邮件通知
2)VRRP实例
vrrp_instance VI_1 {
state MASTER //实例的初始状态
interface eth0 //实例绑定的网卡
dont_track_primary //忽略VRRP的interface错误
lvs_sync_daemon_interface et0 //绑定eth0作为lvs同步的
track_interface{ //设置额外的监控,里面任意一个出现问题,都会进入fault状态
eth0
eth1
}
mcast_src_ip //发送多播包的地址,默认使用绑定的网卡
garp_master_delay 10 //在切换到master状态后,延迟进行gratuitous ARP请求
virtual_router_id 51 //VRID标记
priority 100 //高优先级精选master,至少高backup50
advert_int 1 //查询间隔
authentication { //设置认证
auth_type PASS //认证方式,支持PASS和AH
auth_pass 1111 //认证的密码
}
virtual_ipaddress { //漂移地址(VIP)
192.168.200.16
192.168.200.17
192.168.200.18
}
}
virtual_routes{ //发生漂移时添加路由
192.168.112.0/24 dev eth2
}
nopreempt //设置为不抢占,这个配置只能在state为BACKUP的主机 上,而且这个主机的priority必须必另台高
preemtp_delay 300 抢占延时5分钟
debug
}
3、LVS配置
lvs的配置有两个部分:虚拟主机组(virtual server group)、虚拟主机(virtual server)
1)虚拟主机组
可选的,目的是为了让一台realserver上的某个service可以属于多个virtual server并且只做一次监控检查
virtual_server_group {
#VIP port
……
fwmark
}
2)虚拟主机简介
#虚拟服务器定义部分
virtual_server 10.0.0.10 80 { //设置虚拟服务器,需要指定虚拟IP地址和服务端 口,ip与端口之间用空格隔开
delay_loop 6 //设置监控检查时间,单位秒
lb_algo rr //设置负载调度算法
lb_kind DR //设置LVS实现负载均衡的机制
persistence_timeout 50 //会话保持时间,单位秒
protocl TCP //指定转发协议类型,tcp/udp两种
sorry_server //备机IP端口,所有的real server 失效后启用
}
#节点服务器配置部分
real_server 10.0.0.11 80 { //配置服务节点,需要指定real server的真实IP地 址和端口
weight 3 //配置服务节点的权值,权值大小用数字表示,越大越高
inhib it_on_falure //健康检查失败后,将weight设为0,不从IPVS里面删除
TCP_CHECK{
connect_timeout 10 //10秒无响应超时
nb_get_retry 3 //重试次数
delay_before_retry 3 //重试间隔
}
}
|
|
|