NGX负载均衡原理nginx负载均衡是通过反向代理实现的。
反向代理(Reverse Proxy)是指在互联网上接受连接请求,然后将请求转发给内部网络上的服务器(例如Tomcat),并将从服务器获得的结果返回给互联网上请求连接的客户端的代理服务器(例如Nginx)。此时,代理服务器(例如Nginx)在外部充当反向代理服务器。
从客户端的角度来看,其实客户端并不知道真正的服务提供者是哪个服务器,它只知道自己请求了一个反向代理服务器。因此,反向代理方法隐藏了真实服务器的地址,在一定程度上减少了安全隐患。
NGX服务器中的静态和动态分离原则接收来自客户端的请求,包括静态资源和动态资源。静态资源由nginx服务,动态资源由Nginx转发到后端。
Nginx静态处理的优势Nginx处理静态页面的效率远高于Tomcat的处理能力。如果Tomcat请求1000次,Nginx请求6000次。Tomcat每秒吞吐量0.6M,nginx每秒吞吐量3.6M Nginx处理静态资源的能力是Tomcat的6倍。
Nginx+tomcat动静态分离和负载均衡配置
1.准备三台服务器,Nginx作为负载均衡器,tomcat作为应用服务器。nginx服务器:192.168.136.30:80Tomcat服务器1: 1:192.168.136.20:8080Tomcat服务器2: 192.168.136.40: 8080。
2.部署nginx负载均衡器系统CTL stop firewalldsentenforce 0 yum -y install pcre -devel zlib -devel OpenSSL -devel gcc gcc -c++ make user add -m -s/sbin/nologin nginx #创建一个nginx用户无法登录的home目录,将压缩包发送到opt目录。
CD/opt tar zxvf nginx -1 . 12 . 0 . tar . gz -C/opt/CD nginx -1 . 12 . 0/。/configure \ --prefix =/usr/local/nginx \ --user = nginx \ --group = nginx \ --with -file -AIO \ #启用文件修改支持--with -http _ stub _ status _ module \ #启用状态统计--with -http _ gzip _ static _ module \ #启用gzip静态压缩--with-http_flv_module \#启用flv模块,为flv提供伪流支持/configure --前缀=/usr/local/nginx --user = nginx --group = nginx --with -file -AIO --with -http _ stub _ status _ module --with -http _ gzip _ static _ module --with -http _ flv _ module
制造和销售。& ampmake installln -s/usr/local/nginx/sbin/nginx/usr/local/sbin/vim/lib/systemd/system/nginx . service
3.部署两个tomcat应用服务器,并将所需的软件包转移到opt目录。
tomcat1:
system CTL stop firewall dset enforce 0 tar zxvf JDK -8u 91-Linux -x64 . tar . gz -C/usr/local/vim/etc/profile . d/JAVA . she export JAVA _ HOME =/usr/local/JDK 1 . 8 . 0 _ 91 export JRE _ HOME = $ { JAVA _ HOME }/JRE export class path =。:$ { JAVA _ HOME }/lib:$ { JRE _ HOME }/lib export PATH = $ { JAVA _ HOME }/bin:$ { JRE _ HOME }/bin:$ PATH source/etc/profile . d/JAVA . shtar zxvf Apache -Tomcat -8 . 5 . 16 . tar . gzmv/opt/Apache -Tomcat -8 . 5 . 16//usr/local/Tomcat/usr/local/Tomcat/bin/shut down . sh/usr/local/Tomcat/
CD/opt rpm -qpl JDK -8u 201-Linux -x64 . rpm rpm -IVH JDK -8u 201-Linux -x64 . rpm Java -version systemctl停止firewalldsystemctl禁用firewalldsetenforc e 0 tar zxvf Apache -TOMCAT -9 . 0 . 16 . tar . gzmkdir/usr/local/tomcatmv Apache -TOMCAT -9 . 0 . 16/us服务器端口="8006" shutdown="SHUTDOWN " >#22行,修改Server prot,默认为8005 ->:修改为8006;修改为8081;修改为8010-----------------------------------------------------4这个连接器是在通过浏览器访问Tomcat server的Web应用程序时使用的。第二个连接器默认监听端口8009,负责建立与其他HTTP服务器的连接。当Tomcat与其他HTTP服务器集成时,需要这个连接器。--------------------------------vim/usr/local/Tomcat/Tomcat 1/bin/startup . sh # -----------------4
tomcat2
4.静态和动态分离配置(1)Tomcat1服务器配置
mkdir/usr/local/Tomcat/web apps/test vim/usr/local/Tomcat/web apps/test/index . JSP & lt;% @ page language = " Java " import = " Java . util . * " page encoding = " ut F-8 " % & gt;& lthtml & gt& lthead & gt& lttitle & gtJSP test1页面& lt/title & gt;#指定为test1页</head & gt;& ltbody & gt& lt% out.println("动态页面1,http://www . test1 . com ");% & gt& lt/body & gt;& lt/html & gt;vim/usr/local/Tomcat/conf/server . XML #由于主机名配置是localhost,您需要删除以前的主机配置& ltcontext docBase = "/usr/local/Tomcat/web apps/test " path = " " reloadable = " true " & gt;& lt/Context & gt;& lt/Host & gt;/usr/local/Tomcat/bin/shut down . sh/usr/local/Tomcat/bin/startup . sh
(2)Tomcat2服务器配置
mkdir/usr/local/Tomcat/Tomcat 1/web apps/test/usr/local/Tomcat/Tomcat 2/web apps/test vim/usr/local/Tomcat/Tomcat 1/web apps/test/index . JSP & lt;% @ page language = " Java " import = " Java . util . * " page encoding = " ut F-8 " % & gt;& lthtml & gt& lthead & gt& lttitle & gtJSP test2页面& lt/title & gt;#指定为测试2页</head & gt;& ltbody & gt& lt% out.println("动态第二页,http://www . test 2 . com ");% & gt& lt/body & gt;& lt/html & gt;vim/usr/local/Tomcat/Tomcat 1/conf/server . XML #删除以前的主机配置< HOST name = " localhost " app base = " web apps " un packwars = " true " auto deploy = " true " XML validation = " false " xmlNamespaceAware = " false " & gt;& ltcontext docBase = "/usr/local/Tomcat/Tomcat 1/web apps/test " path = " " reloadable = " true "/& gt;& lt/Host & gt;/usr/local/Tomcat/Tomcat 1/bin/shut down . sh/usr/local/Tomcat/Tomcat 1/bin/startup . sh vim/usr/local/Tomcat/Tomcat 2/web apps/test/index . JSP & lt;% @ page language = " Java " import = " Java . util . * " page encoding = " ut F-8 " % & gt;& lthtml & gt& lthead & gt& lttitle & gtJSP test3页面& lt/title & gt;#指定为测试3页</head & gt;& ltbody & gt& lt% out.println("动态第三页,http://www . test 3 . com ");% & gt& lt/body & gt;& lt/html & gt;vim/usr/local/Tomcat/Tomcat 2/conf/server . XML #删除以前的主机配置< HOST name = " localhost " app base = " web apps " un packwars = " true " auto deploy = " true " XML validation = " false " xmlNamespaceAware = " false " & gt;& ltcontext docBase = "/usr/local/Tomcat/Tomcat 2/web apps/test " path = " " reloadable = " true "/& gt;& lt/Host & gt;/usr/local/Tomcat/Tomcat 2/bin/shut down . sh/usr/local/Tomcat/Tomcat 2/bin/startup . sh(3)nginx服务器配置
#准备静态页面和静态图片回显' < html & gt& ltbody & gt& lth1 & gt这是一个静态页面
5.测试效果测试静态页面效果。
请访问http://192.168.136.30/
通过浏览器进入http://192.168.136.30/game.jpg。
测试负载均衡效果,不断刷新浏览器测试。
浏览器访问http://192 . 168 . 136 . 30/index . JSP。
nginx负载均衡中的4层代理和7层代理
4层代理和7层代理。这里的层是OSI 7层网络模型。OSI模型是自上而下的。层越低,离硬件越近,层越高,离软件越近。这七层是物理层、数据链路层、网络层、传输层、会话层、表示层和应用层。
第4层是指传输层的tcp/udp。第7层是指应用层,通常是http。
代理原则第4层使用NAT技术。NAT的全称是& ldquo网络地址转换& rdquo,中文意思是& ldquo网络地址转换& rdquo当请求进来时,nginx修改包中的目的地和源IP和端口,然后将包发送到目的地服务器。在服务器处理它之后,nginx进行另一次修改,并将其返回给发出请求的客户机。
第七层代理:需要读取并解析http请求内容,然后根据具体内容(url、参数、cookie、请求头)转发给相应的服务器。转发的过程是:与目标机器建立连接,然后转发请求,并接收响应数据,转发给请求客户端。
性能对比优缺点:理论上第四层比第七层快,因为第七层代理需要解析数据包的具体内容,这需要额外的cpu。但是nginx有很强的网络并发处理能力。对于一些比较慢的连接,nginx可以先缓冲网络请求数据,一次性转发给上游服务器。对于上游网络并发处理能力较弱的服务器(如tomcat),这意味着慢速连接对于tomcat来说变成了快速连接(nginx到tomcat基本都是可靠的内网),从而节省网络数据缓冲时间,提供并发性能。
灵活性:由于第四层代理使用NAT,nginx不知道请求的具体内容,所以nginx什么也做不了。使用7层代理,您可以根据请求内容(url、参数、cookie、请求头)做许多事情,例如:
答:动态代理:不同的URL被转发到不同的服务器。
B.风险控制:屏蔽一些敏感网址;由外部网络IP请求;根据参数可以屏蔽部分用户。
C.审计:在nginx层记录请求日志。
nginx反向代理代理服务器支持的代理类型第7层反向代理第4层反向代理正向代理客户端代理缓存
Nginx负载均衡模式●rr负载均衡模式:每个请求按照时间顺序逐一分配到不同的后端服务器。如果超过最大失败次数(max _ failures,默认为1),在失败时间(fail_timeout,默认为10秒)内,节点的失败权重变为0。如果超过故障时间,它将恢复正常,或者如果所有节点都关闭,则所有节点都将恢复为有效,以继续探测。
●最少连接●least_conn:优先调度客户端请求到当前连接最少的服务器。
●ip_hash负载均衡模式:根据ip访问的哈希结果分配每个请求,使每个访问者固定访问一个后端服务器,可以解决会话的问题。但是ip_hash会造成负载不均衡,有些服务请求接收的多,有些接收的少,所以不建议采用ip_hash模式。会话共享可以用后端服务的会话共享代替nginx的ip_hash(利用后端服务器本身通过相关机制保持会话同步)。
●公平(第三方)负载均衡模式:根据后端服务器的响应时间分配请求,响应时间短的优先。
●url_hash(第三方)负载均衡模式:基于用户请求的uri哈希。类似于ip_hash算法,根据url的哈希结果分配每个请求,这样每个URL都被定向到同一个后端服务器,但是也会造成分配不均的问题。当后端服务器被缓存时,这种模式更好。
Nginx四层代理配置。/configure --with-stream和http是一个级别的:所以一般只设置在http的上段,stream { upstream appserver { server 192 . 168 . 136 . 20:8080 weight = 1;服务器192.168.136.40:8080权重= 1;服务器192.168.136.40:8081权重= 1;} server { listen 8080proxy _ pass appserver}}http {.....以上是Nginx Tomcat负载均衡动静分离原理分析的详细内容。关于Nginx Tomcat负载均衡动静分离的更多信息,请关注主机频道zhujipindao的其他相关文章。com!
评论前必须登录!
注册