负载均衡 == 分身的能力。

既然要有分身的能力嘛,这好办,多弄几台服务器就搞定了。
今天我们讲的实例嘛…..我们还是先看图比较好:

还是图比较清晰,以下我都用别名称呼:

  PA : 负载均衡服务器/WEB入口服务器/www.mydomain.com
  P1 : WEB服务器/分身1/192.168.2.3
  P2 : WEB服务器/分身2/192.168.2.4
  P3 : WEB服务器/分身3/192.168.2.5

PS:首先我们学这个的开始之前吧,不懂防火墙的童鞋们,建议你们把PA、P1、P2、P3的防火墙关闭,尽量不要引起不必要的麻烦。

首先 :PA、P1、P2、P3都安装了Nginx,不会安装的可以去官网查看教程:http://www.nginx.cn/install(中文版教程、非常的牛X)

1. 装完之后哈,我们先找到 PA 的nginx.conf配置文件:
在http段加入以下代码:

upstream servers.mydomain.com {
server 192.168.2.3:80;
server 192.168.2.4:80;
server 192.168.2.5:80;
}

当然嘛,这servers.mydomain.com随便取的。

那么PA的server配置如下:
在http段加入以下代码:

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

那么P1、P2、P3的配置如下:

server{
listen 80;
server_name www.mydomain.com;
index index.html;
root /data/htdocs/www;
}

2. 有人就问了,我用其它端口行不行啊,当然也是可以的,假设PA的nginx.conf配置文件:

upstream servers2.mydomain.com {
server 192.168.2.3:8080;
server 192.168.2.4:8081;
server 192.168.2.5:8082;
} server{
listen 80;
server_name www.mydomain.com;
location / {
proxy_pass http://servers2.mydomain.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;
}
}

那么P1的配置如下:

server{
listen 8080;
server_name www.mydomain.com;
index index.html;
root /data/htdocs/www;
}

P2配置:

server{
listen 8081;
server_name www.mydomain.com;
index index.html;
root /data/htdocs/www;
}

P3配置:

server{
listen 8082;
server_name www.mydomain.com;
index index.html;
root /data/htdocs/www;
}

重启之后,我们访问下,恩不错,确实很厉害。
当我们把一台服务器给关闭了后。
访问网址,还是OK的。说明:负载均衡还要懂得修理他(T出泡妞队营)

3. 那么负载均衡如何保持通话呢?
当然现在有好几种方案,我们这次只是讲一种。
IP哈希策略
  优点:能较好地把同一个客户端的多次请求分配到同一台服务器处理,避免了加权轮询无法适用会话保持的需求。
  缺点:当某个时刻来自某个IP地址的请求特别多,那么将导致某台后端服务器的压力可能非常大,而其他后端服务器却空闲的不均衡情况。

要想了解更深刻的印象,这儿有篇博文,推荐可以看看:
http://blog.csdn.net/xiajun07061225/article/details/9334477

nginx的配置也很简单,代码如下:

upstream servers2.mydomain.com {
server 192.168.2.3:8080;
server 192.168.2.4:8081;
server 192.168.2.5:8082;
ip_hash;
}

其实一切就这么简单,来赶快试试吧!

最新文章

  1. Oracle执行时间与sql格式
  2. 转:python list排序的两种方法及实例讲解
  3. java之多线程之一/序列化和反序列化
  4. [Android] Android5.1系统自带的应用启动次数统计
  5. Shell教程1​-第一个Shell脚本
  6. Cloudera Error: "Failed to handle Heartbeat Response"
  7. 写出一条Sql语句:取出表A中第31到第40记录(SQLServer,以自动增长的ID作为主键,注意:ID可能不是连续的。
  8. winform中的Dock属性问题
  9. Android开发之点九图的制作说明
  10. 在LINUX终端和VIM下复制粘贴
  11. angular.bind
  12. 【JAVAWEB学习笔记】08_MySQL&JDBC回顾
  13. SSM Spring+SpringMVC+mybatis+maven+mysql环境搭建
  14. 2019.04.23 Scrapy框架
  15. mysql 批量导入
  16. 网络编程-Socket介绍
  17. 【转载一】Grafana –美观、强大的可视化监控指标展示工具
  18. opencv批量修改图片尺寸
  19. 分布式计算开源框架Hadoop入门实践
  20. php类模块引擎PDO操作MySQL数据库简单阐述

热门文章

  1. 通过GlobalAddAtom,GlobalGetAtomName方式发送字符串
  2. mysql第六篇 : MySQL索引原理与慢查询优化
  3. 【LeetCode】 240. 搜索二维矩阵 II
  4. python-模块安装
  5. 【Android】家庭记账本手机版开发报告五
  6. 不要对md5file.read()计算md5值
  7. Express ~ 获取表单 get 和 post 提交方式传送参数的对比
  8. 如何拖拽DIV边线并左右自适应改变大小?
  9. bzoj 4247挂饰
  10. Java8大排序算法