easthomeRT 发表于 2019-6-18 10:32:33

Nginx负载均衡之HTTP反向代理(二)

前面我们已经了解了负载均衡的基本概念,我们可以画个图来看看,从互联网进来的所有请求,都会先由Nginx负载均衡接收,然后再根据指定的策略来分发给后端的众多服务器,至于是哪些策略,后文会进行介绍,具体如下图所示

现在大部分的业务都以B/S结构的网站方式存在,接下来我们来试试做一个网站的负载均衡,我们要实现的目标:1、后端有两台服务器,每台都可以对外提供服务,且同时对外提供;2、后端的其中一台服务器故障时,不会中断用户访问;通过这个实验,我们的网站将具备高可用性,因为只要不是后端服务器全部损坏,用户就始终可以访问到服务器,在访问量毕竟大时,Nginx将会把访问量分发到不同的服务器上进行承载,不会受限于单台服务器性能不足导致用户体验不佳的问题。
HTTP 负载均衡目标: 通过Nginx来实现后端两台服务器的负载均衡,且以轮询的方式将请求分发到不同的服务器上新建一个http.conf的配置文件,我们将用这些文件来实现此实验目标vim /etc/nginx/conf.d/http.conf将以下内容复制粘贴到配置文件中upstream httptest {server 192.168.30.131:80    weight=1;server 192.168.30.132:80    weight=1;}server {listen 80;server_name www.example.com;access_log /var/log/nginx/httptest;error_log /var/log/nginx/errortest;location / {index index.html;proxy_pass http://httptest;}}具体配置文件效果如下https://www.easthome.com/share/img/c69b982ff3d6cc4dee3063a7242eff80.png测试一下配置文件是否有问题启动nginx服务并开启防火墙systemctl restart nginxfirewall-cmd --add-port=80/tcpfirewall-cmd --add-port=80/tcp --permanent
配置文件上第一行的upstream 是一个反向代理模块,httptest是字符串,下方的server 192这两行是真实的服务器地址,真正的网站是由他们提供的,我们来测试一下,根据server_name这一行来看,将会响应这个请求头,我们需要在Host2,Host3服务器上做以下操作,生成网站内容,稍后看效果Host2上执行以下命令yum install httpd -yecho lixiaohui > /var/www/html/index.htmlsystemctl restart httpdfirewall-cmd --add-port=80/tcpfirewall-cmd --add-port=80/tcp --permanentHost3上执行以下命令yum install httpd -yecho lixiaohui222222222 > /var/www/html/index.htmlsystemctl restart httpdfirewall-cmd --add-port=80/tcpfirewall-cmd --add-port=80/tcp --permanent
以上命令是在两台服务器上安装了apache,并生成了不同的页面内容,我们快来试试通过nginx来访问吧~,大家要注意哦,如果想要用windows来访问,需要在Windows上加本地hosts文件
通过实验我们可以看到,随着用户的访问,Nginx将我们的请求分别在两台服务器上进行处理,大大提升了服务器的的负载能力,也屏蔽了单台服务器故障给用户带来的访问中断问题,提升负载能力的同时,还降低了访问中断的现象。我们下一篇开始研究TCP 和UDP 的负载均衡做法,敬请期待哦~

Rockyw 发表于 2019-6-18 14:16:26

感谢楼主分享!

liweiqiang 发表于 2019-9-27 15:28:26

页: [1]
查看完整版本: Nginx负载均衡之HTTP反向代理(二)