Chinaunix首页 | 论坛 | 博客
  • 博客访问: 293451
  • 博文数量: 110
  • 博客积分: 10
  • 博客等级: 民兵
  • 技术积分: 662
  • 用 户 组: 普通用户
  • 注册时间: 2011-02-20 07:22
个人简介

一步一个脚印

文章分类

全部博文(110)

文章存档

2017年(2)

2016年(2)

2015年(6)

2014年(35)

2013年(65)

分类: 系统运维

2013-07-05 17:24:14

原文地址:实现LVS简单配置 作者:水中游于

类: 集群技术

1、硬件:服务器、交换机。2个服务器用来做web,1个服务器做LVS-DR,2个mysql服务器,2个交换机
2、运行环境:linux as 4

服务器都使用2个网络地址,一个公网地址和一个私有网络地址。设置为公网ip的网络接口连接在一个交换机,设置为私有网络ip的网络接另外一个交换机,处于安全和网络带宽考虑,网络存储设备和数据库只使用私有网络地址。


用户----LVS-DR---->WEB1---- MYSQL
              ---->WEB2----

真实ip地址(RIP):LVS-DR 220.202.254.2
           WEB1   220.202.254.20   私网:192.168.88.1
           WEB2   220.202.254.21   私网:192.168.88.2
           MYSQL                   私网:192.168.88.3

虚拟ip地址(VIP) WEB虚拟地址(vip1) 220.202.254.1

一、配置LVS/DR

我的系统都是linux as4 u6  (2.6.9-5.EL)
   实现LVS/DR最重要的两个东西是ipvs内核模块和ipvsadm工具包,幸运的是,当前的发行版已经包含ipvs内核模块,不必再像旧的内核版本需要打这个补丁,ipvsadm需要从网上下载安装,下面总结一下这个过程:
1、    检查内核模块,看ipvs 模块是否被加载
[root@TestAs4 ~]# lsmod |grep ip_vs
ip_vs_wlc               1857  1
ip_vs                  86433  3 ip_vs_wlc
2、安装ipvsadm。Ipvsadm的官方下载地址为 http://www.linuxvirtualserver.org/software/kernel-2.6/ipvsadm-1.24.tar.gz ,解压后先做一个链接文件,把目录/usr/src/kernels/2.6.18-8.el5-i686/ 链接为/usr/src/linux,不这样做的话,运行命令 ln –s /usr/src/kernels/2.6.9-5.EL-i686 /usr/src/linux 做好链接,再运行不带参数的脚本 ./configure,然后执行”make;make install”完成安装
[root@TestAs4 ipvsadm-1.24]# modprobe ip_vs  #加载ip_vs

(二)       控制器配置:既可以使用脚本也可以更改系统的配置文件 /etc/sysconfig/ipvsadm。在实际应用中,我建议用脚本,这样的话,维护和移植lvs会很方便。下面给出本案使用的lvs/dr脚本:
[root@TestAs4 bin]# more lvsdr
#!/bin/bash
RIP1=220.202.254.20
RIP2=220.202.254.21
 
VIP1=220.202.254.1
 
/etc/rc.d/init.d/functions
 
case "$1" in
 
start)
echo " start LVS of DirectorServer"
 
# set the Virtual IP Address and sysctl parameter
/sbin/ifconfig eth0:0 $VIP1 broadcast $VIP1 netmask 255.255.255.255 up
#/sbin/ifconfig eth0:1 $VIP2 broadcast $VIP2 netmask 255.255.255.255 up
/sbin/route add -host $VIP1 dev eth0:0
#/sbin/route add -host $VIP2 dev eth0:1
echo "1" >/proc/sys/net/ipv4/ip_forward
 
#Clear IPVS table
/sbin/ipvsadm -C
 
#set LVS
#Web Apache
/sbin/ipvsadm -A -t $VIP1:80 -s wlc -p 120
/sbin/ipvsadm -a -t $VIP1:80 -r $RIP1:80 -g
/sbin/ipvsadm -a -t $VIP1:80 -r $RIP2:80 -g
 
 
#Run LVS
/sbin/ipvsadm
;;
stop)
echo "close LVS Directorserver"
echo "0" >/proc/sys/net/ipv4/ip_forward
/sbin/ipvsadm -C
/sbin/ifconfig eth0:0 down
;;
*)
echo "Usage: $0 {start|stop}"
exit 1
esac


ifconfig eth0:0 $VIP1 broadcast $VIP1 netmask 255.255.255.255 up把web服务所需的ip地址(虚拟地址)绑定在辅助接口eth0:0。在LVS方案中,虚拟ip地址与普通网络接口大大不同,这点需要特别注意。虚拟ip地址的广播地址是它本,子网掩码255.255.255.255
为什么要这样呢?因为有若干机器要使用同一个ip地址,用本身做广播地址和把子网掩码设成4个255就不会造成ip地址冲突了,否则lvs将不能正常转发访问请求。
route add -host $VIP1 dev eth0:0添加主机路由,这2条可有可无,较新的linux发行版能正确路由这个主机地址。
echo "1" >/proc/sys/net/ipv4/ip_forward启用ip转发功能。
ipvsadm –C清空ipvs转发表。
ipvsadm -A -t $VIP1:80 -s wlc -p 120 添加一个虚拟服务,服务协议是tcp(-t);服务类型是web($VIP1:80);-s 表示采用wlc这种调度算法转发数据包(调度算法包括:rr|wrr|lc|wlc|lblc|lblcr|dh|sh|sed|nq);-p表示连接的持续时间为120秒,这个会话时间是根据实际情况调整的,如果这个值设置得不合理,用户将得到非常糟糕的访问效果。

2个方法检验LVS/DR是否正常运行了:(1)查看内核是否列出ip_vs模块;(2)直接运行ipvsadm –l看输出是否有转发规则。

真实服务器配置虚拟
ip地址。LVS可以把服务请求转发到各种各样的操作系统.
(1) linux as4 u6服务器设置虚拟服务器:与LVS/DR控制类似,既可以修改配置文件也可以用脚本,相对来讲,还是脚本方便,下面是某个服务器设置虚拟ip地址的脚本:

[root@cwmtest1 bin]# more lvs
#!/bin/bash
#description:start realserver
#chkconfig
VIP1=220.202.254.1
/etc/rc.d/init.d/functions
case "$1" in
start)
echo " start LVS of REALServer"
/sbin/ifconfig lo:0 $VIP1 broadcast $VIP1 netmask 255.255.255.255 up
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
;;
stop)
/sbin/ifconfig lo:0 down
echo "close LVS Directorserver"
echo "0" >/proc/sys/net/ipv4/conf/lo/arp_ignore
echo "0" >/proc/sys/net/ipv4/conf/lo/arp_announce
echo "0" >/proc/sys/net/ipv4/conf/all/arp_ignore
echo "0" >/proc/sys/net/ipv4/conf/all/arp_announce
;;
*)
echo "Usage: $0 {start|stop}"
exit 1
esac

ifconfig lo:0 $VIP1 broadcast $VIP1 netmask 255.255.255.255 up LVS/DR控制器一样,广播地址设置为虚拟地址本身,子网掩码4255,不同的是,虚拟ip地址被绑定在环回(loopback)子接口,而不是物理接口的子接口。
echo "1" >/proc/sys/net/ipv4/conf/lo/arp_ignore  一共四行,其目的是关闭arp响应。

一、运行LVS/DR
LVS/DR运行lvs脚本,在真实服务器上启用虚拟地址,就可以把整个LVS/DR运行起来了。



 
几个需要关注的问题
 
一、控制器高可靠性。一个普遍的做法是使用HA,2个服务器做双机。在条件有限的情况下,又考虑不增加网络结构的复杂性,可以把LVS/DR控制器脚本放在不同的服务器上,一旦当前使用的LVS/DR控制器出故障,立即启用其它服务器的控制器脚本,可以把停机时间控制在可以接受的范围。



    
          





阅读(391) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~
评论热议
请登录后评论。

登录 注册