一、Nginx负载均衡概述
web服务器,直接面向用户,往往要承载大量并发请求,单台服务器难以负荷,我使用多台web服务器组成集群,前端使用Nginx负载均衡,将请求分散的转发到我们后端服务器集群中,实现负载的分发,那么会大大提升系统的吞吐率、请求性能、高容灾之前在负载均衡调度器这里采用lvs的比较多,由于lvs只能实现对四层传输层的负载均衡,也就是说只能基于ip和端口号进行转发,假如有很多集群,比如01集群、02集群,端口号都是80,无法进行区分,lvs无法基于这种应用名称来转发进行负载均衡,因此就有了Nginx负载均衡,Nginx负载均衡既可以实现对四层的负载又可以实现对七层的负载,可以根据ip端口也可以根据应用名称来转发。
1.负载均衡原理
在之前一直认为负载均衡是当第一个用户连接过来就转发给web01,第二个用户连接过来就转发给web02,其实这是错误的,虽然有2个用户在连接,但是只会产生一个TCP连接,因为负载均衡池是一个整体,负载均衡是根据http请求来转发进行负载的,比如一个页面共有10个http请求,第一个http请求会转发给web01,第二个http请求转发给web02,也就是web01承担1,3,5,7,9的http请求,web02承担2,4,6,8,10的http请求,分工合作,当负载均衡服务器池的节点越多,页面访问的速度就会越快。
2.Nginx常用的云平台介绍
阿里云 SLB
腾讯云 CLB
青云 QLB
ucloud ULB
3.Nginx四层与七层的区别
- Nginx负载均衡按层划分
- 二层:基于mac地址
- 三层:基于ip地址
- 四层:基于ip和端口号
- 七层:基于应用协议
四层负载均衡:IP地址、TCP/UDP、端口号
七层负载均衡:HTTP、HTTPS、FTP、SMTP
下图为企业较为常用的负载拓步架构
首先用户发送请求首先会被转发到四层负载均衡上,因为访问网站都是基于域名加端口的,四层就满足了访问条件,然后在根据请求的内容转发到七层负载上,七层负载再根据请求的类型转发到不同的后端web集群,四层和七层也可以在一台服务器上,使用Nginx就可以实现这种架构
二、nginx源码下载及配置
1.nginx官网下载地址
官方地址:https://bitbucket.org/nginx-goodies/nginx-sticky-module-ng/src
下载地址:wget https://bitbucket.org/nginx-goodies/nginx-sticky-module-ng/get/master.tar.gz
[root@server1 ~]# tar zxf master.tar.gz
[root@server1 ~]# ls
master.tar.gz nginx-goodies-nginx-sticky-module-ng-08a395c66e42
[root@server1 ~]# rm -fr *
[root@server1 ~]# ls
nginx-1.20.1.tar.gz
[root@server1 ~]# tar zxf nginx-1.20.1.tar.gz
[root@server1 ~]# ls
nginx-1.20.1 nginx-1.20.1.tar.gz
[root@server1 ~]# cd nginx-1.20.1
[root@server1 nginx-1.20.1]# ls
auto CHANGES CHANGES.ru conf configure contrib html LICENSE man README src
[root@server1 nginx-1.20.1]# ./configure --help ##可以看到可用参数
2. 进入nginx源码目录进行编译
[root@server1 nginx-1.20.1]# ./configure --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module
checking for OS
+ Linux 3.10.0-957.el7.x86_64 x86_64
checking for C compiler ... not found
./configure: error: C compiler cc is not found ##显示gcc没有编辑器
[root@server1 nginx-1.20.1]# yum install -y gcc
[root@server1 nginx-1.20.1]# ./configure --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module
./configure: error: the HTTP rewrite module requires the PCRE library. 显示缺少PERC库,下载PCRE
[root@server1 nginx-1.20.1]# yum install -y pcre-devel 下载通常为库名+devel
[root@server1 nginx-1.20.1]# ./configure --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module
./configure: error: SSL modules require the OpenSSL library. 提示缺少Open