Keepalived + LVS(DR) 高可用集群
1. 简介
LVS( Linux Virtual Server )是 Linux 虚拟服务器,可以把多台服务器虚拟为一个虚拟 IP ,同时实现各种负载均衡算法
Keepalived 是基于 LVS ,并与 LVS 高度融合的,监控 LVS 下所有真实服务器健康状态,并通过健康健康状态动态调整 LVS 的复杂均衡转发权重和规则。同时 keepalived 具备热备功能。
Memcached Session manager 负载后端服务器Tomcat的Session共享和同步。
2. 环境准备
四台虚拟机 linux as 5, 小本太慢,每台分配512内存。
内核:
# uname -r
2.6.18-8.el5
LVS: ipvsadm-1.24.tar.gz
Keepalived: keepalived-1.1.17
IP 规划
名称
IP
说明
VIP
10.10.10.10
外部应用使用的VIP
调度主服务器
10.10.10.11
Keepalived+LVS 主
调度备服务器
10.10.10.12
Keepalived+LVS 备
真实服务器 1 地址
10.10.10.13
web 服务器 1
真实服务器 2 地址
10.10.10.14
web 服务器 2
3. LVS 安装配置
请参见:http://acooly.iteye.com/blog/1151921
4. Keepalived 安装配置
安装依赖: kernel-devel 和openssl-devel
如果你的 Redhat 是官方注册或配置了本地仓库,可以使用:
yum install kernel-devel
yum install openssl-devel
自动安装依赖包
如果没有官方注册,可以直接在安装盘中查找相关依赖包进行手动安装
cd /media/CDROW/Server
ls *openssl-devel*
rpm –ivp …
安装 keepalived
wget http://www.keepalived.org/software/keepalived-1.1.17.tar.gz
…
./configure
make
make install
cp /usr/local/etc/rc.d/init.d/keepalived /etc/rc.d/init.d/
cp /usr/local/etc/sysconfig/keepalived /etc/sysconfig/
cp /usr/local/sbin/keepalived /usr/sbin/
mkdir /etc/keepalived
touch /etc/keepalived/keepalived.conf
配置 keepalived+LVS
Keepalived 启动的时候默认会检查 /etc/keepalived/keepalived.conf 文件是否存在,如果存在则直接加载该配置文件作为 keepalived 的配置文件,一般的配置都采用在该目录下提供配置文件。注意: keepalived 不会对配置文件的正确性进行合法性检查,所以最好在 windows 中用专业的编辑器编辑并确认无误后在拷贝到该目录。
Keepalived 与 LVS 都安装在虚拟服务器上,并且与 LVS 紧密结合,安装 keepalived 后无需单独启动 LVS 服务, keepalived 会自动管理 LVS 服务进程, LVS 转发策略, LVS 负载算法和权重。
/etc/keepalived/keepalived.conf 配置文件如下:
global_defs {
router_idKEEPALIVED_LVS
}
vrrp_sync_group KEEPALIVED_LVS {
group {
KEEPALIVED_LVS_WEB
}
}
vrrp_instance KEEPALIVED_LVS_WEB {
state MASTER //注意:如果Keepalived的备机,这里是SLAVE
interface eth0
lvs_sync_daemon_interface eth0
garp_master_delay 5
virtual_router_id 100
priority 150 //注意:这里是主备的权重,备一般权重低于主
advert_int 1
authentication {
auth_type PASS
auth_pass 111111
}
virtual_ipaddress {
10.10.10.10
}
}
virtual_server 10.10.10.10 80 {
delay_loop 3
lb_algo wrr //定义负载均衡算法,这里是权重轮训
lb_kind DR //定义模式,这里是Direct route
persistence_timeout 0 //会话保存时长(秒),0表示不使用stickyness会话
protocol TCP
// 后端服务器定义
real_server 10.10.10.13 80 {
weight 1 //权重
//HttpGET 方式验证真实服务有效性
HTTP_GET {
url {
//验证后端服务是否正常的访问地址
path /checkRealServerHealth.28055dab3fc0a85271dddbeb0464bfdb
//访问地址内容的 MD5 摘,通过对比摘要验证后端服务器是否可用
digest 26f11e326fc7c597355f213e5677ae75
}
connect_timeout 3 //连接超时时间
nb_get_retry 3 //重试次数
delay_before_retry 3//每次重试前等待延迟时间
}
}
real_server 10.10.10.14 80 {
weight 1
HTTP_GET {
url {
path /checkRealServerHealth.28055dab3fc0a85271dddbeb0464bfdb
digest 26f11e326fc7c597355f213e5677ae75
}
connect_timeout 3
nb_get_retry 3
delay_before_retry 3
}
}
5. 验证 keepalived+LVS
启动所有真实服务器的 LVS 客户端 : 请参见:http://acooly.iteye.com/blog/1151921
分别启动主备的调度服务器的 keepalived ,不用独立启动 LVS 的虚拟服务器, Keepalived 会自动管理 LVS 的进程和服务。
# service keepalived start
检查 keepalived 进程
# ps aux|grep keepalived
root 6635 0.0 0.1 4352 596 ? Ss 20:30 0:00 keepalived -D
root 6636 0.0 0.2 4396 1332 ? S 20:30 0:00 keepalived -D
root 6638 0.0 0.1 4396 936 ? S 20:30 0:00 keepalived -D
应该有 3 个进程,其中一个是主服务进程,另外两个分别是 checker 子进程和 vrrp 子进程
# pstree |grep keepalived
|-keepalived---2*
查看 LVS 内存模块
# lsmod| grep ip_vs
ip_vs_wlc 6081 1
查看系统日志。
因为我在启动 keepalived是使用了选项 –D , 这将详细的打印日志消息
tail -f /var/log/messages
页:
[1]