首页 > Nginx负载均衡的详细配置及使用案例

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

 

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



感谢看过这一些列博文和评论的小伙伴, 我把自己所看到的学到的拿到这里来分享是想和大家一起学习进步, 想听听园友给出的意见, 也是对自己学习过程的一个总结. 

技术无止境, 我们仍需努力!





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的方法-传送门

安装Nginx的方法教程_你挚爱的强哥❤给你发来1条消息❤-CSDN博客

________________________________________________________________________



配置反向服务代理器:

什么是反向服务呢? 首先说下正向服务, 例如爬虫程序, 我们主动出击去获取资源. 而反向服务我们是等待用户来访问. 区别在于主动和被动.

配置文件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 是否安装成功: 


一般都是安装了openssl的,如果没有安装openssl就去centos 6.5 安装openssl - nikolates_fei - 博客园

1.下载

wget https://www.openssl.org/source/openssl-1.0.2h.tar.gz

2.解压

tar zxf openssl-1.0.2h.tar.gz

cd openssl-1.0.2h

3.安装

./config shared zlib

make

 make install

 mv /usr/bin/openssl /usr/bin/openssl.bak

 mv /usr/include/openssl /usr/include/openssl.bak

 ln -s /usr/local/ssl/bin/openssl /usr/bin/openssl

 ln -s /usr/local/ssl/include/openssl /usr/include/openssl

 echo “/usr/local/ssl/lib” >> /etc/ld.so.conf

 ldconfig -v

4.检测安装是否成功

openssl version -a



Keepalived的安装命令:

下载 keepalived——rpm包地址:

http://www.rpm-find.net/linux/RPM/ftp.scientificlinux.org/linux/scientific/6.4/x86_64/os/Packages/keepalived-1.2.7-3.el6.x86_64.html

配好yum仓库解决

yum -y install keepalived-1.2.7-3.el6.x86_64.rpm 

#安装keepalived包

[root@localhost]# rpm -aq keepalived

keepalived-1.2.7-3.el6.x86_64

[root@localhost]# service keepalived start

正在启动 keepalived:                                      [确定]







查看Keepalived的安装目录:





编辑Keepalived的配置文件:

首先我们来清空配置文件(清空后会自动再生成一个keepalived.conf, 但是里面的内容为空)

关于为什么要清空, 因为我们已经配置好了一些相关内容, 直接使用即可.

这里是来设置虚拟IPeth0:

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









配置完成之后, 启动keepalived:





检测Keepalived是否启动成功:



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



设置备机:|

这里的权重只要低于主机的100就好.






启动备机的Keepalived:







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





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

【原理】keepalived先开启的那台服务器就是主机,其余的都是备机。如果要切换主备服务器,就关闭所有服务器的keepalived服务,然后开启需要设置为主机的服务器keepalived服务:

service keepalived start

ip add show eth0

更多相关:

  • 英语的重要性,毋庸置疑!尤其对广大职场人士,掌握英语意味着就多了一项竞争的技能。那,对于我们成人来说,时间是最宝贵的。如何短时间内在英语方面有所突破,这是我们最关心的事情。英语学习,到底有没有捷径可以走,是否可以速成?周老师在这里明确告诉大家,英语学习,没有绝对的捷径走,但是可以少走弯路。十多年的教学经验告诉我们,成功的学习方法可以借...

  • 展开全部 其实IDLE提供了一个显32313133353236313431303231363533e78988e69d8331333365663438示所有行和所有字符的功能。 我们打开IDLE shell或者IDLE编辑器,可以看到左下角有个Ln和Col,事实上,Ln是当前光标所在行,Col是当前光标所在列。 我们如果想得到文件代码...

  • 前言[1]从 Main 方法说起[2]走进 Tomcat 内部[3]总结[4]《Java 2019 超神之路》《Dubbo 实现原理与源码解析 —— 精品合集》《Spring 实现原理与源码解析 —— 精品合集》《MyBatis 实现原理与源码解析 —— 精品合集》《Spring MVC 实现原理与源码解析 —— 精品合集》《Spri...

  • 【本文摘要】【注】本文所述内容为学习Yjango《学习观》相关视频之后的总结,观点归Yjango所有,本文仅作为学习之用。阅读本节,会让你对英语这类运动类知识的学习豁然开朗,你会知道英语学习方面,我们的症结所在。学习英语这类运动类知识,需要把握四个原则第一,不要用主动意识。第二,关注于端对端第三,输入输出符合实际情况第四,通过多个例子...

  • 点云PCL免费知识星球,点云论文速读。文章:RGB-D SLAM with Structural Regularities作者:Yanyan Li , Raza Yunus , Nikolas Brasch , Nassir Navab and Federico Tombari编译:点云PCL代码:https://github.co...

  • vim /etc/init.d/nginx   粘贴 #!/bin/bash # nginx Startup script for the Nginx HTTP Server # it is v.0.0.2 version. # chkconfig: - 85 15 # description: Nginx is a high-...

  • 1.下载nginx   方法一   wget http://nginx.org/download/nginx-1.11.6.tar.gz   方法二   http://nginx.org/en/download.html在Nginx官网手动下载 2.解压nginx的gz包   tar -zxvf nginx-1.11.6.t...

  • 本文档记录了完全使用最新源码来编译安装nginx最新版1.10.3,所有的依赖也是最新的,便于第三方nginx模块开发 假定使用root身份安装 目前最新的源码地址汇总 ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/pcre-8.40.tar.gz http:/...

  • 为了自己的ThinkPad T420上面的Ubuntu可以使用openresty开发,我特地记录一下安装过程: 安装依赖包 apt-get install libreadline-dev libncurses5-dev libpcre3-dev libssl-dev perl make build-essential 下载源码并...

  • 根据工作需要,现在需要安装nginx服务器,本来可以直接安装别人制作好的rpm包的,但是本着爱折腾和时刻尝鲜的精神,我决定从官网下载最新的nginx源码来安装,下面记录了我的安装过程。 下面的安装假定是以root用户登录并执行 1.安装依赖库 这些依赖库主要有g++、gcc、openssl-devel、pcre-devel和zl...

  • 滑块式验证码用户通过拖动滑块行为来完成校验,支持PC端及移动端。可以将用户拖动行为的时间、精度,滑动轨迹等信息到服务器,然后进行后台算法验证。特别介绍Blazor 版本的滑块验证码 传送门在线演示效果图快速开始组件依赖 font-awesomeCSS将引入样式表的 标签复制并粘贴到 中,并放在所有其他样式表之前。JS将引入脚本的 用...

  • Ktor 是一个使用 Kotlin 以最小的成本快速创建 Web 应用程序的框架。Ktor 是一个用于在连接系统(connected systems)中构建异步服务器和客户端的 Kotlin 框架。它由 Kotlin 团队创建,因此,它充分利用了 Kotlin 的语言特性,为开发者提供出色的体验和运行时性能。import io.kto...

  • l VDI (Virtual Desktop Infrastructure)VDI构架采用的“集中存储、集中运算”构架,所有的桌面以虚拟机的方式运行在服务器硬件的虚拟化层上,桌面以图像传输的方式发送到客户端。l IDV (Intelligent Desktop Virtualization) 由于VDI方案对服务器资源、网络带宽要求比...

  • 受昨晚闰秒问题影响,今天内网和线上的ATS服务器都出现了CPU负载增高的问题,参见下面的截图 下面是tsar监控到负载异常记录,从今天(20150701)早上8:05分开始: 我们内网和线上的服务器Linux kernel内核版本都是 经过实践摸索,发现如下规律: 1.如果已经开启ntpd,如果昨晚没有关闭n...

  • 下面的安装假定是以root用户身份进行的,Linux服务器已经安装好系统,磁盘已经做好分区。 首先需要认识我们的Linux服务器的硬件配置和软件情况 硬件配置: DELL R720 2U服务器 CPU  8核 Intel(R) Xeon(R) CPU E5-2609 0 @ 2.40GHz 内存 32G 硬盘  系统盘 /...