记录使用Redis和nginx 实现一个简单的负载均衡(FB)

这两年在博客园看了不少大牛的分享,一直打算能写点什么东西。 之前偶然看见一个利用Redis 当作 Session数据宿主的demo,出处我已经找不到了。后来没事看了看nginx相关的东西。其中负载均衡在多站点的Session同步是需要解决的一个问题。所以就想试试将二者结合使用的效果。当然得写个demo

添加RedisSessionProvider相关

1H4]~Z8MD)D9`B(OO6TU7IV

添加之后会自动生成web.config 相关设置模板

M@%JPIKZW}`1UH(MXSHDOOJ

然后 把host 设为本地ip 127.0.0.1  accessKey 设为 Redis端口 默认的设为 6379

ssl 改为false

然后测试一下

 {T3MB6A0OCU3B_A2M4_FBDS

然后退出IIS Express 再重新打开一次 时间没变 OK。

然后是nginx 负载均衡部分

  我们把之前的例子丰富一下。

 

public partial class demo : System.Web.UI.Page 
  { 
      public bool IsLogin { get; private set; } 
      /// <summary> 
      /// 将session 数据宿主设置为redis 
      /// </summary> 
      /// <param name="sender"></param> 
      /// <param name="e"></param> 
      protected void Page_Load(object sender, EventArgs e) 
      { 
          if (!IsPostBack) { 
              IsLogin = Session["user"] != null; 
              if (Session["record"] == null) { 
                  Session["record"] = DateTime.Now;

                
              } 
           
             // Session.Timeout = 1; 
              Response.Write(Session.SessionID); 
              Response.Write(Session["record"]); 
          } 
      }

      protected void Button1_Click(object sender, EventArgs e) 
      { 
          Session["user"] = "tanzhaoyao"; 
          IsLogin = true; 
      } 
  }

 

页面显示代码

 

<div> 
       <%if(IsLogin){ %> 
       <h1><%=Session["user"].ToString() %></h1> 
       <%}else{ %>

       <asp:Button ID="Button1" OnClick="Button1_Click" runat="server" Text="Login" /> 
       <%} %> 
   </div>

然后将这个项目文件复制一份 发布成2个站点  在其中一个加上标记来验证nginx 是否起到了作用

 W5ZWV1%C]ARWVCRCL5C4UUN

然后让我们来配置一下nginx 并且试图启动它

_B_$[8[~}Y2DL4UV~}AH]A9

)@U8IC[A8[58@DB~JZGZ$}0

然后测试一下效果

nologin

第一个图片多了nginx标志 说明 nginx 起到作用,而且多刷新几次会发现是平均分配的

然后模拟一下登陆,看看效果

logined

大功告成

第一次写博客,排版不怎么会、组织得也比较凌乱。如果有人不幸看到,请谅解。后续会不断修改一下来锻炼自己写博客的能力。效果展示也会找一个录制gif的工具和给这个该死的Open live writer 装一个代码的插件。谢谢。

原文地址:https://www.cnblogs.com/bninp/p/5443267.html