利用keepalived 实现HA&LB

   

利用keepalived 实现HA&LB
实验环境RHEL5U3

需要软件包 keepalived ipvsadm

VIP :192.168.0.16

realserver 1 :192.168.0.3

realserver 2 :192.168.0.4

装包
下载地址 wget http://www.keepalived.org/software/keepalived-1.1.17.tar.gz
./configure --prefix=/ --mandir=/usr/local/share/man
--with-kernel-dir=/usr/src/kernels/2.6.18-128.el5-i686/
以上这步是 设定安装路径以及帮助文件的路径 可以自行定义 后面那段with-kernel-dir 这个参数很重要,这个参数并不表示我们要把keepalived编进内核,
而是指使用内核源码里面的头文件,也就是include目录 (如果需要用到LVS才需要这么做,
否则是不需要的,而且如果要使用netlink,还需要link_watch.cz这个文件)

上面这段我一直没弄清楚,希望高人指点下,因为我没有选这项的时候依然可以使用LVS
make
make install

然后修改 keepalived 的配置文件vim /etc/keepalived/keepalived.conf
 
global_defs { 
 notification_email {
 [email protected]
                     }
 notification_email_from [email protected]

#指定 keepalived 在发生事件(如切换)时,需要发送email到你定义的邮箱,可以填多个,每行一个

   smtp_server 192.168.10.1    #这两项是邮件服务器的配置
   smtp_connect_timeout 30
   router_id LVS_DEVEL        # 运行keepalived的机器的一个标识
}
#下面是VRRPD 配置
vrrp_sync_group VG1 {
 group {
  VI_1                                         #VRRP实例名
             }
                                         }

#VRRP 实例配置
vrrp_instance VI_1 { 
    state BACKUP        # 无论主与备都设置为BACKUP是为了不抢占director, #通过priority来确认谁先起作用,主的优先级至少高于从50
    interface eth0      # (inside_network)实例绑定的网卡
    macast_src_ip       #发送多播包的地址,如果不设置,默认使用绑定网 卡的#primary IP
#建议使用专门网卡并使用这项,问题:如果这块儿网卡出了问题如何处理?
 
    virtual_router_id 51       #VRID 标记 (0-255)主备服务器必须一致
    priority 101               #优先级
    advert_int 1               #检查间隔,默认为1秒
    nopreempt                  # 不抢占 这个配置只能设置在 state为 BACKUP的主机 上,而且这台主机的priority必须比另一台要高
    authentication {                  #这是认证的相关设置
        auth_type PASS             #认证方式 PASS | AH
        auth_pass 33210             #认证密码
    }
    virtual_ipaddress {
        192.168.0.16                      # VIP 地址
    }
}

virtual_server 192.168.0.16 80 {
    delay_loop 6                        # 每六秒查询realserver状态
    lb_algo rr                              #lvs采用轮询算法 rr|wrr|lc|wlc|lblc|sh|dh
    lb_kind DR                           #lvs使用Direct Route NAT|DR|TUN
    protocol TCP                        #使用TCP 协议来检查
    persistence_timeout 600     # 会话保持时间,就是同一个ip在600秒内会被分到同一个realserver上
 
    real_server 192.168.0.3 80 {
        weight 1                            #权重
 inhibit_on_failure # 在检查失败的时候 将权重设为0 并继续监控 而不是直接把他踢掉,注意这个别加在TCP_CHECK下面
        TCP_CHECK {                #以什么方式来检查 健康状况 HTTP_GET|SSL_GET|TCP_CHECK|SMTP_CHECK|MISC_CHECK
           
            connect_timeout 3      #连接超时时间
            nb_get_retry 3             #重试连接次数
            delay_before_retry 3  #每次重试连接间隔 (单位秒)
       #    bindto 192.168.0.16   #以此地址来 向服务器发送请求来检查其健康状态
            connect_port 80   #tcp去检查80端口状态来判断realserver是否健康, 这个和上面那个bindto 不要一起用
            #注意:HTTP_GET|SSL_GET|SMTP_CHECK|MISC_CHECK 这几种检查方式请参考 《keepalived权威指南》第十四页   
                                 }
                                                    }
    real_server 192.168.0.4 80 {
        weight 1
        inhibit_on_failure
        TCP_CHECK {
            connect_timeout 3
            nb_get_retry 3
            delay_before_retry 3
            connect_port 80
                                 }
                                                   }

    # 如果有更多的realserver 请按照需要自行添加
}


realservice 配置脚本
ifconfig lo:1 192.168.0.16 netmask 255.255.255.255
echo 2 > /proc/sys/net/ipv4/conf/eth1/arp_announce
echo 2 > /proc/sys/net/ipv4/conf/eth0/arp_announce
echo 1 > /proc/sys/net/ipv4/conf/eth0/arp_ignore
echo 1 > /proc/sys/net/ipv4/conf/eth1/arp_ignore

安装Apache 服务并检查其是否可以正常工作

这个是我自己机器上的网卡,根据自己实际情况而定

启动 /etc/init.d/keepalived start
测试:

通过停止 服务 和拔网线 测试 ipvsadm都成功的切换到了备服务器

实验结果 成功

 

参考文档 《keepalived权威指南》

   


你可能感兴趣的:(keepalived,实现HA&LB)