我们已经明确了所谓代理服务器的概念,那么接下来,nginx扮演了反向代理服务器的角色,它是以依据什么样的规则进行请求分发的呢?不用的项目应用场景,分发的规则是否可以控制呢?
这里提到的客户端发送的、nginx反向代理服务器接收到的请求数量,就是我们说的负载量
请求数量按照一定的规则进行分发到不同的服务器处理的规则,就是一种均衡规则
所以~将服务器接收到的请求按照规则分发的过程,称为负载均衡。
负载均衡在实际项目操作过程中,有硬件负载均衡和软件负载均衡两种,硬件负载均衡也称为硬负载,如F5负载均衡,相对造价昂贵成本较高,但是数据的稳定性安全性等等有非常好的保障,如中国移动中国联通这样的公司才会选择硬负载进行操作;更多的公司考虑到成本原因,会选择使用软件负载均衡,软件负载均衡是利用现有的技术结合主机硬件实现的一种消息队列分发机制.
详细集群知识学习 >>> 点击
集群是一种计算机系统,它通过一组松散集成的计算机软件和/或硬件连接起来高度紧 密地协作完成计算工作。在某种意义上,他们可以被看作是一台计算机。集群系统中的单个 计算机通常称为节点,通常通过局域网连接,但也有其它的可能连接方式。集群计算机通常 用来改进单个计算机的计算速度和/或可靠性。一般情况下集群计算机比单个计算机,比如 工作站或超级计算机性能价格比要高得多。
集群拥有以下两个特点:
1. 可扩展性:集群的性能不限制于单一的服务实体,新的服务实体可以动态的添加到集群,
从而增强集群的性能。
2. 高可用性:集群当其中一个节点发生故障时,这台节点上面所运行的应用程序将在另一
台节点被自动接管,消除单点故障对于增强数据可用性、可达性和可靠性是非常重要的。
负载均衡:负载均衡把任务比较均匀的分布到集群环境下的计算和网络资源,以提高数据吞吐量
错误恢复:如果集群中的某一台服务器由于故障或者维护需要无法使用,资源和应用序将转移到可用的集群节点上。这种由于某个节点的资源不能工作,另一个可用节点中的资源能够透明的接管并继续完成任务的过程,叫做错误恢复。
负载均衡和错误恢复要求各服务实体中有执行同一任务的资源存在,而且对于同一任务的各
个资源来说,执行任务所需的信息视图必须是相同的。
说到集群,可能大家会立刻联想到另一个和它很相近的一个词—-“分布式”。那么集
群和分布式是一回事吗?有什么联系和区别呢?
相同点:
分布式和集群都是需要有很多节点服务器通过网络协同工作完成整体的任务目标。
不同点:
分布式是指将业务系统进行拆分,即分布式的每一个节点都是实现不同的功能。而集群
每个节点做的是同一件事情。
nginx负载均衡配置
步骤1. 环境准备,准备3台服务器
192.168.12.96 nginx入口node1
192.168.12.67 chenchen的应用服务器
192.168.12.38 weihua的应用服务器
步骤2. 关闭所有机器的防火墙
步骤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 "我是weihua
"
if __name__=="__main__":
app.run(host='0.0.0.0',port=8000)
3.启动应用服务器
python3 myflask.py
步骤5. 配置chenchen的应用服务器
1.准备一个flask代码,运行
pip3 install flask
2.准备代码 myflask.py
from flask import Flask
app=Flask(__name__)
@app.route('/')
def hello():
return "我是chenchen
"
if __name__=="__main__":
app.run(host='0.0.0.0',port=8000)
3.启动应用服务器
python3 myflask.py
步骤6. 通过访问nginx负载均衡器入口,查看负载均衡 是否正常分配,默认是轮训方式
访问自己的nginx负载均衡的ip地址,查看结果
发现有显示是在chenchen和weihua之间轮询.
轮询方式只是负载均衡配置的方式之一,更多的负载均衡配置方式需要修改配置文件nginx.conf中的upstream字段,进一步学习点击如下 >>>>
ninx负载均衡