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一起用

  

 

posted @ 2020-09-23 10:55  断浪狂刀忆年少  阅读(202)  评论(0编辑  收藏  举报