您的位置:首页 > 其它

lvs-dr直接路由 和防火墙标记的实现

2012-12-25 23:19 483 查看
Lvs-dr(直接路由)集群的实现和防火墙标记实现持久连接
一、集群实现的意义:
在各种网络服务普遍应用的今天,随网络速度的提高以及用户的增加,在一些繁忙的场合,单凭一台机器已经无法就能应付所有的网络请求了。为了解决这个问题,许多用户就采用一组cluster(集群)来代替单一的机器。cluster可以将多台计算机连接起来协同运作以对外提供各种服务,比如Apache、FTP、Mail等。
1. LVS的结构
  LVS方式的cluster从结构上可分为两部分:前端的负载均衡器(称之为director)和后端的真实服务器(称之为real server)。cluster前端的director将来自外界的请求调度到cluster后端不同的real server去执行。real server负责真正的提供各种应用服务,比如:Web、FTP、Mail等服务。real server的数量可以根据实际需求进行增加、减少。
  2. LVS的三种包转发方式
  LVS提供了三种包转发方式:NAT(网络地址映射)、IP Tunneling(IP隧道)、Direct Routing(直接路由)。不同的转发模式决定了不同的cluster的网络结构,下面对三种转发方式分别介始:
  NAT(网络地址映射)
  NAT方式可支持任何的操作系统,以及私有网络,并且只需一个Internet IP地址,但是整个系统的性能受到限制。因为执行NAT每次需要重写包,有一定的延迟;另外,大部分应用有80%的数据是从服务器流向客户机,也就是用户的请求非常短,而服务器的回应非常大,对负载均衡器形成很大压力,成为了新的瓶颈。
  IP Tunneling(IP隧道)
  director分配请求到不同的real server。real server处理请求后直接回应给用户,这样director负载均衡器仅处理客户机与服务器的一半连接。IP Tunneling技术极大地提高了director的调度处理能力,同时也极大地提高了系统能容纳的最大节点数,可以超过100个节点。real server可以在任何LAN或WAN上运行,这意味着允许地理上的分布,这在灾难恢复中有重要意义。服务器必须拥有正式的IP地址用于与客户机直接通信,并且所有服务器必须支持IP隧道协议。
  Direct Routing(直接路由)
  与IP Tunneling类似,负载均衡器仅处理一半的连接,避免了新的性能瓶颈,同样增加了系统的可伸缩性。Direct Routing与IP Tunneling相比,没有IP封装的开销,但由于采用物理层(修改MAC地址)技术,所有服务器都必须在一个物理网段。
3. LVS的八种调度算法
  LVS已实现了以下八种调度算法:
  1.轮叫调度(Round-Robin Scheduling)
  2.加权轮叫调度(Weighted Round-Robin Scheduling)
  3.最小连接调度(Least-Connection Scheduling)
  4.加权最小连接调度(Weighted Least-Connection Scheduling)
  5.基于局部性的最少链接(Locality-Based Least Connections Scheduling)
  6.带复制的基于局部性最少链接(Locality-Based Least Connections with Replication Scheduling)
  7.目标地址散列调度(Destination Hashing Scheduling)
  8.源地址散列调度(Source Hashing Scheduling)
二、一个案例实现dr和防火墙标记(https的实现)





1、Lvs-dr实现要注意的三个问题:
1)多个的虚拟vip地址
2)解决arp广播时real server 也做出回应
3)实现回应请求的路由源地址是vip地址
2.两台server的基本配置
[root@localhost ~]# sysctl -a |gerp arp (过滤与arp有关的)
[root@localhost ~]# echo "net.ipv4.conf.all.arp_ignore = 1" >>/etc/sysctl.conf
[root@localhost ~]# echo "net.ipv4.conf.all.arp_announce = 2" >>/etc/sysctl.conf
(追加给这个配置文件实现arp广播时不作出任何的回应,主要解决问题二)
[root@localhost ~]# sysctl -p (使配置立即生效)
[root@localhost ~]# route add -host 192.168.1.101 dev lo:0 (主要解决问题三)
两台server在setup下设置地址和添加一个lo:0,lookback接口,并配上1.101的vip虚拟地址,在diector 分发装置的ip地址添加一个eth0:0地址,配置虚拟地址。
3.安装apache实现web的发布,在两台server上
[root@localhost Server]# yum install httpd-2.2.3-22.el5.i386.rpm
[root@localhost Server]# cd /var/www/html/
[root@localhost html]# echo "hua1">index.html
[root@localhost html]# service httpd start
Starting httpd: [ OK ]
4.在director分发装置上安装ipvsadm的工具
[root@localhost ~]# yum list all |grep ipvs (列出yum库中全部与ipvs有关的)
[root@localhost Cluster]# yum install ipvsadm-1.24-8.1.i386.rpm
[root@localhost Cluster]# ipvsadm -A -t 192.168.1.101:80 -s rr (设置要访问的地址,-s调度为rr轮询)
[root@localhost Cluster]# ipvsadm -a -t 192.168.1.101:80 -r 192.168.1.200 -g (通过虚拟ip转给哪个server)
[root@localhost Cluster]# ipvsadm -a -t 192.168.1.101:80 -r 192.168.1.201 -g
[root@localhost Cluster]# ipvsadm -L
[root@localhost Cluster]# ipvsadm -ln (查看规则)
这样就可以测试成功了。

三、通过防火墙标记实现持久的连接(http和https在同一个server上)
配置认证功能,不在详解。
1、[root@localhost html]# cd /etc/pki/
[root@localhost pki]# vim tls/openssl.cnf (里面做简单的改变)
[root@localhost ~]# cd /etc/pki/CA/
[root@localhost CA]# mkdir crl certs newcerts (创建三个目录)
[root@localhost CA]# touch serial index.txt (创建两个文件)
[root@localhost CA]# echo "01" >serial (CA里面的)必须做不然会出错
[root@localhost CA]# openssl genrsa 1024 >private/cakey.pem(产生私钥的文件)
[root@localhost CA]# chomod 600 private/* (改变权限)
[root@localhost CA]# openssl req -new -key private/cakey.pem -x509 -out cacert.pem(产生证书文件)
[root@localhost CA]# mkdir -pv /etc/httpd/cert (创建一个目录放站点的证书)
mkdir: created directory `/etc/httpd/cert'
[root@localhost CA]# cd /etc/httpd/cert/
[root@localhost cert]# openssl genrsa 1024 >httpd.key
Generating RSA private key, 1024 bit long modulus
......................++++++
.......................++++++
e is 65537 (0x10001)
[root@localhost cert]# openssl req -new -key httpd.key -out httpd.csr
[root@localhost cert]# openssl ca -in httpd.csr -out httpd.cert
2、要实现https需要ssl的支持,还要安装ssl (两台server都要做这样的配置)
[root@localhost Server]# yum list all |grep ssl
[root@localhost Server]# yum install mod_ssl-2.2.3-22.el5.i386.rpm -y
[root@localhost Server]# vim /etc/httpd/conf.d/ssl.conf (编辑ssl的主配置文件)
112 行SSLCertificateFile /etc/httpd/cert/httpd.cert (证书文件的所在的路径)
119 行SSLCertificateKeyFile /etc/httpd/cert/httpd.key(私钥在的路径)
128 行SSLCertificateChainFile /etc/pki/CA/cacert.pem(证书链所在的路径)
[root@localhost Server]# service httpd restart (做完配置别忘了重启服务)

3、iptables规则中mangle表格的配置
[root@localhost Cluster]# iptables -t mangle -A PREROUTING -p tcp --dport 80 -d 192.168.1.101 -j MARK --set-mark 10
[root@localhost Cluster]# iptables -t mangle -A PREROUTING -p tcp --dport 443 -d 192.168.1.101 -j MARK --set-mark 10
[root@localhost Cluster]# iptables -t mangle -L -v -n
[root@localhost Cluster]# service iptables save(保存配置)
4、配置ipvsadm的规则
[root@localhost Cluster]# ipvsadm -A -f 10 -s rr -p 1800 (-f为防火墙打标记,-p为超时时间)
[root@localhost Cluster]# ipvsadm -a -f 10 -r 192.168.1.200 -g
[root@localhost Cluster]# ipvsadm -a -f 10 -r 192.168.1.201 -g









实现的效果是,在1800s的时间内,连接都是一台server,要是再有另一台ip主机连接就会到另一台服务器。

本文出自 “于东华的博客” 博客,请务必保留此出处http://yudonghua.blog.51cto.com/6111084/1100369
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: