现在大部分的业务都以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;
}
}
具体配置文件效果如下

测试一下配置文件是否有问题
启动nginx服务并开启防火墙
systemctl restart nginx
firewall-cmd --add-port=80/tcp
firewall-cmd --add-port=80/tcp --permanent
配置文件上第一行的upstream 是一个反向代理模块,httptest是字符串,下方的server 192这两行是真实的服务器地址,真正的网站是由他们提供的,我们来测试一下,根据server_name这一行来看,将会响应这个请求头,我们需要在Host2,Host3服务器上做以下操作,生成网站内容,稍后看效果
Host2上执行以下命令
yum install httpd -y
echo lixiaohui > /var/www/html/index.html
systemctl restart httpd
firewall-cmd --add-port=80/tcp
firewall-cmd --add-port=80/tcp --permanent
Host3上执行以下命令
yum install httpd -y
echo lixiaohui222222222 > /var/www/html/index.html
systemctl restart httpd
firewall-cmd --add-port=80/tcp
firewall-cmd --add-port=80/tcp --permanent
以上命令是在两台服务器上安装了apache,并生成了不同的页面内容,我们快来试试通过nginx来访问吧~,大家要注意哦,如果想要用windows来访问,需要在Windows上加本地hosts文件
通过实验我们可以看到,随着用户的访问,Nginx将我们的请求分别在两台服务器上进行处理,大大提升了服务器的的负载能力,也屏蔽了单台服务器故障给用户带来的访问中断问题,提升负载能力的同时,还降低了访问中断的现象。
我们下一篇开始研究TCP 和UDP 的负载均衡做法,敬请期待哦~