集群服务器分布式iis_windows+nginx+iis+redis+Task.MainForm构建分布式架构 之 (nginx+iis构建服务集群)...-程序员宅基地

技术标签: 集群服务器分布式iis  

本次要分享的是利用windows+nginx+iis+redis+Task.MainForm组建分布式架构,由标题就能看出此内容不是一篇分享文章能说完的,所以我打算分几篇分享文章来讲解,一步一步实现分布式架构;下面将先给出整个架构的核心节点简介,希望各位多多点赞:

. 架构设计图展示

. nginx+iis构建服务集群

. redis存储分布式共享的session及共享session运作流程

. redis主从配置及Sentinel管理多个Redis集群

. 定时框架Task.MainForm提供数据给redis集群储存

以上是整个架构的我认为核心的部分,其中没有包含有数据库方面的设计(请忽略),下面先发张架构设计图:

以上是个人的看法,下面来正式分享今天的文章吧(nginx+iis构建服务集群):

. nginx常用基础配置总结

. 用nginx搭建静态文件缓存服务

. nginx+iis构建服务集群

下面一步一个脚印的来分享:

. nginx常用基础配置总结

首先,我们需要从网上下载nginx服务文件,具体windows系统下用何版本请网上搜索,我这里用的版本是nginx-1.10.1;下载下来后目录结构是这样的:

我们需要了解并且操作的配置文件是conf文件夹下面的nginx.conf文件,该目录下的其他文件一般采用默认的就行;打开文件不看#号注释的行;events节点:

events节点:

worker_connections:默认值1024,代表nginx服务地址的最大连接数1024;

http节点:

include:mime.types其实对应的是nginx.conf同级目录下的mime.types文件,里面是能访问的mime类型

default_type:application/octet-stream默认类型

keepalive_timeout:连接超时时间,单位秒

server节点:

listen:nginx监听的端口号

server_name:服务名称

location:路由设置(支持正则表达式);其中常用到的节点有

proxy_connect_timeout:nginx跟后端服务器连接超时时间(代理连接超时)

proxy_pass:代理地址名称

proxy_set_header:设置让服务端获取真实的Ip,端口等;对应的值有(Host,X-Real-IP,X-Forwarded-For)

upstream节点:

设定负载均衡的服务器列表

设置代理地址名称(和上面的proxy_pass对应)

设置负载均衡分配规则,常用规则有:

轮询:挨个轮询访问(默认)

ip_hash:访问一次后固定访问一个后端服务器,可以解决session的问题

fair:后端服务器的响应时间来分配请求,响应时间短的优先分配

weight:权重,值越大访问量越多

proxy_temp_path节点:代理临时文件夹路径

proxy_cache_path节点:代理缓存文件夹路径(缓存文件都在这里)

以上介绍的信息基本能完成一个负载均衡常用搭建了,其他的更详细的节点请参考官网

. 用nginx搭建静态文件缓存服务

通常分布式架构的一些css,js,图片文件都是被缓存起来的,这样提供高效的加载速度;由文章开头时发布的一张架构图可以看到,用户A要真实访问到服务集群需要经过nginx这道服务器转发,这样需要跳转一次才能获取到css静态文件明显比直接在nginx服务器就返回这些文件的速度慢;所以这种情况下就有了把静态资源缓存到nginx服务上的需求了;下面先来看下nginx配置文件需要的配置信息:

#负载均衡的服务器列表

upstream shenniu.test.com{

server127.0.0.1:4041;

}

##cache##

proxy_connect_timeout5;

proxy_read_timeout60;

proxy_send_timeout5;

proxy_buffer_size 16k;

proxy_buffers464k;

proxy_busy_buffers_size 128k;

proxy_temp_file_write_size 128k;

proxy_temp_path D:/E/nginx-1.10.1/home/temp_dir;

proxy_cache_path D:/E/nginx-1.10.1/home/cache levels=1:2 keys_zone=cache_one:200m inactive=1d max_size=30g;

##end##

注意这里upstream节点后面的shenniu.test.com域名在后面会使用,节点里面的server对应ip:端口如:server 127.0.0.1:4041(这个是真实的站点项目的ip+端口),然后需要设置保存缓存文件的路径:proxy_cache_path和proxy_temp_path

然后server节点里面listen监听3031端口,server_name:shenniu.test.com,增加静态资源路由配置

location ~ .*\.(gif|jpg|png|css|js|flv|ico|swf)(.*) {

#proxy_pass http://shenniu.file.com;

proxy_pass http://shenniu.test.com;

proxy_redirect off;

proxy_set_header Host $host;

proxy_cache cache_one;

proxy_cache_valid200 3021h;

proxy_cache_valid3011d;

proxy_cache_valid any 1m;

expires 30d; #缓存时长,这里是30天

}

注意里面反向代理的proxy_pass 对应的值http://+上面upstream节点的shenniu.test.com,所以就是proxy_pass http://shenniu.test.com这个地址就是访问代理的地址;直接shenniu.test.com域名,我们需要在本机的这个目录结构C:\Windows\System32\drivers\etc中找到host文件,然后里面增加如:127.0.0.1 shenniu.test.com一样代码,这样我们的域名就可以在本机的浏览器中访问了;增加页面的路由配置:

location ~ .*(\/|\.(html|htm))(.*) {

proxy_connect_timeout90; #nginx跟后端服务器连接超时时间(代理连接超时)

proxy_pass http://shenniu.test.com;

proxy_redirect default;

#服务端获取真实的Ip,端口等

proxy_set_header Host $host;

proxy_set_header X-Real-IP $remote_addr;

proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

}

然后,我们还需要用iis发布一个项目,名称为ShenNiu.Stage01,对应的ip和端口是上面upstream节点里面的数据:

然后,在浏览器访问分别用ip和域名访问效果:

好这个是本地host配置域名访问,但是这还没有用到nginx,因为咋们配置的nginx反向代理的端口是server节点里面listen监听3031端口,所以应该访问的是http://shenniu.test.com:3031/user/login地址,此时在浏览器是访问不了该端口的,还需要咋们来启动nginx服务:

好,现在使用nginx配置反向代理并第一次访问代理对应的站点程序,由于咋们配置的缓存文件地址在D:/E/nginx-1.10.1/home/cache目录,所以查看文件夹:

这里面的就是缓存文件所在的位置,此处问生成的缓存文件夹;再来咋们第二次在浏览器中访问网站,并F12查看对应的js,css等文件:

此时文件的来源Server对应的是nginx服务,没错现在访问的就是nginx缓存的文件了

. nginx+iis构建服务集群

上面的搭建静态缓存服务其实大致都涉及到了nginx用来做分发的功能,下面我们来快速在刚才的基础增加一些节点信息,搭建站点服务集群;首先,我们修改upstream节点,内容信息增加如:

#负载均衡的服务器列表

upstream shenniu.test.com{

server127.0.0.1:4041;

server127.0.0.1:4040;

}

只需要增加这段代码,因为上面静态文件服务的时候已经增加了页面的路由设置(可以往上看);为了演示分布式架构,我们还需要在iis中在配置个和ShenNiu.Stage01(对应的ip+端口:127.0.0.1:4041)站点一样程序的站点ShenNiu.Stage02(对应的ip+端口:127.0.0.1:4040),但是把登陆页的title分别标注为"系统01","系统02"这样来区分访问到的是那个站点,配置好后下面我们来再重新加载nginx配置:

然后,访问反向代理地址http://shenniu.test.com:3031/user/login访问下页面看到的效果如:

此时访问同样的域名,得出的第一个页面title是"系统01",第二个是"系统02",可以看出访问的站点分别对应的是127.0.0.1:4041和127.0.0.1:4040,也就是咋们配置的iis中的ShenNiu.Stage01和ShenNiu.Stage02,这样nginx做分发站点就成功了,站点服务集群就这样创建成功了。

本篇分享的内容只是nginx+iis做一个简单的集群,后面一篇的分享文章将讲解redis存储分布式共享的session及共享session运作流程,敬请期待也谢谢多多支持点赞。

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_39521835/article/details/111809097

智能推荐

AndroidStudio插件 GsonFormatPlus使用_android studio gsonformatplus怎么用-程序员宅基地

文章浏览阅读8.9k次,点赞4次,收藏24次。How to use lombok plugin in Android Studio?https://stackoverflow.com/questions/37991892/how-to-use-lombok-plugin-in-android-studio_android studio gsonformatplus怎么用

安装pyaudio的正确方法_pyaudio 安装-程序员宅基地

文章浏览阅读975次。安装pyaudio的正确方法_pyaudio 安装

开山-机器学习(1)矩阵分解-多视角数据表示的多样非负矩阵分解_多视图矩阵分解-程序员宅基地

文章浏览阅读1.7k次,点赞4次,收藏17次。欢迎来到theFlyer的博客—希望你有不一样的感悟前言:这是一篇要讲的论文,以下内容是基于个人理解写的,从简单的NMF讲到论文的多视角方法,由于之前做了PPT所以以下图片可能比较多。 论文名称 Diverse Non-Negative Matrix Factorization for Multiview Data Representation目录欢迎来到theFl..._多视图矩阵分解

Ubuntu安装uget和aria2下载工具-程序员宅基地

文章浏览阅读202次。Windows下的下载工具有迅雷,快车等。Ubuntu下也有强大的下载工具uget和aria2。一、安装。uget和aria2都可以在“软件中心”中安装,但是版本太老啦,所以最好还是在终端中添加ppa进行安装:1.uget的安装:sudo add-apt-repository ppa:plushuang-tw/uget-stable sudo apt-get update..._uget ipv6

yarn安装的包全局不能用_yarn安装的依赖安装在全局为什么不行-程序员宅基地

文章浏览阅读3.2k次。默认情况下,yarn 会将通过 yarn global方式安装的包放到C:\Users\你的用户名例如:Administrator\AppData\Local\Yarn\bin\所以请将这个目录放到 PATH 环境变量中,就可以了。_yarn安装的依赖安装在全局为什么不行

【MATLAB-app】系列教程(含视频)第9课_答疑03:如何看到appdesigner 内部(过程)的数据?_appdesigner 断点-程序员宅基地

文章浏览阅读1.6k次,点赞2次,收藏4次。创作时间:2020-01-20目录:问题汇总:1.如何看到appdesigner 内部的数据?2.如何调试appdesigner?3.如何使用dropdown组件?4.如何保存uiaxes中的图像?问题解答:1.如何看到appdesigner 内部(过程)的数据?答:1)设置断点,或者使用keyboard语句。2)将过程数据输出。详见本期视频。2.如何调试appdesigner?答:同1.详见本期视频。3.如何使用dropdown组件?【MATLAB-app】答读者问:m_appdesigner 断点

随便推点

[精品毕设]Python考务监考管理系统-程序员宅基地

文章浏览阅读19次。该项目含有源码、文档、PPT、配套开发软件、软件安装教程、项目发布教程、包运行成功!

UE4-(蓝图)第三十课使用动画蒙太奇_蓝图蒙太奇动画资源打点-程序员宅基地

文章浏览阅读5.6k次,点赞4次,收藏15次。一、创建蒙太奇动画1.在文件夹空白处右键创建Animation下的动画蒙太奇2.选择动画蒙太奇基于的骨骼,创建完成后命名为FppRifleFire_Montage二、编辑动画蒙太奇1.双击打开刚创建的动画蒙太奇,在编辑窗口右下角有个资源管理器,其中为所有动画,选择一个动画后拖拽到Montage栏下方空白处。(也可以放置多个片段,自己排序组合)2.设置游戏开始时 使用..._蓝图蒙太奇动画资源打点

iOS 使用AVAudio播放音乐中断处理-程序员宅基地

文章浏览阅读832次。在使用AVFoundation框架中的AVAudioPlayer播放音乐时,会出现中断的情况,比如接听电话,或者接听FaceTime,这就要通过注册通知来处理,[NSNotificationCenter defaultCenter] addobserver:self selector:@selector(handleInterruption:) name :AVAudioSess..._avaudiosession 打开其他音频不回停止播放

SSD的基础知识介绍_ssd硬件基础知识-程序员宅基地

文章浏览阅读721次。SSD测试服务器_ssd硬件基础知识

Lua 基础教程(十三)表-程序员宅基地

文章浏览阅读6次。在 Lua 中,表(Tables)是唯一可用的数据结构,可帮助我们创建不同类型的数组和字典。Lua 使用关联数组,不仅可以用数字索引,还可以用非nil的字符串索引。表大小不固定,可以根据需要动态增长。Lua 在所有的表示中都使用表,包括用表表示包。当访问 string.format 方法时,实际上是在访问字符串包中的 format 函数。

matlab 高分子 取向度 表征,高分子聚合物的取向表征 - 高分子 - 小木虫 - 学术 科研 互动社区...-程序员宅基地

文章浏览阅读1k次。用途高分子和它的链段本身具有较大的长度,因此在空间上必然指向一定的方向。当高分子链段在空间随机取向时,由概率论可知,此时分子或分子链段指向各个方向的几率是相同的。在宏观上,高分子的这种取向方式使高分子聚合物在各个方向上呈现相同的品质,即各向同性性质。高分子链段也可能沿某些方向规整地周期性排列,从而形成高分子晶体。在一些条件下,如外力,流动等,相当数量的高分子链段会平行指向同一方向,由此形成的高分子..._聚合物的取向度