使用Nginx实现负载均衡
为什么80%的码农都做不了架构师?>>>
一、 负载均衡的基本作用
1. 转发功能
根据自身一定的算法(权重、轮询),将客户端的请求转发到不同的应用服务器上面,减轻单个服务器的压力,提高系统的并发量
2. 容灾处理
通过心跳检测的方式,判断应用服务器是否正常工作,如果服务器宕机,则请求自动忽略该服务器,发送到正在正常工作的服务器上面。
3. 恢复添加
如检测到宕机的服务器恢复正常工作,自动将该服务器添加回处理用户请求的列表中。
二、 CentOS 上面安装Nginx
(Nginx 是 C语言 开发,建议在 Linux 上运行,当然,也可以安装 Windows 版本,本篇则使用 CentOS 7 作为安装环境。建议使用管理员安装,因为80端口需要管理员启动。)
1. 安装Nginx的前置相关软件 (加上-y默认安装过程)
yum install –y gcc-c++
yum install -y pcre pcre-devel
yum install -y zlib zlib-devel
yum install -y openssl openssl-devel
2. 直接下载.tar.gz安装包,地址:https://nginx.org/en/download.html
3. 解压文件之后使用默认配置目录,只是安装目录,非业务相关的配置
(将文件放到你想要反之的目录之后进行解压)
tar -zxvf nginx-1.10.1.tar.gz
cd nginx-1.10.1
./configure
4. 编译安装
make
make install
查找安装路径:
whereis nginx
5. 启动、停止
cd /usr/local/nginx/sbin/
./nginx
./nginx -s stop
./nginx -s quit
./nginx -s reload
./nginx -s quit:此方式停止步骤是待nginx进程处理任务完毕进行停止。
./nginx -s stop:此方式相当于先查出nginx进程id再使用kill命令强制杀掉进程。
查询nginx进程:
ps aux|grep nginx
6. 重启
1.先停止再启动:
对 nginx 进行重启相当于先停止再启动,即先执行停止命令再执行启动命令。如下:
./nginx -s quit
./nginx
2.重新加载配置文件(推荐):
当 ngin x的配置文件 nginx.conf 修改后,要想让配置生效需要重启 nginx,使用-s reload不用先停止 ngin x再启动 nginx 即可将配置信息在 nginx 中生效,如下:
./nginx -s reload
7. 开机自启动
即在rc.local增加启动代码就可以了。
vi /etc/rc.local
增加一行 /usr/local/nginx/sbin/nginx
(如果访问不了的话看看是不是防火墙问题)
三、 Nginx实现负载均衡
(这里简单的使用两个tomcat模拟两台服务器,具体情况自行调整)
1. Nginx的负载分发
Nginx 的 upstream目前支持的分配算法:
1)、轮询 ——1:1 轮流处理请求(默认)
每个请求按时间顺序逐一分配到不同的应用服务器,如果应用服务器down掉,自动剔除,剩下的继续轮询。
2)、权重 ——you can you up
通过配置权重,指定轮询几率,权重和访问比率成正比,用于应用服务器性能不均的情况。
3)、ip_哈希算法
每个请求按访问ip的hash结果分配,这样每个访客固定访问一个应用服务器,可以解决session共享的问题。
2. 配置Nginx的负载均衡与分发
通过在upstream参数中添加的应用服务器IP后添加指定参数实现,由于配置了proxy_pass地址,所有请求都会先通过nginx反向代理服务器,在服务器将请求转发给目的主机时,读取upstream为 tomcats的地址,读取分发策略,配置tomcat1权重为3,所以nginx会将大部分请求发送给8080端口;较少部分给tomcat2来实现有条件的负载均衡,当然这个可以根据服务器1、2的硬件指数处理请求能力。
四、总结
总结一下,负载均衡不论是各种软件或硬件上的解决方案,主要还是将大量的并发请求按照一定的规律分发给不同的服务器处理,从而减少某台服务器的瞬时压力,提高网站的抗并发能力。nginx在负载均衡的应用之所以广泛,这归功于它的灵活配置,一个nginx.conf文件解决大部分问题,另外它本身轻量级,不需要占用服务器太多资源就可以达到较好的效果。
(ps:现在各大云服务器都有比较成熟的负载均衡和容灾处理的方案,非必须的情况建议直接使用云服务器的,免去自己搭建的麻烦,笔者本人现在用Nginx基本都是用来做正向代理,
附正向代理使用文档:https://my.oschina.net/xwzj/blog/1608621)
转载于:https://my.oschina.net/xwzj/blog/1608611
使用Nginx实现负载均衡相关推荐
- Nginx搭建负载均衡集群
(1).实验环境 youxi1 192.168.5.101 负载均衡器 youxi2 192.168.5.102 主机1 youxi3 192.168.5.103 主机2 (2).Nginx负载均衡策 ...
- docker nginx 配置负载均衡
在上篇的文章中我们介绍了docker nginx配置简单的代理 在这篇文章我们介绍docker 利用nginx配置负载均衡 所谓的负载均衡是两台服务器,或者是多台服务器上面部署项目,但是访问的方式是通 ...
- lnmp架构——nginx的负载均衡
lnmp架构--nginx的负载均衡 1 什么是nginx 2 nginx的作用 3 nginx的特点 4 nginx的安装以及优化 4.1 安装nginx 4.2 优化 5 nginx主配置文件操作 ...
- Nginx+keepalived负载均衡高可用篇第③版
Nginx+keepalived负载均衡高可用篇第③版 对付中.小型企业,假如没有资金去购买昂贵的四/七层负载均衡交换机,那么Nginx是不错的七层负载均衡选择,并且可以通过Nginx + Keepa ...
- Nginx+Tomcat 负载均衡集群方案
2019独角兽企业重金招聘Python工程师标准>>> Nginx+Tomcat 负载均衡集群方案 该方案是我之前做过的一个项目生产应用的,目前运行良好,如何您生产使用,请先做好测试 ...
- nginx 之负载均衡 :PHP session 跨多台服务器配置
公司一个项目单点压力越来越大,考虑到稳定性和降压,使用nginx做负载均衡,将请求分发到多个docker上去,这里记录下PHP多服务器间的会话session共享问题,解决方案是把session单独存在 ...
- windows配置nginx实现负载均衡集群
windows配置nginx实现负载均衡集群 2014-08-20 09:44:40 来源:www.abcde.cn 评论:0 点击:617 网上大部分关于nginx负载均衡集群的教程都是li ...
- Nginx之负载均衡(四)
在上一篇博客我们介绍了 Nginx 一个很重要的功能--代理,包括正向代理和反向代理.这两个代理的核心区别是:正向代理代理的是客户端,而反向代理代理的是服务器.其中我们又重点介绍了反向代理,以及如何通 ...
- 配置Nginx实现负载均衡
在关于高并发负载均衡一文中已经提到,企业在解决高并发问题时,一般有两个方向的处理策略,软件.硬件,硬件上添加负载均衡器分发大量请求,软件上可在高并发瓶颈处:数据库+web服务器两处添加解决方案,其中w ...
- Nginx做负载均衡报:nginx: [emerg] could not build the types_hash
环境:KVM/Centos6.3 用Nginx做负载均衡的时候在配置完成后,启动Nginx的时候报: nginx: [emerg] could not build the types_hash, yo ...
最新文章
- LeetCode简单题之字符的最短距离
- Matlab Robotic Toolbox V9.10工具箱(五):动力学简介
- python:array和list转换以及数组切片
- cookie+memcached实现单点登陆
- Linux排序命令sort笔记
- UVa 10061 How many zero's and how many digits?
- zigbee物联网模块标准:LTE标准Cat.1和nbiot无线通信模块差异
- Java单例模式的七种写法
- oracle 日志 LogMiner
- Mac mysql 忘记 root 密码,phpmyadmin 登录 No such file or directory 错误处理
- 【第43题】【062题库】2019年OCP认证062考试新题
- Win10升级后出现的OEM分区处理
- latex 混淆矩阵
- 企业微信邀请通知在哪里设置?如何关闭?
- 【LeetCode】第934题——最短的桥(难度:中等)
- ictclas java_ICTCLAS50 基于中科院分词作的java 工具,内容详细各个函数都有实现 含有word解析文档 Develop 238万源代码下载- www.pudn.com...
- 嵌入式微处理器详述(1)---什么是嵌入式微处理器
- 2019年安徽省大学生计算机博弈大赛,2019年辽宁省普通高等学校本科大学生计算机博弈竞赛在我校成功举行...
- CUDA安装和检测【全】(nvcc命令找不到的解决办法)
- Ubuntu 14.10 安装 hadoop-2.6.0单机配置和伪分布式配置