最近业余尝试着去配置了下keepalived+LVS,跟着网上的配置,发现最终能运行,但是访问不到后边的服务,查看了很多的资料,现在把具体的配置贴出来,供大家参考。
环境:
4台linux虚拟机(内核支持LVS)
VIP:192.168.1.100(主)对应机器ip为:192.168.1.16
VIP:192.168.1.100(从)对应机器ip为:192.168.1.11
RIP:192.168.1.8(tomcat服务)
RIP:192.168.1.9(tomcat服务)
安装相关的软件:
Ipvsadm(192.168.1.16、192.168.1.11)
Keepalived(192.168.1.16、192.168.1.11)
Tomcat(192.168.1.8)
Tomcat(192.168.1.9)
具体配置脚本:
主VIP配置:
! Configuration File for keepalived
global_defs { notification_email { mail@qq.com } notification_email_from wenbo.zhang@3g2win.com smtp_server smtp.exmail.qq.com smtp_connect_timeout 30 router_id LVS_DEVEL }
vrrp_instance VI_1 { state MASTER interface eth0 virtual_router_id 51 priority 100 advert_int 1 authentication { auth_type PASS auth_pass 123456 } virtual_ipaddress { 192.168.1.100 } }
virtual_server 192.168.1.100 8080 { delay_loop 6 lb_algo rr lb_kind DR nat_mask 255.255.255.255 persistence_timeout 1 protocol TCP
real_server 192.168.1.8 8080 { weight 1 HTTP_GET { url { path /test/jsp/2.jsp digest c2b63159e701960a9eef44a302b56074 } connect_timeout 3 nb_get_retry 3 delay_before_retry 3 } }
real_server 192.168.1.9 8080 { weight 1 HTTP_GET { url { path /test/jsp/2.jsp digest c2b63159e701960a9eef44a302b56074 } connect_timeout 3 nb_get_retry 3 delay_before_retry 3 } } } |
注意:此处的digest的算法,最好使用genhash工具去进行计算,具体用法可以去网上查。
从VIP配置
! Configuration File for keepalived
global_defs { notification_email { mail@qq.com } notification_email_from wenbo.zhang@3g2win.com smtp_server smtp.exmail.qq.com smtp_connect_timeout 30 router_id LVS_DEVEL }
vrrp_instance VI_1 { state BACKUP interface eth0 virtual_router_id 51 priority 40 advert_int 1 authentication { auth_type PASS auth_pass 123456 } virtual_ipaddress { 192.168.1.100 } }
virtual_server 192.168.1.100 8080 { delay_loop 6 lb_algo rr lb_kind DR nat_mask 255.255.255.255 persistence_timeout 1 protocol TCP
real_server 192.168.1.8 8080 { weight 1 HTTP_GET { url { path /test/jsp/2.jsp digest c2b63159e701960a9eef44a302b56074 } connect_timeout 3 nb_get_retry 3 delay_before_retry 3 } }
real_server 192.168.1.9 8080 { weight 1 HTTP_GET { url { path /test/jsp/2.jsp digest c2b63159e701960a9eef44a302b56074 } connect_timeout 3 nb_get_retry 3 delay_before_retry 3 } } } |
当配置好VIP以后,为了在真实的服务器上支持对应VIP的路由,需要在真实服务器(此处指192.168.1.8、192.168.1.9)上运行一些内容:
#!/bin/bash
VIP=192.168.1.100
ifconfig lo:0 $VIP broadcast $VIP netmask 255.255.255.255 up
route add –host $VIP dev lo:0
echo "1" >/proc/sys/net/ipv4/conf/lo/arp_ignore echo "2" >/proc/sys/net/ipv4/conf/lo/arp_announce echo "1" >/proc/sys/net/ipv4/conf/all/arp_ignore echo "2" >/proc/sys/net/ipv4/conf/all/arp_announce sysctl –p |
为了区别keepalived,所以最好简单的写个网页,放在tomcat下以供访问。
启动所有的服务。现在试一下是否可以访问^_^。
为了了解keepalived的功能,可以进行如下场景的测试:
停掉其中一台真实的服务,看看lvs能够正常工作
停掉主VIP,看看从VIP是否可以接管达到高可用
启动主VIP,看看主会不会跟从VIP进行抢占
运行结果:
本文出自 “java” 博客,请务必保留此出处http://zwbjava.blog.51cto.com/2789897/1683912
原文地址:http://zwbjava.blog.51cto.com/2789897/1683912