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内存。

内核:

[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 配置文件如下:

 

Python代码   收藏代码
  1. global_defs {  
  2.     router_id   KEEPALIVED_LVS  
  3. }  
  4.   
  5. vrrp_sync_group KEEPALIVED_LVS {  
  6.     group {  
  7.         KEEPALIVED_LVS_WEB  
  8.     }  
  9. }  
  10.    
  11. vrrp_instance KEEPALIVED_LVS_WEB {  
  12.         state MASTER              //注意:如果Keepalived的备机,这里是SLAVE  
  13.         interface eth0  
  14.         lvs_sync_daemon_interface eth0  
  15.         garp_master_delay 5  
  16.         virtual_router_id 100  
  17.         priority 150              //注意:这里是主备的权重,备一般权重低于主  
  18.         advert_int 1  
  19.         authentication {  
  20.                 auth_type PASS  
  21.                 auth_pass 111111  
  22.         }  
  23.         virtual_ipaddress {  
  24.                 10.10.10.10  
  25.         }  
  26. }  
  27.    
  28. virtual_server 10.10.10.10 80 {  
  29.         delay_loop 3  
  30.         lb_algo wrr                  //定义负载均衡算法,这里是权重轮训  
  31.         lb_kind DR                   //定义模式,这里是Direct route  
  32.         persistence_timeout 0        //会话保存时长(秒),0表示不使用stickyness会话    
  33.         protocol TCP  
  34.         // 后端服务器定义  
  35.         real_server 10.10.10.13 80 {  
  36.            weight 1                   //权重  
  37.            //HttpGET 方式验证真实服务有效性  
  38.            HTTP_GET {                   
  39.            url {  
  40.                      //验证后端服务是否正常的访问地址  
  41.                      path /checkRealServerHealth.28055dab3fc0a85271dddbeb0464bfdb  
  42.                      //访问地址内容的 MD5 摘,通过对比摘要验证后端服务器是否可用  
  43.                      digest 26f11e326fc7c597355f213e5677ae75  
  44.                }  
  45.                connect_timeout 3     //<span>连接超时时间</span>  
  46.                nb_get_retry 3        //<span>重试次数</span>  
  47.                delay_before_retry 3  //<span>每次重试前等待延迟时间</span>  
  48.            }  
  49.         }  
  50.       
  51.         real_server 10.10.10.14 80 {  
  52.            weight 1  
  53.            HTTP_GET {  
  54.            url {  
  55.                      path /checkRealServerHealth.28055dab3fc0a85271dddbeb0464bfdb  
  56.                      digest 26f11e326fc7c597355f213e5677ae75  
  57.                }  
  58.                connect_timeout 3  
  59.                nb_get_retry 3  
  60.                delay_before_retry 3  
  61.             
  62.         }  
  63. }  

 

 

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值