lvs+keepalive笔记nat模式 

  1.  
  2. 最近在整理用于测试的站点,最近在也仔细阅读秋香的书;受益良多。虽然nat模式在实际应用可能不多,
  3. 但是本着学习LVS的想法,开始了。以我的小站为例!具体记录下: 
  4.  
  5. 1、安装lvs+keepalve (略)安装方法见:http://myhat.blog.51cto.com/391263/616571 
  6. 2、nat模式下,ADSL动态IP侦测脚本(略)(仅针对测试环境,真实环境估计没人用ADSL。呵),具体脚本见:
  7. http://myhat.blog.51cto.com/391263/616468 
  8. 3、lvs_real脚本 
  9. 4、keepalived.conf配置文件 
  10.  
  11. 拓补: 
  12. [互联网]----[ADSL]----[Lvs_Keepalive_Nat]----[lvs1] [lvs2] 
  13.  
  14. lvs_keepalive_nat 角色:nat,lvs,keepalive,iptables 
  15.  
  16. 当时,在这里做了端口映射,lvs_keepalive_nat 死不成功!查看keepalive权威指南后,发现因为
  17. keepalive的构架里有关于iptables的内容,而如果我们再使用了iptables的话,会造成lvs_keepalive_nat不能用! 
  18.  
  19. # iptables -L -t nat                       #只有一条nat,没有端口映射相关。 
  20. Chain PREROUTING (policy ACCEPT) 
  21. target     prot opt source               destination          
  22.  
  23. Chain POSTROUTING (policy ACCEPT) 
  24. target     prot opt source               destination          
  25. MASQUERADE  all  --  192.168.10.0/24      anywhere             
  26.  
  27. Chain OUTPUT (policy ACCEPT) 
  28. target     prot opt source               destination  
  29.  
  30. ============================================================== 
  31. 3、lvs_real脚本  
  32. 因为是动态IP,客户端也必须要侦测VIP的地址,因为他们会随时变动!因为客户端方的VIP地址, 
  33. 使用的还是上次的VIP地址,为此,需要让客户不定期的去更新VIP的地址! 
  34. 操作方法:让客户端定期的去执行lvs_real check,以便更新VIP的地址。 
  35. # cat /sbin/lvs_real 
  36. #!/bin/bash 
  37. #description:start realserver 
  38. vip=`ping postfixlinux.3322.org -c 1 | grep from | cut -d ":" -f 1 | cut -d " " -f 4`  
  39. now_ip=`ifconfig lo:0 | grep addr | awk -F ":" '{print $2}' | cut -d " " -f 1` 
  40.  
  41. source /etc/rc.d/init.d/functions 
  42.  
  43. case $1 in  
  44.  
  45. start) 
  46.         echo "Start Realserver" 
  47.         /sbin/ifconfig lo:0 $vip broadcast $vip netmask 255.255.255.255 up 
  48.         echo "1" > /proc/sys/net/ipv4/conf/lo/arp_ignore 
  49.         echo "2" > /proc/sys/net/ipv4/conf/lo/arp_announce 
  50.         echo "1" > /proc/sys/net/ipv4/conf/all/arp_ignore 
  51.         echo "2" > /proc/sys/net/ipv4/conf/all/arp_announce  
  52. ;; 
  53.  
  54. stop) 
  55.         echo "Stop Realserver" 
  56.         /sbin/ifconfig lo:0 down 
  57.         echo "0" > /proc/sys/net/ipv4/conf/lo/arp_ignore 
  58.         echo "0" > /proc/sys/net/ipv4/conf/lo/arp_announce 
  59.         echo "0" > /proc/sys/net/ipv4/conf/all/arp_ignore 
  60.         echo "0" > /proc/sys/net/ipv4/conf/all/arp_announce  
  61. ;; 
  62.  
  63. check) 
  64.         echo "Check Vip address" 
  65.         if [ "$vip" != "$now_ip" ];then 
  66.          /sbin/ifconfig lo:0 $vip broadcast $vip netmask 255.255.255.255 up  
  67.          echo "Vip address is update!" 
  68.      else 
  69.         echo "You VIP address is OK!" 
  70.         fi 
  71.         
  72. ;; 
  73.  
  74. *) 
  75.         echo "Usage: $0 (start | stop | check)" 
  76. exit 1 
  77. esac 
  78.  
  79. 4、keepalived.conf配置文件 
  80. [root@fw01 ~]# cat /etc/keepalived/keepalived.conf  
  81. ! Configuration File for keepalived 
  82.  
  83. global_defs { 
  84.    notification_email { 
  85.      [email protected] 
  86.    } 
  87.    notification_email_from [email protected] 
  88. vrrp_instance VI_1 { 
  89.     state MASTER 
  90.     interface eth0 
  91.     virtual_router_id 51 
  92.     priority 100 
  93.     advert_int 1 
  94.     authentication { 
  95.         auth_type PASS 
  96.         auth_pass 1111 
  97.     } 
  98.     virtual_ipaddress { 
  99.         192.168.10.38 
  100.     } 
  101. #这个IP是经常性的变动的!因为是ADSL自动攻取的。 
  102. virtual_server 183.39.113.73 8080 { 
  103.     delay_loop 6 
  104.     lb_algo wlc 
  105.     lb_kind NAT 
  106.     nat_mask 255.255.255.0 
  107. virtual_server  8080 { 
  108.     protocol TCP      
  109.  
  110.     real_server 192.168.10.6 80 { 
  111.         weight 100 
  112.         TCP_CHECK { 
  113.                 connect_timeout 3 
  114.                 nb_get_retry 3 
  115.                 delay_before_retry 3 
  116.                 connect_port 80 
  117.                 } 
  118.     }     
  119.  
  120.     real_server 192.168.10.17 80 { 
  121.         weight 50 
  122.         TCP_CHECK { 
  123.                 connect_timeout 3 
  124.                 nb_get_retry 3 
  125.                 delay_before_retry 3 
  126.                 connect_port 80 
  127.                 } 
  128.  
  129.  
  130. 查看具体的分配情况! 
  131. # ipvsadm -lnc 
  132. IPVS connection entries 
  133. pro expire state source virtual destination 
  134. TCP 00:42 TIME_WAIT 1.202.220.2:30100 183.39.113.73:8080 192.168.10.17:80 
  135. TCP 14:57 ESTABLISHED 119.137.96.120:1952 183.39.113.73:8080 192.168.10.6:80 
  136. TCP 00:44 TIME_WAIT 1.202.220.2:30735 183.39.113.73:8080 192.168.10.6:80 
  137.  
  138. 因为是单个主机,所以VRRP的部分,基本没改!