• Linux-14 Nginx负载均衡


    Nginx代理

    1.正向代理

    代理的是客户端,假设我是一个用户,我访问不了某网站,但是我能访问一个代理服务器,这个代理服务器呢,他能访问那个我不能访问的网站,于是我先连上代理服务器,告诉他我需要那个无法访问网站的内容,代理服务器去取回来,然后返回给我。
    

    2.反向代理

    代理的是服务端,对于客户端而言,代理服务器就像是原始服务器。
    

    3.实现一个简单的反向代理

    1.配置方式,准备2台机器
    在机器1中,添加参数
    server {
           listen 80;
    		  server_name  www.s14huoying.com;
    		  location / {
    		  proxy_pass http://192.168.12.38;  #请求会直接转发给node2节点,也就是http://192.168.12.38; 
    }
    
    2.在两台机器上,检测access.log ,查看请求来源
    
    #nginx的反向代理功能就是 proxy_pass参数
    #xshell的快捷用法:找到查看 >  撰写  >撰写栏
    

    Nginx负载均衡概述

    Web服务器,直接面向用户,往往要承载大量并发请求,单台服务器难以负荷,我使用多台WEB服务器组成集群,前端使用Nginx负载均衡,将请求分散的打到我们的后端服务器集群中,
    实现负载的分发。那么会大大提升系统的吞吐率、请求性能、高容灾

     

    Nginx要实现负载均衡需要用到proxy_pass代理模块配置

    Nginx负载均衡与Nginx代理不同地方在于

    Nginx代理仅代理一台服务器,而Nginx负载均衡则是将客户端请求代理转发至一组upstream虚拟服务池

    Nginx可以配置代理多台服务器,当一台服务器宕机之后,仍能保持系统可用。

    nginx负载均衡配置

    1.环境准备,准备3台服务器

    192.168.12.96   nginx入口node1
    192.168.12.67   康琛的应用服务器
    192.168.12.38   伟华的应用服务器
    

    2.关闭所有机器的防火墙

    iptables -F
    

      

    3.在node1节点上配置负载均衡配置(发牌人)

    1.修改配置文件nginx.conf ,写入如下配置
    	#定义负载均衡池名字叫做s14django
    	upstream s14django {   
    		#池子中存放2个服务器,默认轮训方式调度服务器
    		server 192.168.12.38:8000; 
    		server 192.168.12.67:8000;
    	}
    	#root参数定义网页的根目录,可以写在虚拟主机内,局部变量
    	#如果写在server标签外,就是全局变量
    	root html;
    	#虚拟主机1
    	server {
    	   listen 80;
    	   server_name  www.s14huoying.com;
    	  location / {
    	  
    	  #当请求发送到www.s14huoying.com的时候,匹配到 /  ,就执行以下代码
    	  proxy_pass http://s14django;
    	  #包含语法参数,将一个配置文件添加到当前虚拟主机生效,这个文件要手动创建
    	  #这个proxy_params文件创建在/opt/nginx1-12/conf底下
    	  include proxy_params;
    	}
    	}
    2.手动创建这个参数文件
    touch /opt/nginx1-12/conf/proxy_params
    写入信息
    	proxy_set_header Host $http_host;
    	proxy_set_header X-Real-IP $remote_addr;
    	proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    
    	proxy_connect_timeout 30;
    	proxy_send_timeout 60;
    	proxy_read_timeout 60;
    
    	proxy_buffering on;
    	proxy_buffer_size 32k;
    	proxy_buffers 4 128k;
    

      

    4.配置weihua的应用服务器

    1.准备一个flask代码,运行  
    pip3 install flask
    2.准备代码  myflask.py 
    	from flask import Flask
    	app=Flask(__name__)
    	@app.route('/')
    	def hello():
    	return "<h1>我是伟华</h1>"
    	if __name__=="__main__":
    	app.run(host='0.0.0.0',port=8000)
    3.启动应用服务器
    python3 myflask.py 
    

    5.配置chenchen的应用服务器

    pip3 install flask
    2.准备代码  myflask.py 
    	from flask import Flask
    	app=Flask(__name__)
    	@app.route('/')
    	def hello():
    	return "<h1>我是琛琛</h1>"
    	if __name__=="__main__":
    	app.run(host='0.0.0.0',port=8000)
    3.启动应用服务器
    python3 myflask.py 
    

    6.启动nginx,

    ./sbin/nginx

        通过访问nginx负载均衡器入口,查看负载均衡 是否正常分配,默认是轮训方式

    1.访问自己的nginx负载均衡的ip地址,查看结果

      

    upstream分配策略

    weight 权重

    upstream django {
           server 10.0.0.10:8000 weight=5;
           server 10.0.0.11:9000 weight=10;#这个节点访问比率是大于8000的
    }

    nginx负载均衡调度算法

    调度算法      概述
    轮询        按时间顺序逐一分配到不同的后端服务器(默认)
    weight       加权轮询,weight值越大,分配到的访问几率越高
    ip_hash      每个请求按访问IP的hash结果分配,这样来自同一IP的固定访问一个后端服务器
    url_hash      按照访问URL的hash结果来分配请求,是每个URL定向到同一个后端服务器
    least_conn    最少链接数,那个机器链接数少就分发

    1.轮询(不做配置,默认轮询)

    2.weight权重(优先级)

    3.ip_hash配置,根据客户端ip哈希分配,不能和weight一起用

      

    幻想毫无价值,计划渺如尘埃,目标不可能达到。这一切的一切毫无意义——除非我们付诸行动。
  • 相关阅读:
    事务及存储过程
    索引细讲
    数据库练习题
    position: absolute 或 display:table 的水平垂直居中
    bootstrap table 文字超出父div范围
    css 图片不定大小不压缩、不变形的对齐
    vue3.0 + svg 图标
    vue eslint(indent) 空格缩进报错
    vue3.0 + fontAwesome 图标
    vue3.0 + ts + element-plus + i18n 中英文切换
  • 原文地址:https://www.cnblogs.com/TodayWind/p/13716910.html
Copyright © 2020-2023  润新知