2018-07-06笔记(LNMP配置)

匿名 (未验证) 提交于 2019-12-03 00:40:02
12.17 Nginx负载均衡

要理解负载均衡,必须先搞清楚正向代理和反向代理
\
注:
正向代理,代理的是用户。
反向代理,代理的是服务器。
一、什么是负载均衡
负载均衡是用反向代理的原理实现的,代理一台机器,叫做代理服务器,代理多台机器就叫做负载均衡。nginx通过proxy_pass_http 配置代理站点,upstream实现负载均衡
当一台服务器的单位时间内的访问量越大时,服务器压力就越大,大到超过自身承受能力时,服务器就会崩溃。为了避免服务器崩溃,让用户有更好的体验,我们通过负载均衡的方式来分担服务器压力。
我们可以建立很多很多服务器,组成一个服务器集群,当用户访问网站时,先访问一个中间服务器,在让这个中间服务器在服务器集群中选择一个压力较小的服务器,然后将该访问请求引入该服务器。如此以来,用户的每次访问,都会保证服务器集群中的每个服务器压力趋于平衡,分担了服务器压力,避免了服务器崩溃的情况。

二、负载均衡的几种常用方式(算法)
(1)、轮询(默认)
每个请求按时间顺序逐一分配到不同的后端服务器,如果后端服务器down掉,能自动剔除
(2)、weight (权重)
指定轮询权重,weight和访问比率成正比,用于后端服务器性能不均的情况
(3)、ip_hash
每个请求按访问ip的hash结果分配,这样每个访客固定访问一个后端服务器,可以解决session的问题
(4)、fair(第三方)
按后端服务器的响应时间来分配请求,响应时间短的优先分配
(5)、url_hash(第三方)
按访问url的hash结果来分配请求,使每个url定向到同一个后端服务器,后端服务器为缓存时比较有效

三、配置nginx负载均衡
在配置负载均衡前先介绍一个命令:dig 如果没有这个命令需要安装包:yum -y install bind-utils
dig是用来进行域名解析的,例如我解析,使用dig能够反馈更多的解析信息

[root@lnmp-server ~]# dig www.qq.com ; <<>> DiG 9.9.4-RedHat-9.9.4-61.el7 <<>> www.qq.com ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 23121 ;; flags: qr rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 0, ADDITIONAL: 1 ;; OPT PSEUDOSECTION: ; EDNS: version: 0, flags:; udp: 4096 ;; QUESTION SECTION: ;www.qq.com.            IN  A ;; ANSWER SECTION: www.qq.com.     220 IN  A   58.60.9.21 www.qq.com.     220 IN  A   59.37.96.63 ;; Query time: 37 msec ;; SERVER: 114.114.114.114#53(114.114.114.114) ;; WHEN: 日 7月 08 20:50:20 CST 2018 ;; MSG SIZE  rcvd: 71

现在我们开始配置负载均衡,新建一个虚拟主机配置文件:

[root@lnmp-server ~]# vim /usr/local/nginx/conf/vhost/ld.conf`

增加以下内容,我拿解析到:

upstream qq    #upstream是一个模块,需要使用它来定义多个IP    YY_com=名字可以任意修改 {     ip_hash;      #ip_hash是为了让同一个用户始终保持在同一个机器上     #定义两个服务器的ip,qq.com解析出来的ip     server 58.60.9.21:80;     server 59.37.96.63:80; } server {     listen 80;    #定义监听端口     server_name www.qq.com;     #定义域名     location /     {         proxy_pass      http://qq;     #upstream的名称,这个名称代表着upstream里定义的ip         proxy_set_header Host   $host;         proxy_set_header X-Real-IP      $remote_addr;         proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;     } }

编辑完之后保存退出,先不要重新加载配置文件,先测试一下用本机ip去访问:

[root@lnmp-server vhost]# curl -x127.0.0.1:80 www.qq.com This is default server aaa

检测是否有错并重载

[root@lnmp-server ~]# /usr/local/nginx/sbin/nginx -t nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful [root@lnmp-server ~]# /usr/local/nginx/sbin/nginx -s reload

再用curl测试

 [root@lnmp-server vhost]# curl -x127.0.0.1:80 www.qq.com 。。。     </script>     <!-- ?1・?? ??-->     <script>      // ??・?

原文:http://blog.51cto.com/13736286/2138926

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