知识大全 Nginx负载均衡配置实例详解

Posted 域名

篇首语:如果这世界上真有奇迹,那只是努力的另一个名字。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 Nginx负载均衡配置实例详解相关的知识,希望对你有一定的参考价值。

Nginx负载均衡配置实例详解  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!

负载均衡是我们大流量网站要做的一个东西 下面我来给大家介绍在Nginx服务器上进行负载均衡配置方法 希望对有需要的同学有所帮助哦

负载均衡

先来简单了解一下什么是负载均衡 单从字面上的意思来理解就可以解释N台服务器平均分担负载 不会因为某台服务器负载高宕机而某台服务器闲置的情况 那么负载均衡的前提就是要有多台服务器才能实现 也就是两台以上即可

测试环境由于没有服务器 所以本次测试直接host指定域名 然后在VMware里安装了三台CentOS

测试域名  a

A服务器IP (主)

B服务器IP

C服务器IP

部署思路A服务器做为主服务器 域名直接解析到A服务器( )上 由A服务器负载均衡到B服务器( )与C服务器( )上

域名解析

由于不是真实环境 域名就随便使用一个a 用作测试 所以a 的解析只能在hosts文件设置

打开 C:WindowsSystem driversetchosts

在末尾添加

    a

保存退出 然后启动命令模式ping下看看是否已设置成功

从截图上看已成功将a 解析到 IP

A服务器pstream a       server  : ;       server  : ;   server     listen ;     server_name a ;     location /         proxy_pass         ;         proxy_set_header   Host             $host;         proxy_set_header   X Real IP        $remote_addr;         proxy_set_header   X Forwarded For  $proxy_add_x_forwarded_for;    

保存重启nginx

B C服务器nginx conf设置打开nginx confi 在段加入以下代码

server     listen ;     server_name a ;     index index ;     root /data /htdocs/;

保存重启nginx

测试当访问a 的时候 为了区分是转向哪台服务器处理我分别在B C服务器下写一个不同内容的index 文件 以作区分

打开浏览器访问a 结果 刷新会发现所有的请求均分别被主服务器( )分配到B服务器( )与C服务器( )上 实现了负载均衡效果

B服务器处理页面

C服务器处理页面

假如其中一台服务器宕机会怎样?当某台服务器宕机了 是否会影响访问呢?

我们先来看看实例 根据以上例子 假设C服务器 这台机子宕机了(由于无法模拟宕机 所以我就把C服务器关机)然后再来访问看看

访问结果

我们发现 虽然C服务器( )宕机了 但不影响网站访问 这样 就不会担心在负载均衡模式下因为某台机子宕机而拖累整个站点了

如果b 也要设置负载均衡怎么办?很简单 跟a 设置一样 如下

假设b 的主服务器IP是 负载均衡到 和 机器上

现将域名b 解析到 IP上

在主服务器( )的nginx conf加入以下代码

upstream b       server  : ;       server  : ;   server     listen ;     server_name b ;     location /         proxy_pass         ;         proxy_set_header   Host             $host;         proxy_set_header   X Real IP        $remote_addr;         proxy_set_header   X Forwarded For  $proxy_add_x_forwarded_for;     保存重启nginx

在 与 机器上设置nginx 打开nginx conf在末尾添加以下代码

server     listen ;     server_name b ;     index index ;     root /data /htdocs/;

保存重启nginx

完成以后步骤后即可实现b 的负载均衡配置

主服务器不能提供服务吗?以上例子中 我们都是应用到了主服务器负载均衡到其它服务器上 那么主服务器本身能不能也加在服务器列表中 这样就不会白白浪费拿一台服务器纯当做转发功能 而是也参与到提供服务中来

如以上案例三台服务器

A服务器IP (主)

B服务器IP

C服务器IP

我们把域名解析到A服务器 然后由A服务器转发到B服务器与C服务器 那么A服务器只做一个转发功能 现在我们让A服务器也提供站点服务

我们先来分析一下 如果添加主服务器到upstream中 那么可能会有以下两种情况发生

主服务器转发到了其它IP上 其它IP服务器正常处理

主服务器转发到了自己IP上 然后又进到主服务器分配IP那里 假如一直分配到本机 则会造成一个死循环

怎么解决这个问题呢?因为 端口已经用来监听负载均衡的处理 那么本服务器上就不能再使用 端口来处理a 的访问请求 得用一个新的 于是我们把主服务器的nginx conf加入以下一段代码

server     listen ;     server_name a ;     index index ;     root /data /htdocs/;  重启nginx 在浏览器输入a : 试试看能不能访问 结果可以正常访问

既然能正常访问 那么我们就可以把主服务器添加到upstream中 但是端口要改一下 如下代码

upstream a       server  : ;       server  : ;       server  : ;

由于这里可以添加主服务器IP 或者 均可以 都表示访问自己

重启Nginx 然后再来访问a 看看会不会分配到主服务器上

主服务器也能正常加入服务了

最后一 负载均衡不是nginx独有 著名鼎鼎的apache也有 但性能可能不如nginx

二 多台服务器提供服务 但域名只解析到主服务器 而真正的服务器IP不会被ping下即可获得 增加一定安全性

三 upstream里的IP不一定是内网 外网IP也可以 不过经典的案例是 局域网中某台IP暴露在外网下 域名直接解析到此IP 然后又这台主服务器转发到内网服务器IP中

cha138/Article/program/Java/gj/201405/30818

相关参考

知识大全 Apache实现Web Server负载均衡详解(不考虑Session版)

Apache实现WebServer负载均衡详解(不考虑Session版)  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们

知识大全 .NET中自定义配置节点实例详解

.NET中自定义配置节点实例详解  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  一目的  一般应

知识大全 深入Nginx + PHP 缓存详解

深入Nginx+PHP缓存详解  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!以下是对Nginx中的

知识大全 nginx配置完 并发了还是上不去

nginx配置完并发了还是上不去参考下面的nginx配置高并发一、一般来说nginx配置档案中对优化比较有作用的为以下几项:1.worker_processes8;nginx程序数,建议按照cpu数目

知识大全 nginx实现防盗链配置方法介绍

有些朋友觉得防盗链就是防止图片其实有很多东西要进行防盗链了下面我来介绍在nginx中实现防盗链配置方法有对图片防盗链与下载资源等防盗链配置假设网站域名是编辑nginxconf在区域添加如下内容&nbs

知识大全 mac下配置nginx+php+mysql方法说明

本文章来给各位同学介绍mac下配置nginx+php+mysql方法有需要了解的同学可进入参考额本来以为mac下可以用lnmp一键安装包的但是使用后才发现竟然不行后来使用了大家都推荐的homebrew

知识大全 Oracle] RAC 之 - 负载均衡深入解析

Oracle]RAC之-负载均衡深入解析  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!负载均衡是指

知识大全 PHP负载均衡指南

PHP负载均衡指南  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!过去当运行一个大的web应用时候意

知识大全 Tomcat集群与负载均衡

Tomcat集群与负载均衡  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  在单一的服务器上执行W

知识大全 本机使用了反代理如nginx,在反代理中配置的域名指向本机,会和已经存在的域名冲突吗,如配百度的域名

本机使用了反代理如nginx,在反代理中配置的域名指向本机,会和已经存在的域名冲突吗,如配百度的域名指向本机了都就不会了,到时候会直接访问本机怎么代理yahoo的域名YAHOO本身没有域名,他也是代理