最近这几天,
特斯拉刹车失灵
这个事儿闹得挺大的。对于这件事儿,个人也思考了一下。感觉国内的执法人员素质急需提高。受害者只是想讨回公道,却被行政拘留5天。对比一下外国执法部门直接搜查特斯拉,感觉差距太大了。有可能是特斯拉的公关能力特别强,呵呵。然后就是安全问题。汽车联网以后,汽车的行驶安全问题是个大问题。因为汽车不是手机,手机可能会造成个人信息泄露,但是手机坏了一般不会成为杀人工具。但是汽车就不一样了,刹车失灵,电池自燃等问题,有可能会驾驶及乘车人员造成一些不可逆的伤害,这些伤害包括致残,致死。同时,汽车联网以后,因为大部分对互联网认识很浅,所以没什么概念,但是假如有黑客进入汽车的控制系统,那么这个问题就太可怕了
前情回顾
上篇文章主要分享了正向代理
和反向代理
的概念。今天分享一下关于Nginx负载均衡
的概念及简单配置。
负载均衡
Nginx服务器反向代理服务的一个重要用途是实现负载均衡。
当业务量急剧升高,访问量和数据流量飞速增长的时候,最网络本身处理能力和计算能力的要求也越来越高。但是现有的硬件设施满足不了需求,这时候就需要负载均衡
这样的技术。
网络负载均衡技术的大致原理是利用一定的分配策略将网络负载平衡地分摊到网络集群的各个操作单元上,使得单个重负载任务能够分担到多个单元上并行处理,或者使得大量并发访问或数据流量分担到多个单元上分别处理,从而减少用户的等待响应时间
。
Nginx服务器负载均衡配置
理解了负载均衡
的概念,就可以利用Nginx服务器实现负载均衡的配置了。Nginx服务器实现了静态的基于优先级的加权轮询算法,主要使用的配置是proxy_pass
指令和upsteam
指令,这些内容实际上很容易理解,关键点在于Nginx服务器的配置灵活多样,如何在配置负载均衡的同时合理地融合其他功能,形成一套可以满足实际需求的配置方案。
对所有请求实现一般轮询规则的负载均衡
在以下实例片段中,backend服务器组中所有服务器的优先级全部配置为默认的weight=1,这样它们会按照一般轮询策略依次接收请求任务。该配置是一个最简单的实现Nginx服务器负载均衡的配置。所有访问909500.club的请求都会在backend服务器组中实现负载均衡。
代码语言:javascript复制# 配置后端服务器组 默认weight=1
upstream backend {
server 192.168.1.2:80;
server 192.168.1.3:80;
server 192.168.1.4:80;
}
server {
server_name 909500.club;
listen 80;
location /
{
proxy_pass http://backend;
proxy_set_header Host $host;
}
}
对所有请求实现加权轮询规则的负载均衡
在该实例片段中,backend服务器组中的服务器被赋予了不同的优先级别,weight变量的值就是轮询策略中的“权值”。其中,192.168.1.2:80的级别最高,优先接收和处理客户端请求;192.168.1.4:80的级别最低,是接收和处理客户端请求最少的服务器,192.168.1.3:80将介于以上两者之间。所有访问909500.club的请求都会在backend服务器组中实现加权负载均衡。
代码语言:javascript复制## 配置后端服务器组 默认weight=1
upstream backend {
server 192.168.1.2:80 weight=5;
server 192.168.1.3:80 weight=4;
server 192.168.1.4:80 weight=3;
}
server {
server_name 909500.club;
listen 80;
location /
{
proxy_pass http://backend;
proxy_set_header Host $host;
}
}
对特定资源实现负载均衡
在该实例片段中,我们设置了两组被代理的服务器组,名为videobackend
的一组用于对请求video资源的客户端请求进行负载均衡,另一组用于对请求file资源的客户端请求进行负载均衡。通过对location块uri的不同配置,我们就很轻易地实现了对特定资源的负载均衡。
## 配置后端服务器组 默认weight=1
upstream videobackend {
server 192.168.1.2:80 weight=5;
server 192.168.1.3:80 weight=4;
server 192.168.1.4:80 weight=3;
}
upstream filebackend {
server 192.168.1.5:80 weight=5;
server 192.168.1.6:80 weight=4;
server 192.168.1.7:80 weight=3;
}
server {
server_name 909500.club;
listen 80;
# 使用vidoebackend 服务器组
location /video/
{
proxy_pass http://videobackend;
proxy_set_header Host $host;
}
# 使用fileebackend 服务器组
location /file/
{
proxy_pass http://filebackend;
proxy_set_header Host $host;
}
}
对不同域名实现负载均衡
我们设置了两个虚拟服务器和两组后端被代理的服务器组,分别用来接收不同的域名请求和对这些请求进行负载均衡处理。如果客户端请求域名为wx.909500.club
,则由服务器server 1接收并转向wxbackend服务器组进行负载均衡处理;如果客户端请求域名为pc.909500.club
,则由服务器server2接收并转向pcbackend服务器组进行负载均衡处理。这样就实现了对不同域名的负载均衡。
需要注意两组后端服务器组中有一台服务器server 192.168.1.4:80是公用的。在该服务器上需要部署两个域名下的所有资源才能保证客户端请求不会出现问题
。
## 配置后端服务器组 默认weight=1
upstream wxbackend {
server 192.168.1.2:80 weight=5;
server 192.168.1.3:80 weight=4;
server 192.168.1.4:80 weight=3;
}
upstream pcbackend {
server 192.168.1.4:80 ;
server 192.168.1.5:80 ;
server 192.168.1.6:80 ;
}
# 服务1 微信用
server {
server_name wx.909500.club;
listen 80;
# 使用vidoebackend 服务器组
location /
{
proxy_pass http://wxbackend;
proxy_set_header Host $host;
}
}
# 服务2 pc用
server {
server_name pc.909500.club;
listen 80;
# 使用vidoebackend 服务器组
location /
{
proxy_pass http://pcbackend;
proxy_set_header Host $host;
}
}
总结
- 简单介绍一下
负载均衡的概念
- 了解一个
如何配置负载均衡
javascript基础知识总结