在这里再次说明下, 这个项目是从网上 找到的一套学习资料, 自己在 空闲时间学习了这些东西. 这里面的code当然会有很多不完善的地方, 但是确实也能学到很多新东西.
感谢看过这一些列博文和评论的小伙伴, 我把自己所看到的学到的拿到这里来分享是想和大家一起学习进步, 想听听园友给出的意见, 也是对自己学习过程的一个总结.
最后我会将这套资料的所有内容共享出来, 如果有愿意学习的同学可以下载下来使用.
PS: 我自认为 这些内容对于刚工作1-2年的同学来说真的很适用. 技术无止境, 我们仍需努力!

1,话不多说, 这里我们来说下很重要的负载均衡, 那么什么是负载均衡呢?

由于目前现有网络的各个核心部分随着业务量的提高,访问量和数据流量的快速增长,其处理能力和计算强度也相应地增大,使得单一的服务器设备根本无法承担。在此情况下,如果扔掉现有设备去做大量的硬件升级,这样将造成现有资源的浪费,而且如果再面临下一次业务量的提升时,这又将导致再一次硬件升级的高额成本投入,甚至性能再卓越的设备也不能满足当前业务量增长的需求。
针对此情况而衍生出来的一种廉价有效透明的方法以扩展现有网络设备和服务器的带宽、增加吞吐量、加强网络数据处理能力、提高网络的灵活性和可用性的技术就是负载均衡(Load Balance)。

2, 负载均衡的种类

1)一种是通过硬件来进行解决,常见的硬件有NetScaler、F5、Radware和Array等商用的负载均衡器,但是它们是比较昂贵的
2)一种是通过软件来进行解决的,常见的软件有LVS、Nginx、apache等,它们是基于Linux系统并且开源的负载均衡策略.

3, 这里我们只来说Nginx(其他的大家有兴趣可以自行查阅相关文档)

Nginx(发音同 engine x)是一款轻量级的Web 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,并在一个BSD-like 协议下发行。由俄罗斯的程序设计师Igor Sysoev(伊戈尔·西索夫)所开发,供俄国大型的入口网站及搜索引擎Rambler(漫步者)(俄文:Рамблер)使用。其特点是占有内存少,并发能力强,事实上nginx的并发能力确实在同类型的网页服务器中表现较好,中国大陆使用nginx网站用户有:新浪、网易、 腾讯等。
优点:
1:可运行linux,并有 Windows 移植版。
2:在高连接并发的情况下,Nginx是Apache服务器不错的替代品Nginx在美国是做虚拟主机生意的老板们经常选择的软件平台之一。能够支持高达 50,000 个并发连接数的响应

4, 创建两台Nginx服务器
由于自己在自己电脑上搭建, 所以 现在只模拟搭建两台Nginx服务器.

负载均衡的功能:
转发
故障移除
恢复添加
高可用 Ha

我们想要使用Nginx那么就必须满足上面的四个条件.
我们配置负载均衡的目的是在于当用户访问我们的服务器的时候, 首先会通过 Nginx服务器来决定转发到哪个Tomcat服务器上去给用户提供服务, 当然这个概率是我们通过权重来配置的. 经过Nginx指派之后, 我们就可以处理高并发的访问了, 这里就能达到负载均衡的目的.

5, 搭建Nginx
首先我们需要大家两台机器, 两台机器分别安装了Nginx和Tomcat, IP分别为: 192.168.200.129. 192.168.200.130



接着我们需要将Nginx和Tomcat包分别拷贝到CentOS01和CentOS02上, 并且解压好, 这里就不再复述这个过程了.
然后我们需要关闭Linux的防火墙, 否则的话启动了Nginx也是连接不上的.

我们还是来再看下解压吧:

解压完之后我们需要编译安装:

 1 ./configure \
2 --prefix=/usr/local/nginx \
3 --pid-path=/var/run/nginx/nginx.pid \
4 --lock-path=/var/lock/nginx.lock \
5 --error-log-path=/var/log/nginx/error.log \
6 --http-log-path=/var/log/nginx/access.log \
7 --with-http_gzip_static_module \
8 --http-client-body-temp-path=/var/temp/nginx/client \
9 --http-proxy-temp-path=/var/temp/nginx/proxy \
10 --http-fastcgi-temp-path=/var/temp/nginx/fastcgi \
11 --http-uwsgi-temp-path=/var/temp/nginx/uwsgi \
12 --http-scgi-temp-path=/var/temp/nginx/scgi

注意:上边将临时文件目录指定为/var/temp/nginx,需要在/var下创建temp及nginx目录
mkdir -p /var/temp/nginx

生成了文件夹后我们直接拷贝上面的编译安装命令进行安装.

执行完上诉步骤后, 我们可以看到nginx目录下生成了Makefile文件,我们接着往下:

然后使用Make命令, 运行结束后在使用Make install命令进行安装, 最后是启动Nginx:

查看是否启动成功:

配置反向服务代理器:
什么是反向服务呢? 首先说下正向服务, 例如爬虫程序, 我们主动出击去获取资源. 而反向服务我们是等待用户来访问. 区别在于主动和被动.
配置文件Nginx/conf/nginx.conf

配置Nginx转发条件

重启Nginx服务器

为了测试, 我们在两个Tomcat 服务器的index.jsp中分别加了这是来自于哪个ip下的Tomcat. 如下图所示:

重启好Nginx后, 我们再来访问192.168.200.129 这台机器, 我么可以发现其实访问的是129.168.200.130这台机器.

负债均衡的配置, 配置转发的权重: (另一台CentOS02 依然按照CentOS01的配置)


我们在这里配置了两台转发机器: 192.168.200.129和192.168.200.130, 它们的权重分别是2/3 和1/3, 也就是说访问三次192.168.200.129, 有两次是192.168.200.129上的Tomcat来处理, 有一次是192.168.200.130上的Tomcat来处理. 如果我们的Tomcat服务器更多 那么就需要在这里配置更多, 权重根据实际需求来划分.

同上, 搭建另一台机器192.168.200.130的负载均衡:

搭建Keepalived:(Keepalived需要依赖openssl)
这里如果我们的机器192.168.200.129 出现故障了呢? 那么怎么使用192.168.200.130上的Nginx进行转发呢? 怎么设置主机和备机呢? 如果主机死了怎么进行故障移除呢? 如果主机从不可用到可用状态又怎么进行恢复添加呢? 这些功能都是可以通过Keepalived来进行设置的.

Keepalived原理:

首先Keepalived可以在主机上产生一个虚拟的ip, 这里叫做vip(v是virtual的意思):192.168.200.150, keepalived会将这个vip绑定到交换机上.
当用户访问主机:192.168.200.129时, 交换机会通过这个ip和vip的对应找到192.168.200.129上的Nginx进行处理.
如果当有一天192.168.200.129上的Nginx挂掉的时候, Keepalived会立即在备机上生成一个相同的vip: 192.168.200.150, 当用户继续访问192.168.200.129时, 交换机上已经绑定了vip, 这时发现这个vip是存在于192.168.200.130上面的, 所以直接将请求转发到了备机上.
如果主机被修复好能够继续对外提供服务时, 这时keepalived会将主机上继续生成这个vip, 同时回收在备机上生成的vip. 这个是通过心跳检查来判断主机已恢复使用.

我这里已经提前安装好了oppenssl, 关于具体安装方法大家可以自行百度.
检查openssl 是否安装成功:


Keepalived的安装命令:

查看Keepalived的安装目录:

编辑Keepalived的配置文件:

首先我们来清空配置文件(清空后会自动再生成一个keepalived.conf, 但是里面的内容为空)
关于为什么要清空, 因为我们已经配置好了一些相关内容, 直接使用即可.

这里是来设置虚拟IP和eth1:
因为我的CentOS是拷贝过来的, 所以这里是eth1, 关于怎么查看, 我们在文章开头有查看本机ip: ifconfig, 那里面有显示我们的网卡就是eth1.

配置完成之后, 启动keepalived:

检测Keepalived是否启动成功:

这里查看 我们的机器多了两个ip, 其实这两个ip都是虚拟ip

设置备机:|
这里的权重只要低于主机的100就好.

启动备机的Keepalived:

当主机停止服务时, 备机即可接管继续服务:

关于Nginx的内容大概就是这么多了, 我这里是一步步配置且通过验证的, 如果大家哪里有疑问都可以回复留言.

http://www.cnblogs.com/wang-meng/p/5861174.html

[项目构建 十三]babasport Nginx负载均衡的详细配置及使用案例详解.的更多相关文章

  1. Nginx负载均衡的详细配置及使用案例详解.

    感谢看过这一些列博文和评论的小伙伴, 我把自己所看到的学到的拿到这里来分享是想和大家一起学习进步, 想听听园友给出的意见, 也是对自己学习过程的一个总结. 技术无止境, 我们仍需努力! 1,话不多说, ...

  2. nginx负载均衡及详细配置

    接上篇nginx配置,然后再准备两台web服务器: nginx服务器:192.168.0.241 web1:192.168.0.141 web2:192.168.0.142 一.两台web服务器先安装 ...

  3. Nginx负载均衡的详细配置 + Keepalived使用

    1,话不多说, 这里我们来说下很重要的负载均衡, 那么什么是负载均衡呢? 由于目前现有网络的各个核心部分随着业务量的提高,访问量和数据流量的快速增长,其处理能力和计算强度也相应地增大,使得单一的服务器 ...

  4. Nginx记录-nginx 负载均衡5种配置方式(转载)

    nginx 负载均衡5种配置方式 1.轮询(默认)   每个请求按时间顺序逐一分配到不同的后端服务器,如果后端服务器down掉,能自动剔除.  2.weight 指定轮询几率,weight和访问比率成 ...

  5. nginx 负载均衡5种配置方式

    nginx 负载均衡5种配置方式 1.轮询(默认) 每个请求按时间顺序逐一分配到不同的后端服务器,如果后端服务器down掉,能自动剔除. 2.weight 指定轮询几率,weight和访问比率成正比, ...

  6. nginx负载均衡之入门配置

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

  7. nginx负载均衡tomcat和配置ssl

    目录 tomcat 组件功能 engine host context connector service server valve logger realm UserDatabaseRealm 工作流 ...

  8. 干货 | Nginx负载均衡原理及配置实例

    一个执着于技术的公众号 Nginx系列导读 给小白的 Nginx 10分钟入门指南 Nginx编译安装及常用命令 完全卸载nginx的详细步骤 Nginx 配置文件详解 理解正向代理与反向代理的区别 ...

  9. 项目实战:负载均衡集群企业级应用实战—LVS详解

    目录 一.负载均衡集群介绍 二.lvs 的介绍 三.LVS负载均衡四种工作模式 1.NAT工作模式 2.DR工作模式 3.TUN工作模式 4.full-nat 工作模式 5.四者的区别 四.LVS i ...

随机推荐

  1. Lucene为不同字段指定不同分词器(转)

    在lucene使用过程中,如果要对同一IndexWriter中不同 Document,不同Field中使用不同的analyzer,我们该如何实现呢? 通过对<lucene in action&g ...

  2. Struts2方法调用的三种方式

    在Struts2中方法调用概括起来主要有三种形式 第一种方式:指定method属性 <action name="student" class="com.itmyho ...

  3. Hibernate知识点总结

    Hibernate配置二级缓存:  --- 使用EhCache 1.hibernate.cfg.xml中配置二级缓存 <hibernate-configuration>   <ses ...

  4. 老鸟的Python新手教程

    重要说明 这不是给编程新手准备的教程,假设您入行编程不久,或者还没有使用过1到2门编程语言,请移步!这是有一定编程经验的人准备的.最好是熟知Java或C,懂得命令行,Shell等.总之,这是面向老鸟的 ...

  5. 从零单排c++ primer(17)

    (1)假设一个名字在派生类的作用域内无法正确解析,则编译器将继续在外层的基类作用域中寻找该名字的定义. (2)派生类的成员将隐藏同名的基类成员. (3)除了覆盖继承而来的虚函数之外,派生类最好不要重用 ...

  6. Android GridView属性集合

    GridView的一些特殊属性: 1.android:numColumns=”auto_fit”   //GridView的列数设置为自动 2.android:columnWidth=”90dp &q ...

  7. gcc -I -L -l区别

    我们用gcc编译程序时,可能会用到“-I”(大写i),“-L”(大写l),“-l”(小写l)等参数,下面做个记录: 例: gcc -o hello hello.c -I /home/hello/inc ...

  8. Ubuntu下全命令行安装Android SDK

    为了在AWS云服务器上实现自动化打包Android APP的APK包,我需要远程命令行环境下安装Android SDK,当然还要用代理或者科学上网,这里简单整理一下过程: 首先,由于墙的原因,Andr ...

  9. easyUI 新增合计一行

    /** * 详情页面的查询 */ @Override public Map<String, Object> pointsStardList(PointsCpt pointsCpt, int ...

  10. css.day01.eg

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...