Nginx 7层负载均衡的搭建

 

目录

负载均衡的理解

修改配置文件

 测试

1. 选择在 DMZ 区测试,使用 db 服务器进行测试

2.选择在外网测试负载均衡效果


负载均衡的理解

负载均衡:load balancer,简称LB
Nginx 既是一个 web 服务器软件,也是一个负载均衡软件(反向代理),也就是说负载均衡是在nginx这个软件做的,本质是更改nginx配置文件开启负载均衡器upstream,将后端服务器(real server)加入到upstream下。这样在访问这个拥有负载均衡器的服务器ip时候就会转发。

负载均衡 

* 四层负载均衡:工作在传输层 -> 根据端口号做转发      --with-stream 表示四层负载开启  效率高    tcp udp 作用在传输层

* 七层负载均衡:工作在应用层 -> 根据协议做转化(http协议)   默认支持七成负载均衡

总结: 负载均衡器通常称为四层交换机或七层交换机。四层交换机主要分析IP层及TCP/UDP层,实现四层流量负载均衡。七层交换机除了支持四层负载均衡以外,还有分析应用层的信息,如HTTP协议URI或Cookie信息。

负载均衡器的作用:
  1. 是一个中间件(软件),可以解决大量用户同时访问的时候,将流量均衡分配到后端的业务服务器上,避免某台服务器流量过大,导致服务器崩溃。解决了大并发情况下能正常访问的问题。
  2. 提高了网站的性能(并发量)和用户体验。
  3. 方便网站的性能扩展
  4. 可以让业务服务器之间可以起到冗余功能--》高可用

修改配置文件

[root@lb-1 ~]# cd /usr/local/wangguang/conf/
[root@lb-1 conf]# vim nginx.conf
worker_processes 2;
events {
worker_connections 2048;
}
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;
#定义一个负载均衡器 scapp
upstream scapp {
server 192.168.50.144;
server 192.168.50.149;
}
server {
listen 80;
server_name localhost;
location / {
#访问网页根目录直接转发到负载均衡器上进行处理
proxy_pass http://scapp;
}
}
}

 修改配置文件以后一定要测试配置文件语法是否正确并重启

[root@lb-1 conf]# nginx -t
nginx: the configuration file /usr/local/wangguang/conf/nginx.conf syntax is ok
nginx: configuration file /usr/local/wangguang/conf/nginx.conf test is successful
[root@lb-1 conf]# nginx -s reload

 测试

这一步的操作比较多,首先需要两个web服务器安装nginx,同时修改首页index.html文件,能从页面看出web服务器的不同,之前已经实现过。

1. 选择在 DMZ 区测试,使用 db 服务器进行测试

如果多次执行访问,出现不同的页面,表示负载均衡效果成功。注意访问的是这个负载均衡器所在的ip地址
[root@db-mysql ~]# curl 192.168.50.150
看到
<h1>Welcome to www!</h1>
同时再一次访问
[root@db-mysql ~]# curl 192.168.50.150
看到
<h1>Welcome to nginx!</h1>

2.选择在外网测试负载均衡效果

需要在防火墙服务器上修改 DNAT 策略,发布负载均衡器 LB1 ,用户访问 web 业务直接转发
LB1 服务器上
[root@firewall ~]# vim set_fw_snat_dnat.sh
#!/bin/bash
#开启路由功能
echo 1 >/proc/sys/net/ipv4/ip_forward
#修改/etc/sysctl.conf 里添加下面的配置
#net.ipv4.ip_forward = 1
#清除防火墙规则
iptables=/usr/sbin/iptables
$iptables -F
$iptables -t nat -F
#set snat policy
$iptables -t nat -A POSTROUTING -s 192.168.50.0/24 -o ens33 -j MASQUERADE
#set dnat policy 使用 2 个外网的 ip 对应内部的 2 个 vip,将 2 个 vip 发布出去,提供 web 服务
$iptables -t nat -A PREROUTING -d 192.168.1.125 -i ens33 -p tcp --dport 80 -j DNAT
--to-destination 192.168.50.150

#发布堡垒机,访问防火墙的 2233 端口转发到堡垒机的 22 端口
$iptables -t nat -A PREROUTING -d 192.168.1.125 -i ens33 -p tcp --dport 2233 -j DNAT
--to-destination 192.168.50.145:22
[root@firewall ~]#
执行脚本
[root@firewall ~]# bash set_fw_snat_dnat.sh
windows 机器上进行测试
直接去访问 ip 地址 http://192.168.1.125,也就是我们的WAN口,测试如图,直接刷新

 

 

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

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

相关文章

谷歌I/O 2024大会全面硬刚OpenAI

&#x1f989; AI新闻 &#x1f680; 谷歌发布升级版Gemini机器人 竞争OpenAI ChatGPT-4 摘要&#xff1a;谷歌展示了升级版的 Gemini 聊天机器人&#xff0c;其支持实时处理视频和语音输入&#xff0c;并准确回答问题。此次发布时机与 OpenAI 公布 ChatGPT-4o 新模型几乎同步…

在浏览器执行js脚本的两种方式

fetch请求get 在浏览器执行http请求,可以使用fetch函数; fetch(“url”).then(response => response.text()) .then(data => console.log(JSON.parse(data)[‘status’])) .catch(error => console.error(error)) 直接返回json数据: fetch(“url”).then(response…

Milvus 安装与配置

一、环境准备 在安装 Milvus 之前&#xff0c;确保你的系统满足以下要求&#xff1a; 操作系统&#xff1a;Milvus 支持 Linux 操作系统&#xff0c;如 Ubuntu、CentOS 等。硬件资源&#xff1a;推荐使用具有足够 CPU、内存和 SSD 存储的机器。对于大规模数据集&#xff0c;高…

在数据库中使用存储过程插入单组/多组数据

存储过程可以插入单组数据&#xff0c;也可以以字符串的形式插入多组数据&#xff0c;将字符串中的信息拆分成插入的数据。 首先建立一个简单的数据库 create database student; use student;选中数据库之后建立一张学生表 create table stu(uid int primary key,uname varc…

K8s 二进制部署 上篇

一 K8S按装部署方式&#xff1a; ① Minikube Minikube是一个工具&#xff0c;可以在本地快速运行一个单节点微型K8S&#xff0c;仅用于学习、预览K8S的一些特 性使用。 部署地址&#xff1a;https://kubernetes.io/docs/setup/minikube ② Kubeadmin Kubeadmin也是一个工…

(done) NLP+HMM 协作,还有维特比算法

参考视频&#xff1a;https://www.bilibili.com/video/BV1aP4y147gA/?p2&spm_id_frompageDriver&vd_source7a1a0bc74158c6993c7355c5490fc600 &#xff08;这实际上是 “序列标注任务”&#xff09; HMM 的训练和预测如下图 训练过程&#xff1a;我们首先先给出一个语…

【Doris的安装与部署】

1 集群规划和环境准备 Doris作为一款MPP架构的OLAP数据库&#xff0c;可以在绝大多数主流的商用服务器上运行。 1.1 环境要求 一般推荐使用Linux系统&#xff0c;版本要求是CentOS 7.1及以上或者Ubuntu 16.04及以上&#xff0c;这也是目前服务器市场最主流的操作系统。 操作…

技艺高超的魔法师:Java运算符

在Java编程的世界里&#xff0c;运算符是连接变量和表达式的关键纽带&#xff0c;它们使得程序能够执行计算、比较、赋值等一系列操作。 一&#xff0c;基本概念 1&#xff0c;运算符是什么&#xff1f; 运算符是操作变量的符号。 2&#xff0c;分类 Java中的主要运算符类…

Spring Boot实现多数据源快速入门

1.为什么需要多数据源&#xff1f; 多数据源既动态数据源&#xff0c;项目开发逐渐扩大&#xff0c;单个数据源、单一数据源已经无法满足需求项目的支撑需求。本文采用dynamic-datasource-spring-boot-starter实现多数据源&#xff0c; 主要特性 支持 数据源分组 &#xff0…

CheckStyle静态样式之道

优质博文&#xff1a;IT-BLOG-CN 在标准化的统一样式检查规范里&#xff0c;最为常用的统一样式工具是checkstyle插件&#xff0c;而不是国内阿里的代码规约插件。 【1】下载插件 【2】配置生效 配置生效及告警设置 【3】配置checkstyle.xml 官网地址 官网最新Releases 下面…

Node.js安装及环境配置(超详细!保姆级!!)

目录 一、进入官网地址下载安装包 二、安装程序 三、环境配置 四、测试 五、安装淘宝镜像 一、进入官网地址下载安装包 Node.js — Download Node.js (nodejs.org) 选择对应你系统的 node.js 版本&#xff0c;我选择的是Windows系统&#xff0c;64位 点击图中选项&#…

51单片机:点亮一个LED灯

1.新建工程 选择AT89C52&#xff0c;在Atmel下显示的是See Microchip 并不需要添加启动文件到文件夹中。 添加main.c文件&#xff0c;c比cpp效率高&#xff0c;.asm汇编即更底层 程序编写好后 nop(); 该函数在这个头文件里面 #include <INTRINS.H> #include <R…