Xenserver 虚拟机下配置LVS+keepalived

 

测试环境:

思杰xenserver 5.5

vmware 和真实机不一样需要安装kernel-xen并切换至Xen内核启动

 

之前是物理机配置。一路正常。今天却遇到了问题。所以做个记录。

 

测试机相关信息:

 LVS-DR-Master        192.1.1.36     

 LVS-DR-BACKUP       192.1.1.37         

 LVS-DR-VIP            192.1.1.38           

 WEB1-Realserver     192.1.1.31          

 WEB2-Realserver     192.1.1.32           

 GateWay                 192.1.1.1       

 

一、系统配置

安装相应的包:yum -y install kernel-xen kernel-devel openssl openssl-devel

 

修改menu.lst文件:

 

  1. # more /boot/grub/menu.lst 
  2. # grub.conf generated by anaconda 
  3. # Note that you do not have to rerun grub after making changes to this file 
  4. # NOTICE:  You have a /boot partition.  This means that 
  5. #          all kernel and initrd paths are relative to /boot/, eg. 
  6. #          root (hd0,0) 
  7. #          kernel /vmlinuz-version ro root=/dev/xvda2 
  8. #          initrd /initrd-version.img 
  9. #boot=/dev/xvda 
  10. default=0 
  11. timeout=5 
  12. splashp_w_picpath=(hd0,0)/grub/splash.xpm.gz 
  13. hiddenmenu 
  14. #title CentOS (2.6.18-128.1.10.el5.xs5.5.0.51xen) 
  15. #       root (hd0,0) 
  16. #       kernel /vmlinuz-2.6.18-128.1.10.el5.xs5.5.0.51xen ro root=LABEL=/ console=xvc0 rhgb quiet 
  17. #       initrd /initrd-2.6.18-128.1.10.el5.xs5.5.0.51xen.img 
  18. title CentOS (2.6.18-92.el5xen) 
  19.         root (hd0,0) 
  20.         kernel /vmlinuz-2.6.18-92.el5xen ro root=LABEL=/ console=xvc0 rhgb quiet 
  21.         initrd /initrd-2.6.18-92.el5xen.img 

 

#uname -r

2.6.18-128.el5xen

#ln -s /usr/src/kernels/2.6.18-128.el5xen-x86_64/ /usr/src/linux

 

二、安装相应的包

 #mkdir /usr/local/src/lvs

 #cd /usr/local/src/lvs

 #wget http://www.linuxvirtualserver.org/software/kernel-2.6/ipvsadm-1.24.tar.gz

 #wget http://www.keepalived.org/software/keepalived-1.1.15.tar.gz

 

 

  1. #lsmod |grep ip_vs 
  2.  #tar zxvf ipvsadm-1.24.tar.gz 
  3.  #cd ipvsadm-1.24 
  4. #make && make install 
  5.  #find / -name ipvsadm  # 查看ipvsadm的位置 
  6.  
  7.   #tar zxvf keepalived-1.1.15.tar.gz 
  8.  #cd keepalived-1.1.15 
  9.   #./configure  && make && make install 
  10.   #find / -name keepalived  # 查看keepalived位置                 
  11.  #cp /usr/local/etc/rc.d/init.d/keepalived /etc/rc.d/init.d/ 
  12.  #cp /usr/local/etc/sysconfig/keepalived /etc/sysconfig/ 
  13.  #mkdir /etc/keepalived 
  14.  #cp /usr/local/etc/keepalived/keepalived.conf /etc/keepalived/ 
  15.  #cp /usr/local/sbin/keepalived /usr/sbin/ 
  16.  #service keepalived start|stop     # 做成系统启动服务方便管理. 

 

三、配置keepalived

 

  1. ! Configuration File for keepalived 
  2.  
  3. global_defs { 
  4.    router_id LVS_DEVEL 
  5.  
  6. vrrp_sync_group VGM { 
  7.    group { 
  8.       VI_OUT1 
  9.    } 
  10.  
  11. #vip1 
  12. vrrp_instance VI_OUT1 { 
  13.     state MASTER 
  14.     interface eth0 
  15.     virtual_router_id 51 
  16.     priority 100 
  17.     advert_int 1 
  18.     authentication { 
  19.         auth_type PASS 
  20.         auth_pass 1111 
  21.     } 
  22.     virtual_ipaddress { 
  23.         192.1.1.38 
  24.     } 
  25.  
  26. virtual_server 192.1.1.38 80 { 
  27.     delay_loop 6 
  28.     lb_algo rr 
  29.     lb_kind DR 
  30.    persistence_timeout 50 
  31.     protocol TCP 
  32.  
  33.     real_server 192.1.1.31 80 { 
  34.         weight 100 
  35.         TCP_CHECK { 
  36.          connect_timeout 3 
  37.          nb_get_retry 3 
  38.          delay_before_retry 3 
  39.         connect_port 80 
  40.         } 
  41.         } 
  42.  
  43.     real_server 192.1.1.32 80 { 
  44.         weight 100 
  45.         TCP_CHECK { 
  46.          connect_timeout 3 
  47.          nb_get_retry 3 
  48.          delay_before_retry 3 
  49.         connect_port 80 
  50.         } 
  51.         } 

 

Backup 机器的keepalived需要修改:

State BACKUP

weight 10 数值比master小即可

 

四、客户端绑定VIP

脚本:

       

  1. #vi /usr/local/sbin/realserver.sh 
  2.         #!/bin/bash 
  3.         SNS_VIP=192.1.1.38  (只需要修改此处) 
  4.         . /etc/rc.d/init.d/functions 
  5.         
  6.         case "$1" in 
  7.         start) 
  8.                ifconfig lo:0 $SNS_VIP netmask 255.255.255.255 broadcast $SNS_VIP 
  9.                /sbin/route add -host $SNS_VIP dev lo:0 
  10.                echo "1" >/proc/sys/net/ipv4/conf/lo/arp_ignore 
  11.                echo "2" >/proc/sys/net/ipv4/conf/lo/arp_announce 
  12.                echo "1" >/proc/sys/net/ipv4/conf/all/arp_ignore 
  13.                echo "2" >/proc/sys/net/ipv4/conf/all/arp_announce 
  14.                sysctl -p >/dev/null 2>&1 
  15.                echo "RealServer Start OK" 
  16.                ;; 
  17.         stop) 
  18.                ifconfig lo:0 down 
  19.                route del $SNS_VIP >/dev/null 2>&1 
  20.                echo "0" >/proc/sys/net/ipv4/conf/lo/arp_ignore 
  21.                echo "0" >/proc/sys/net/ipv4/conf/lo/arp_announce 
  22.                echo "0" >/proc/sys/net/ipv4/conf/all/arp_ignore 
  23.                echo "0" >/proc/sys/net/ipv4/conf/all/arp_announce 
  24.                echo "RealServer Stoped" 
  25.                ;; 
  26.         *) 
  27.                echo "Usage: $0 {start|stop}" 
  28.                exit 1 
  29.         esac  
  30.         exit 0 

 

五、测试客户端绑定VIP

启动脚本。使用ip a 查看是否在lo绑定了VIP  停止后消失。

 

六、启动master backup keepalived查看日志。是否正常。

启动客户端apache 定义一个index.html 即可测试

本文不写测试过程。

就是停WEB1 再停WEB2 再停masterbackup是否接管

 

七、错误

之前是在真实机上搞、一步没有出错。今天在Xenserver上需要注意一定要切到Xen内核启动。

 

由于配置客户端apache时。习惯性指定了listen IP80 这是个错误。

原因:客户端绑定VIP后。监听127.0.0.1 80 用这个与LVS端进行通讯。

如果指定IP需要加上127 要不然就会出现拒绝请求的错误。

 

这个问题折腾了我一下午。在秋香的帮助下得到解决。低级错误了。长记性了。

 

参考:linuxtone sery.blog.51cto.com