Nginx实现负载均衡与Nginx缓存功能(3)

  nginx负载均衡是ngx_http_upstream_module模块的功能, 需要在配置文件http块上下文中定义upstream块, 指定一组负载均衡的后端服务器, 然后在上面讲到的proxy_pass中引用, 就可以反向代理时实现负载均衡了。
  需要注意的是:ngx_http_upstream段要在server段前面,要定义在http段中。
  语法如下:

server address [parameters];

  接着,我们来看一看选项:
paramerters:

weight: 负载均衡策略权重, 默认为1;
max_fails: 在一定时间内(这个时间在fail_timeout参数中设置) 检查这个服务器是否可用时产生的最多失败请求数
fail_timeout: 在经历了max_fails次失败后, 暂停服务的时间。 max_fails可以和fail_timeout一起使用, 进行对后端服务器的健康状态检查;
backup: 当所有后端服务器都宕机时, 可以指定代理服务器自身作为备份, 对外提供维护提示页面;
down: 永久不可用。

  需要注意一下的是:max_fails和fail_timeout是配对使用的,前者是定义在一定时间内检查这个服务器是否连接可用时产生的最多失败请求的次数,后者是规定这个时间,并且这个时间也是在经过前者的失败次数后,暂停服务的时间。
示例:

max_fails=3 fail_timeout=10s

  意思就是 10秒内失败3次,则暂停服务10秒。
  举例:

upstream dynamic { server backend1.example.com weight=5; server backend2.example.com:8080 max_fails=3; fail_timeout=5s ; server 192.0.2.1 max_fails=3; server backup1.example.com:8080 backup; server backup2.example.com:8080 backup; }

  当然,我们还有一个专业的健康检测模块 nginx_upstream_check_module-master,可以根据需要使用。
  upstream块里可以用多个server选项配置多个后端服务器,同时还可配置对后端服务器的健康状态检查,可以在server后面加上max_fails(
proxy_next_upstream指定检查策略,默认为返回超时为失败)和fail_timeout参数实现;也可以用health_check选项来实现,health_check可以指定的参数较多, 不过需要定义在location上下文中。
  另外, 可以指定代理服务器自身作为备份server, 当所有后端服务器都宕机时, 对外提供维护提示页面。
  还可以指定负载均衡策略: 主要有round_robin(加权轮询, 默认) 、hash、ip_hash、least_conn(最少连接)和least_time(最少响应时间,商业版本),策略定义在upstream上下文即可。
  具体实例参照tengine实现动静分离(见下文)。

三、tengine

  Tengine是由淘宝网发起的Web服务器项目。它在Nginx的基础上,针对大访问量网站的需求,添加了很多高级功能和特性。Tengine的性能和稳定性已经在大型的网站如淘宝网,天猫商城等得到了很好的检验。它的最终目标是打造一个高效、稳定、安全、易用的Web平台。
  从2011年12月开始,Tengine成为一个开源项目,Tengine团队在积极地开发和维护着它。Tengine团队的核心成员来自于淘宝、搜狗等互联网企业。Tengine是社区合作的成果,我们欢迎大家参与其中,贡献自己的力量。

tengine实现动静分离

1、下载并解压安装包
  进入官网下载安装包,

Nginx实现负载均衡与Nginx缓存功能

  这里附上官网网址:tengine.taobao.org
  小编下载的是2.2.1版本。大家可以根据自己的需要来下载。接着,我们使用rz命令上传至虚拟机。
  上传完成后,我们来解压:

tar xvf tengine-2.1.1.tar.gz

2、编译安装tengine
  首先,我们要安装依赖的包和包组:

yum install pcre-devel openssl-devel -y yum groupinstall "development tools" -y

  安装完成后,我们进入这个目录:

cd tengine-2.1.1

  然后,我们就可以进行编译安装了:

./configure --prefix=/usr/local/tengine make && make install

3、修改配置文件
  我们的需求是让这台机器充当调度器,坐到动静分离,所以我们需要在配置文件中添加下面这些:
  配置文件为/usr/local/tengine/conf/nginx.conf。
http段,添加如下内容:

upstream server-cluster{ server 172.17.77.77:80; server 172.17.252.111:80; check interval=3000 rise=2 fall=5 timeout=1000 type=http; check_http_send "HEAD / HTTP/1.0\r\n\r\n"; check_http_expect_alive http_2xx http_3xx; } upstream staticsrvs{ server 172.17.22.22:80; server 172.17.1.7:80; check interval=3000 rise=2 fall=5 timeout=1000 type=http; check_http_send "HEAD / HTTP/1.0\r\n\r\n"; check_http_expect_alive http_2xx http_3xx; }

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/ebb3aa2b72bd7fc12fc30ad5ad077081.html