上期课程疑问解答

文件上传413错误解决

上传过大的文件,需要修改nginx和php的配置文件

nginx虚拟主机配置文件,默认1M

在server中加入以下内容,将上传文件大小改为50m

client_max_body_size 50m;

php.ini配置文件,默认2M

修改php.ini中的配置文件,将上传文件大小改为50M

upload_max_filesize = 50M

让LNMP架构和存储服务器建立关系

  • 找出图片的存储路径
  1. 可以通过图片的链接信息查找
  2. 一般图片存储在站点目录,可以根据上传时间使用find命令查找也可以通过inotifywait命令监控目录
find /html/blog -type f -mmin -5
inotifywait -mrq /html/blog
  • 使web服务器和存储服务器建立关系

将目录的数据备份后,再将nfs挂载到服务器的上传目录

在nfs服务器中,设置挂载目录的属主和属组,同时也需要注意用户之间的转换和设置用户的uid和gid以及文件目录的归属信息

#服务端和客户端的用户的id需要相同
sed -ri.bak 's#(sync)#\1,anonuid=1002,anongid=1002#g' /etc/exports

负载均衡的概念说明

什么是集群

  • 完成相同任务或工作的一组服务器

什么是负载均衡

  • 实现用户访问请求进行调度分配,分担用户访问压力

什么是反向代理

  • 反向代理:外网->代理服务器->公司网站服务器
  • 正向代理:内网->代理服务器->互联网->web服务器(VPN)

准备负载均衡的环境

主机名称和IP地址规划

服务 主机名 eth0网卡IP eth1网卡IP 软件
防火墙服务器 firewalld 10.0.0.81 172.16.1.81 firewalld
负载均衡服务器 lb01 10.0.0.5 172.16.1.5 nginx,keepalived
负载均衡服务器 lb02 10.0.0.6 172.16.1.6 nginx,keepalived
web服务器 web01 10.0.0.7 172.16.1.7 nginx
web服务器 web02 10.0.0.8 172.16.1.8 nginx
web服务器 web03 10.0.0.9 172.16.1.9 nginx
存储服务器 nfs01 10.0.0.31 172.16.1.31 nfs
备份服务器 backup 10.0.0.41 172.16.1.41 rsync
数据库服务器 db01 10.0.0.51 172.16.1.51 mysql,mariaDB
批量管理服务器 m01 10.0.0.61 172.16.1.61 ansible
跳板机服务器 jumpserver 10.0.0.71 172.16.1.71 jumpserver
监控服务器 zabbix 10.0.0.72 172.16.1.72 zabbix
缓存服务器 暂无 暂无 暂无 暂无
  1. 部署好一台web服务器
  2. 进行访问测试
  3. 批量部署多台web服务器
  4. 将nginx配置文件进行分发
  5. 将站点目录分发给所有主机

负载均衡服务器部署

安装nginx

编写nginx负载服务配置文件并重启

upstream 1997sty {
   server 10.0.0.7:80;
   server 10.0.0.8:80;
   server 10.0.0.9:80;
}
server {
    listen       80;
    server_name  www.1997sty.com;
    location / {
       proxy_pass http://1997sty;
    }
}

upstream

  • nginx负载均衡模块: ngx_http_upstream_module

proxy_pass

  • nginx反向代理模块: ngx_http_proxy_module

抓包.png

  • 配置完web服务器和本地hosts文件后直接访问,会通过负载均衡服务器会将请求分发到三台web服务器

nginx负载均衡模块修改其他参数

server.png

实现不同调度功能

upstream 1997sty {
  server 10.0.0.7:80 weight=3;
  server 10.0.0.8:80 weight=2;
  server 10.0.0.9:80 weight=1;
}
  • 访问会根据配置的数值来分配请求,请求6次(分别为3次10.0.0.7,2次10.0.0.8,1次10.0.0.9)

实现热备功能

upstream 1997sty {
  server 10.0.0.7:80;
  server 10.0.0.8:80;
  server 10.0.0.9:80 backup;
}
  • 当所有其他服务器不可用时,负载均衡就会把请求发送给热备web服务器

定义最大失败次数和失败之后重发的间隔时间

#默认是1次和10秒

upstream 1997sty {
  server 10.0.0.7:80;
  server 10.0.0.8:80;
  server 10.0.0.9:80 max_fails=5 fail_timeout=5s;
}

实现不同调度算法

  • 根据ip计算出一个值,根据这个值来分配访问的服务器,每次访问请求都会发送到同一台服务器上,实现了会话保持
upstream 1997sty {
  ip_hash;
  server 10.0.0.7:80;
  server 10.0.0.8:80;
  server 10.0.0.9:80;
}

nginx反向代理模块修改其他参数

访问不同的网站地址,不能显示不同的网站页面

  • 在同一台web服务器中,如果有多个虚拟主机,使用反向代理时需要添加参数
#使负载均衡访问web服务器的host信息修改为客户端访问的host信息

server {
    listen       80;
    server_name  www.1997sty.com;
    location / {
       proxy_pass http://1997sty;
       proxy_set_header Host $host;
    }
}

获取访问客户端地址信息

  • 使用负载均衡后,web服务器日志中的地址信息为负载均衡服务器的地址,添加参数获取客户端真实地址
server {
    listen       80;
    server_name  www.1997sty.com;
    location / {
       proxy_pass http://1997sty;
       proxy_set_header X-Forwarded-For $remote_addr;
    }
}
  • 在web服务器日志部分的配置中,默认的$http_x_forwarded_for参数可以接收来自负载均衡提供的客户端的地址信息
user  nginx;
worker_processes  1;
error_log  /var/log/nginx/error.log warn;
pid        /var/run/nginx.pid;
events {
    worker_connections  1024;
}
http {
    include       /etc/nginx/mime.types;
    default_type  application/octet-stream;
    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';
    access_log  /var/log/nginx/access.log  main;
    sendfile        on;
    #tcp_nopush     on;
    keepalive_timeout  65;
    #gzip  on;
    include /etc/nginx/conf.d/*.conf;
}

负载均衡设置出现错误页面

  • 不会展示超时,请求错误之类的页面,如果返回了这些状态码,反向代理会去请求其他的web服务器
server {
    listen       80;
    server_name  www.1997sty.com;
    location / {
       proxy_pass http://1997sty;
       proxy_next_upstream error timeout http_404 http_502 http_403;
    }
}