城北·IT俱乐部日常经验分享·城北博客

Nginx负载均衡配置实例详解介绍

浏览: 310    评论: 3

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

负载均衡

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


感觉有用的请收藏备用吧。



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

测试域名  :a.com

A服务器IP :192.168.5.149 (主)

B服务器IP :192.168.5.27

C服务器IP :192.168.5.126

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


域名解析

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

打开:C:WindowsSystem32driversetchosts

在末尾添加

192.168.5.149    a.com

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

 

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

A服务器nginx.conf设置
打开nginx.conf,文件位置在nginx安装目录的conf目录下。

在http段加入以下代码

upstream a.com { 
      server  192.168.5.126:80; 
      server  192.168.5.27:80; 

  
server{ 
    listen 80; 
    server_name a.com; 
    location / { 
        proxy_pass         http://a.com; 
        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,在http段加入以下代码

server{ 
    listen 80; 
    server_name a.com; 
    index index.html; 
    root /data0/htdocs/www; 
}

保存重启nginx

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

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

B服务器处理页面

 

C服务器处理页面

 

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

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

访问结果:

 

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

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

假设b.com的主服务器IP是192.168.5.149,负载均衡到192.168.5.150和192.168.5.151机器上

现将域名b.com解析到192.168.5.149IP上。

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

upstream b.com { 
      server  192.168.5.150:80; 
      server  192.168.5.151:80; 

  
server{ 
    listen 80; 
    server_name b.com; 
    location / { 
        proxy_pass         http://b.com; 
        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

在192.168.5.150与192.168.5.151机器上设置nginx,打开nginx.conf在末尾添加以下代码:

server{ 
    listen 80; 
    server_name b.com; 
    index index.html; 
    root /data0/htdocs/www; 
}

保存重启nginx

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

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

如以上案例三台服务器:

A服务器IP :192.168.5.149 (主)

B服务器IP :192.168.5.27

C服务器IP :192.168.5.126

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

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

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

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

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

server{ 
    listen 8080; 
    server_name a.com; 
    index index.html; 
    root /data0/htdocs/www; 
}
 
重启nginx,在浏览器输入a.com:8080试试看能不能访问。结果可以正常访问

 

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

upstream a.com { 
      server  192.168.5.126:80; 
      server  192.168.5.27:80; 
      server  127.0.0.1:8080; 
}

由于这里可以添加主服务器IP192.168.5.149或者127.0.0.1均可以,都表示访问自己。

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

 

 

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

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

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

 

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

四、某台服务器宕机、不会影响网站正常运行,Nginx不会把请求转发到已宕机的IP上


全文详见:http://it-club.cn/post/36.html

TOP


评论列表

访客

#1楼
评论于2016-01-25 08:09:58
主服务器挂了这么办?

访客

#2楼
评论于2016-01-25 08:10:27
可以在增加个备用主服务器。言挂了。马上转接到备用上

site

#3楼
评论于2016-02-15 11:42:35
做的好的收录飞快,做不好的收录一天一掉光

发表评论
来宾的头像

TOP

网站分类

TOP

最新留言

  • 这波操作牛,广发的信用卡就是不怕你刷
  • 这路子之前就有了,只是公开的人不多,很多人不知道,谢谢城北公布。
  • 下卡到是容易,就是速度慢两个多周了还没发卡
  • 这里补充一提醒一下,如果没有给临时的也可以发短信试试,不是一定要给了临时的就成功。只是成功率更高。
  • W2 老用户投2000以上90天可激活一台,W2售价1399元, 分6期(一期30天算)返还 ,也就是180天了
  • 最近很多朋友都反应农行的3+1提额已死,3+多少都没有用了,成功的少之又少,当然包括城北也失败了。手银上有推荐,但是不管是手银上还是电话申请都失败。现在大的方向都是失败的,卡友们能做的就是只能正常用卡了,等一段时间看情况在针对操作。
  • 本文是分享来的,有什么问题与城北无关。这算是个小福利羊毛吧,关于万家金服,之前去年吧,城北也上过车,也拿到了东西安全下车了。本文是分享官方的。
  • 对于信用卡持卡人来说,逾期记录是一件非常头疼的事。特别是个人信用越来越重要,很多时候,贷款不下来都因为信用逾期。那么,信用卡逾期还款后果是什么呢?  信用卡逾期还款的后果:有的人信用卡透支后恶意欠款,甚至注销信用卡,以为银行不会找到自己。这种想法简直太天真了。如果是存心想要不还款,不但贷款买房买车受限制,出国、找工作、甚至自己的配偶的信用都将会受到影响,并且在个人的诚信档案中永远记录。 信用卡逾期还款会怎么样信用卡逾期还款怎么办?  刑法关于信用卡犯罪有这样的规定:超过规定限额或期限透支,并且发卡行两次催收后超过3个月仍不归还的,定性为恶意透支。恶意透支1万以上10万以下,认定为数额较大,处5年以下有期徒刑或拘役;10万到100万,数额巨大,处5年以上10年以下徒刑。  信用卡逾期后如何做?  1、最好继续使用这张卡。逾期后,最好的办法是继续使用此卡,用新的正常的还款记录覆盖原有的负面记录,一般24个月后就会产生新的信用记录,这样记录刷新后,个人信贷等都不会受到影响。  2、无力还款需及时说明。如果因为失业或者疾病导致无力按时还款,在最后还款期限到来之前,陈述自己经济状况,申明自己并非恶意欠款,可以申请延迟还款和利息优惠。可以尝试:主动打电话给客服申请延迟几天,一般是可以的。  小编提醒:信用卡逾期记录补救方法看似简单,操作起来却不是那么容易的。所以希望各位持卡人要多注意,最好合理消费,并按时还款,信用卡逾期记录严重性可大可小。尤其是想要使用信用卡申请贷款的更要注意。
  • 我的终身5000元卡下了5年了,试了下,也马上提额成功,总算1万固定额度了,本来都放弃建行信用卡,刷免年费后一年多没有用过了。
  • 交行新户首卡,昨天点你连接进去申请,秒批了,今天出卡号了查了下额度5万。高兴
  • TOP

    站点信息

    • 文章总数:114
    • 页面总数:1
    • 分类总数:3
    • 标签总数:3
    • 评论总数:95
    • 浏览总数:58271