负载均衡session(负载均衡的作用)

http://www.itjxue.com  2023-02-11 16:46  来源:未知  点击次数: 

负载均衡的时候回session丢失?采用哈希如果ip改变就找不到session了

装一个双WAN口或者多WAN口路由器,就能实现双网同时使用。

1:把联通宽带的网线接入路由器的WAN1口或者2口。

2:把电信宽带的网线接路由器的另外一个WAN口。

3:再用一根网线连接电脑网口和路由器的LAN口123中的一个,输入路由器背面的IP地址帐号密码进入设置界面。

4:点击基本设置WAN口1设置,有帐号密码就选择PPPOE拨号,并输入帐号密码,如果是固定IP的就选择动态IP或静态IP。

如果成功在运行状态能看见获取到的IP

同理设置好WAN口2就可以了。

一、?什么是多WAN路由器

多WAN路由器具有物理上的多个WAN口作为外网接入,这样内网电脑就可以经过多WAN路由器的负载均衡功能同时使用多个外网接入线路,大幅提高了网络带宽。当前多WAN路由器主要有“带宽汇聚”和“一网多线”的应用优势,这是传统单WAN路由器做不到的。

2优点

二、?多WAN路由器有什么优势

路由器具有多个WAN口就可以接多条外部线路,合理使用多条宽带线路可以优化很多应用、解决很多问题,多WAN应用主要有以下优势:

1、?带宽汇聚:多个WAN口可以同时接入多条宽带,通过负载均衡策略可以同时使用接入线路带宽,起到带宽叠加的效果。比如WAN1、WAN2各接入1M的ADSL宽带,当内网PC使用迅雷?FlashGet、Bt等多线程下载工具下载文件时,一台PC可以同时使用2条线路,使得实际下载速度达到2M!

2、?一网多线:多个WAN口可以同时接入不同外网线路,比如WAN1接网通、WAN2接电信。这样通过路由器内置的智能策略库,使得内网访问网通的服务走网通线路,访问电信的服务走电信的线路,合理的解决了国内网通、电信等ISP存在互访瓶颈的问题,使您的网路畅通!

3、?智能备援:多个WAN口的存在使得其中某一个WAN口出现异常时,路由器能及时地把网络流量转移到其它正常的WAN口上,保证线路异常不影响网络使用,为网络稳定性提供强大保证!

欣向多WAN宽带路由器可以把多条宽带线路汇聚,通过动态的负载平衡平均分配流量,起到扩大线路带宽的效果,并且支持多种线路混用。能够智能实现以上应用!

3区分

三、?如何区分假多WAN路由器

假多WAN指的是路由器也有多个物理上的WAN接口,但是路由器处理上网数据时并不是以带宽汇聚为宗旨,而是采用一种被称为“IP均衡”的功能。虽然这也是一种多WAN方案,但实际应用根本没有用户所期望的效果。

“IP均衡”类似于简单的把两个单WAN口的路由器“组装起来”貌似多WAN,假多WAN主要是指路由器在多WAN处理策略上的欺骗性。“IP均衡”的假多WAN运行时,实质上是以内网PC的IP为单位分配线路的,而不是以SESSION上网请求。通俗地说,就是数数人头,1、3、5号PC走WAN1,2、4、6走WAN2。很明显,一台内网PC只能使用一个WAN口,并没有起到带宽叠加的效果,浪费了多条线路的带宽。严格来说,IP均衡相当于2个或多个单WAN产品的叠加。

真正的带宽汇聚效果是由路由器中的一个叫做SESSION负载均衡功能完成的。真正带宽汇聚路由器设计以SESSION为单位,把PC发出的上网请求按照忙闲程度分别发到不同的WAN口,上网数据回来时,也能通过不同的WAN口返回。而每一台PC上网,同时能够发出几十、几百个SESSION,这样在打开网页浏览、下载等操作时,由于这些SESSION能够被分配到不同的WAN口,所以PC不必在一条外线上一个一个地发SESSION,并等待返回,而是能够在几个WAN口同时发SESSION,几个WAN口分别返回数据,结果这台PC就达到了使用多条线上网的目的,达到了带宽加倍的效果。

有些“假多WAN”路由器还有一定的欺骗性,就是路由器会使用“IP均衡”的假多WAN处理方式,但也有Session均衡的真多WAN功能选项。由于使用不成熟的真多WAN的Session处理方式会有诸如QQ掉线、泡泡堂游戏不能玩等应用异常问题,最终这样的路由器还会建议您使用IP均衡来规避技术上的不足。使得Session模式形同虚设,不能正常使用!

iis 负载均衡 如何保存session状态

一、Inproc模式

Inproc是缺省的设置,这种模式和以前的ASP的会话状态的方法是类似的,会话的状态会被保存在ASP.NET进程中,它的优点是显而易见的:性能。进程内的数据访问自然会比夸进程的访问快。然而,这种方法Session的状态依赖于ASP.NET进程,当IIS进程崩溃或者正常重起启时,保存在进程中的状态将丢失。

二、StateServer模式

为了克服Inproc模式的缺点,ASP.NET提供了两种进程外保持会话状态的方法。

ASP.NET首先提供了提供了一个Windows服务:ASPState,这个服务启动后,ASP.NET应用程序可以将mode属性设置为 “SateServer”,来使用这个Windows服务提供的状态管理方法。

除了在web.config文件中设置mode属性为StateServer外,还必须设置运行StateServer服务器的IP地址和端口号,具体配置方法如下:

2.1 如果在IIS所在的机器运行StateServer则IP地址就是127.0.0.1,端口号通常是42424.配置如下:

mode=”StateServer”

stateConnectionString=”tcpip=127.0.0.1:42424″

2.2 找一台服务器作为Session服务器

如IP为:172.18.1.188,启动其Windows中的ASP.NET State Service(默认的端口号为42424),把启动类型改为自动;

2.3 修改Session服务器注册表中的项:

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services \aspnet_state\Parameters中的AllowRemoteConnection 键的值为1,其中的Port键控制ASP.NET State Service的监听端口;修改后需要重启ASP.NET State Service才生效;

2.4 每台服务器的web.config 的stateConnectionString都指向这台服务器

使用这种模式,会话状态的存储将不依赖IIS进程的失败或者重启,会话的状态将存储在StateServer进程的内存空间中。

三、SQlServer模式

另一种会话状态模式是SQLServer模式。这种模式是将会话的状态保存在SQL Server数据库中的。使用这种模式前,必须至少有一台SQL Server服务器,并在服务器中建立需要的表和存储过程。.NET SDK提供了两个脚本来简化这个工作:InstallSqlState.sql和UnInstallSqlState.sql。这两个文件存放在下面路径中:

c:\windows\Microsoft.NET\Framework

要配置SQL Server 服务器,可以在命令行中运行SQL Server提供的命令行工具osql.exe

osql -s [server name] -u [user] -p [password]

例如:

osql -s (local) -u as -p “”-i InstallSqlState.sql

做好必要的数据库准备工作后,将web.config文件中的sessionstate元素的mode属性改为”sqlserver”,并指定 SQL连接字符串。具体如下:

mode=”SQLServer”

sqlConnectionString=”data source=127.0.0.1;userid=sa;password=;Trusted_Connection=yes”

使用SQLServer模式处了可以使Session的状态不依赖于IIS服务器之外,还可以利用SQL Server的集群,使状态存储不依赖于单个的SQL Server,这样就可以为应用程序提供极大的可靠性。

使用了DNS的负载均衡后,session怎么解决?急用,谢谢各位大侠,不使用cookies

我们可以通过DNS来实现负载均衡的功能。

Enable round robin 启用循环

为了减轻某台服务器的负载,我们可以在网络中安装多台服务器。例如,原来网络中只有一台X235 的WEB服务器,其主机名为,IP地址为192.168.1.100。为了减轻这台WEB服务器的负载,我们可以在网络中安装多台X235来提供WEB服务,并保证每台WEB服务器的内容都是一致的。如果可以实现让客户端分别访问不同的WEB服务器,这样就达到了分担负载的目的。那么如何让客户端分别向不同的WEB服务器访问呢?这就要用到DNS服务所提供的round robin功能。

我们可以按如下步骤操作:

在Windows200中打开管理工具中的DNS管理器。

在DNS管理其中,用鼠标右键点击该DNS服务器图标,在弹出的菜单中选择Property属性菜单。

在弹出的窗口中,选择Advanced选项卡。确保Enable round robin选项是处于被选中的状态。

点击OK关闭该窗口。

当设定好Round roubin后,接下来需要在DNS的区域(Zone)中添加主机记录:

打开管理工具中的DNS管理器。

用鼠标右键点击将要创建记录的区域,在弹出的菜单中选择New host新建主机记录。然后依照向导提示输入必要的信息。

主机名 IP地址

www 192.168.1.200

www 192.168.1.201

www 192.168.1.202

当输入完所有主机的主机名与IP的对应关系后,你将看到类似于下图的窗口。

在这里我们注意到,添加的三条主机记录是同一个主机名对应着不同的IP。这些不同的IP即为网络中安装的多台WEB服务器的实际IP,他们对应着同一个主机名。

这样当客户端们在浏览器的地址栏中输入:去访问WEB服务器时,就会向DNS服务器发出名称解析请求。当DNS服务器收到第一个客户端的请求时,会把第一个IP 192.168.1.200响应给客户端,当第二个客户端要求解析时,服务器把第二个IP192.168.1.201响应给客户端,以此类推。通过这样的循环分配IP地址,就可以让不同的客户器访问不同的服务器,从而达到分担服务器的负载的功能。

Enable netmask ordering 启用子网优先

如果公司的网络是由多个子网构成的,为了使用户能够更有效地访问服务器中的资源,例如WEB服务器上的资源,我们可以在每个子网中都安装一台WEB服务器,这些WEB服务器保存的数据是完全一样的并且都使用同一个主机名,例如:。那么如何让用户在其浏览器的地址栏中输入主机名时,访问的是本子网的WEB服务器,而不是其他子网的web服务器呢?我们可以通过设置Enable netmask ordering 启用子网优先来实现这一功能。

想实现Enable netmask ordering 启用子网优先,我们可以按以下步骤操作:

打开管理工具中的DNS管理器。

在DNS管理其中,用鼠标右键点击该DNS服务器图标,在弹出的菜单中选择Properties属性菜单。

在弹出的窗口中,选择Advanced选项卡。确保Enable subnet ordering选项是处于被选中的状态。

点击OK关闭该窗口。

当设定好subnet ordering后,接下来需要在区域中添加主机记录:

打开管理工具中的DNS管理器。

用鼠标右键单击将要创建记录的区域,在弹出的菜单中选择New host新建主机记录。然后依照向导提示输入必要的信息。

例如:

主机名 IP地址

www 192.168.1.200

www 202.96.1.201

www 64.35.1.202

当输入完所有主机的主机名与IP的对应关系后,你将看到类似于下图的窗口。

这样我们在DNS服务器中添加了三条主机记录:同一个主机名对应着不同的IP。这些不同的IP即为不同子网中安装的WEB服务器的实际IP地址,他们对应着同一个主机名。

这样当用户在其浏览器的地址栏中输入:去访问该WEB服务器时,该客户端就会向DNS服务器发出名称解析请求。作为DNS服务器收到客户端的查询请求后,将比较客户端的IP地址,与它所请求的主机名所对应的IP地址中的哪一个在同一子网中,然后将这个IP (与客户端在同一子网中的IP地址) 响应给客户端。这样就可以实现客户端访问的总是本子网中的服务器, 把服务器的访问负载分摊到了各个子网的服务器中,并且减少了跨子网的网络流量。

负载均衡时session如何共享

创建一个session,重新cookie,并将其发送给浏览器持久保存,并把这个cookie放到ServletContext中

1234567// 把session的id取出来,自己生成一个持久cookie用来替换以前的会话cookieCookie cookie = new Cookie("JSESSIONID", session.getId());// 设置cookie存活周期cookie.setMaxAge(60 * 60);//把这个cookie放到ServletContext中,让其他会话也能获得这次会话的持久cookiesc.setAttribute("cookie", cookie);response.addCookie(cookie);

其他机器访问时,只要也获得了这个cookie,应该能实现session共享了

1234//其他session只需获得这个cookie就行了;Cookie cookie = (Cookie) sc.getAttribute("cookie"); response.addCookie(cookie);

PHP实现负载均衡session共享redis缓存操作示例

本文实例讲述了PHP实现负载均衡session共享redis缓存操作。分享给大家供大家参考,具体如下:

1、首先先创建html表单页面

meta

chatset='utf-8'

center

form

action="se.php"

method="post"

table

tr

td帐号:/td

tdinput

type="text"

name="username"/td

/tr

tr

td密码:/td

tdinput

type="password"

name="pwd"/td

/tr

tr

td/td

tdinput

type="submit"

value="登录"/td

/tr

/table

/form

/center

2、创建接受表单的文件

?php

header('content-type:text/html;charset=utf-8');

set_time_limit(10);

ini_set("session.save_handler",'redis');//开启php.ini中的redis配置

ini_set("session.save_path","tcp://192.168.1.70:6379");//第一台服务器的redis

session_start();//开启session

$username

=

$_POST['username'];

$_SESSION['username']

=

$username;

echo

"scriptalert('登录成功!');location.href='from.php'/script";//登录成功后跳转到欢迎登录页面

?

3、跳转到from.php去判断第一台服务器的redis中的session是否存到了本台服务器的session中

?php

header('content-type:text/html;charset=utf-8');

set_time_limit(10);

ini_set("session.save_handler",'redis');//开启php.ini中的redis配置

ini_set("session.save_path","tcp://192.168.1.70:6379");//第一台服务器的redis

session_start();//开启session

$username

=

isset($_SESSION['username'])

?

$_SESSION['username']

:

'';//判断当前是否存在session

//$id

=

$_SESSION['PHPSESSID'];

//echo

$id;

if(empty($username)){

echo

"scriptalert('请重新登录!');location.href='index.php'/script";

}else{

echo

"欢迎".$username."登录";

}

?

这样就简单了实现了redis

session共享的功能,要测试的话需要两台服务器,建议使用linux

比较好用

linux上安装redis可参考《Linux平台安装redis及redis扩展的方法》

更多关于PHP相关内容感兴趣的读者可查看本站专题:《php缓存技术总结》、《PHP数组(Array)操作技巧大全》、《php字符串(string)用法总结》、《PHP错误与异常处理方法总结》、《php面向对象程序设计入门教程》、《php+mysql数据库操作入门教程》及《php常见数据库操作技巧汇总》

希望本文所述对大家PHP程序设计有所帮助。

您可能感兴趣的文章:Nginx

安装笔记(含PHP支持、虚拟主机、反向代理负载均衡)PHP开发负载均衡指南PHP实现负载均衡下的session共用功能Thinkphp结合AJAX长轮询实现PC与APP推送详解PHP经典算法集锦【经典收藏】php

分库分表hash算法php的hash算法介绍PHP中对各种加密算法、Hash算法的速度测试对比代码PHP实现的一致性Hash算法详解【分布式算法】PHP实现负载均衡的加权轮询方法分析

(责任编辑:IT教学网)

更多

推荐PHP+MySQL视频文章