一个简单的双击热备、vpn方案

gre vpn

这个是前段时间在IDC公司上班的一个案例

案例要求:

1、客户要求两个内网之间能互相访问,只租用机房的地址。

2、在两个不同的地方,网段不一样内网不一样。

3、要求是在大并发情况下能使用(所以我放弃原本的open vpn方案,改用系统模块的gre。因为说对数据的全要求性也没那、在两个不同的地方,网段不一样内网不一样。

3、要求是在大并发情况下能使用(所以我放弃原本的open vpn方案,改用系统模块的gre。因为说对数据的全要求性也没那么高)。

4、尽量要求不断网。

需求分析:么高)。

4、尽量要求不断网。

需求分析:

一、由于NAT服务是有非常大的流量通过的,我们必须压确保我的路由设备在出现故障的时候,能够智能的切换到另一台备用机。以保证网络的正常运行,下面实验中使用keepalive软件时间NAT服务器的双击热备。漂移地址为20.0.1.254.

二、搭建gre VPn ,为了实现不同的网段之间互相通信的。

三、主要实施条件是在C1主机和C2主机上配置Keepalive(C1C2NAT服务器。C1设置每MASTER) C1C3之间建立tunnel2

C2C3之间建立tunnel3.

:C4的网关指向的是漂移地址:20.0.1.254

如图所示:

 

步骤1

配置NAT

  • C1C2上面开启路由转发功能。

Vi /etc/sysctl   

net.ipv4.ip_forward = 1

  • 分别情况两天服务器的防火墙策略:

Iptables –F

Iptables –F –t nat

然后iptabls –L查看是否清空防火墙策略

三、在192.168.77.137192.168.77.35端口上面做NAT(下面以192.168.77.137为例)

iptables -t nat -A POSTROUTING -s 20.0.1.0/24 -o eth0 -jSNAT --to 192.168.77.137

  • 验证:在c4ping192.168.77.9通了的话说明SNAT已经配置成功了。

步骤2:安装配置:keepalived(分别在C1C2上面配置)下面以C1为例:

(1)    安装支持的库文件和软件:

[root@localhost ~]#yum -y install kernel-devel openssl-devel popt-devel

[root@localhost~]# rpm -ivh /mnt/Server/Packet/ipvsadm-1.25-9.el6.i686.rpm

(当然要是源码安装的话注意要安装一个lvs支持包:popt-static-1.13-7.el6.x86_64.rpm这个包貌似只有64位的,安装的时候注意,还有指定内核头文件。这里不解释)

(2)    编译安装keepalived

[root@localhost keepalived-1.2.2]# ./configure --prefix=/ -- --with-kernel-dir=/usr/src/kernels/2.6.32-131.0.15.el6.i686

[[email protected]]# make && make install

(3)    启动keepalived 并且设置成开机启动

[root@localhost ~]# ls -l /etc/init.d/keepalived

-rwxr-xr-x 1 root root 1288 11月 8 16:23 /etc/init.d/keepalived

[root@localhost ~]# chkconfig --add keepalived

[root@localhost ~]#chkconfig keepalived on

(4编辑配置文件使之实现双机热备:注意指定漂移地址:这里使用C1做主服务。C2做从服务器)

[root@localhost Desktop]# vim/etc/keepalived/keepalived.conf

global_defs {

router_id HA_TEST_R1      //服务器名称

}

vrrp_instance VI_1 {                    //定义VRRP实例

state MASTER                         //定义为主服务器

interface eth1                        //承载vip地址的物理接口(示个人情况而定)

virtual_router_id 1                    //虚拟路由器的ID

priority 100                         //数值越大优先级越高

advert_int 1                         // 通过间隔秒数(心跳频率)

authentication {

auth_type PASS                      //认证类型

auth_pass 123456                    //认证字串

}

virtual_ipaddress {

  1. 0.1.254                        //指定漂移地址

}

}

5)要是上面配置无误就可以启动keepalived服务,MASTER的主服务器讲为eth1接口自动添加VIP地址。Ip addr可以查看:

[root@localhost Desktop]# /etc/init.d/keepalived start

6)从服务器配置:

[root@localhost Desktop]# vim/etc/keepalived/keepalived.conf

global_defs {

router_id HA_TEST_R2      //服务器名称

}

vrrp_instance VI_1 {                    //定义VRRP实例

state SLAVE                         //定义为主服务器

interface eth1                        //承载vip地址的物理接口(示个人情况而定)

virtual_router_id 1                    //虚拟路由器的ID

priority 99                        //数值越大优先级越高

advert_int 1                         // 通过间隔秒数(心跳频率)

authentication {

auth_type PASS                      //认证类型

auth_pass 123456                    //认证字串

}

virtual_ipaddress {

  1. 0.1.254                        //指定漂移地址

}

}

(7)查看日志:

看见BACKUP就可以了,当我们主服务器停止服务后,应该不难发现BACKUP就自动跳转成

MASTER了。说明这个双击热备就已经成功部署。

 

 

步骤3:最后一步就是建立gre通道。按照上图所属建立:

192.168.77.137——192.168.77.9建立的通道名称为tunnel2

192.168.77.35——192.168.77.9建立的通道名称为tunnel3

一、检查看是否已经加载了内核模块:

二、加载模块,建立路由,这一步写出脚本就可以了

首先:C1

注释:172.16.4.1172.16.4.2tunnel2建立时生成的地址

c2:

C3:

tunnel2

Tunnel3:

这样两个通道就建立起来了。

验证一下:C3ifconfig

经过实验;当主机master存在的时候,客户机C4是可以ping20.0.2.1的。这样就说明我们这个通道是完全建立起来了的。

注:当我们把主服务器关闭之后会发现虽然漂移地址已经飘到了C2上。就是20.0.1.254已经在C2eht1上了。是能够ping192.168.77.9的地址,说明NAT已经起作用了。但是不能够访问20.0.2.1。经过多次试验终于发现是路由出问题了:(排错)

Route –n 查看C3的路由表:不难发现原来我们写的脚本里面同时加入20.0.1.0/24这条路由。是先执行的生效。后执行的是没有结果的,所以看到只有tunnel220.0.1.0/24的。所以必须想办法,在MASTER主机down机之后能够及时的删除掉这条路由然后在加上:

Ip route add 20.0.1.0/24dev tunnel3

这里暂时想到一个办法:就是在C3上面编写一条脚本xiaoluo.sh,时刻监控192.168.77.137(MASTER)这台机器。判断192.168.77.137断开之后就执行下面这个脚本:(脚本内容)

注:在学习了keepalive原理之后可以使用通知机制应该可以实现。

crontel进程里面调用,没两分钟检测一次。这样就能保证在MASTER主机关机或者异常的时候自动调到BACKUP主机。


本文出自 “小罗” 博客,请务必保留此出处http://xiaoluoge.blog.51cto.com/9141967/1565665

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。