Nginx、Haproxy、LVS负载均衡从原理到部署(一)

  先说些题外话,我记得51博客的号早就注册了,以前只是不间断上来看看别人写的技术文章涨涨见识,本身后面开始接触到运维这块,就想到把平时学的一些相关技术记录到博客上来,只是方便本身能够随时上网回顾,因为多种因素影响(0。0其实主要是太懒),就没事付出行懂,只是作放在了本地没有写成博客。如今受到一些新的事情影响(反正就是写博客有好处),就决定付诸行动虽然感受写出来很厉害的东西,可是主要仍是为了本身之后可以随时查看回顾,也算是技术路上的脚印记录把!最近在学习高可用、负载均衡这一块,因此将就就从这一块开始写!html

  这一块我会分红几个小块博文来写,争取把我第一篇写的更加详细,把我本身对学过集群负载均衡、高可用以及架构理解写清楚,若是有理解有误差的地方但愿各位博友可以提出,我会及时更正。这一篇先来说我主要学习的几个负载均衡的软件,分别是:Nginx丶Haproxy、LVS,首先写Nginx大佬。linux


1、NGINX反向代理原理
nginx

  首先讲的Nginx这款在国内比较火的开源软件,主要由于Nginx不只能够反向代理来实现负载均衡,并且还能够在本地服务器作高速缓存,这个但是LVS和Haproxy不能实现的,后面咱们再作详细的比较。我以为无论学什么技术,原理这块是核心部分也是比较花时间的,运维也是如此。算法

  因此我先来说述原理这块,用Nginx反向代理功能来实现负载均衡,也就是把部客户端的请求,让Nginx暂时代理接收,接着经过某种算法从多台内容服务器中选出一台,而后再把请求转发给算法选出来的内容服务器,而后被选出内容服务器接收到请求,返回应答仍是通过Nginx而后在转发给客户端,最后来自于Client请求被多台内容服务器一块儿消化掉,大概的过程看下图。vim

da8f4c46664f56bfb7d2b6e042fcf783.png-wh_


2、虚拟机环境搭建举例
缓存

一、搭建环境使用的软件、系统、准备的软件包丶IPbash

软件:VMworkstation搭建虚拟机服务器

linux系统:CentOS Linux release 7.3架构

软件包:nginx-1.13.6.tar.gz 负载均衡

IP:一台反向代理服务器ip:10.0.0.32,两台内容服务器ip:10.0.0.五、10.0.0.6

二、YUM安装依赖包、编译安装软件包

yum install gcc make libssl-dev zlib zlib-devel openssl openssl-devel prce prce-deve
[root@localhost src]#useradd nginx -s /sbin/nologin -M
[root@localhost src]#tar zxvf nginx-1.13.6.tar.gz
...
[root@localhost src]cd nginx-1.13.6
[root@localhost nginx-1.13.6]#./configure  --user=nginx --group=nginx --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module --with-pcre
[root@localhost nginx-1.13.6]#make && make install

三、配置nginx.conf

#在代理服务器:10.0.0.32
[root@direct1]#vim /usr/local/nginx/conf/nginx.conf
#在http{}中加入upstream反向代理模块,在location段加入proxy_pass  让访问重定向到backend中 
#注意upstream模块位置应该放在http模块里面 但必须是在server模块的外面
upstream backend  {
            server    10.0.0.5    max_fails=3 fail_timeout=10s ;
            server    10.0.0.6   max_fails=3 fail_timeout=10s ;
        }

    server {
        listen       80;
        server_name  www.zhengsida1.com;
        location / {
                        proxy_pass http://backend;
         proxy_set_header   Host             $host;
        proxy_set_header   X-Forwarded-For  $proxy_add_x_forwarded_for;
        #上三行设置是让内容服务器日志显示访问IP为客户端IP,而不是反向代理服务器IP
                }
#server1:10.0.0.5,server2:10.0.0.6  nginx安装再也不演示,只需在server2开启index.html访问用来测试
#两台内容服务器index.html中放入不一样内容用来验证
[root@server1]#vim /usr/local/nginx/conf/nginx.conf
server {
        listen       80;
        server_name  img.zsd.com

        location / {
            root   html;
            index  index.html index.htm;
        }


3、测试验证  

配置完成后用真机游览器进行访问,记得在本地本机配置HOSTS文件,用来本地域名解析。

真机的请求被server一、server2均衡的分配了,这个这个调度是用的默认轮循算法。

测试结果如图

2208b6c7d11aa070a3ec7f670f625205.png-wh_

在内容服务器上查看访问access.log日志,访问IP是真机的IP,而不是代理服务器的IP

9d777c57cdea57c9178bf90833f59bbe.png-wh_

  

4、总结

  这篇主要就是写Nginx反向代理实现负载均衡过程原理,Nginx须要启用那个模块。NGINX经常使用模块、调度算法等等..配置会在后面专门写一篇。

相关文章
相关标签/搜索