码迷,mamicode.com
首页 > 其他好文 > 详细

Nginx负载均衡

时间:2019-11-01 20:12:36      阅读:106      评论:0      收藏:0      [点我收藏+]

标签:repo   mod   部署   反向代理   调度算法   conf   win   试题   yum源   

技术图片

 

 上面VM克隆一台一台主机

 lb01  192.168.1.4

lb02  192.168.1.5

LNMP01 192.168.1.8

LNMP02 192.168.1.10

四台都要安装nginx

yum官方源安装方法:
    第一个历程: 更新nginx官方yum源
    vim /etc/yum.repos.d/nginx.repo
    [nginx-stable]
    name=nginx stable repo
    baseurl=http://nginx.org/packages/centos/$releasever/$basearch/
    gpgcheck=1
    enabled=1
    gpgkey=https://nginx.org/keys/nginx_signing.key
    
    第二个历程: yum安装nginx软件
    yum install -y nginx

    第三个历程: 启动nginx服务,检查服务是否安装正确
    systemctl start nginx
    systemctl enable nginx
    测试访问nginx服务

 

LNMP01 02 安装PHP

见LNMP安装

 

 

 

03. (反向代理)负载均衡的概念说明
    什么是集群?
    完成相同任务或工作的一组服务器 (web01 web02 web03 -- web集群)
    
    什么是负载均衡?
    1) 实现用户访问请求进行调度分配
    2) 实现用户访问压力分担
    
    什么是反向代理?
    反向代理:     外网 ---> (eth0外网) 代理服务器 (eth1内网) ---> 公司网站服务器web(内网)
                外网用户(客户端)   ---  代理服务器 (服务端)
                代理服务器(客户端) ---  web服务器(服务端)    
    正向代理:   内网(局域网主机)      --- (内网)代理服务器(外网) --- 互联网 --- web服务器(日本)

 

04. 准备负载均衡的环境
    集群服务器部署:
    PS: 集群中每天服务器的配置一模一样
    企业中:
    01. 先部署好一台LNMP服务器,上传代码信息
    02. 进行访问测试
    03. 批量部署多台web服务器
    04. 将nginx配置文件进行分发
    05. 将站点目录分发给所有主机
    教学中:
    01. 将web01作为模板主机克隆
    sed -i ‘s#\.7#.8#g‘ /etc/sysconfig/network-scripts/ifcfg-eth[01]
    hostnamectl set-hostname web02
    
    利用手动方式实现负载均衡:
    修改hosts主机地址和域名映射文件
    
    负载均衡服务器部署:
    第一个历程: 安装部署nginx软件
    ....

 

[root@lb01 ~]# cd /etc/nginx/
[root@lb01 nginx]# ls
conf.d  fastcgi_params  koi-utf  koi-win  mime.types  modules  nginx.conf  scgi_params  uwsgi_params  win-utf
[root@lb01 nginx]# cp nginx.conf{,.bak}
[root@lb01 nginx]# grep -Ev ‘^#|$‘ nginx.conf
[root@lb01 nginx]# grep -Ev ‘^$|#‘ nginx.conf
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;
    keepalive_timeout  65;
    include /etc/nginx/conf.d/*.conf;
}
[root@lb01 nginx]# grep -Ev ‘^$|#‘ nginx.conf.bak > nginx.conf
[root@lb01 nginx]#
[root@lb01 nginx]# cd conf.d/
[root@lb01 conf.d]# grep -Ev ‘^$|#‘ default.conf > lb.conf
[root@lb01 conf.d]#



    第二个历程: 编写nginx负载服务配置文件
    ngx_http_upstream_module   --- upstream   负载均衡  OK
    ngx_http_proxy_module       --- proxy_pass 反向代理
    
    upstream oldboy {
       server 10.0.0.7:80;
       server 10.0.0.8:80;
       server 10.0.0.9:80;
    }
    server {
        listen       80;
        server_name  www.oldboy.com;
        location / {
           proxy_pass http://oldboy;
        }
    }
    
    第三个历程: 实现负载功能测试
    搭建集群测试环境:
    for name in www bbs blog;do echo "$name 10.0.0.7">/html/$name/wenwen.html;done
    for name in www bbs blog;do echo "$name 10.0.0.8">/html/$name/wenwen.html;done
    for name in www bbs blog;do echo "$name 10.0.0.9">/html/$name/wenwen.html;done
    修改windows解析文件
    10.0.0.5    www.oldboy.com  blog.oldboy.com bbs.oldboy.com
    
    负载均衡访问网站异常排错思路:
    第一步: 负载均衡 测试后端web节点服务器是否能够正常访问
    [root@lb01 conf.d]# curl -H host:www.oldboy.com 10.0.0.7/wenwen.html
    www 10.0.0.7
    [root@lb01 conf.d]# curl -H host:www.oldboy.com 10.0.0.8/wenwen.html
    www 10.0.0.8
    [root@lb01 conf.d]# curl -H host:www.oldboy.com 10.0.0.9/wenwen.html
    www 10.0.0.9

    第二步: 负载均衡 利用curl命令访问负载均衡服务器
    查看两个配置文件
    
    第三步: 打开一个xshell连接  ping www.oldboy.com
    第四步: 配置文件编写不正确
    
    
05. 负载均衡配置模块详细说明
    ngx_http_upstream_module   --- upstream
    实现不同调度功能
    1. 轮询分配请求(平均)
    2. 权重分配请求(能力越强责任越重)
       upstream oldboy {
          server 10.0.0.7:80 weight=3;
          server 10.0.0.8:80 weight=2;
          server 10.0.0.9:80 weight=1;
       }
    3. 实现热备功能(备胎功能)
           upstream oldboy {
          server 10.0.0.7:80;
          server 10.0.0.8:80;
          server 10.0.0.9:80 backup;
       }
    4. 定义最大失败次数                     健康检查参数
       max_fails=5
    5. 定义失败之后重发的间隔时间            健康检查参数
       fail_timeout=10s  会给失败的服务器一次机会
    
    实现不同调度算法
    1. rr  轮询调度算法
    2. wrr 权重调度算法
    3. ip_hash 算法  (出现反复登录的时候)
    4. least_conn  根据服务器连接数分配资源
    
    ngx_http_proxy_module       --- proxy_pass
    01. 访问不同的网站地址,不能显示不同的网站页面  (面试题)
    proxy_set_header Host $host;
    02. 访问网站用户地址信息无法进行分析统计       (面试题)
    proxy_set_header X-Forwarded-For $remote_addr;
    03. 访问负载均衡会出现错误页面,影响用户体验
    proxy_next_upstream error timeout http_404 http_502 http_403;
    
作业:
01. 总结Module ngx_http_proxy_module
02. 总结Module ngx_http_upstream_module
03. 高可用服务 keepalived
    提前克隆好一台新的lb02主机 lb01+lb02 高可用集群(HA)
  
   

Nginx负载均衡

标签:repo   mod   部署   反向代理   调度算法   conf   win   试题   yum源   

原文地址:https://www.cnblogs.com/linux985/p/11779124.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!