基于keepalived实现web高可用
一、首先要说明两个概念
1、keepalive的基本工作机制和应用场景
Keepalived是一个专门为lvs提供高可用功能的机制,它可以实现当有两个主从lvs,而且主lvs损坏的时候,将其IP地址以及lvs转移至备份lvs上。IP地址转移就应用了我们前面说的VRRP协议,lvs转移可定义其配置文件,动态生成ipvs规则,还能实现健康状况检查。
2、VRRP协议
VRRP:Virtual Router Redundancy Protocol,是虚拟路由冗余协议,通过此协议我们可以把多个路由器做成一个虚拟路由器,从而来保证其中某个路由坏掉的时候不会造成我们内部外出网络的全部中断。
实验目的:实现web高可用的功能。
准备环境:这里以RHEL5的虚拟机实现,下载软件包,可以编译安装,也可以直接用rpm包安装,这里直接下载了rpm包安装(下载地址 http://www.keepalived.org)
地址规划:
HA1: 172.16.27.8
HA2: 172.16.27.9
DR1: 172.16.127.8
DR2: 172.16.127.9
VIP: 172.16.27.1
http://blog.运维网.com/attachment/201305/192256803.png
二、配置步骤:
1、配置IP,使其相互间能够通讯
# setup
# service network restart
# ping 172.16.127.9
2、修改主机名
# hostname node1
# uname -n
# vim /etc/sysconfig/network //使其下次开机也有效
3、配置主机名解析
# vim /etc/hosts
172.16.27.8 node1 node1
172.16.27.9 node2 node2
确保基于主机名可以通讯
# ping node2
4、同步时间
# service ntpd stop
# ntpdate 172.16.0.1 //这里是我们的时间服务器
# date
【第二个节点和第一个节点的配置基本相同,只需要将IP修改一下即可】
5、配置keepalived
node1:172.16.27.8
# yum -y --nogpgcheck localinstall keepalived-1.2.7-5.el5.i386.rpm
安装软件包
# vim /etc/keepalived/keepalived.conf 修改配置文件
global_defs {
notification_email {
root@localhost # 邮件地址
}
notification_email_from root@localhost # 发件人
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 # 组ID
priority 101 # 主节点的优先级
advert_int 1 # 发送通高的时间间隔
authentication {
auth_type PASS # 密码认证
auth_pass password
}
virtual_ipaddress {
172.16.27.8/16 dev eth0 label eth0:0 # 在别名上配置虚拟地址
}
}
virtual_server 172.16.27.8 80 { # vip地址以及对应的端口
delay_loop 6
lb_algo wlc # 调度算法
lb_kind DR # lvs类型
nat_mask 255.255.0.0 # 网络掩码
protocol TCP # tcp协议
real_server 172.16.27.8 80 { #realser的地址
weight 1 # 权重
HTTP_GET { #为http服务进行健康状态检查
url { # 监测http服务的url
path /
status_code 200 # 正确的状态码
}
connect_timeout 2 # 连接的超时时长
nb_get_retry 3 # 重试次数
delay_before_retry 1 # 延迟时间
}
}
real_server 172.16.27.9 80 {
weight 1
HTTP_GET{
url {
path /
status_code 200
}
connect_timeout 2
nb_get_retry 3
delay_before_retry 1
}
}
}
[将node1的配置文件复制到node2上]
http://blog.运维网.com/attachment/201305/195651400.png
node2 :172.16.27.9
修改其vrrp状态为备份节点BACKUP,以及优先级要低于主节点。(别忘记IP也要修改)
# vim /etc/keepalived/keepalived.conf
http://blog.运维网.com/attachment/201305/201015595.png
在node1和node2上提供脚本
脚本:在/etc/keepalived目录下提供一个名为notify.sh脚本
#!/bin/bash
#
ifalias=${2:-eth0:0}
interface=$(echo $ifalias | awk -F: '{print $1}')
vip=$(ip addr show $interface | grep $ifalias | awk '{print $2}')
contact='root@localhost'
workspace=$(dirname $0)
notify() {
subject="$ip change to $1"
body="$ip change to $1 $(date '+%F %H:%M:%S')"
echo $body | mail -s "$1 transition" $contact
}
case "$1" in
master)
notify master
exit 0;;
backup)
notify backup
/etc/rc.d/init.d/httpd restart
exit 0;;
fault)
notify fault
exit 0;;
*)
echo 'Usage: $(basename $0) {master|backup|fault}'
exit 1;;
esac
并执行脚本。
启动两个节点的keepalived
http://blog.运维网.com/attachment/201305/201114274.png
安装ipvsadm和httpd
# yum -y install ipvsadm httpd
# ipvsadm -L -n #查看生成的ipvsadm规则
# service httpd start
到此配置完成,可以通过浏览器进行验证。
页:
[1]