zoukankan      html  css  js  c++  java
  • ASP.NET应用程序服务器集群方案

      本文采用Nginx来实现ASP.NET程序集群化。

      准备环境

      首先准备Nginx环境,Windows版本下载链接:http://nginx.org/en/download.html

      解压后文件格式如下:

      

      修改配置文件

      打开 conf 文件夹中的 nginx.conf 配置文件

      

      配置说明:

      1.listen #表示需要监听的端口(默认为80)

      2.server_name #服务器地址

      3.location #代理配置

      4.upstream #配置负载均衡服务器列表(处理监听到请求的服务器)

      需要注意的是 upstream 中的 ip_hash; 节点,该节点表示启用Nginx的ip哈希分配算法,意味着同一ip地址的不同请求将会被分配至同一服务器。好处就是不用借助第三方工具管理Session,坏处就是并非正真的负载均衡(会出现有的服务器请求处理不过来,有的服务器只接收到少量的请求)。若使用第三方Session管理工具请删除此配置节点。

      测试

      启动nginx.exe程序

      浏览器访问我们配置的负载均衡服务器节点,即 127.0.0.1:2018 (端口根据自己部署的程序配置)。

      提示

      在整个配置中需要注意的是80端口被占用的问题。或者像我一样改Nginx的监听端口(如果更改监听端口则可以忽略下面的问题)

      1.将IIS中默认的Default Web Site端口改掉

      2.如果电脑装有Sql server 则还需关闭SQL Server Reporting Services服务(此服务会占用80端口)

      3.其它问题敬请百度...

      不同服务器同步Session

      如果启用Nginx的ip_hash配置请忽略本条,此项针对不同服务器之间Session共享提供建议方案。  

      一、状态服务器Session(启动独立的进程保存Session)    

      首先开启一个ASP.NET 状态设置的服务

    即:在 “我的电脑” 鼠标右键--->管理--->服务和应用程序----> 服务--->ASP.NET状态服务(或者ASP.NET State Service)--->点击右键选择“启动”

    启动ASP.NET状态服务后,然后再Web.config配置文件中添加<sessionState>这个节点内容

    <?xml version="1.0" encoding="utf-8"?>
     
    <!--
      有关如何配置 ASP.NET 应用程序的详细信息,请访问
      http://go.microsoft.com/fwlink/?LinkId=169433
      -->
     
    <configuration>
        <system.web>
          <compilation debug="true" targetFramework="4.5" />
          <httpRuntime targetFramework="4.5" />
          <!--状态服务器Session的配置    :添加这一段代码-->
          <sessionState stateConnectionString="tcpip=127.0.0.1:2018" mode="StateServer"></sessionState>       
        </system.web>
          
    </configuration>
    Config

      二、数据库Session

      怎么将Session记录到数据库中呢? 其实微软已经为我们设置好了。只要我们简单的配置一下就行了。

    首先。我们进入C盘下的 Windows文件夹 下的Microsoft.Net文件夹下的Framework/Framework64文件夹下的v4.0.30319文件夹下:找到aspnet_regsql 文件。

    具体的路径是: C:WindowsMicrosoft.NETFramework64v4.0.30319

    然后:快捷键win+R调出cmd 命令窗口

    在cmd中进入C:WindowsMicrosoft.NETFramework64v4.0.30319文件夹下

    即:在cmd 命令中输入:cd C:WindowsMicrosoft.NETFramework64v4.0.30319

    然后执行 aspnet_regsql.exe -S . -U sa -P 123456 -ssadd -sstype c -d Demo

    解释一下 aspnet_regsql.exe表示执行这个文件 ,-S  后接的参数为数据库服务器的名称或者IP地址;-U 表示SqlServer的登陆用户名是sa  ,-P 表示登陆密码是123456   最后面的demo是数据库名,即:你要将Session保存到哪个数据库下。

    点击回车键后,直到执行完毕

      

      Web.Config配置: 

    <?xml version="1.0" encoding="utf-8"?>
     
    <!--
      有关如何配置 ASP.NET 应用程序的详细信息,请访问
      http://go.microsoft.com/fwlink/?LinkId=169433
      -->
     
    <configuration>
        <system.web>
          <compilation debug="true" targetFramework="4.5" />
          <httpRuntime targetFramework="4.5" />
          <!--进程外Session添加这一段代码-->
          <!--<sessionState stateConnectionString="tcpip=127.0.0.1:2018" mode="StateServer"></sessionState>-->
     
          <!--数据库Session配置文件-->
          <!--timeout是设置Session过期时间,这里设为60分钟。如果不设置,则默认为20分钟-->
          <sessionState sqlConnectionString="server=.;database=Demo;uid=sa;pwd=123456" allowCustomSqlDatabase="true" mode="SQLServer" timeout="60"></sessionState>
        </system.web>
                
    </configuration>
    Config

      登陆数据库验证:

    上面两张表就是根据配置自动生成保存Session的数据表。

    至此Session共享问题已解决。

  • 相关阅读:
    Spring Cloud是什么
    IDEA中常用的10款插件
    Spring Boot自动配置原理分析
    Spring Security自定义授权管理
    Docker常用命令
    pycharm设置开启时不直接打开最后关闭的项目
    django.db.migrations.exceptions.NodeNotFoundError: Migration users.0001_initial dependencies reference nonexistent parent node ('auth', '0009_auto_20200720_0228')
    使用anaconda创建虚拟环境
    windows安装rabbitmq
    docker安装并配置RabbitMQ
  • 原文地址:https://www.cnblogs.com/hua66/p/10072468.html
Copyright © 2011-2022 走看看