之前写过一个heartbeat-ldirectord实现LVS的高可用,这里引入一个轻量级的程序Keepalived基于VRRP协议工作,也能为服务提供高可用功能,这个程序的开发初衷是为了给lvs提供高可用。
下面我们来看看如何使用keepalived+ipvs实现高可用+负载均衡。
在RHEL6.4以后就提供了rpm格式的安装包,这里我们用源码编译安装。
先去官网下载源码包http://keepalived.org/
解压源程序包,预编译配置,编译程序,安装程序。
tar zxvf keepalived-1.2.13.tar.gz
./configure --prefix=/usr/local/keepalived --sysconfdir=/etc/
make && make install
编辑服务脚本,修改程序路径。
vim /etc/init.d/keepalived
编辑主配置文件/etc/keepalived/keepalived.conf
! Configuration File for keepalived
global_defs { //全局配置段
notification_email { //收件人邮箱
root@localhost
}
notification_email_from keepadmin@localhost //发件人
smtp_server 127.0.0.1 //邮件服务器
smtp_connect_timeout 30 //等待超时时间
router_id LVS_DEVEL
}
vrrp_instance VI_1 { //定义一个VRRP路由实例
state MASTER //初始状态(备节点改为BACKUP)
interface eth0
virtual_router_id 51 //路由实例ID(唯一)
priority 100 //优先级 (备节点的值要设置比主的低)
advert_int 1 //通告频率
authentication { //认证配置
auth_type PASS //认证类型
auth_pass 1111 //密码
}
virtual_ipaddress { //虚拟IP
192.168.18.18
}
notify_master "/etc/keepalived/notify.sh master" //状态转换通知,要自己写好脚本。
notify_backup "/etc/keepalived/notify.sh backup"
notify_fault "/etc/keepalived/notify.sh fault"
}
virtual_server 192.168.18.18 80 { //定义虚拟服务
delay_loop 6
lb_algo wlc //指定调度算法
lb_kind DR //指定工作模型
nat_mask 255.255.255.0
persistence_timeout 0 //持久连接
protocol TCP
real_server 192.168.18.203 80 { //定义RealServer
weight 1 //设置权重
HTTP_GET { //配置HTTP健康状态检测
url {
path / //检测的路径
status_code 200 //响应的状态信息
}
connect_timeout 3 //超时时间
nb_get_retry 3 //重试次数
delay_before_retry 3 //每一次重试之前等待的时间
}
}
real_server 192.168.18.204 80 {
weight 2
HTTP_GET {
url {
path /
status_code 200
}
connect_timeout 3
nb_get_retry 3
delay_before_retry 3
}
}
}
把配置文件同步到备节点,修改我上面提到的两个地方即可,两个节点启动Keepalived服务。
RealServer配置(略)
scp /etc/keepalived/keepalived.conf admin2:/etc/keepalived/
/etc/init.d/keepalived start
查看主节点生成的配置
访问vip 192.168.18.18
刷新一下,请求自动转发到第二台realserver。
这时我们模拟坏了一台RealServer,将Realserver2-192.168.18.203网络服务给stop,再看看状态。
再把Realserver2给恢复。
这时我们模拟主Director故障了,把主节点网络服务stop。
我们来到备节点
主节点下线了,备节点优先级为最高,继承资源,如果这是当主节点恢复后,资源还是会回到主节点的,因为主节点的优先级更高。
好了,这就实现了用keepalived给lvs提供高可用。
有问题欢迎与我交流QQ1183710107
本文出自 “突破舒适区” 博客,转载请与作者联系!