LINUX服务器在双线机房实现方法

序言:

多线路接入技术就是在互联网数据中心(IDC)通过特殊的技术手段把不同的网络接入商(ISP)服务接入到一台服务器上或服务器集群,使服务器所提供的网络服务访问用户能尽可能以同一个ISP或互访速度较快的ISP连接来进行访问,从而解决或者减轻跨ISP用户访问网站的缓慢延迟(南北网络瓶颈)问题。

多线路接入是一个技术概念可以有多种具体实现方式,由于大多用户都是网通与电信,为了见简单起见,我们只讨论双线接入技术。目前国内的ISP提供商分别提出了“双IP双线路”、“单IP双线路”、“CDN多线路”和“BGP单IP双线路”等双线路实现方法。

1、单IP双线路

这种解决方案只能说是半双线的技术方案、是一种过渡形式的解决方案。此方案一般为单线ISP服务商往双线ISP服务商转型期所采用的折衷方案。一般的中、小网站可以采用该方案。

2、用BGP协议实现的单IP双线路

BGP(边界网关协议)协议主要用于互联网AS(自治系统)之间的互联,BGP的最主要功能在于控制路由的传播和选择最好的路由。中国网通与中国电信都具有AS号(自治系统号),全国各大网络运营商多数都是通过BGP协议与自身的AS号来互联的。使用此方案来实现双线路需要在CNNIC(中国互联网信息中心)申请IDC自己的IP地址段和AS号,然后通过BGP协议将此段IP地址广播到网通、电信等其它的网络运营商,使用BGP协议互联后网通与电信的所有骨干路由设备将会判断到IDC机房IP段的最佳路由,以保证网通、电信用户的高速访问。

3、双IP双线路实现方式

是指在一台服务器上安装两块网卡,分别接入电信网线与网通网线并设置一个网通IP与一个电信IP,这样一台服务器上就有了两个IP地址,需要在服务器上添加网通或电信的路由表来实现网通用户与电信用户分别从不同的线路访问。双IP双线路具有常用的两种使用方式:

ICP用户在网站设置两个IP地址不同的链接,网通用户点击网通IP访问服务器,电信用户点击电信IP访问;

使用BIND9(DNS服务器软件)对不同的IP地址请求返回不同的服务器IP的功能来实现网通用户请求域名时返回网通的IP,电信用户请求域名时返回电信的IP,这个方式就是一些IDC提出的智能DNS的方案。

双IP双线路在一定程度上提高了网通与电信用户访问网站的速度,但缺点是由于服务器接入的是双网卡必须在服务器上进行路由表设置,这给普通用户增加了维护难度,并且所有的数据包都需要在服务器上进行路由判断然后再发往不同的网卡,当访问量较大时服务器资源占用很大。此方案是最简单的双线解决方案,一般限于规模较小的IDC提供商使用。

4、CDN方式实现多线路

CDN(Content Delivery Network)互联网内容分发网络,就是多服务器分网托管加智能域名DNS,即服务器是CDN服务商提供,放在不同网络节点上,通过缓冲程序自动抓取用户源服务器的数据,然后缓存在不同网段节点的服务器上。再配合智能DNS服务器的分网解析功能,实现不同网络用户都能访问到离自己最近网段上的网站,从而避免因为网络问题而影响网站访问速度的目的。现绝大部份CDN技术在处理静态网站上比较成熟,但对交互性很强如全动态页面的网站还不是很成熟,实施成本也比较高,维护工作量增加。一般大、中型门户网站都采用该方案,目前有一些

CDN的工作原理是多个服务器放在不同网络节点上,通过缓冲程序自动抓取用户源服务器的数据,然后缓存在不同网段节点的服务器上,在此基础上配合智能DNS服务器的分网解析功能,实现不同网络用户都能访问到离自己最近网段上的网站,从而避免因为网络问题而影响网站访问速度的目的。

下面来对以上提出的双线路接入实现方式进行具体说明:结构图如下所示

双线管控组织架构图 双线流程是什么_IP

环境:

RedHat enterprise 5.3 服务器

方法:

对于双线双IP的服务器来说,要解决两个问题:

一、你的网站用户究竟走那个IP来访问你的服务器

也就是通常所说的DNS VIEW。自己如果有DNS服务器的,可以自己设置。也可以使用智能DNS解析来解决,即DNS服务器判断用户所在IP地址,如果用户是电信接入,就把服务器的电信IP解析给他;如果用户是网通接入,就把服务器的网通IP解析给他。智能DNS可以自己基于开源的DNS软件来定制,不过国内有一个很好的免费智能DNS服务器提供商:DNSPod,推荐使用DNSPod的服务。他就可以实现上述的智能DNS解析。我就是在用的DNSPod的智能DNS服务。

在DNSPod上,添加域名解析记录时,如下所示:

双线管控组织架构图 双线流程是什么_IP

这样,针对不同线路来访问的用户,DNS就会解析出域名aaa.fklsw.cn不同的IP地址。电信、网通、教育网来的用户,解析的IP为以上所示,铁通、移动、有线通的用户获得的是默认项所示的IP。

二、你的网站内容究竟走那个IP返回给用户

需要在服务器上面配置路由规则,来决定究竟如何处理数据的返回路径问题。在处理这个问题上面,存在2种情况:⑴、双网卡双IP,⑵、单网卡双IP。这2种实现起来是差不多的,都会做讲解。确定路由,也有静态路由和动态路由2种方法:

1、填写静态路由表

因为服务器有两个IP,分别在不同的网段,你使用电信IP的网关做路由,那么网通的IP地址用户压根就访问不到,反之亦然。目前流行的解决办法,就是使用电信网关做默认的路由,然后自己手工填写所有网通IP地址段的路由规则。这种办法的缺点是添加规则太多太麻烦,而且难免挂一漏万,如果你漏了一些网段,那这些网段的用户就访问不了你的网站了。况且网段地址的分布总是在不断变化的,你还必须定期更新路由表。

实现:

以上面的图示为例进行配置:

⑴、配置IP:(注意:以电信线路网关做为默认路由)

网站主机

①、IP(电信):192.168.15.236

IP(网通):192.168.16.236

②、单网卡双IP

vi
/etc/sysconfig/network-scripts/ifcfg-eth0
GATEWAY=192.168.15.1
TYPE=Ethernet
DEVICE=eth0
HWADDR=00: 0c:29:57:c8:89
BOOTPROTO=none
NETMASK=255.255.255.0
IPADDR=192.168.15.236
BROADCAST=192.168.15.255
ONBOOT=yes
USERCTL=no
IPV6INIT=no
PEERDNS=yes
vi
/etc/sysconfig/network-scripts/ifcfg-eth0:0
TYPE=Ethernet
DEVICE=eth0:0
HWADDR=00:0c:29:57:c8:90
BOOTPROTO=none
NETMASK=255.255.255.0
IPADDR=192.168.16.236
BROADCAST=192.168.16.255
ONBOOT=yes
USERCTL=no
IPV6INIT=no
PEERDNS=yes

注意:在ifcfg-eth0:0文件里面不写GATEWAY项,否则,在启动网络服务(service network

restart)后,默认路由会指向eth0:0所对应的网关。

③、双网卡双IP

vi
/etc/sysconfig/network-scripts/ifcfg-eth0

内容与上面的ifcfg-eth0相同

vi
/etc/sysconfig/network-scripts/ifcfg-eth1

内容与上面的ifcfg-eth0:0基本相同,

改:

DEVICE=eth1

另外:如果在/etc/sysconfig/network-scripts/ifcfg-eth1指定了GATEWAY项,由于网络服务启动后,系统会把ifcfg-eth1中对应的网关做默认路由,这就违背了前面所约定的以电信网关做默认路由的约定,会让你远程ssh不上。这时,需将ifcfg-eth1中的IP和ifcfg-eth0中的IP互换一下。

网关(电信、网通)

④、IP:192.168.15.1

(电信网关服务器)

192.168.16.1

(网通网关服务器)

⑤、电信网关服务器

vi
/etc/sysconfig/network-scripts/ifcfg-eth0
GATEWAY=192.168.15.1
TYPE=Ethernet
DEVICE=eth0
HWADDR=00:0c:29:57:c8:91
BOOTPROTO=none
NETMASK=255.255.255.0
IPADDR=192.168.15.1
BROADCAST=192.168.15.255
ONBOOT=yes
USERCTL=no
IPV6INIT=no
PEERDNS=yes

⑥、网通网关服务器

/etc/sysconfig/network-scripts/ifcfg-eth0内容与电信的一样,改
GATEWAY=192.168.16.1
IPADDR=192.168.16.1
BROADCAST=192.168.16.255

用户主机(电信、网通)

⑦、IP:192.168.13.5

(电信用户主机)

192.168.14.5

(网通用户主机)

⑵、重启网络服务

在网站主机、电信/网关服务器上service network restart

并用route命令查看默认路由情况,注意看网站主机的默认路由。结果应该如下:

⑶、配置各机器的路由

①、网站主机

Ip

route

add

192.168.14.0/24 via

192.168.16.1

②、电信网关服务器

Ip

route

del

default

Ip

route

add

192.168.13.0/24 dev eth0

③、网通网关服务器

Ip route del default

Ip

route

add

192.168.14.0/24 dev eth0

④、电信用户主机

Ip route del default

Ip

route

add

192.168.15.0/24 dev eth0

⑤、网通用户主机

Ip

route

del

default

Ip

route

add

192.168.16.0/24 dev eth0

⑷、测试:

①、电信用户主机

Ping

192.168.15.236

②、网通用户主机

Ping

192.168.16.236

2、设定动态路由

因为就是采取一个策略路由,根据用户访问进来的路径设定动态路由。就是说如果用户是通过电信IP地址访问过来的话,那么使用电信网关做路由,返回内容走电信网关;如果用户通过网通IP地址访问过来的话,那么使用网通网关做路由,返回内容走网通的网关,这样就不必那么麻烦的维护路由表了。以topcmm网站服务器为例,具体配置方法如下:

实现:

⑴、各机器的IP设置和前面所讲的一致

⑵、各机器的路由设置除了网站主机不设置以外,其余的机器与上面所列相同

⑶、网站主机策略路由的设置

①、vi /etc/iproute2/rt_tables

添加

252

tel

(电信线路路由表)

251

cnc

(网通线路路由表)

②、设置tel和cnc路由表的内容

ip route flush table tel

ip route add default via 192.168.15.1 dev eth0 src

192.168.15.236 table tel

ip rule add from 192.168.15.236 table

tel

ip route flush table cnc

ip route add default via 192.168.16.1 dev eth1 src

192.168.16.236 table cnc

ip rule add from 192.168.16.236 table

cnc

⑷、测试:

①、电信用户主机

Ping

192.168.15.236

②、网通用户主机

Ping

192.168.16.236

至此,实现了从电信IP过来的请求按照电信路由返回,从网通IP过来的请求从网通路由返回。

3、几个问题的说明:

⑴、当服务器重启或网络服务重启时,以上设置的各个机器的路由规则就失效了,需要将这些命令写到/etc/rc.local中。

⑵、RedHat,网络启动脚本是/etc/rc.d/init.d/network

⑶、RedHat下配置默认网关,应该是在/etc/sysconfig/network文件里面添加一行:GATEWAY=192.168.15.1

⑷、路由的显示命令

①、Route

②、Ip route show

③、Ip rule show