nginx简单实现负载均衡
发布日期:2021-06-30 20:51:27 浏览次数:2 分类:技术文章

本文共 3595 字,大约阅读时间需要 11 分钟。

负载均衡服务概念

作用:
1)实现并发访问压力分担
2)实现访问调度处理 根据用户终端不同进行调度访问 /根据服务器性能

实现方式:

软件方式实现 nginx lvs haproxy
硬件方式实现 F5 A10 负载均衡

名词解释:

负载均衡:实现并发访问压力分担/实现访问调度处理

反向代代理:外网用户想访问内网主机时,需要借助反向代理实现

外网用户请求----->反向代理服务器---->公司内部服务器(私网地址)

正向代理:内网用户想访问外网网站时,需要借助正向代理实现

内部用户请求—>正向代理服务器------>互联网外网环境

网站集群概念:完成相同工作一群服务器 web01 web02 web03(web集群)

1 部署相同服务软件是相同(nginx)
2部署配置文件是相同(nginx配置)

负载均衡节点:后端处理真正访问页面web服务器

负载均衡实现原理

用户发送请求---->负载均衡服务器--->web服务器客户端                       服务端                            根据用户请求信息---->web服务器                                 客户端                 服务端                               负载均衡服务器 <----web服务器用户接受响应 <-------负载均衡服务器

这个过程:反向代理负载均衡过程

负载均衡实现过程

环境准备:
lb01 10.0.0.5 nginx-1.16.1
web01 10.0.0.7 nginx-1.16.1
web02 10.0.0.8 nginx-1.16.1
web03 10.0.0.9 nginx-1.16.1

第一个历程:编写web服务配置文件信息

(编写好一个web服务的配置文件,复制到其他两个服务端就好)
www.conf

server {
listen 80;server_name www.oldboy.com;location / {
root /html/www; index index.html; }}

将nginx主配置文件去除空行和注释后再操作,将include /etc/nginx/conf.d/www.conf; 原本的.*改为www.conf;

scp -rp  /etc/nginx/nginx.conf  172.16.1.8:/etc/nginx/	scp -rp  /etc/nginx/nginx.conf  172.16.1.9:/etc/nginx/    scp -rp  /etc/nginx/conf.d/www.conf   172.16.1.8:/etc/nginx/conf.d/	scp -rp  /etc/nginx/conf.d/www.conf   172.16.1.9:/etc/nginx/conf.d/

第二个历程:编写配置web服务站点目录信息

并配置index.html首页配置文件

web01站点目录:mkdir -p /html/www && echo web01-info >/html/www/index.html	web02站点目录:mkdir -p /html/www && echo web02-info >/html/www/index.html 	web03站点目录:mkdir -p /html/www && echo web03-info >/html/www/index.html

提示:注意修改站点目录的属主属组为nginx用户方便nginx进程调用。

第三个历程:重启nginx服务程序
systemctl restart nginx
提示:最好再查看一下端口信息,默认的80端口是否开启。

第四个历程:利用负载均衡服务器测试每个页面是否能够正常访问

#curl -H host:www.oldboy.com  172.16.1.7    web01-info    # curl -H host:www.oldboy.com  172.16.1.8    web02-info    # curl -H host:www.oldboy.com  172.16.1.9    web03-info

第五个历程:编写负载均衡服务配置文件(主配置文件)

grep -Ev "#|^$" /etc/nginx/nginx.conf.bak >/etc/nginx/nginx.conf

这个服务器上只配置主配置文件,不创建子配置文件

编写负载均衡信息:
这里我把所有内容给复制下面

[root@ls01 conf.d]# cat /etc/nginx/nginx.conf

user  nginx;worker_processes  1;error_log  /var/log/nginx/error.log warn;pid        /var/run/nginx.pid;events {
worker_connections 1024;}http {
include /etc/nginx/mime.types; default_type application/octet-stream; log_format main '$remote_addr - $remote_user [$time_local] "$request" ' '$status $body_bytes_sent "$http_referer" ' '"$http_user_agent" "$http_x_forwarded_for"'; access_log /var/log/nginx/access.log main; sendfile on; keepalive_timeout 65; #include /etc/nginx/conf.d/*.conf; upstream oldboy {
server 10.0.0.7:80; server 10.0.0.8:80; server 10.0.0.41:80; } server {
listen 80; server_name localhost; location / {
proxy_pass http://oldboy; } }}

提示:注意负载均衡模块使用的地方是http区域内。

配置完毕重启服务。

提示:在PC端测试时,需要配置本地dns解析,解析内容如下:

10.0.0.5  www.oldboy.com

负载均衡服务器上注释主配置文件中的include信息

#include /etc/nginx/conf.d/*.conf;

web服务器上修改配置文件信息为

include /etc/nginx/conf.d/www.conf;

第六个历程:进行域名解析访问测试

本地解析

10.0.0.5      www.oldboy.com

异常情况:

网站页面不能正常显示 不能实现正常的负载过程(没有轮询)

排错思路:

01 利用负载均衡手动访问不同网站服务器,显示正常页面
curl -H host:www.oldboy.com 10.0.0.7
curl -H host:www.oldboy.com 10.0.0.8
curl -H host:www.oldboy.com 10.0.0.9
02 负载均衡配置文件信息是否正确:测试网站页面
03检查dns解析是否正确
ping www.oldboy.com ---->10.0.0.5

注意:在负载服务器的主配置文件中一定是注释include的,在其他web服务器上的主配置文件中一定是将include修改为www.conf

我出现了一个特殊情况就是

在这里插入图片描述
进程出现了,但是端口没有出现。这是使用curl命令是报错:
[root@ls01 ~]# curl www.oldboy.com
curl: (7) Failed connect to www.oldboy.com:80; Connection refused

在百度没有找到太多有价值的博客,重启几次nginx服务,查看端口以及进程信息,如果端口出现了,那么使用curl命令就不再报错。

转载地址:https://liushiya.blog.csdn.net/article/details/104318321 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:nginx upstream简述
下一篇:nginx服务 location模块、rewrite模块

发表评论

最新留言

感谢大佬
[***.8.128.20]2024年04月24日 10时42分00秒