nginx配置负载均衡--实战项目(适用于轮询、加权轮询、ip_hash)
👨🎓博主简介
🏅云计算领域优质创作者
🏅华为云开发者社区专家博主
🏅阿里云开发者社区专家博主
💊交流社区:运维交流社区 欢迎大家的加入!
🐋 希望大家多多支持,我们一起进步!😄
🎉如果文章对你有帮助的话,欢迎 点赞 👍🏻 评论 💬 收藏 ⭐️ 加关注+💗
文章目录
- 两台服务器:
- 业务需求:
- 需求实现:
- 负载均衡方式(常用的三种):
- 相关文章

两台服务器:
| 服务器ip | 应用(谁用) |
|---|---|
| 172.16.10.10 | 线上 |
| 172.16.10.20 | 研发 |
业务需求:
有两台服务器,一台供于线上使用(172.16.10.10),一台供于研发使用(172.16.10.20)
如果线上的服务器挂了,需要将所有请求转移到研发的机器上,以确保线上服务正常使用;
正常时间还是线上使用线上的服务器,研发用研发的服务器;只有在线上服务器挂了的时候才会使用备用的研发服务器;
需求实现:
使用nginx负载均衡来实现;
ip_hash方式
在nginx服务器配置中添加负载:(设置负载均衡时同台服务器不同端口也可以,不同服务器,同端口也可以)
upstream front_server{ #定义一个服务配置front_serverip_hash; #表示配置一个用户固定访问一台设备server 172.16.10.10:8080 weight=1; #第一台服务机器 设置权重值1server 172.16.10.20:8080 weight=2; #第二台服务机器 设置权重值2}server {listen 8099; #如果有一个服务是本台的那么8080肯定会被占用,这时候我们可以改一个访问端口即可;server_name localhost;#charset koi8-r;#access_log logs/host.access.log main;location / {# root html;# index index.html index.htm;proxy_pass http://front_server$request_uri;proxy_http_version 1.1;proxy_set_header Uparade $http_upgrade;proxy_set_header Connection "Upgrade";proxy_set_header Host $host;}
配置完负载之后,报错保存退出,检测nginx配置语法是否有误;
#检测nginx配置语法是否有误,前面路径可根据自己安装的目录来写
/usr/local/nginx/sbin/nginx -t
返回这个有ok,则nginx配置没有问题;如果有报错会显示几行报错的。

检测没问题之后,重新启动nginx服务
#重启nginx服务,前面路径可根据自己安装的目录来写
/usr/local/nginx/sbin/nginx -s reload#启动完成,检查是否启动(ps查看服务是否正常启动、netstat查看配置的端口是否正常启动)
ps -ef | grep nginx
netstat -anput | grep 8099#完成之后就可以页面访问了。
配置好之后,这个只是配置了负载均衡,如果服务有后缀,那么自己在访问负载的
ip:prot的时候在后面加上后缀即可。例如:172.16.10.10:8099/cs/index/
访问页面,持续监控两台服务的日志输出,测试即可;
负载均衡方式(常用的三种):
轮询:两台服务器会随机发送请求;
加权轮询:两台服务器也都会随机发送请求,但是会有一个权重值,谁的权重值高,接收的请求就会比另一个多;
ip_hash:也是会有权重值,谁的权重值越高,请求就会在最高的权重值中,只有当权重值最高的那台服务器挂了,再会去找权重值第二的服务器;(1为最高权重值)
- 轮询:
upstream front_server{ #定义一个服务配置front_serverserver 172.16.10.10:8080; #第一台服务机器(两台服务器随机分配请求)server 172.16.10.20:8080; #第二台服务机器(两台服务器随机分配请求)}
- 加权轮询:
upstream front_server{ #定义一个服务配置front_serverserver 172.16.10.10:8080 weight=5; #第一台服务机器,权重值比较高,所以大部分的请求都会在10上;server 172.16.10.20:8080 weight=2; #第二台服务机器,权重值比较低,所以少部分的请求会在20上;}
- ip_hash
upstream front_server{ #定义一个服务配置front_serverip_hash; #表示配置一个用户固定访问一台设备server 172.16.10.10:8080 weight=1; #第一台服务机器 设置权重值1,则优先访问10服务器。server 172.16.10.20:8080 weight=2; #第二台服务机器 设置权重值2,10服务器挂了则访问20服务器。}
相关文章
| 文章标题 | 文章连接 |
|---|---|
| 【Linux】nginx基础篇 – 介绍及yum安装nginx | https://liucy.blog.csdn.net/article/details/133928000 |
| 【Linux】环境下部署Nginx服务 - 二进制部署方式 | https://liucy.blog.csdn.net/article/details/132145067 |
| nginx配置负载均衡–实战项目(适用于轮询、加权轮询、ip_hash) | https://liucy.blog.csdn.net/article/details/133986013 |
| nginx快速部署一个网站服务 + 多域名 + 多端口 | https://liucy.blog.csdn.net/article/details/133986102 |
相关文章:
nginx配置负载均衡--实战项目(适用于轮询、加权轮询、ip_hash)
👨🎓博主简介 🏅云计算领域优质创作者 🏅华为云开发者社区专家博主 🏅阿里云开发者社区专家博主 💊交流社区:运维交流社区 欢迎大家的加入! 🐋 希望大家多多支…...
Mac GPU MPS常用方法
Requirements Mac computers with Apple silicon or AMD GPUs macOS 12.3 or later Python 3.7 or later Xcode command-line tools: xcode-select --install 判断是否可用 import torch if torch.backends.mps.is_available():mps_device torch.device("mps")x …...
【数据结构】线性表(四)双向链表的各种操作(插入、删除、查找、修改、遍历打印)
目录 线性表的定义及其基本操作(顺序表插入、删除、查找、修改) 四、线性表的链接存储结构 1. 单链表 2. 循环链表 3. 双向链表 a. 双向链表节点结构 b. 创建一个新的节点 c. 在链表末尾插入节点 d. 在指定位置插入节点 e. 删除指定位置的节点…...
数据结构和算法——图
图 有向图 带权图 邻接矩阵 邻接表相较于邻接矩阵,减少了存储空间; 邻接表 参考视频:【尚硅谷】数据结构与算法(Java数据结构与算法)_哔哩哔哩_bilibili...
大数据学习(16)-mapreduce详解
&&大数据学习&& 🔥系列专栏: 👑哲学语录: 承认自己的无知,乃是开启智慧的大门 💖如果觉得博主的文章还不错的话,请点赞👍收藏⭐️留言📝支持一下博主哦ᾑ…...
Android---OkHttp详解
OkHttp 是一套处理 HTTP 网络请求的依赖库,由 Square 公司设计研发并开源,目前可以在 Java 和 Kotlin 中使用。对于 Android App,OkHttp 现在几乎已经占据了所有的网络请求操作。RetroFit OkHttp 实现网络请求似乎成了一种标配。 因此&…...
向某文件中逐秒追加带序号输入当前时间 fgets fputs fprintf sprintf
//向某文件中逐秒追加带序号输入当前时间 #include<stdio.h> #include<stdlib.h> #include<time.h> #include<string.h> #include <unistd.h> int main(int argc, char const *argv[]) { time_t tv; // time(&tv);//法1:获取秒数 …...
同为科技(TOWE)机架PDU产品在IDC数据中心机房建设中的应用
当今社会互联网发展迅速, 随着带宽需求的提升, 网络的保密性、安全性的要求就越来越迫切。PDU(Power Distribution Unit) 是 PDU具备电源分配和管理功能的电源分配管理器。PDU电源插座是多有设备运行的第一道也是最为密切的部件, PDU的好坏直…...
Elasticsearch学习笔记
1.核心概念 bucket: 一个数据分组(类似于sql group by以后的数据)metric:对bucket执行的某种聚合分析的操作,比如说求平均值,最大值,最小值。一些系列的统计方法(类似 select count(1) MAX MIN AVG) 请…...
Java框架随笔
Maven面试题 Myabtis面试题 文章目录 Maven面试题Myabtis面试题 1、简述Spring Boot的启动流程2、如何理解Bean的生命周期3、MyBatis的主要功能4、MyBatis的组成部分5、MyBatis的动态SQL 1、简述Spring Boot的启动流程 Spring Boot的启动流程可以分为以下几个步骤:…...
自然语言处理基础——词表示
词表示 把自然语言中最基本的语言单元——词转换为机器能够理解的 词表示能完成以下两个能力 词相似度计算 词与词之间语义的关系 近义词&上位词 使用近义词或上位词表示的问题 遗漏差异 遗漏新的释义 带有主观性 数据吸收 需要大量人工构建 One-Hot Representation …...
2023年9月青少年软件编程(C 语言) 等级考试试卷(七级)
青少年软件编程(C/C)7级等级考试真题试卷(2023年9月) 编程题第 1 题 红与黑(2023.9) 有一间长方形的房子,地上铺了红色、黑色两种颜色的正方形瓷砖。你站在其中一块黑色的瓷砖上,…...
鸿鹄工程项目管理系统 Spring Cloud+Spring Boot+Mybatis+Vue+ElementUI+前后端分离构建工程项目管理系统项目背景
鸿鹄工程项目管理系统 Spring CloudSpring BootMybatisVueElementUI前后端分离构建工程项目管理系统 1. 项目背景 一、随着公司的快速发展,企业人员和经营规模不断壮大。为了提高工程管理效率、减轻劳动强度、提高信息处理速度和准确性,公司对内部工程管…...
apache httpd 换行解析漏洞
原理 Apache HTTPD是一款HTTP服务器,它可以通过mod_php来运行PHP网页。其2.4.0~2.4.29版本中存在一个解析漏洞,在解析PHP时,1.php\x0A将被按照PHP后缀进行解析,导致绕过一些服务器的安全策略。 漏洞编号 cve-2017-15715 环境…...
【设计模式】工厂模式
工厂模式 1.什么是工厂模式 它提供了一种创建对象的最佳方式。在工厂模式中,我们在创建对象时不会对客户端暴露创建逻辑,并且是通过使用一个共同的接口来指向新创建的对象。实现了创建者和调用者分离,工厂模式分为简单工厂、工厂方法、抽象…...
C++二分算法的应用:寻找峰值原理、源码及测试用例
说明 此文是课程https://edu.csdn.net/course/detail/38771 的讲义。 源码下载:https://download.csdn.net/download/he_zhidan/88458478 题目 长度为n的数组nums,请返回任意一峰值的索引。符合以下条件之一i便是峰值的索引。 n等于1 i等于0 n>…...
外汇天眼:本周无牌裸奔平台名单出炉,你踩“坑”了么?!!
监管信息早知道!外汇天眼将每周定期公布监管牌照状态发生变化的交易商,以供投资者参考,规避投资风险。如果平台天眼评分过高,建议投资者谨慎选择,因为在外汇天眼评分高不代表平台没问题! 以下是监管牌照发生…...
10 读写锁ReentrantReadWriteLock
1 介绍 为什么要使用读写锁? 需要高并发读取和较低并发写入的应用程序,降低锁的粒度,提高系统性能 使用场景: 读多写少的共享资源 缓存管理:读 >> 写,控制多个线程同时读缓存,需要刷新o…...
laravel队列
laravel redis队列 1、创建job队列任务 php artisan make:job StoreUser执行上述命令后,会生成app/Jobs/StoreUser.php文件,编辑文件内容如下: <?phpnamespace App\Jobs;use Illuminate\Bus\Queueable; use Illuminate\Contracts\Queu…...
【计算机网络】TCP 协议的相关特性
TCP(传输控制协议)是一种面向连接的、可靠的、基于字节流的协议。以下是TCP协议的相关特性: 可靠性:TCP通过确认和重传机制保证数据的可靠传输。 面向连接:TCP在传输数据前需要先建立连接。连接的建立过程包括三次握手…...
Optimizing Clock Tree Synthesis: From Library Path Delays to Pin-Level Latencies
1. 时钟树综合优化的核心挑战 在芯片设计流程中,时钟树综合(CTS)是最关键的步骤之一。想象一下,时钟信号就像城市里的公交车,需要准时到达每一个站点(寄存器)。但现实情况是,工艺变异…...
AI画质增强镜像体验:一键修复网络缩略图,文字变清晰
AI画质增强镜像体验:一键修复网络缩略图,文字变清晰 1. 项目背景与核心价值 你有没有遇到过这样的烦恼?在网上找到一张心仪的图片,想用作壁纸或素材,却发现它分辨率太低,放大后全是马赛克;或者…...
智能充电桩项目复盘:STM32如何用C语言优雅地管理IC卡、指纹与充电状态机?
STM32智能充电桩系统设计:从状态机到模块化架构的工程实践 在嵌入式系统开发中,智能充电桩这类需要同时处理多种外设交互和复杂业务流程的项目,往往成为区分"能跑通的代码"与"可维护的系统"的试金石。本文将从一个真实的…...
深入理解Go编译器:从源码到可执行文件的完整旅程
深入理解Go编译器:从源码到可执行文件的完整旅程 【免费下载链接】under-the-hood 📚 Go: Under The Hood | Go 语言原本 | https://golang.design/under-the-hood 项目地址: https://gitcode.com/gh_mirrors/un/under-the-hood Go语言以其高效的…...
初认识测试
前言: 什么是测试,测试在我们的生活中随处可见,比如你要买一件衣服,首先你可能是因为这件衣服的样式吸引了你,这其实就是外貌测试,然后呢,你就询问这件衣服的品质,看是不是你的需求&…...
TwitchDropsMiner完全指南:5个步骤轻松自动化获取游戏掉落奖励
TwitchDropsMiner完全指南:5个步骤轻松自动化获取游戏掉落奖励 【免费下载链接】TwitchDropsMiner An app that allows you to AFK mine timed Twitch drops, with automatic drop claiming and channel switching. 项目地址: https://gitcode.com/GitHub_Trendin…...
Obsidian Projects如何重新定义知识项目管理?深度解析其架构创新与生态位价值
Obsidian Projects如何重新定义知识项目管理?深度解析其架构创新与生态位价值 【免费下载链接】obsidian-projects Plain text project planning in Obsidian 项目地址: https://gitcode.com/gh_mirrors/ob/obsidian-projects Obsidian Projects是一款为Obsi…...
告别复杂命令:这款图形化工具让你3步搞定macOS安装包下载
告别复杂命令:这款图形化工具让你3步搞定macOS安装包下载 【免费下载链接】DownloadFullInstaller macOS application written in SwiftUI that downloads installer pkgs for the Install macOS Big Sur application. 项目地址: https://gitcode.com/gh_mirrors/…...
QZoneExport终极指南:如何完整备份QQ空间数据并永久保存
QZoneExport终极指南:如何完整备份QQ空间数据并永久保存 【免费下载链接】QZoneExport QQ空间导出助手,用于备份QQ空间的说说、日志、私密日记、相册、视频、留言板、QQ好友、收藏夹、分享、最近访客为文件,便于迁移与保存 项目地址: https…...
BallonTranslator:免费开源的一键漫画翻译神器
BallonTranslator:免费开源的一键漫画翻译神器 【免费下载链接】BallonsTranslator 深度学习辅助漫画翻译工具, 支持一键机翻和简单的图像/文本编辑 | Yet another computer-aided comic/manga translation tool powered by deeplearning 项目地址: https://gitco…...
