推荐-Nginx专题: upstream模块和缓存的简单使用

Nginx专题: upstream模块和缓存的简单使用

nginx 负载均衡

前言:

本文接着上篇Nginx专题: 从编译安装到URL重写来介绍Nginx的负载均衡模块使用方法, 本文的实验没有考虑大多数情况, 例如两个web服务器之间的数据同步等, 主要写Nginx如何作为负载均衡器使用并且缓存

实验拓扑

blob.png

实验环境

主机 IP地址 功用
lb.anyisalin.com 172.16.1.2 负载均衡并缓存静态资源
web1.anyisalin.com 172.16.1.3 提供web服务
web2.anyisalin.com 172.16.1.4 提供web服务

注意: 本文所有操作都在SELinux和iptables关闭的情况下进行

Nginx_Upstream模块介绍

The ngx_http_upstream_module module is used to define groups of servers that can be referenced by the proxy_pass, fastcgi_pass, uwsgi_pass, scgi_pass, and memcached_pass directives. 摘自官方文档

简单来说就是通过upstream模块定义一个服务器组, 可以结合其他代理模块从而提供负载均衡的效果

upstream使用方法

我们这里提供一个最简单的upstream定义方法: 
以下两段简单的配置就能实现最简单的负载均衡效果

upstream servers {
   server 172.16.1.2;
   server 172.16.1.3;
   }

location / {
   proxy_pass http://servers;
   }

upstream的常用参数介绍

upstream name {
   [ip_hash]
   server address [weight=number] [max_fails=number] [fail_timeout=number] [down|up|backup];
   ...
}

#ip_hash: 类似于lvssh算法,将同一IP的请求定向至同一主机
#weight: 权重设置
#max_failsupstream能够自动对各群组中的服务器进行健康状态检查, 这里代表健康状态检查时最多几次连接失败就删除
#fail_timeout:多久超时算失败
#down:将某个主机下线
#backup:将某个主机设置为备份模式, 只要不是所有主机都宕机, 它就不会上线

upstream使用示例

安装nginx的过程这里就不演示了, 有兴趣的可以看我上篇博客

在nginx主配置文件中添加以下几列

http段添加
   upstream servers {
       server 172.16.1.3;
       server 172.16.1.4;
       }

server段添加

   location / {
       proxy_pass http://servers;
   }

重载nginx

看图!我们实现了简单的负载均衡效果,为了演示出效果,所以使用了不同的页面

若水GIF截图_2016年4月7日19点35分7秒.gif

Nginx_Cache介绍

大家都知道在现今的网络世界中, Cache is King,缓存能够为我们减轻服务器的负担和加快响应速度, Nginx_proxy模块能够支持缓存功能, 我们这里使用我们这里缓存静态资源

缓存静态资源

我们在web1 server上有一组静态网页通过负载均衡调度器进行反向代理, 我们在没有设置缓存之前先使用ab进行压力测试

blob.png

proxy_cache_path /cache levels=1:1 keys_zone=mycache:64m;   #http段添加

location /index.html {  #Location段配置
   proxy_pass http://172.16.1.3;
   proxy_cache mycache;    #使用mycache进行缓存
   proxy_cache_valid 200 1d;   #响应码为200的缓存1
   proxy_cache_valid 500 501 502 503 1m;   #响应码为500...的缓存1分钟
   proxy_cache_use_stale error ;   #如果请求源主机的时候出问题, 仍然使用缓存
 }

保存重载

mkdir /cache #创建缓存存放文件夹
chown nginx:nginx /cache  #修改属主和属组为nginx

再次对其进行测试

blob.png

从上面测试可以看出缓存对于静态资源响应的提升是非常明显的

总结

因为时间比较紧,所有本文简单的介绍了Nginx_upstream模块和缓存的使用方法,很多配置参数都没有明确的说明,以后应该还有机会和大家详细说明, Nginx专题还没有结束,敬请期待 
作者: AnyISalIn QQ: 1449472454 
感谢: MageEdu

原创文章,作者:Net18-AnyISalIn,如若转载,请注明出处:http://www.178linux.com/14386

(0)
Net18-AnyISalInNet18-AnyISalIn
上一篇 2016-04-07 15:55
下一篇 2016-04-09 12:00

相关推荐

  • 高级文件管理系统

    1、 设定文件系统配额 在内核中执行: • 以文件系统即分区为单位启用 • 对不同组或者用户的策略不同 根据块或者节点进行限制: • 执行软限制(soft limit),限时限制 • 硬限制(hard limit) 初始化: • 分区挂载选项,针对用户或组:usrquota 、grpquota • 初始化数据库,也即是创建用户或组文件系统配额数据库:quot…

    Linux干货 2016-09-01
  • 网络管理

    网络管理 本章内容 网络概念 OSI模型 网络设备 TCP/IP IP地址 配置网络 实现网络组 测试网络 网络工具 为linux网卡配置ip地址,不是给网卡配置地址,是给内核的网络功能配置,地址是属于内核。为内核配置即时生效,修改配置文件,是永久生效。ifconfig 配置信息,会立即生效,但是重启网络服务或主机,都失效。网络服务/etc/init.d/n…

    Linux干货 2016-09-05
  • python写一个通讯录之step by step

    编写过程:     第一步:手动代码堆积         第二步:函数复用         第三步:数据持久化之数据保存         第四步:数据持久化之数据读取       &nbsp…

    Linux干货 2015-03-26
  • ☞实时数据同步方案{ rsync; inotify; }

    实时数据同步方案{ rsync; inotify; } rsync 传输数据 安装 rsyncd 服务 CentOS 6 CentOS 7 配置 rsyncd 服务 配置 rsync 手动同步示例     启动 rsyncd 服务 CentOS 6 CentOS 7 rsync 客户端命令 rsync 数据传输功能 基…

    Linux干货 2016-10-29
  • Linux运维之磁盘管理

    ※磁盘管理 计算机是由五大组成部件:输入设备,输出设备,存储器,运算器,控制器,其中输入设备我们称之为I/O设备,如键盘,扫描器,运算器和控制称之为cpu,存储器如,内存,硬盘,优盘。计算机其实只需要内存和cpu其实已经可以完成工作了,但是内存属于随机存储设备,断电之后就丢失数据,所以我们就需要通过其他的辅助存储设备来弥补内存的不足,这些辅存我们称之为外存。…

    Linux干货 2016-08-27
  • Linux正则表达式及文件查找

    1、显示当前系统上root、fedora或者user1用户的默认shell. #   grep  -E   “^(root|fedora|user1)”   /etc/passwd | cut -d: -f1,7     2、找出/etc/rc.d/init.d/functions文件中某单词后面跟一组小括号的行,…

    2017-10-22