热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Linux上nginx的负载均衡

集群集群是什么:简单来说,集群就是指一组(若干个)相互独立的计算机,利用欧冠甘肃通信网络组成的一个较大的计算机服务系统,每个集群节点(即集群中的每台计算

集群

集群是什么 :

  简单来说, 集群就是指一组(若干个)相互独立的计算机, 利用欧冠甘肃通信网络组成的一个较大的计算机服务系统, 每个集群节点(即集群中的每台计算机)都是运行各自服务的独立服务器. 这些服务器之间可以彼此通信, 协同向用户提供应用程序, 系统资源和数据, 并以单一系统的模式加以管理. 当用户客户机请求集群系统时, 集群给用户的感觉就是一个单一的独立服务器, 而实际上用户请求的是一组集群服务器.

  打开谷歌, 百度的页面, 看起来很简单, 也许你觉得用几分钟就可以制作相似的网页, 而实际上, 这个页面的背后是有成千上万太服务器集群协同工作的结果. 

  若要一句话描述集群, 即一堆服务器合作做同一件事, 这些机器可能需要整个技术团队架构, 设计和统一协调管理, 这儿写机器可以分布在一个机房, 也可以分布在全国全球各个地区的多个机房.

为什么要用集群 :

  要说为什么要使用集群, 就要了解一下集群的特点!

  1. 高性能

    一些国家重要的计算密集型应用(如天气预报, 核试验模拟等), 需要计算机有很强的运算处理能力. 以全世界现有的技术, 即使是大型机, 其计算能力也是有限的, 很难单独完成此任务, 因为计算时间可能会相当长, 也许几天, 甚至几年或更久. 因此, 对于这类复杂的计算业务, 便使用了计算机集群技术, 几种即使上百条, 甚至成千上万台计算机进行计算.

    耳熟能详的谷歌, 百度, 淘宝都不是几台大悉尼国际可以构建的, 都是上万台服务器组成的高性能集群, 分布不同的地点.

  2. 价格有效性

    通常一套系统集群架构, 只需要几台或者数十台服务器主机即可. 与动辄价值上百万元的专用超级计算机相比便宜了很多. 在达到同样性能需求条件下, 采用计算机集群架构比采用同等运算能力的大型计算机具有更高的性价比.

    早期的淘宝, 支付宝的数据库等核心系统就是上百万元的小型服务器. 后因使用维护成本太高以及扩展设备费用成几何级数翻倍, 甚至成为扩展瓶颈, 人员维护和也十分困难, 最终使用PC服务器集群将其替换, 比如, 将数据库系统从小型机结合Oracle数据库迁移带了MySQL开源数据库结合PC服务器上来。 不但成本下降了, 扩展和为维护也跟那个容易了.

  3. 可伸缩性

    当服务负载, 压力增长时, 针对集群系统进行较简单的扩展即可满足需求, 且不会降低服务质量.

    通常情况下, 硬件设备若想扩展性能, 不得不增加新的CPU和存储设备, 如果加不上去了, 就不得不购买更高性能的服务器. 如果采用集群技术, 则只需要将新的单个服务器加入下你又集群架构中即可, 从访问的客户角度来看, 系统服务无论是连续性还是性能上都几乎没有变化, 西永在不知不觉中完成了升级, 加大了访问能力, 轻松的实现了扩展. 集群系统中的节点数目可以增长到几千乃至上万个, 其伸缩性远超过单台超级计算机.

  4. 高可用性

    单一的计算机系统总会面临设备损毁的问题, 如CPU, 内存, 主板, 电源, 硬盘等, 只要一个部件坏掉, 这个计算机系统就可能会宕机, 无法正常提供服务. 在集群系统中, 尽管部分硬件和软件也会发生故障, 但是整个系统可以保证7*24小时工作.

    集群架构技术可以使得系统在若干硬件设备孤战发生时仍可以继续工作, 这样就将系统的停机时间减小到了最小. 集群系统在提高系统可靠性的同时, 也大大减小了故障带来的业务损失, 目前几乎100%的互联网网站都要求7*24小时提供服务.

  5. 透明性

    多个独立计算机组成的松耦合集群系统构成一个虚拟服务器. 用户或客户端程序访问集群系统时, 就像访问一台高性能, 高可用的服务器一样, 集群中一部分服务器的上线, 下线不会中断整个系统服务, 这对用户也是透明的.

 


 

负载均衡

负载均衡概述

  web服务器, 直接面向用户, 往往要承载大量并发请求, 单台服务器难以负荷, 而使用多态web服务器组成集群, 前端使用nginx负载均衡, 将请求分散的打到后端服务器集群中

  实现负载的分发, 那么会大大提升系统的吞吐率, 请求性能, 高容灾.

  nginx要实现负载均衡需要哟用到proxy_pass代理模块配置

  nginx负载均衡与nginx代理不同地方在于 :

    nginx代理仅代理一台服务器, 而nginx负载均衡则是将客户端请求代理转发至一组upstream虚拟服务池.

    nginx可以配置代理多态服务器, 当一台服务器宕机之后, 仍能保持系统可用.

 


 

nginx负载均衡实验配置

分配服务器upstream配置 :

  在nginx配置文件(nginx.conf) > http区域内 :

upstream django {server 10.0.0.10:8000;server 10.0.0.11:9000;
}
----------------------------------------------------
负载均衡池内放两个服务器, 默认以轮询的方式去调度负载均衡池内的服务器

  在nginx.conf > http区域 > server区域 > location区域内添加proxy_pass :

http {
include mime.types;
default_type application
/octet-stream;access_log /data/access.log main;#定义负载均衡池(即存放服务器的池子)
upstream h {
server
192.168.12.128:8000;
server
192.168.12.129:8000;}server {
listen
80;
server_name www.xd.com;location
/ {
root
/data/xd;
index index.html index.htm;
# 发送过来的请求匹配到 / , 就执行以下代码(去负载均衡池内分配服务器)
proxy_pass http:
//h;
# 这个proxy_params文件创建在/opt/nginx1-12/conf底下
include proxy_params;
}
------------------------------------------------------------# 手动创建proxy_params参数文件
touch /opt/nginx1-12/conf/proxy_params# 写入信息
proxy_set_header Host $http_host;proxy_set_header X-Real-IP $remote_addr;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;proxy_connect_timeout 30;proxy_send_timeout 60;proxy_read_timeout 60;proxy_buffering on;proxy_buffer_size 32k;proxy_buffers 4 128k;

  此时负载均衡配置初步完成, upstream默认按照轮询方式负载, 每个请求按时间顺序注意分配到后端节点.

upstream分配策略 :

  weight权重

upstream django {server 192.168.12.128:8000 weight=5;server 192.168.12.129:9000 weight=10;#这个节点访问比率是大于8000的
}

  ip_hash

每个请求按访问ip的hash结果分配,这样每个访客固定访问一个后端服务器
upstream django {ip_hash;server
192.168.12.128:8000;server 192.168.12.129:9000;
}

  backup(备份服务器)

  在非backup机器繁忙或者宕机时, 请求backup机器, 因此机器默认压力最小

upstream django {server 192.168.12.128:8000 weight=5;server 192.168.12.129:9000;server 192.168.12.130:8080 backup;
}

应用服务器简单配置 :

  1. 准备两个服务器并配置一段flask代码并运行

# 准备代码 myflask.py
from flask import Flask
app
=Flask(__name__)
@app.route(
'/')
def hello():return "

我是128服务器

"
if __name__=="__main__":app.run(host='0.0.0.0',port=8000)
---------------------------------------------------------------------
from flask import Flask
app
=Flask(__name__)
@app.route(
'/')
def hello():return "

我是129服务器

"
if __name__=="__main__":app.run(host='0.0.0.0',port=8000)
----------------------------------------------------------------------
python3 myflask.py

  通过访问nginx负载均衡器入口(www.xd.com), 查看负载均衡是否分配正常, 默认轮询

nginx负载均衡调度算法 :

调度算法    概述
轮询     按时间顺序逐一分配到不同的后端服务器(默认)
weight    加权轮询,weight值越大,分配到的访问几率越高
ip_hash    每个请求按访问IP的hash结果分配,这样来自同一IP的固定访问一个后端服务器
url_hash   按照访问URL的hash结果来分配请求,是每个URL定向到同一个后端服务器
least_conn 最少链接数,那个机器链接数少就分发

  ip_hash配置, 根据客户端ip哈希分配, 不能和weight一起使用.

nginx动静分离负载均衡 :

 

转:https://www.cnblogs.com/dong-/p/10085372.html



推荐阅读
  • Java在运行已编译完成的类时,是通过java虚拟机来装载和执行的,java虚拟机通过操作系统命令JAVA_HOMEbinjava–option来启 ... [详细]
  • 本文介绍了如何使用php限制数据库插入的条数并显示每次插入数据库之间的数据数目,以及避免重复提交的方法。同时还介绍了如何限制某一个数据库用户的并发连接数,以及设置数据库的连接数和连接超时时间的方法。最后提供了一些关于浏览器在线用户数和数据库连接数量比例的参考值。 ... [详细]
  • Oracle优化新常态的五大禁止及其性能隐患
    本文介绍了Oracle优化新常态中的五大禁止措施,包括禁止外键、禁止视图、禁止触发器、禁止存储过程和禁止JOB,并分析了这些禁止措施可能带来的性能隐患。文章还讨论了这些禁止措施在C/S架构和B/S架构中的不同应用情况,并提出了解决方案。 ... [详细]
  • Nginx使用AWStats日志分析的步骤及注意事项
    本文介绍了在Centos7操作系统上使用Nginx和AWStats进行日志分析的步骤和注意事项。通过AWStats可以统计网站的访问量、IP地址、操作系统、浏览器等信息,并提供精确到每月、每日、每小时的数据。在部署AWStats之前需要确认服务器上已经安装了Perl环境,并进行DNS解析。 ... [详细]
  • 图解redis的持久化存储机制RDB和AOF的原理和优缺点
    本文通过图解的方式介绍了redis的持久化存储机制RDB和AOF的原理和优缺点。RDB是将redis内存中的数据保存为快照文件,恢复速度较快但不支持拉链式快照。AOF是将操作日志保存到磁盘,实时存储数据但恢复速度较慢。文章详细分析了两种机制的优缺点,帮助读者更好地理解redis的持久化存储策略。 ... [详细]
  • 如何在服务器主机上实现文件共享的方法和工具
    本文介绍了在服务器主机上实现文件共享的方法和工具,包括Linux主机和Windows主机的文件传输方式,Web运维和FTP/SFTP客户端运维两种方式,以及使用WinSCP工具将文件上传至Linux云服务器的操作方法。此外,还介绍了在迁移过程中需要安装迁移Agent并输入目的端服务器所在华为云的AK/SK,以及主机迁移服务会收集的源端服务器信息。 ... [详细]
  • Linux如何安装Mongodb的详细步骤和注意事项
    本文介绍了Linux如何安装Mongodb的详细步骤和注意事项,同时介绍了Mongodb的特点和优势。Mongodb是一个开源的数据库,适用于各种规模的企业和各类应用程序。它具有灵活的数据模式和高性能的数据读写操作,能够提高企业的敏捷性和可扩展性。文章还提供了Mongodb的下载安装包地址。 ... [详细]
  • CentOS 7部署KVM虚拟化环境之一架构介绍
    本文介绍了CentOS 7部署KVM虚拟化环境的架构,详细解释了虚拟化技术的概念和原理,包括全虚拟化和半虚拟化。同时介绍了虚拟机的概念和虚拟化软件的作用。 ... [详细]
  • 本文介绍了Windows操作系统的版本及其特点,包括Windows 7系统的6个版本:Starter、Home Basic、Home Premium、Professional、Enterprise、Ultimate。Windows操作系统是微软公司研发的一套操作系统,具有人机操作性优异、支持的应用软件较多、对硬件支持良好等优点。Windows 7 Starter是功能最少的版本,缺乏Aero特效功能,没有64位支持,最初设计不能同时运行三个以上应用程序。 ... [详细]
  • 服务器上的操作系统有哪些,如何选择适合的操作系统?
    本文介绍了服务器上常见的操作系统,包括系统盘镜像、数据盘镜像和整机镜像的数量。同时,还介绍了共享镜像的限制和使用方法。此外,还提供了关于华为云服务的帮助中心,其中包括产品简介、价格说明、购买指南、用户指南、API参考、最佳实践、常见问题和视频帮助等技术文档。对于裸金属服务器的远程登录,本文介绍了使用密钥对登录的方法,并提供了部分操作系统配置示例。最后,还提到了SUSE云耀云服务器的特点和快速搭建方法。 ... [详细]
  • 一句话解决高并发的核心原则
    本文介绍了解决高并发的核心原则,即将用户访问请求尽量往前推,避免访问CDN、静态服务器、动态服务器、数据库和存储,从而实现高性能、高并发、高可扩展的网站架构。同时提到了Google的成功案例,以及适用于千万级别PV站和亿级PV网站的架构层次。 ... [详细]
  • 本文介绍了操作系统的定义和功能,包括操作系统的本质、用户界面以及系统调用的分类。同时还介绍了进程和线程的区别,包括进程和线程的定义和作用。 ... [详细]
  • svnWebUI:一款现代化的svn服务端管理软件
    svnWebUI是一款图形化管理服务端Subversion的配置工具,适用于非程序员使用。它解决了svn用户和权限配置繁琐且不便的问题,提供了现代化的web界面,让svn服务端管理变得轻松。演示地址:http://svn.nginxwebui.cn:6060。 ... [详细]
  • 篇首语:本文由编程笔记#小编为大家整理,主要介绍了软件测试知识点之数据库压力测试方法小结相关的知识,希望对你有一定的参考价值。 ... [详细]
  • MySQL数据库锁机制及其应用(数据库锁的概念)
    本文介绍了MySQL数据库锁机制及其应用。数据库锁是计算机协调多个进程或线程并发访问某一资源的机制,在数据库中,数据是一种供许多用户共享的资源,如何保证数据并发访问的一致性和有效性是数据库必须解决的问题。MySQL的锁机制相对简单,不同的存储引擎支持不同的锁机制,主要包括表级锁、行级锁和页面锁。本文详细介绍了MySQL表级锁的锁模式和特点,以及行级锁和页面锁的特点和应用场景。同时还讨论了锁冲突对数据库并发访问性能的影响。 ... [详细]
author-avatar
六零后女人_731
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有