
设计上,网站程序(应用服务器)应该是对外的。数据库仅内部使用。
如果只是两台机器这种模式的应用,应用服务器可以直连数据库服务器。
看您的描述,硬件网络方面应该没有什么问题。
在设计上软件方面可能存在问题。要进一步检查判断。
ASP通常的设计方式存在一种问题,与数据库之间是实时的连接,不直接支持本地数据缓存的应用。如果是这个原因,可以改成异步的方式传输数据(使用类似NET的工具或开发类似中间件的数据连接)
关于问题补充:
“数据库和WEB站放同一服务器上访问正常,也不会老是会卡”
应该重点检查两台服务器的通讯情况。
另一方面就像上面说的,设计方式的调整。因为放在同一台机器上,会有效的使用本地数据缓存,而两台服务器的方式,如果设计上没有提供缓存的方式,会导致数据访问量较大。如图中所示,R1和R2模拟成两台服务器并且提供相同的服务(地址分别为1721611 ,1721612),R3是交换机,R4是边界路由器也就是内部服务器的网关所在路由器(内网口地址为172161254 ),R5充当公网并且有环回口5555,在R4上的E0/0(地址为2222222221) 接口开启PAT,使得内网服务器可以访问外网R5的 5555
如图:
这时就进入关键性阶段了,1:写一条ACL来匹配公网路由,access-list 2 permit 2222222221
2:定义一个以内部服务器为地址的池:ip nat pool ccna 1721611 1721612 netmask 2552552550 type rotary (最后这两个一定要有意思就是让这些地址轮循)
3:将ACL跟地址池关连起来:ip nat inside destination (注意这个不是source) list 2 pool ccna
最后就是在R1,R2的line vty 0 4 下打no login 允许外网的登陆。
这时可以检验结果了,,在R5上telnet 2222222221 可以发现第一次时进入R1,第二次就进入R2了,
这 样就达到了两个服务器的负载均衡了。。当然这种情况是在多个服务器提供相同的服务的前提下才好用。
但是对于内部有多台服务器要同时开放一个相同的端口但是又只有一个公网IP时该怎么办呢?
图中标出了拓扑的详细结构,服务器地址分别为1721612 和1721613 ,网关为1721611 ,然后同样的跟上边一个实验一样,在边界路由器做基于接口的PAT转换,使得服务器可以访问公网,然后我们就开始在边界路由器上配置端口跟ip地址的映射,通常情况下我们都认为映射是这样写: ip nat inside source static tcp 1721612 80 2222222221 80 然后会发现下一台服务器没法再做相同端口的映射了,,因此我们就必需改变上面的命令来使得另一台服务器也可以基于80端口的映射:这进命令就可以改成:ip nat inside source static tcp 1721612 80 2222222221 100 与
ip nat inside source static tcp 1721613 80 2222222221 101 这样的两条映射。。那么这样写的映射是否真的可行呢?那就让我们一起来检验下成果,首先必需在两台服务器上面的>多用户同时调用静态函数,会产生多个进程,本身是不会冲突的。
但静态函数访问了同一静态变量时就要使用lock语句。
如果仅仅使用static方法而没有static变量的话是不会有问题的,一般线程安全的问题都是针对变量访问时发生冲突所造成的。
class abc{
static object lockTest=new Object();
static function void Test(){
lock(lockTest)
{
//你的代码。
}
}
}
这样,即使在Test()中被多个线程同时调用,但是扫行(你的代码)是,由于lock语句的存在,仍然会是单线程运行。后来的线程,会被lock(lockTest)这一句给阻赛到上一个线程把(你的代码)执行完。随便给你举个例子,你在你的出口路由器上做这个映射,表示如果你访问外网115001的8080端口的话,可以映射到你内网1921681100的80端口上。static表示这是静态映射,tcp表示连接是tcp连接。然后你还得在对应的内外网接口上分别加上命令ip nat inside(outside)
Router(config)#ip nat inside source static tcp 1921681100 80 115001 8080
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)