ngin负载均衡集群(一)

百般思念 提交于 2020-03-18 23:54:05

一、nginx负载均衡集群介绍:

1.反向代理与负载均衡概念简介
严格地说, nginx仅仅是作为 Nginx Proxy反向代理使用的,因为这个反向代理功能表现的效果是负载均衡集群的效果,所以本文称之为nginx负载均衡。那么,反向代理和负载均衡有什么区别呢?
普通负载均衡软件,例如大名鼎鼎的LVS,其实现的功能只是对请求数据包的转发(也可能会改写数据包)、传递,其中DR模式明显的特征是从负载均衡下面的节点服务器来看,接收到的请求还是来自访问负载均衡器的客户端的真实用户,而反向代理就不样了,反向代理接收访问用户的请求后,会代理用户重新发起请求代理下的节点服务器,最后把数据返回给客户端用户,在节点服务器看来,访问的节点服务器的客户端用户就是反向代理服务器了,而非真实的网站访问用户。句话,LVS等的负载均衡是转发用户请求的数据包,而 nginx反向代理是接收用户的请求然后重新发起请求去请求其后面的节点。

2、实现负载均衡的组件说明:

实现负载均衡的组件主要有两个:

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

 二、环境准备:

系统:CentOS Linux release 7.5.1804 (Core)
LB01    192.168.100.105        nginx主负载均衡器
LB02    192.168.100.106        nginx辅负载均衡器
Web01    192.168.100.107        Web01服务器
Web02    192.168.100.108        Web02服务器

nginx版本:1.8.1

三、安装nginx软件
在以上4台服务器上安装nginx

编译安装nginx请参考:https://www.cnblogs.com/Mr-Ding/p/9502529.html

nginx启动脚本参考:https://www.cnblogs.com/Mr-Ding/p/9502972.html

四、配置用于测试的web服务

nginx web01和web02配置如下:

cat nginx.conf
worker_processes  1;
events {
    worker_connections  1024;
}
http {
    include       mime.types;
    default_type  application/octet-stream;
    sendfile        on;
    keepalive_timeout  65;
    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';
    server {
        listen       80;
        server_name  localhost;
        location / {
            root   html;
            index  index.html index.htm;
        }
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
		access_log logs/access.log main;
    }
}

重启服务:
systemctl reload nginx

web01下面写入:
[root@web01 conf]# echo "192.168.100.107" > ../html/index.html

web02下面写入:
[root@web02 conf]# echo "192.168.100.108" > ../html/index.html


配置hosts:

web01:
[root@web01 conf]# tail -1 /etc/hosts
192.168.100.107	www.dmtest.com

web02:
[root@web02 conf]# tail -1 /etc/hosts
192.168.100.108 www.dmtest.com

测试:
[root@web01 conf]# curl www.dmtest.com
192.168.100.107

[root@web02 conf]# curl www.dmtest.com
192.168.100.108

五、 实现一个简单的负载均衡

在LB01上作如下操作:
[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 www_server_pools   {		#这里是定义web服务器池,包含了107和108两个web节点;
        server 192.168.100.107:80   weight=1;
        server 192.168.100.108:80   weight=1;
    }
    server {		#这里是定义代理的负载均衡域名虚拟主机;
        listen       80;
        server_name  www.dmtest.com;
        location / {
        proxy_pass http://www_server_pools;		#访问www.dmtest.com,请求发送给www_server_pools里面的节点;
        }

        }
    }

检查语法并重启nginx服务
[root@lb01 conf]# ../sbin/nginx -t
nginx: the configuration file /application/nginx-1.8.1/conf/nginx.conf syntax is ok
nginx: configuration file /application/nginx-1.8.1/conf/nginx.conf test is successful
[root@lb01 conf]# systemctl restart nginx

测试:
[root@lb01 conf]# tail -1 /etc/hosts
192.168.100.105		www.dmtest.com

[root@lb01 conf]# curl www.dmtest.com
192.168.100.107

[root@lb01 conf]# curl www.dmtest.com
192.168.100.108

[root@lb01 conf]# curl www.dmtest.com
192.168.100.107

[root@lb01 conf]# curl www.dmtest.com
192.168.100.108

 

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!