静态网站部署
nginx是一个http的web服务器,可以将服务器上的静态文件(html、css、图片)通过HTTP协议返回给浏览器客户端。
举例:我们在服务器上部署一个静态资源index.html
将index.html上传至linux /opt/www/test
修改nginx.conf 增加一个location,拦截/test的请求,root 对应的/opt/www路径代表根路径,也就是/test前面的/斜杠
location /test {
root /opt/www;
index index.html;
}
启动nginx或者重新加载nginx
我们访问下:http://192.168.253.130/test/
负载均衡
负载均衡可以分为硬件负载均衡和软件负载均衡
硬件负载均衡,比如F5、深信服、Array等,优点是有厂商专业团队支持,性能稳定;缺点是价格昂贵
软件负载均衡,比如Nginx、LVS、HAProxy等,优点是免费开源,成本低廉
轮询法:将请求按顺序轮流地分配到后端服务器上,它均衡地对待后端的每一台服务器,而不关心服务器实际的连接数和当前的系统负载。
http {
upstream test{
##后端实际服务器 nginx在轮询访问以下几台服务器
server 10.100.30.1:8080;
server 10.100.30.2:8080;
server 10.100.30.3:8080;
server 10.100.30.4:8080;
}
server {
##前端拦截入口
listen 80;
server_name www.test.com;
location / {
proxy_pass http://test;
}
}
}
加权轮询法:不同的后端服务器可能机器的配置和当前系统的负载并不相同,因此它们的抗压能力也不相同。给配置高、负载低的机器配置更高的权重,让其处理更多的请;而配置低、负载高的机器,给其分配较低的权重,降低其系统负载,加权轮询能很好地处理这一问题,并将请求顺序且按照权重分配到后端。
http {
upstream test{
##后端实际服务器 nginx在轮询访问以下几台服务器
server 10.100.30.1:8080 weight=1;
server 10.100.30.2:8080 weight=3;
server 10.100.30.3:8080 weight=1;
server 10.100.30.4:8080 weight=1;
}
server {
##前端拦截入口
listen 80;
server_name www.test.com;
location / {
proxy_pass http://test;
}
}
}
源地址哈希法:根据获取客户端的IP地址,通过哈希函数计算得到一个数值,用该数值对服务器列表的大小进行取模运算,得到的结果便是客服端要访问服务器的序号。采用源地址哈希法进行负载均衡,同一IP地址的客户端,当后端服务器列表不变时,它每次都会映射到同一台后端服务器进行访问。
upstream test{
ip_hash;
server 10.100.30.1:8080 weight=1;
server 10.100.30.2:8080 weight=3;
server 10.100.30.3:8080 weight=1;
server 10.100.30.4:8080 weight=1;
}
最小连接数法:由于后端服务器的配置不尽相同,对于请求的处理有快有慢,最小连接数法根据后端服务器当前的连接情况,动态地选取其中当前积压连接数最少的一台服务器来处理当前的请求,尽可能地提高后端服务的利用效率,将负责合理地分流到每一台服务器。
upstream test{
least_conn;
server 10.100.30.1:8080;
server 10.100.30.2:8080;
server 10.100.30.3:8080;
server 10.100.30.4:8080;
}
down:表示停掉某台服务
upstream test{
server 10.100.30.1:8080 down;
server 10.100.30.2:8080;
server 10.100.30.3:8080;
server 10.100.30.4:8080;
}
backup:指定备用服务器,正常情况下只要有其他服务器能正常访问,备用服务器不会被访问到,只有其他服务器都挂掉的时候,才会使用备用服务器,所以采用这种方式一般用来实现热部署,先把代码更新到备用服务器上,然后停掉正常服务器,正常服务器部署完成后,备用服务器又处于等待状态,整个部署过程使用户能够感受不到停机。
upstream test{
server 10.100.30.1:8080 backup;
server 10.100.30.2:8080 backup;
server 10.100.30.3:8080;
server 10.100.30.4:8080;
}