集群反向代理实现负载均衡『nginx & apache2』

前言
今天在专题收录一篇关于ngixn与apache2实现负载均衡的文章,仔细看了一遍,有些地方存在错误,记得之前搭建过这样的环境,今天呢,好好记录分享一下。


nginx & apache
简单说说它俩的优点

  • nginx的并发量高、占用资源少,适用于前端或静态服务
  • apache服务超级稳定,适用于后端或动态服务

nginx & apache协作流程
一般而言,我们可以使用nginx以及apache实现集群服务器负载均衡,具体如何实现的呢?它们的工作流程又是如何的呢?

  • 第一步:客户端访问服务器的时候将会先访问nginx服务器
  • 第二步:nginx接受客户端请求后将会将请求转发到apache
  • 第三步:apache接收nginx的转发请求将会处理请求
  • 第四步:apache将处理后的请求返回客户端,完成一次访问
nginx & apache协作流程

Nginx的upstream分发机制
upstream按照轮询(默认)方式进行负载,每个请求按时间顺序逐一分配到不同的后端服务器,如果后端服务器down掉,能自动剔除。虽然这种方式简便、成本低廉。但缺点是:可靠性低和负载分配不均衡。适用于图片服务器集群和纯静态页面服务器集群。基本有如下几种:

  • 轮询( 默认 )
    适用于图片服务器集群和纯静态页面服务器集群。
upstream balance{
    server localhost:8080;
    server localhost:8081;
    server localhost:8082;
   ... ...
}
  • 指定权重
    权重weight和访问比率成正比,用于后端服务器性能不均的情况。
upstream balance{
    server localhost:8080 weight=5;
    server localhost:8081 weight=10;
    server localhost:8082 weight=15;
   ... ...
}
  • IP绑定 ip_hash
    每个请求按访问ip的hash结果分配,这样每个访客固定访问一个后端服务器,可以解决session的问题
upstream balance {
    ip_hash;
    server localhost:8080;
    server localhost:8081;
    server localhost:8082;
    ... ...
}
  • fair(第三方)
    按后端服务器的响应时间来分配请求,响应时间短的优先分配。
upstream balance {
    fair;
    server localhost:8080;
    server localhost:8081;
    server localhost:8082;
    ... ...
}

nginx & apache安装

# 对于安装不多说(基于debian/ubuntu)
sudo apt-get install apache2 nginx -y

重点将在如下

对于更多的负载均衡理论可以自行搜索,这里旨在实践配置。

环境场景
为了方便配置,所有的服务都是安装在同一台机器上面。

Apache版本:Apache/2.4.7 (Ubuntu)
Nginx版本: nginx/1.4.6 (Ubuntu)


  • nginx服务器只需要一台服务器即可,它的http服务器的端口使用默认的80,
  • apache启动多个端口,模拟多台服务器的80端口。端口分别为8001、8002、8003、8004。
  • 我们将客户端的请求通过nginx分别按照指定的分发机制转发到apache的8001、8002、8003、8004端口。
  • nginx采取权重的分发机制

配置Apache
前提:将默认的80端口关闭,因为80端口将为nginx所用。将默认的000-default.conf.bak重命后缀名即可(非conf)。
(1) 开启端口监听允许
在apache端口蒋婷配置文件/etc/apache2/ports.conf添加如下信息,记得关闭80端口监听。

Listen 8001
Listen 8002
Listen 8003
Listen 8004

(2) 配置虚拟目录映射
个人习惯,将每一个虚拟目录配置写一个配置文件,在这里将新建四个conf文件,对应的配置如下:
/etc/apache2/ites-enabled/8001.conf

<VirtualHost *:8001>
    ServerAdmin localhost:8001
    DocumentRoot /home/alic/www/proxy/8001
    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>

/etc/apache2/ites-enabled/8002.conf

<VirtualHost *:8002>
    ServerAdmin localhost:8002
    DocumentRoot /home/alic/www/proxy/8002
    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>

剩下的8003.conf、8004.conf就不多说了!
(3) 重启Apache,没有问题浏览器就可以直接打开各个端口的访问了

sudo service nginx restart

配置Nginx
(1) upstream
定义一个upstream变量,即定义接收转发的服务器
/etc/nginx/sites-enabled/default

#代理转发地址
upstream balance{
    server localhost:8001 weight=5;
    server localhost:8002 weight=10;
    server localhost:8003 weight=15;
    server localhost:8004 weight=20;    
}

(2) server
配置监听80端口的server,将请求转发到upstream
/etc/nginx/sites-enabled/default

server {
    listen 80 default_server;
    listen [::]:80 default_server ipv6only=on;
    server_name localhost;

    location / {
        try_files $uri $uri/ =404;
        #修改proxy_pass这里即可
        proxy_pass http://balance;
    }

(3) 重启nginx

sudo service nginx restart

至此,已经配置完成了,我们可以检验检验!!!

➜  ~ curl 127.0.0.1
I am proxy apache2 port 8003
➜  ~ curl 127.0.0.1
I am proxy apache2 port 8004
➜  ~ curl 127.0.0.1
I am proxy apache2 port 8004
➜  ~ curl 127.0.0.1
I am proxy apache2 port 8001
➜  ~ curl 127.0.0.1
I am proxy apache2 port 8001
➜  ~ curl 127.0.0.1
I am proxy apache2 port 8002
... ...

Alic say : ****价值源于技术,贡献源于分享****

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,684评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,143评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,214评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,788评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,796评论 5 368
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,665评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,027评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,679评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 41,346评论 1 299
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,664评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,766评论 1 331
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,412评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,015评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,974评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,203评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,073评论 2 350
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,501评论 2 343

推荐阅读更多精彩内容