NginxLB,LB动静分离

root
233
文章
0
评论
2020年5月24日21:16:03 评论 5002字阅读16分40秒

Nginx负载均衡

Nginx WEB默认发布静态页面,也可以均衡后端动态网站,用户发起HTTP请求,如果请求静态页面,Nginx直接处理并返回,如果请求的是动态页面,Nginx收到请求之后会进行判断,转到后端服务器去处理。
Nginx实现负载均衡需要基于upstream模块,同时需要设置location proxy_pass转发指令实现。
Ningx应用负载均衡集群配置,根据后端实际情况修改即可,thinkmo为负载均衡模块的名称,可以任意指定,但必须跟vhosts.conf、Nginx.conf虚拟主机的proxy_pass段保持一致,否则不能将请求转发至后端的服务器,weight表示配置权重,在fail_timeout内检查max_fails次数,失败则剔除均衡。

LB与LB2的bbs.hwf.com 、blog.hwf.com

[root@LB2 ~]# cd /usr/local/domain/
[root@LB2 domain]# vim hwf.com
upstream web_discuz {
        rr;
        server 192.168.1.220:80 weight=1 max_fails=2 fail_timeout=30s;
        server 192.168.1.230:80 weight=1 max_fails=2 fail_timeout=30s;
  }

Nginx负载常用算法

rr 轮询    -- 一人一次,不支持会话保持
weight    --加权轮询 指定优先级
ip_hash  -- 根据用户的IP,进行分配,只要不关机,就一只访问一个,支持会话保持

url_hash  --绑定访问端的url地址,锁死路径再来的话,上次访问的哪个路径还去那里(没什么用)least_conn --最小连接数,哪个机器连接数少就分发

算法使用方法

  • 写在upstream池子里IP地址后面

Nginx负载动静分离

动静分离的要求:

只能在7层上做,根据资源内容

动静分离的好处:

好处就是动态的资源出了问题不影响静态,静态的资源出了问题不影响动态

环境准备

Centos7.5 负载均衡 Nginx Proxy 10.0.0.5

Centos7.5 静态资源 Nginx static 10.0.0.7

Centos7.5 动态资源 Nginx Tomcat server 10.0.0.8

静态资源操作

//在10.0.0.7服务器上配置静态资源

vim ds_kk.conf
server {
        listen 80;
        server_name localhost;
        location / {
                root /soft/code;
                index index.html;
        }
        location ~* .*\.
(html|htm|js|png|jpg|gif|css|jpeg|txt|gz|bz2|zip|bmp|doc|xls|docx)$ 
       {
                root /soft/code/images;
        }
}

/soft/code/images/这个目录专门是存图片的

//准备目录,以及静态相关图片

mkdir -p /soft/code/images/
wget -O /soft/code/images/nginx.png http://nginx.org/nginx.png
systemctl restart nginx

动态资源操作

动态页面不用做域名,负载均衡会根据静态页面进行跳转

我的理解是把静态资源摘出去剩下的就是动态资源,什么也不用改,什么也不用动

//下载tomcat帮我们解析java

tomcat能和nginx同时工作因为它默认监听的端口是8080;帮我们解析java的

yum install -y tomcat
systemctl start tomcat

//创建动态资源目录

这个ROOT目录必须要求大写

mkdir /usr/share/tomcat/webapps/ROOT/

vi /usr/share/tomcat/webapps/ROOT/java_test.jsp

<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<HTML>
    <HEAD>
        <TITLE>JSP Test Page</TITLE>
    </HEAD>
    <BODY>
      <%
        Random rand = new Random();
        out.println("<h1>Random number:</h1>");
        out.println(rand.nextInt(99)+100);
      %>
    <BODY>
</HTML>

负载均衡调用测试

//在负载均衡10.0.0.5上配置调度,实现访问jsp和png

这里动态资源主机和静态资源主机就都只有一台,要是台数多在虚拟池里写就行了

upstream static {
        server 10.0.0.7:80;
}
upstream java {
        server 10.0.0.8:8080;
}
server {
        listen 80;
        server_name www.hebbao.com;
        location / {
                root /soft/code/;
                index index.html;
        }
        location ~ .*\. (html|htm|js|png|jpg|gif|css|jpeg|txt|gz|bz2|zip|bmp|doc|xls|docx)$ 
       {
                proxy_pass http://static;
                index proxy_params;
        }
        location ~ .*\.  (jsp|php|cgi|do)$  
       {
                proxy_pass http://java;
                include proxy_params;
        }
}

负载均衡整合静态和动态

这个是在负载均衡上做的,因为负载均衡上是站点页面,其它后端只是分别存放静态资源和动态资源

这是nginx负载均衡的动静分离,要是单个web的动静分离只能在本地不同的目录做这个事情

mkdir -p /soft/code/

vim /soft/code/index.html

<html lang="en">
<head>
	<meta charset="UTF-8" />
	<title>测试ajax和跨域名访问</title>
	<script src="https://libs.baidu.com/jquery/2.1.4/jquery.min.js"></script>
</head>
<script type="text/javascript">
$(document).ready(function(){
	$.ajax({
	type: "GET",
	url: "https://www.hebbao.com/java_test.jsp",
	success: function(data) {
		$("#get_data").html(data)
	},
	error: function() {
		alert("fail!!,请刷新再试!");
	}
	});
});
</script>
	<body>
		<h1>测试动静分离</h1>
		<img src="https://www.hebbao.com/nginx.png">
		<div id="get_data"></div>
	<body>
</html>

这个代码,可以实现动静结合起来显示,这个不是运维能干的事情,我们只需要告诉开发,这个目录放至动静结合的站点首页

Nginx Location深入解析

Nginx由内核和模块组成,其中内核的设计非常微小和简洁,完成的工作也非常简单,仅仅通过查找配置文件将客户端的请求映射到一个location block,而location是Nginx配置中的一个指令,用于访问的URL匹配,而在这个location中所配置的每个指令将会启动不同的模块去完成相应的工作。
默认Nginx.conf配置文件中至少存在一个location /,即表示客户端浏览器请求的URL为:域名+/,如果location /newindex/,则表示客户端浏览器请求的URL为:域名+/newindex/。常见Location匹配URL的方式如下:
=                               字面精确匹配;
^~                              最大前缀匹配;
/                               不带任何前缀;
~                               大小写相关的正则匹配;
~*                              大小写无关的正则匹配;
@                               location内部重定向的变量。
其中Location =、^~、/属于普通字符串匹配,Location ~、~*属于正则表达式匹配,Location优先级与其在Nginx.conf配置文件中的先后顺序无关。
Location = 精确匹配会第一个被处理,如果发现精确匹配,Nginx则停止搜索其他任何Location的匹配。
普通字符匹配,正则表达式规则和完整URL规则将被优先和查询匹配,^~为最大前缀匹配,如果匹配到该规则,Nginx则停止搜索其他任何Location的匹配,否则nginx会继续处理其他location指令。
正则匹配"~"和"~*",如果找到相应的匹配,则Nginx停止搜索其他任何Location的匹配;当没有正则表达式或者没有正则表达式被匹配的情况下,那么匹配程度最高的逐字匹配指令会被使用。
Location规则匹配优先级总结如下:
(location =) > (location 完整路径) > (location ^~ 路径) > (location ~|~* 正则顺序) > (location 部分起始路径) > (/)

如下为Nginx Location规则案例演示:

location  = / {
  [ configuration  L1 ]
  #只会匹配/,优先级比Location /低。
}
location  = /index.html {
  [ configuration  L2 ]
#只会匹配/index.html,优先级最高。
}
location  / {
  [ configuration L3 ]
  #匹配任何请求,因为所有请求都是以"/"开始;
  #但是更长字符匹配或者正则表达式匹配会优先匹配,优先级最低。
}
location = /images/ {
  [ configuration L4 ]
  #匹配任何以/images/开始的请求,并停止匹配其它location;
}
location ~* \.(html|txt|gif|jpg|jpeg)$ {
  [ configuration L5]
  # 匹配以html、txt、gif、jpg、jpeg结尾的URL文件请求;
  # 但是所有/images/目录的请求将由 [Configuration L4]处理。
}
浏览器发起HTTP Request URI案例与Location规则案例匹配如下:
* / ->匹配configuration L3;
* /index.html匹配configuration L2;
* /images/匹配configuration L4;
* /images/logo.png匹配configuration L4;
* /img/test.jpg匹配configuration L5。
企业生产环境中无需在Nginx.conf配置文件中同时添加五种规则匹配,如下为企业生产环境Nginx Location部分配置代码:
location /
{
    root /var/www/html/;
    expires      60d;
}
location ~ .*\.(gif|jpg|jpeg|bmp|png|ico|txt|js|css)$
{
    root /var/www/html/;
    expires      60d;     
}
location ~ .*\.(jsp|php|cgi|do)$
{
    root /var/www/html/;
    proxy_pass http://linux_web;
    proxy_http_version 1.1;
    proxy_set_header Connection "";
    proxy_set_header Host  $host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;   
}
location =/newindex.html
{
    root /var/www/newwww/;
    expires      60d;
}

 

 

 

继续阅读
weinxin
我的微信
这是我的微信扫一扫
  • 文本由 发表于 2020年5月24日21:16:03
  • 除非特殊声明,本站文章均为原创,转载请务必保留本文链接
Nginx 日志分析 Nginx

Nginx 日志分析

Nginx web日志分析 Nginx是一款Web软件,生产环境应用场景: 1、做为web服务器,发布网站代码(处理静态); 2、做为负载均衡软件,可以均衡后端业务 3、做为会话保持软件,将某个会话固...
Nginx 性能调优 Nginx

Nginx 性能调优

Nginx 性能调优 Nginx.conf配置文件常用参数详解 #定义Nginx运行的用户和用户组 user  www  www; #启动进程,通常设置成和cpu的数量相等 worker_proces...
Nginx Rewrite Nginx

Nginx Rewrite

Nginx Rewrite Rewirte规则也称为规则重写,主要功能是实现浏览器访问HTTP URL的跳转(当访问不存在的路径时 -- 跳转到首页  通常而言,几乎所有的WEB服务器均可以支持URL...
NginxLB单点问题之VIP漂移 Nginx

NginxLB单点问题之VIP漂移

NginxLB单点问题之VIP漂移   当前拓扑存在的问题:  Nginx具备单点故障 解决方案: 使用VIP漂移 原理就是两台负载均衡服务器使用相同的子网卡配置信息,虚拟IP地址,通过sh...
匿名

发表评论

匿名网友 填写信息

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: