负载均衡集群——Nginx

目录

1.Nginx反向代理实战

2.Nginx 反向代理和负载均衡实践

实验操作步骤

步骤 1 Nginx1 和 Nginx2 配置

步骤2 测试资源是否可用

步骤 3 安装和配置 Nginx 代理

步骤 4 代理服务器配置检测

步骤 5 在 Nginx1 和 Nginx2 配置虚拟主机

步骤 6 将虚拟主机添加入后端主机组中

步骤 7 IP Hash 算法实践

步骤 8 Random 算法实践

步骤 9 算法选项配置实践


1.Nginx反向代理实战

 

1 、什么是代理服务器
        代理服务器,客户机在发送请求时,不会直接发送给目的主机,而是先发送给代理服务器,代理服务接受客户机请求之后,再向主机发出,并接收目的主机返回的数据,存放在代理服务器的硬盘中,再发送 给客户机。
2 、为什么要使用代理服务器
        提高访问速度 由于目标主机返回的数据会存放在代理服务器的硬盘中,因此下一次客户再访问相同的站点数据时,会直接从代理服务器的硬盘中读取,起到了缓存的作用,尤其对于热门站点能明显提高请求速度。
        防火墙作用 :由于所有的客户机请求都必须通过代理服务器访问远程站点,因此可在代理服务器上设限,过滤某些不安全信息。通过代理服务器访问不能访问的目标站点
互联网上有许多开发的代理服务器,客户机在访问受限时,可通过不受限的代理服务器访问目标站
3 、反向代理 VS 正向代理
正向代理
        正向代理,架设在客户机与目标主机之间,只用于代理内部网络对Internet 的连接请求,客户机必须指定代理服务器, 并将本来要直接发送到 Web 服务器上的 http 请求发送到代理服务器中。

 

反向代理
        反向代理服务器架设在服务器端,通过缓冲经常被请求的页面来缓解服务器的工作量,将客户机请求转发给内部网络上的目标服务器;并将从服务器上得到的结果返回给Internet 上请求连接的客户端,此时代理服务器与目标主机一起对外表现为一个服务器。

2.Nginx 反向代理和负载均衡实践

本实验将使用四台虚拟机,其中两台 Nginx 服务器和客户端与《LVS 集群》复用,充当代理服务器的 Nginx 可以新建,也可以清理《LVS 集群》中 LVS 服务器的配置后复用。

实验操作步骤

步骤 1 Nginx1 和 Nginx2 配置

[root@Nginx2 ~]# yum install nginx -y
[root@Nginx2 ~]# systemctl start nginx
[root@Nginx2 ~]# mkdir -p /data/nginx
[root@Nginx2 ~]# touch  /data/nginx/index.html
[root@Nginx1 ~]# cat /etc/nginx/conf.d/vhost.conf 
server{listen 80;server_name www.test.com;root /data/nginx;index index.html;}
[root@Nginx1 ~]# curl 192.168.186.102
hello,nginx2
[root@Nginx2 ~]# curl 192.168.186.101
hello,nginx1在 LVS 虚拟机上开启路由转发功能,具体参考命令如下:sed -i "s/ip_forward=0/ip_forward=1/g" /etc/sysctl.confsysctl -p | grep net.ipv4.ip_forwardsysctl -a | grep net.ipv4.ip_forward
配置完成后,测试是否能够正常访问 Nginx1 和 Nginx2,具体如下:
[root@LVS ~]# curl 192.168.186.101
hello,nginx1
[root@LVS ~]# curl 192.168.186.102
hello,nginx2

步骤2 测试资源是否可用

在客户端 ping 代理服务器的 10 网段地址,保证二者之间网络可达,如下图所示:

 在代理服务器上访问两台 Nginx 服务器,保证 Nginx 服务器可用,如下图所示:

步骤 3 安装和配置 Nginx 代理

[root@Cluster ~]# yum install -y nginx
在代理服务器 Nginx 子配置文件目录中创建代理和负载均衡配置文件,并在文件中添加以下配置:
[root@Cluster ~]# systemctl start nginx
[root@Cluster ~]# vim /etc/nginx/conf.d/lb.conf
upstream 192.168.186.100{server 192.168.186.101:80;server 192.168.186.102:80;
}server {listen 80;server_name localhost;location /{proxy_pass http://192.168.186.100;}
}
完成配置后,使用命令“nginx -s reload”重新加载 Nginx 服务。

步骤 4 代理服务器配置检测

在客户端访问 192.168.186.100,查看是否能够达到效果,如果配置正确,现象如下图所示:

步骤 5 在 Nginx1 和 Nginx2 配置虚拟主机

在/data/nginx/中创建 index80.html、index81.html 和 index82.html 文件,分别将使用的端口添加到内容中,
[root@Nginx1 ~]# touch /data/nginx/index80.html
[root@Nginx1 ~]# touch /data/nginx/index81.html
[root@Nginx1 ~]# touch /data/nginx/index82.html
[root@Nginx1 ~]# ls /data/nginx/
index80.html  index81.html  index82.html  
[root@Nginx1 ~]# echo "hello,192.168.186.101:80" > /data/nginx/index80.html 
[root@Nginx1 ~]# echo "hello,192.168.186.101:81" > /data/nginx/index81.html 
[root@Nginx1 ~]# echo "hello,192.168.186.101:82" > /data/nginx/index82.html
为了使后续的算法体现更加明显,在两台 Nginx 服务器中,添加虚拟主机,具体配置如下:
[root@Nginx1 ~]# vim /etc/nginx/conf.d/vhost.conf
server{listen 0.0.0.0:80;server_name localhost;root /data/nginx;index index80.html;
}
server{listen 0.0.0.0:81;root /data/nginx;server_name localhost;index index81.html;
}
server{listen 0.0.0.0:82;root /data/nginx;server_name localhost;index index82.html;
}
[root@Nginx2 ~]# vim /etc/nginx/conf.d/vhost.conf
server{listen 0.0.0.0:80;server_name localhost;root /data/nginx;index index80.html;
}
server{listen 0.0.0.0:81;root /data/nginx;server_name localhost;index index81.html;
}
server{listen 0.0.0.0:82;root /data/nginx;server_name localhost;index index82.html;
}
[root@Nginx2 ~]# touch /data/nginx/index80.html
[root@Nginx2 ~]# touch /data/nginx/index81.html
[root@Nginx2 ~]# touch /data/nginx/index82.html
[root@Nginx2 ~]# echo "hello,192.168.186.102:80" > /data/nginx/index80.html
[root@Nginx2 ~]# echo "hello,192.168.186.102:81" > /data/nginx/index81.html
[root@Nginx2 ~]# echo "hello,192.168.186.102:82" > /data/nginx/index82.html

步骤 6 将虚拟主机添加入后端主机组中

[root@Cluster ~]# vim /etc/nginx/conf.d/lb.conf
upstream 192.168.186.100{
server 192.168.186.101:80;
server 192.168.186.101:81;
server 192.168.186.101:82;
server 192.168.186.102:80;
server 192.168.186.102:81;
server 192.168.186.102:82;
}
server {
listen 80;
server_name localhost;
location /{
proxy_pass http://192.168.186.100;
}
}
配置完成后重新加载 Nginx 配置文件

步骤 7 IP Hash 算法实践

将代理服务器中相关配置文件中添加配置,修改算法为 IP Hash,具体如下:

[root@Cluster ~]# vim /etc/nginx/conf.d/lb.conf
upstream 192.168.186.100{ip_hash;server 192.168.186.101:80;server 192.168.186.101:81;server 192.168.186.101:82;server 192.168.186.102:80;server 192.168.186.102:81;server 192.168.186.102:82;}server {listen 80;server_name localhost;location /{proxy_pass http://192.168.186.100;}
}

 

步骤 8 Random 算法实践

将负载均衡配置修改为 Random 算法,具体如下:
重新加载 Nginx 配置后,进行测试,具体现象为:

步骤 9 算法选项配置实践

修改代理主机配置文件,将 Nginx2 的全部虚拟主机设置为 backup,同时将 Nginx1 上的虚拟主机设置一定的权重,具体配置如下图所示:

重新加载 Nginx 配置后,然后在客户端进行测试,具体现象如下:

手动将 Nginx1 上的服务停止,如下图所示:

 

 再次在客户端进行测试,具体显现个如下:

修改代理服务器上的配置文件,将 Nginx2 的部分虚拟主机修改为“down”,具体如下:

 

重新加载 Nginx 服务配置,再次在客户端进行测试,具体现象如下:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/1536.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Let’s Encrypt 申请免费https证书(snapd安装)

Let’s Encrypt 最近给域名安装免费的https证书 Let’s Encrypt,发现跟之前的安装方式不太一样,这里记录一下安装过程 https://certbot.eff.org/instructions?wsnginx&oscentosrhel7 https://eff-certbot.readthedocs.io/en/latest/using.html#ng…

BMR:基于Boostrapping多视图的虚假新闻检测

一、概述 文章提出了三种视图信息来表示一篇新闻:文本、图像结构、图像语义。然后设计了改进的多门混合专家系统(iMMoE)来进行信息融合。保留单模态信息来保证特征对新闻的保真性,增加的多模态信息能保证不同模态的一致性&#xf…

【技术】Spring Boot 将 Word 转换为 PDF 2.0 版本

之前写过一篇 Spring Boot 将 Word 转换为 PDF 的文章,但是有评论说导入依赖有问题,还存在依赖冲突的问题。索性再来一个完整版的代码,之前的完整版代码找不到了,又重新整理了一下,依赖导入和之前不太一样,…

【KingSCADA】通过地址引用和弹窗模板实现设备控制

当相同的设备过多时,要做很多相同的弹窗,这种情况下可以通过地址引用和弹窗模板实现设备控制。 1.变量创建 2.画面开发 以阀门控制为例,只需要做一个阀门控制界面模板 3.地址引用 # 4.实现效果

eCognition 样本标注与导出

目录 一、可导出shp的样本标注方式 1、选择样本 2、导出样本shp 3、附录:转成样本用于训练 二、只能导出tif,不可导出shp 1、打开样本工具栏 2、选择样本 3、导出标注

每日算法4/21

LCR 073. 爱吃香蕉的狒狒 题目 狒狒喜欢吃香蕉。这里有 N 堆香蕉,第 i 堆中有 piles[i] 根香蕉。警卫已经离开了,将在 H 小时后回来。 狒狒可以决定她吃香蕉的速度 K (单位:根/小时)。每个小时,她将会选…

web自动化系列-selenium的3种弹框操作(十二)

在进行功能测试时 ,经常会遇到出现各种的弹出的提示 ,比如删除数据给出提示 、做某个操作时也会弹框给出一些友好提示 ,因为这些弹框都是做web操作时的一些常用组件 ,所以,selenium就不得不支持这些组件 。 1.弹框介绍…

随机森林计算指标重要性—从决策树到随机森林Python实现

文章目录 前言一、节点二、决策树2.1 案例分析——优良的水稻2.2 案例分析——家庭财富水平 三、随机森林三、Python代码实现3.1 关键问题3.1.1 节点的表示3.1.2 决策树的表示** 根节点划分左右子树的依据 **3.1.3 随机森林的构造与重要性的表示 3.2 节点类3.2 决策树类3.2.1 初…

AI-windows下使用llama.cpp部署本地Chinese-LLaMA-Alpaca-2模型

文章目录 Llamp.cpp环境配置Chinese-LLaMA-Alpaca-2模型介绍模型下载转换生成量化模型Anaconda环境安装运行Llamp.cpp环境配置 git clone git@github.com:ggerganov/llama.cpp.git cd llama.cpp mkdir build cd build cmake .. cmake --build . --config Release生成的文件在.…

redis实现未支付时间超时就删除订单,并给前端反应一个已过期

1.创建订单缓存,设置过期时间为一分钟 now 是一个表示当前时间的对象,offset 方法用于对当前时间进行偏移。 redisTemplate.expireAt(paymentKey, now.offset(DateField.SECOND, 60)); 2.创建KeyExpiredListener类并且继承KeyExpirationEventMessageLis…

安装Fake UserAgent 库的方法最终解答!_Python库

安装Python库Fake UserAgent 我的环境:Window10,Python3.7,Anaconda3,Pycharm2023.1.3 Fake UserAgent Fake UserAgent 是一个Python库,用于生成随机或特定的用户代理(UserAgent)字符串。用户…

明日周刊-第7期

转眼间就又快到了五一假期,小长假有什么计划吗。封面配图是杭州高架上的月季花,非常好看。 文章目录 一周热点资源分享言论歌曲推荐 一周热点 鸿蒙系统持续扩大影响力:近期,华为官方宣布广东省已有超过600款应用加入鸿蒙系统&…

【自用】个人の画版规范

供电 总结起来就是:从正面看。从左到右的顺序是 VCC GND VEE,若是单电源则是VEE GND GND。 尽量用3p的。 XH2.54 接线端子

每天五分钟机器学习:神经网络模型参数的选择

本文重点 在深度学习和人工智能的浪潮中,神经网络作为其中的核心力量,发挥着举足轻重的作用。然而,神经网络的性能并非一蹴而就,而是需要经过精心的参数选择和调优。 神经网络由大量的神经元组成,每个神经元之间通过权重进行连接。这些权重,以及神经元的偏置、激活函数…

大模型prompt engineering api开发

项目目标 1.熟悉 LangChain,Rag等大模型开发开源知识, 2.了解llm开发的全部流程,独立开发个人的小助手。 环境配置 使用conda 独立分配一个环境 conda create -n llm-universe conda activate llm-universe cd 项目文件夹 pip install -r requir…

如何使k8s命令补全

文章目录 如果是centos系统 直接执行下面的命令即可 yum -y install bash-completionsource /usr/share/bash-completion/bash_completion source <(kubectl completion bash)kubectl get nodeskubectl completion bash > ~/.kube/completion.bash.incsource /root/.kub…

9.Eureka服务发现+Ribbon+RestTemplate服务调用

order-service服务通过服务名称来代替 ip:port的方式访问user-service服务的接口。 原来的请求代码&#xff1a; Service public class OrderServiceImpl implements OrderService {Autowiredprivate OrderMapper orderMapper;Autowiredprivate RestTemplate restTemplate;Ov…

Java-IDEA-类注释快捷键

1 需求 2 接口 3 示例 File-->Settings-->Editor-->File and Code Templaes中的Class /*** ClassName: ${NAME}* Description: TODO* Author: TODO* Version: TODO* Date: ${DATE} ${TIME}*/ 4 参考资料 IDEA设置类快捷注释_idea add to custom tags-CSDN博客 IDE…

react ts redux 的配置和使用、解决浏览器刷新后数据不存在

安装 npm i reduxjs/toolkit react-redux浏览器插件 - Redux DevTools(推荐但不强制使用 src 下创建 store&#xff0c;其中 index.ts/index.js 作为modules中所有store的集合 store/index.ts配置 import { configureStore } from reduxjs/toolkitconst store configureStor…

JMeter--定时器--同步定时器

一、集合点 集合点是测试脚本中的一个标记&#xff0c;当每个虚拟用户执行到标记处时&#xff0c;会停留在标记处等待其他的虚拟用户&#xff0c;当达到预期设置的并发数时&#xff0c;标记处的所有用户同时启动执行后续的请求&#xff1b; 集合点会产生瞬间高并发&#xff0c;…