当前位置: 首页 > Linux

【nginx网站性能优化(三)】反向代理实现负载均衡

时间:2023-04-06 02:34:05 Linux

注意,本文是负载均衡的理论文章,后面会找机会推出实战文章。理论篇主要介绍如何配置负载均衡,配置负载均衡并不难。但是在实战中,要注意几个点,比如如何实现数据共享(session,文件等)后端一台服务器,但是随着访问网站的人越来越多,一台服务器不行了受不了了,所以我们增加了更多的服务器,我们如何为这么多服务器配置代理?upstreamtest.com{#ip_hash;server192.168.10.13:80;server192.168.10.14:80down;server192.168.10.15:8009max_fails=3fail_timeout=20s;server192.168.10.16:8080;}server{location/{proxy_passhttp://测试。com;}}其实负载均衡也是通过反向代理,但是proxy_pass只能写一个地址,所以我们把upstream作为一个集合来做反向代理来实现负载均衡;upstream负载均衡模块说明upstream是Nginx的HTTPUpstream模块,通过简单的调度算法实现客户端IP到后端服务器的负载均衡。在上面的设置中,通过upstream命令指定了一个负载均衡器名称test.com。这个名字可以任意指定,以后需要用到的地方直接调用即可。支持的负载均衡算法Nginx的负载均衡模块目前支持4种调度算法,下面分别介绍,其中后两种属于第三方调度算法。轮询(默认)。每个请求按照时间顺序一一分配给不同的后端服务器。如果后台服务器宕机,故障系统会自动排除,不影响用户访问。权重指定轮询权重。Weight值越大,分配的接入概率就越高。主要用于各个后端服务器性能参差不齐的情况。ip_hash。每个请求根据访问IP的哈希结果进行分配,使同一个IP的访问者访问一个后端服务器,有效解决了动态网页存在的session共享问题。公平的。这是比上面两种更智能的负载均衡算法。该算法可以根据页面大小和加载时间智能地进行负载均衡,即根据后端服务器的响应时间来分配请求,响应时间短的优先。Nginx本身不支持公平。如果需要使用这种调度算法,必须下载Nginx的upstream_fair模块。url_hash。该方法根据访问的url的hash结果来分配请求,使得每个url指向同一个后端服务器,可以进一步提高后端缓存服务器的效率。Nginx本身不支持url_hash。如果需要使用这种调度算法,必须安装Nginx的hash软件包支持的状态参数。在HTTPUpstream模块中,可以通过server命令指定后端服务器的IP地址和端口,也可以设置各个后端服务器在负载均衡调度中的状态。常用的状态有:down,表示当前服务器暂时不参与负载均衡。backup,预留备用机。当所有其他非备机都出现故障或忙时,会请求备机,所以这台机器的压力是最轻的。max_fails,允许请求失败的次数,默认为1。当超过最大次数时,返回proxy_next_upstream模块定义的错误。fail_timeout,失败max_fails次后暂停服务的时间。max_fails可以和fail_timeout一起使用。注意,当负载调度算法为ip_hash时,后端服务器在负载均衡调度中的状态不能为weight和backup。配置负载平衡上游网络服务器{server192.168.18.201weight=1;服务器192.168.18.202权重=1;}服务器{听80;服务器名称本地主机;#charsetkoi8-r;#access_log日志/host.access.logmain;位置/{proxy_passhttp://webservers;proxy_set_headerX-Real-IP$remote_addr;}}注意,upstream是在server{}之外定义的,不能在server{}内部定义。定义upstream后,使用proxy_pass对其进行引用。如果是在服务器内部定义的,会报错:xxxxxxhereisnotallowed"upstream"directive。重启刷新208后,会发现201和202的内容交替出现,再分别查看他们的日志,实现负载均衡轮询。影响;