1. 简介
LVS( Linux Virtual Server ) 是 Linux 虚拟服务器,可以把多台服务器虚拟为一个虚拟 IP ,同时实现各种负载均衡算法
Keepalived 是基于 LVS ,并与 LVS 高度融合的,监控 LVS 下所有真实服务器健康状态,并通过健康健康状态动态调整 LVS 的复杂均衡转发权重和规则。同时 keepalived 具备热备功能。
Memcached Session manager 负载后端服务器Tomcat的Session共享和同步。
2. 环境准备
四台虚拟机 linux as 5, 小本太慢,每台分配512内存。
内核:
[root@hadoop00 ~]# 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_id KEEPALIVED_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 的进程和服务。
[root@hadoop00 keepalived]# service keepalived start
检查 keepalived 进程
[root@hadoop00 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 子进程
[root@hadoop00 keepalived]# pstree |grep keepalived
|-keepalived---2*[keepalived]
查看 LVS 内存模块
[root@hadoop00 keepalived]# lsmod| grep ip_vs
ip_vs_wlc 6081 1
查看系统日志。
因为我在启动 keepalived 是使用了选项 –D , 这将详细的打印日志消息
tail -f /var/log/messages