负载均衡session(负载均衡的作用)
负载均衡的时候回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实现负载均衡的加权轮询方法分析