LVS负载均衡群集

LVS负载均衡群集

 
大纲
          1 LVS群集应用基础
                 1.1 群集的类型
                 1.2 负戴均衡的分层结构
                 1.3 负载均衡的工作模式
                 1.4  LVS虚拟服务器
          2. 构建LVS负载均衡群集
                 2.1 案例一:地址转换模式(LVS-NAT)
                 2.2 案例二:地址转换模式(LVS-DR)
          3 NFS共享存储服务
                 3.1 使用NFS发布共享资源
                 3.2 在客户机中访问NFS共享资源
 
1 LVS群集应用基础
LVS (Linux Virtual Server)Linux虚拟服务器,这是企业中常用的一种群集技术
1.1 群集的类型
无论是哪种服务器,都至少包括两台节点服务器,而对外表现为一个整体,只提供一个访问入口(域名或IP地址),相当于一台大型计算机。根据群集所针对的目标差异,可以分为以下三个类型:
➣  负载均衡(Load Balancer)群集
以提高应用系统的响应能力.尽可能处理更多的访问请求.减少延迟为目标,获得高并发,高负载(LB)的整体性能,例如"DNS轮询"、"应用层交换","反向代理"等都可用作负载均衡群集。LB的负载分配依赖干主节点的分流算法将来自客户机的访问请求分担给多个服务器节点,从而缓解整个系统的负载压力。
➣  高可用(High Available)群集
以提高应用系统的可靠性,尽可能地减少中断时间为目标,确保服务的连续性,达到高可用(HA)的容错效果,例如"故障切换","双机热备","多机热备"等都属于高可用群集技术。HA的工作方式包括双工,主从两种模式——双工即所有节点同时在线,主从则只有主节点在线,但当出现故障时从节点能自动切换为主节点。
➣  高性能运算(High Performance Computer)群集
以提高应用系统的CP运算速度,扩展硬件资源和分析能力为目标获得相当于大型,超级计算机的高性能运算(HPC)能力,例如“云计算”,“网格计算”也可视为高性能运算的一种。HPC的高性能依赖于,分布式运算”并行计算“,通过专用硬件和软件将多个服务器的CPU,内存等资源整合在一起实现只有大型,超级计算机才具备的计算能力。
 
1.2 负戴均衡的分层结构
在典型的负载均衡群集中,包括三个层次的组件:
➣  第一层,负载调度器:这是访问整个群集系统的唯一入口,对外使用所有服务器共有的VIP(Virtual\p,虚拟IP)地址,也称为群集1P地址.通常会配置主,备两台调度器实现热备份,当主调度器失效以后平滑替换至备用调度器,确保高可用性。
➣  第二层,服务器池:群集所提供的应用服务(如HTTP、FTp)由服务器池承担,其中的每个节点具有独立的RIP(Real\P,真实\p)地址,只处理调度器分发过来的客户机请求。当某个节点暂时失效时,负载调度器的容错机制会将其隔离,等待错误排除以后再重新纳入服务器池。
➣  第三层,共享存储;为服务器池中的所有节点提供稳定,一致的文件存取服务,确保整个群集的统二性,在Linux/UNIX环境中,共享存储可以使用NAS设备,或者提供NFS(NetworkFileSystem,网络文件系统)共享服务的专用服务器。
 
1.3 负载均衡的工作模式
关于群集的负载调度技术,可以基于IP端口,内容等进行分发,其中基于IP的负载调度是效率最高的。基于IP的负载均衡模式中,常见的有地址转换,IP隧道、直接路由这三种工作模式:

➣  地址转换(Netwo出AddressTranslat旧n):简称NAT模式,类似于防火墙的私有网络结构,负载调度器作为所有服务器节点的网关,即作为客户机的访问入口,也是各节点回应客户机的访问出口。服务器节点使用私有IP地址,与负载调度器位于同一个物理网络,安全性要优于其他两种方式。
➣  IP隧道(IPTunnel):简称TUN模式,采用开放式的网络结构,负载调度器仅作为客户机的访问入口,各节点通过各自的Internet连接直接回应客户机,而不再经过负载调度器。服务器节点分散在互联网中的不同位置,具有独立的公网IP地址,通过专用IP隧道与负载调度器相互通信。
➣  直接路由(DirectRout旧g);简称DR模式,采用半开放式的网络结构,与TUN模式的结构类似,但各节点并不是分散在各地,而是与调度器位于同一个物理网络。负载调度器与各节点服务器通过本地网络连接,不需要建立专用的IP隧道。
 
以上三种工作模式中,NAT方式只需要一个公网IP地址,从而成为最易用的一种负载均衡模式,安全性也比较好,许多硬件负载均衡设备就是采用这种方式;相比较而言,DR模式和TN模式的负载能力更加强大、适用范围更广,但节点的安全性要稍差一些。
 
1.4 LVS虚拟服务器
LVS现在已成为Linux内核的一部分,默认编译为ip_vs模块,必要时能够自动调用
[root@LVS~]# modprobe ip_vs        <==加载ip_Vs模块
[root@LVS ~]# cat /proc/net/ip_vs    <==査看ip_vs版本信息
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
  -> RemoteAddress:Port Forward Weight ActiveConn InActConn
 
1.4.1 LVS的负戟调度算法
LVS调度器提供多种不同的负载调度算法其中最常用的四种算法包括:
➣  轮间(Round Robin):将收到的访问请求按照顺序轮流分配给群集中的各节点(真实服务器)均等地对待每一台服务器,而不管服务器实际的连接数和系统负载。
➣  加权轮询(Weghted Round Robin):根据真实服务器的处理能力轮流分配收到的访问请求,调度器可以自动査询各节点的负载情况,并动态调整其权重。这样可以保证处理能力强的服务器承担更多的访问流量。
➣  最少连接(Least Connections):根据真实服务器已建立的连接数进行分配,将收到的访问请求优先分配给连接数最少的节点。如果所有的服务器节点性能相近,采用这种方式可以更好地均衡负载。
➣  加权最少连接(Weighted Least Connections);在服务器节点的性能差异较大的情况下,可以为真实服务器自动调整权重,权重较高的节点将承担更大比例的活动连接负载。
LVS负载均衡的使用方式灵活多变,可以应用在Web,FTP,DHCP,DNS等各种服务器中。
 
1.4.2 使用ipvsadm管理工具
ipvsadm是在负载调度器上使用的LVS群集管理工具,通过调用ip_vs模块来添加,删除服务器节点,以及查看群集的运行状态。在RHEL6系统中,需要手动安装ipvsadm-1.25-9.el6.i686.rpm软件包。
[root@LVS ~]#  rpm -ivh /mnt/Packages/ipvsadm-1.25-9.el6.i686.rpm    <==rpm软件包安装方法
[root@LVS ~]# yum -y install ipvsadm    <==yum安装方法
[root@LVS ~]# ipvsadm -v    <==查看ipvsadm版本
ipvsadm v1.26 2008/5/15 (compiled with popt and IPVS v1.2.1)
1) 创建虚拟服务器
[root@LVS ~]# ipvsadm -A -t 172.16.1.128:80 -s rr
参数详解:
-A  表示添加虚拟服务器
-t   用来指定VIP地址及TCP端口
-s   用来指定负载调度算法——轮询(rr),加权轮询(wrr),最少连接(lc),加权最少连接(wlc)。
2)添加服务器节点
[root@LVS ~]# ipvsadm -a -t 172.16.1.128:80 -r 192.168.1.1:80 -m -w 1
[root@LVS ~]# ipvsadm -a -t 172.16.1.128:80 -r 192.168.1.2:80 -m -w 1
 参数详解:
-a   表示添加真实服务器
-t    用来指定VIP地址及TCP端口
-r    用来指定RIP地址及TCP端口
-m  表示使用NAT群集模式(-g DR模式,-i TUN模式)
-W  用来设置权重(权重为0表示暂停节点)
3)查看群集节点状态
[root@LVS ~]# ipvsadm -L -n    <==查看节点状态
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
  -> RemoteAddress:Port           Forward Weight ActiveConn InActConn
TCP  172.16.1.128:80 rr
  -> 192.168.1.1:80                     Masq       1              0               0        
  -> 192.168.1.2:80                     Masq       1              0               0 
#Forward 列下对应Masquerade(地址伪装),表示采用群集模式为NAT,如果是Route表示采用群集模式为DR。
[root@LVS ~]# ipvsadm -Lnc      <==查看负载连接情况
IPVS connection entries
pro expire   state             source                     virtual                   destination
TCP 01:58    FIN_WAIT    172.16.1.33:57121  172.16.1.128:80    192.168.1.1:80
TCP 00:51    FIN_WAIT    172.16.1.33:57119  172.16.1.128:80    192.168.1.2:80
4) 删除服务器节点
[root@LVS ~]# ipvsadm -d -r 192.168.1.2:80 -t 172.16.1.128:80
5)删除此虚拟服务器
[root@LVS ~]# ipvsadm -D -t 172.16.1.128:80
-A -t 172.16.1.128:80 -s rr
-a -t 172.16.1.128:80 -r 192.168.1.1:80 -m -w 1
-a -t 172.16.1.128:80 -r 192.168.1.2:80 -m -w 1
[root@LVS ~]# service ipvsadm stop    <==停止服务
[root@LVS ~]# service ipvsadm start    <==启动服务
[root@LVS ~]# chkconfig ipvsadm on   <==加入开机自启动 
 
 
2. 构建LVS负载均衡群集
2.1 案例一:地址转换模式(LVS-NAT)
1)准备案例环境
在NAT模式的集群中,LVS负载调度器是所有节点访问Internet的网关服务器,其外网地址172.16.16.172同时也作为整个集群的VIP地址。LVS调度器具有两块网卡,分别连接外网和内网:
网络拓扑:
2)配置负载调度器
[root@LVS ~]# vim /etc/sysctl.conf 
net.ipv4.ip_forward = 1     <==开启SNAT转发规则
[root@LVS ~]# sysctl -p
[root@LVS ~]# iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -o eth0 -j SNAT --to-source 172.16.1.128
[root@LVS ~]# iptables-save
# Generated by iptables-save v1.4.7 on Sat Apr 11 18:53:30 2015
*filter
:INPUT ACCEPT [10195:839417]
:FORWARD ACCEPT [314:25426]
:OUTPUT ACCEPT [2370:227473]
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
-A INPUT -p icmp -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 80 -j ACCEPT   <==开放80端口,但无需安装httpd服务
COMMIT
# Completed on Sat Apr 11 18:53:30 2015
# Generated by iptables-save v1.4.7 on Sat Apr 11 18:53:30 2015
*nat
:PREROUTING ACCEPT [587:83218]
:POSTROUTING ACCEPT [50:2896]
:OUTPUT ACCEPT [50:2896]
-A POSTROUTING -s 192.168.1.0/24 -o eth0 -j SNAT --to-source 172.16.1.128
COMMIT
# Completed on Sat Apr 11 18:53:30 2015
#在LVS调度服务器上开放80端口只是为了让客户机通过此端口访问到后端真正的Web服务器调取网页数据。
 
3)配置负载分配策略
[root@LVS ~]# service ipvsadm stop
[root@LVS ~]# ipvsadm -A -t 172.16.1.128:80 -s rr
[root@LVS ~]# ipvsadm -a -t 172.16.1.128:80 -r 192.168.1.1:80 -m -w 1
[root@LVS ~]# ipvsadm -a -t 172.16.1.128:80 -r 192.168.1.2:80 -m -w 1
[root@LVS ~]# service ipvsadm save
[root@LVS ~]# chkconfig ipvsadm on
4)配置节点服务器
安装httpd服务,创建测试网页
[root@www1 ~]# yum -y install httpd
[root@www1 ~]# mount 192.168.1.100:/opt/wwwroot /var/www/html
[root@www1 ~]# vi /var/www/html/index.html
<h1>LVS 负载均衡群集--测试网页1<h1>
[root@www1 ~]# service httpd start
[root@www1 ~]# chkconfig httpd on
配置节点服务器的防火墙
[root@www1 ~]# iptables-save
# Generated by iptables-save v1.4.21 on Sat Apr 11 18:55:51 2015
*filter
:INPUT ACCEPT [336:36682]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [352:30078]
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
-A INPUT -p icmp -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 80 -j ACCEPT
COMMIT
# Completed on Sat Apr 11 18:55:51 2015
节点服务器添加网关,网关指向LSV服务器的内网IP
[root@www1 ~]# cat /etc/sysconfig/network-scripts/ifcfg-eth0
NAME="eth0"
HWADDR="00:0C:29:9E:3F:62"
BOOTPROTO="static"
UUID="df39768a-1e11-4e0b-b6a4-4b00f99d3325"
ONBOOT="yes"
IPADDR=192.168.1.1
NETMASK=255.255.255.0
GATEWAY=192.168.1.10
[root@www1 ~]# route add default gw 192.168.1.10
 
测试:
在客户机上通过Internet访问http://172.16.1.128能够看到由真实服务器(节点)提供的网页内容,如果节点服务器的网页内容不同,则不同客户机看到的网页内容也可能不一样(多刷新几次)
查看各节点的负载情况
[root@LVS ~]# ipvsadm -Ln
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
  -> RemoteAddress:Port           Forward Weight ActiveConn InActConn
TCP  172.16.1.128:80 rr
  -> 192.168.1.1:80                    Masq        1           2                19       
  -> 192.168.1.2:80                    Masq        1           1                21 
 
 
 
2.2 案例二:地址转换模式(LVS-DR)
1.准备案例环境
在DR模式的群集中,LVS负载调度器作为群集的访问入口,但不作为网关使用;服务器池中的所有节点都各自接入Internet,发送给客户机的Web响应数据包不需要经过LVS负载调度器。
网络拓扑:
这种方式入站,出站访问数据被分别处理,因此LVS负载调度器和所有节点的服务器都需要配置有VIP地址,以便响应对整个群集的访问。考虑到数据存储的安全性,共享存储设备会放在内部的专用网络。
 
2.配置负载调度器
1)配置虚拟IP地址(VIP)
采用虚接口方式(eth0:0),为网卡eth0绑定VIP地址,以便响应群集访问。
[root@LVS ~]# cd /etc/sysconfig/network-scripts/
[root@LVS network-scripts]# cp ifcfg-eth0 ifcfg-eth0:0
[root@LVS network-scripts]# vim ifcfg-eth0:0
....../省略部分信息
DEVICE=eth0:0
ONBOOT=yes
IPADDR=172.16.1.130
NETMASK=255.255.255.0
[root@LVS network-scripts]# ifup eth0:0
[root@LVS network-scripts]# ifconfig eth0:0
eth0:0    Link encap:Ethernet  HWaddr 00:0C:29:88:9B:6A 
          inet addr:172.16.1.130  Bcast:172.16.1.255  Mask:255.255.255.0
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
2)调整/proc响应参数
对于LR集群模式来说,由于LVS负载均衡和各节点需要公用VIP地址,为了避免网络内的ARP解析出现异常,应该关闭Linux内核重定向参数响应。
[root@LVS ~]# vi /etc/sysctl.conf
…… /省略部分信息
net.ipv4.conf.all.send_redirects = 0
net.ipv4.conf.default.send_redirects = 0
net.ipv4.conf.eth0.send_redirects = 0
net.ipv4.conf.eth1.send_redirects = 0
[root@LVS ~]# sysctl -p
3)配置负载分配策略
[root@LVS ~]# service ipvsadm stop
[root@LVS ~]# ipvsadm -A -t 172.16.1.130:80 -s rr
[root@LVS ~]# ipvsadm -a -t 172.16.1.130:80 -r 172.16.1.131:80 -g -w 1
[root@LVS ~]# ipvsadm -a -t 172.16.1.130:80 -r 172.16.1.132:80 -g -w 1
[root@LVS ~]# service ipvsadm save
[root@LVS ~]# chkconfig ipvsadm on
 
3.配置节点服务器
使用DR模式时,节点服务器也需要配置VIP地址,并调整内核ARP响应参数以阻止更新VIP的MAC地址,避免发生冲突。
1)配置虚拟IP地址(VIP)
在每个节点服务器,同样需要具有VIP地址172.16.1.130,但此地址仅用于发送Web响应数据包的源地址,并不需要监听客户机的访问请求(改由调度器监听并分发)。因此使用虚接口lo:0来承载VIP地址,并为本机添加一条路由记录,将访问VIP的数据限制在本地避免通信混乱。
[root@www1 ~]# cd /etc/sysconfig/network-scripts/
[root@www1 network-scripts]# cp ifcfg-lo ifcfg-lo:0
[root@www1 network-scripts]# vim ifcfg-lo:0
DEVICE=lo:0
IPADDR=172.16.1.130
NETMASK=255.255.255.255     <==注意子网掩码必须全为1
ONBOOT=yes
[root@www2 network-scripts]# ifup lo:0
[root@www2 network-scripts]# ifconfig lo:0
lo:0      Link encap:Local Loopback 
          inet addr:172.16.1.130  Mask:255.255.255.255
          UP LOOPBACK RUNNING  MTU:16436  Metric:1
[root@www1 ~]# vi /etc/rc.local 
/sbin/route add -host 172.16.1.130 dev lo:0     <==添加VIP本地访问路由
[root@www1~]#route add -host 172.16.1.130 dev lo:0
2)调整/proc响应参数
[root@www1 ~]# vi /etc/sysctl.conf
…… /省略部分信息
net.ipv4.conf.all.arp_ignore = 1
net.ipv4.conf.all.arp_announce = 2
net.ipv4.conf.default.arp_ignore = 1
net.ipv4.conf.default.arp_announce = 2
net.ipv4.conf.lo.arp_ignore = 1
net.ipv4.conf.lo.arp_announce = 2
[root@www1 ~]# sysctl -p
3)安装httpd,创建测试网页
[root@www1 ~]# yum -y install httpd
[root@www1 ~]# mount 192.168.1.100:/opt/wwwroot /var/www/html
[root@www1 ~]# vi /var/www/html/index.html
<h1>LVS负载均衡群集——测试网页/<h1>
[root@www1 ~]# service httpd start
[root@www1 ~]# chkconfig httpd on
 
4.测试LVS群集
在客户机上通过Internet访问http://172.16.1.130能够看到由真实服务器(节点)提供的网页内容,如果节点服务器的网页内容不同,则不同客户机看到的网页内容也可能不一样(多刷新几次)

查看各节点的负载情况
[root@LVS ~]# ipvsadm -Ln
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
  -> RemoteAddress:Port           Forward Weight ActiveConn InActConn
TCP  172.16.1.130:80 rr
  -> 172.16.1.64:80               Route   1      1          12       
  -> 172.16.1.65:80               Route   1      1          11
 
 
 
3 NFS共享存储服务
NFS是一种基于TCP/IP传输的网络文件系统协议,客户机可以像访问本地目录一样访问远程服务器中的共享资源。对于大多数负载均衡群集来说,使用NFS协议来共享数据存储是比较常见的做法。
3.1 使用NFS发布共享资源
NFS服务的实现依赖于RPC(Remote Process Call远程调用机制)以完成远程到本地的映射过程。在RHEL6系统中,需要安装nsf-utils,rpcbind软件包来提供NFS共享服务,前者用于NFS共享资源的发布和访问,后者用于RPC支持。
1)安装nfs-utils,rpcbind软件包
[root@nfs ~]# yum -y install nfs-utils rpcbind
[root@nfs ~]# chkconfig nfs on
[root@nfs ~]# chkconfig rpcbind on
2)设置共享目录
NFS的配置文件为/etc/exports,文件内容默认为空(无任何共享),若要将/opt/wwwroot共享给172.16.1.0/24网段使用,操作如下:
[root@nfs ~]# mkdir -p /opt/wwwroot
[root@nfs ~]# vi /etc/exports
/opt/wwwroot   192.168.1.0/24(rw,sync,no_root_squash)
其中客户机地址可以是主机名,IP地址,网段地址,允许使用*,?通配符
权限选项中的rw表示允许读写(ro为只读)
no_root_squash表示当客户机以root身份访问时赋予本地root权限(默认是root_squash,将作为nfsnobody用户降权对待)
当需要将同一个目录共享给不同的客户机,且分配不同的权限时,操作如下:
[root@nfs ~]# vi /etc/exports
/opt/wwwroot   192.168.1.10(ro)   1192.168.1.20(rw)
3)启动NFS服务
[root@nfs ~]# service rpcbind start
[root@nfs ~]# service nfs start
[root@nfs ~]# netstat -anpt | grep rpcbind
tcp        0      0 0.0.0.0:111                 0.0.0.0:*                   LISTEN      1883/rpcbind
4)查看本机发布的NFS共享目录
[root@nfs ~]# showmount -e
Export list for sky:
/opt/wwwroot 172.16.1.0/24
5)防火墙设置
开启NFS服务需要使用的几个端口,详见NFS服务器搭建笔记
-A INPUT -p tcp -m state --state NEW -m tcp --dport 111 -j ACCEPT
-A INPUT -p udp -m state --state NEW -m udp --dport 111 -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 2049 -j ACCEPT
-A INPUT -p udp -m state --state NEW -m udp --dport 2049 -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 30001 -j ACCEPT
-A INPUT -p udp -m state --state NEW -m udp --dport 30001 -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 1001:1002 -j ACCEPT
-A INPUT -p udp -m state --state NEW -m udp --dport 1001:1002 -j ACCEPT
[root@nfs ~]# setenforce 0    <==关闭SELinux
 
 
3.2 在客户机中访问NFS共享资源
1)安装rpcbind软件包并启动服务
[root@www1 ~]# yum -y install rpcbind nfs-utils
[root@www1 ~]# service nfs restart
[root@www1 ~]# service rpcbind restart
[root@www1 ~]# chkconfig nfs on
[root@www1 ~]# chkconfig rpcbind on
#在客户机上可以使用showmount 命令查看服务器共享了哪些目录
[root@www1 ~]# showmount -e 192.168.1.100
Export list for 172.16.1.100:
/opt/wwwroot 172.16.1.0/24
2)手动挂载NFS共享目录
[root@www1 ~]# mount 192.168.1.100:/opt/wwwroot /var/www/html/
192.168.1.100:/opt/wwwroot /var/www/html nfs rw,vers=4,addr=192.168.1.100,clientaddr=192.168.1.1 0 0
[root@www1 ~]# df
Filesystem                 1K-blocks    Used Available Use% Mounted on
/dev/mapper/vg_www-lv_root  18134344 2229808  14983348  13% /
tmpfs                         502204       0    502204   0% /dev/shm
/dev/sda1                     495844   34527    435717   8% /boot
192.168.1.100:/opt/wwwroot   5109760 3348736   1761024  66% /var/www/html     <==查看是否成功挂载
#完成挂载后只要访问客户端的/var/www/html文件夹,实际上就相当于访问NFS服务器中的/opt/wwwroot文件夹,而且操作是同步的,如果创建index.html会立即同步到NFS服务器的/opt/wwwroot目录下。
如果客户机和NFS服务器不同步,记得先切换到根(/)目录,然后再进挂载目录刷新就能同步了,同步后只能看到NFS共享目录中的文件,原客户机预挂载目录中的文件会被隐藏哦!
这时公网客户机通过80端口访问进来会先到web服务器,然后由web服务器通过root身份去调取NFS服务器共享目录中的资源。将NFS服务器放在了内网中,提高数据安全性。
3)设置fstab自动挂载设置
[root@www1 ~]# vi /etc/fstab
192.168.1.100:/opt/wwwroot nfs /var/www/html defaults,_netdev 0 0
#添加上面的这条配置,这样客户机每次开机后就会自动挂载上去了。
 
 
 





posted @ 2015-04-23 15:12  Hello-Sky  阅读(1157)  评论(0编辑  收藏  举报