2019-05-09day49

Nginx反向代理与负载均衡应用实践

集群开机顺序:从后往前开。

集群的常见分类:

(1) 负载均衡集群(Load balancing clusters),简称LBC或者LB
(2) 高可用集群(High-availabillty(HA)clusters),简称HAC。
(3) 高性能计算集群(High-performance(HPC)clusters),简称HPC
(4) 网格计算(Grid computing)。

负载均衡集群的作用为:

(1) 分担用户访问请求及数据流量(负载均衡)
(2) 保持业务连续性,即7X24小时服务(高可用性)、
(3) 应用于Web业务及数据库从库等服务的业务。

运维必会的软件:https://blog.51cto.com/oldboy/775056

高可用集群:

2019-05-09day49_第1张图片
image.png
能做高可用就不做负载均衡,

高可用性集群的作用为:

(1) 当一台机器宕机时,另外一台机器接管宕机的机器的IP资源和服务资源,提供服务。
(2) 常用于不易实现负载均衡集群的应用,比如负载均衡器对,主数据库、主存储对之间。
高可用性集群常用的开源软件包括Keepalived、Hearbeat等。

企业运维中常见的集群软硬件产品:

互联网企业常用的开源集群软件有:Nginx、LVS、Haproxy、Keepalived、Heartbeat。
互联网企业常用的商业集群硬件有:F5、Netscaler、Radware、A10,等。工作模式相当于haproxy的工作模式,

搭建负载均衡服务的需求如下:

(1) 吧单台计算机无法承受的大规模并发访问或数据流量分到多台节点设备上,分别进行出路,减少用于等待响应的时间,提升用户体验。
(2) 单个重负载的运算分担到多台节点设备上做并行处理,每个节点设备处理结束后,将结果汇总,返回给用户,系统处理能力得到大幅度提高。
(3) 7X24小时发无误保证,任意一个或多个有限后面节点设备宕机,不能影响业务。

Nginx负载均衡的组件模块:

Nginx http功能模块------------------------------------ 模块说明
ngx_http_proxy_module-------------------------------proxy代理模块,用于把请求后抛给服务器节点或upstream服务器池
ngx_http_upstream_module--------------------------负载均衡模块,可以实现网站的负载均衡功能以及节点的监控检查

Nginx基于端口检测,如果有坏的立即移除。
默认情况浏览器请求负载均衡器,会携带host字段,但是Nginx代理向后请求节点
默认在请求头里不带host字段。
配置Nginx代理向后请求节点默认在请求头里带host字段配置参数:
proxy_set_header Host $host;

实践:

编译安装nginx负载均衡

下载:

mkdir -p /server/tools
cd /server/tools
wget http://nginx.org/download/nginx-1.16.0.tar.gz

安装依赖。

yum install pcre pcre-devel -y
yum install openssl openssl-devel -y  #https加密用他。

编译安装步骤

tar xf nginx-1.16.0.tar.gz 
cd nginx-1.16.0/
useradd -u 1111 -s /sbin/nologin nginx -M
id nginx
./configure  --user=nginx --group=nginx --prefix=/application/nginx-1.16.0/ --with-http_stub_status_module  --with-http_ssl_module --with-pcre
make 
make install
ln -s /application/nginx-1.16.0/ /application/nginx
/application/nginx/sbin/nginx 
netstat -lntup|grep nginx
curl 127.0.0.1

负载均衡模板配置:

upstream backend {
    server 10.0.0.7:80  weight=1;
    server 10.0.0.8:80  weight=1;
}

server {
    listen       80;
    server_name  blog.etiantian.org;
    location / {
        proxy_pass http://backend;
    }
}
#upstream 模块 负载均衡池。
#backend 负载均衡池名称
[root@lb01 conf]# egrep -v "^$|#" nginx.conf.default >nginx.conf
#正式配置:
[root@lb01 conf]# cat nginx.conf
worker_processes  1;
events {
    worker_connections  1024;
}
http {
    include       mime.types;
    default_type  application/octet-stream;
    sendfile        on;
    keepalive_timeout  65;
    upstream backend {
        server 10.0.0.7:80  weight=3;
        server 10.0.0.8:80  weight=1;
    }

    server {
        listen       80;
        server_name  www.etiantian.org;
        location / {
            proxy_pass http://backend;
            proxy_set_header Host  $host;
        }
   }
}

别忘了,提前配置web服务器的www虚拟主机

WEB01:

[root@web01 /etc/nginx/conf.d]# cat www.conf 
server {
        listen       80;
        server_name  www.etiantian.org;
        location / {
        root   /usr/share/nginx/html/www;
            index  index.html;
        }
    }

[root@web01 /etc/nginx/conf.d]# cat /usr/share/nginx/html/www/index.html 
www7

WEB02:

[root@web02 /application/nginx/html/www]# cd /application/nginx/conf/extra/
[root@web02 /application/nginx/conf/extra]# cat 01_www.conf
    server {
        listen       80;
        server_name  etiantian.org;
    rewrite ^/(.*) http://www.etiantian.org/$1 permanent;
    }
    server {
        listen       80;
        server_name  www.etiantian.org;
        location / {
            root   html/www;
            index  index.html index.htm;
        }

autoindex on;
    access_log  logs/access_www.log  main;
    }
[root@web02 /application/nginx/conf/extra]# cat ../../html/www/index.html 
www8

增加blog负载均衡

[root@lb01 conf]# cat nginx.conf
worker_processes  1;
events {
    worker_connections  1024;
}
http {
    include       mime.types;
    default_type  application/octet-stream;
    sendfile        on;
    keepalive_timeout  65;
    upstream backend {
        server 10.0.0.7:80  weight=3;
        server 10.0.0.8:80  weight=2;
    }

    server {
        listen       80;
        server_name  www.etiantian.org;
        location / {
            proxy_pass http://backend;
            proxy_set_header Host  $host;
        }
   }

 server {
        listen       80;
        server_name  blog.etiantian.org;
        location / {
            proxy_pass http://backend;
            proxy_set_header Host  $host;
        }
   }
}
proxy_set_header X-Forwarded-For $remote_addr;
<==这是反向代理时,节点服务器获取用户真实IP的必要功能配置。
在反向代理请求后端节点服务器的请求头中增加获取的客户端IP的字段信息,然后节点后端可以通过程序或者相关的配置接收X-Forwarded-For传过来的用户真实IP的信息。

负载均衡模板配置:

upstream backend {
    server 10.0.0.7:80  weight=1;
    server 10.0.0.8:80  weight=1;
}


upstream blog_server_pool {
   server   10.0.10.6; #<==这一行标签和下一行是等价的。
   server   10.0.10.6:80 weight=1 max_fails=1 fail_timeout=10s; 
#nginx upstream监测节点状态,把不好的踢出去。好的时候加进来。

你可能感兴趣的:(2019-05-09day49)