记录使用Redis和nginx 实现一个简单的负载均衡(FB)
这两年在博客园看了不少大牛的分享,一直打算能写点什么东西。 之前偶然看见一个利用Redis 当作 Session数据宿主的demo,出处我已经找不到了。后来没事看了看nginx相关的东西。其中负载均衡在多站点的Session同步是需要解决的一个问题。所以就想试试将二者结合使用的效果。当然得写个demo
添加RedisSessionProvider相关
添加之后会自动生成web.config 相关设置模板
然后 把host 设为本地ip 127.0.0.1 accessKey 设为 Redis端口 默认的设为 6379
ssl 改为false
然后测试一下
然后退出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 是否起到了作用
然后让我们来配置一下nginx 并且试图启动它
然后测试一下效果
第一个图片多了nginx标志 说明 nginx 起到作用,而且多刷新几次会发现是平均分配的
然后模拟一下登陆,看看效果
大功告成
第一次写博客,排版不怎么会、组织得也比较凌乱。如果有人不幸看到,请谅解。后续会不断修改一下来锻炼自己写博客的能力。效果展示也会找一个录制gif的工具和给这个该死的Open live writer 装一个代码的插件。谢谢。
带着责任起飞