设为首页 收藏本站
查看: 1646|回复: 2

[经验分享] windows+nginx+iis+redis+Task.MainForm构建分布式架构 之 (nginx+iis构建服务集群)

[复制链接]

尚未签到

发表于 2017-6-27 15:11:08 | 显示全部楼层 |阅读模式
  本次要分享的是利用windows+nginx+iis+redis+Task.MainForm组建分布式架构,由标题就能看出此内容不是一篇分享文章能说完的,所以我打算分几篇分享文章来讲解,一步一步实现分布式架构;下面将先给出整个架构的核心节点简介,希望各位多多点赞:
  . 架构设计图展示
  . nginx+iis构建服务集群
  . redis存储分布式共享的session及共享session运作流程
  . redis主从配置及Sentinel管理多个Redis集群
  . 定时框架Task.MainForm提供数据给redis集群储存
  以上是整个架构的我认为核心的部分,其中没有包含有数据库方面的设计(请忽略),下面先发张架构设计图:
DSC0000.png

  以上是个人的看法,下面来正式分享今天的文章吧(nginx+iis构建服务集群):
  . nginx常用基础配置总结
  . 用nginx搭建静态文件缓存服务
  . nginx+iis构建服务集群
  下面一步一个脚印的来分享:
  . nginx常用基础配置总结
  首先,我们需要从网上下载nginx服务文件,具体windows系统下用何版本请网上搜索,我这里用的版本是nginx-1.10.1;下载下来后目录结构是这样的:
DSC0001.png

  我们需要了解并且操作的配置文件是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{
server 127.0.0.1:4041;
}
##cache##
proxy_connect_timeout 5;
proxy_read_timeout 60;
proxy_send_timeout 5;
proxy_buffer_size 16k;
proxy_buffers 4 64k;
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_valid 200 302 1h;
proxy_cache_valid 301 1d;
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_timeout 90;  #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节点里面的数据:
DSC0002.png

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

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

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

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

  此时文件的来源Server对应的是nginx服务,没错现在访问的就是nginx缓存的文件了
  . nginx+iis构建服务集群
  上面的搭建静态缓存服务其实大致都涉及到了nginx用来做分发的功能,下面我们来快速在刚才的基础增加一些节点信息,搭建站点服务集群;首先,我们修改upstream节点,内容信息增加如:



#负载均衡的服务器列表
upstream shenniu.test.com{
server 127.0.0.1:4041;
server 127.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配置:
DSC0007.png

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

  此时访问同样的域名,得出的第一个页面title是"系统01",第二个是"系统02",可以看出访问的站点分别对应的是127.0.0.1:4041和127.0.0.1:4040,也就是咋们配置的iis中的ShenNiu.Stage01和ShenNiu.Stage02,这样nginx做分发站点就成功了,站点服务集群就这样创建成功了。
  本篇分享的内容只是nginx+iis做一个简单的集群,后面一篇的分享文章将讲解redis存储分布式共享的session及共享session运作流程,敬请期待也谢谢多多支持点赞。

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-388754-1-1.html 上篇帖子: ElasticSearch入门 第一篇:Windows下安装ElasticSearch 下篇帖子: Windows x64 栈帧结构
累计签到:1 天
连续签到:1 天
发表于 2017-10-23 18:11:42 | 显示全部楼层
长知识了,希望能用到

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表