阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

初学Nginx实现Web负载均衡

380次阅读
没有评论

共计 4419 个字符,预计需要花费 12 分钟才能阅读完成。

keepalived: 是一个备份方案里面的一个关键的软件, 主要是主监控从, 一旦宕机立刻接管,

virtual IP: 相当于一个权杖, 是对外真正提供服务的 IP, 当 nginx1 是主,nginx2 是副, 那么只要主挂了, 副就能够直接将主导权抢过来, 负责通信业务

对于 session 方式, 用户信息存放在服务器端, 那么就直接搞一台 session 服务器, 所有服务器就去 session 服务器上去读取用户信息, 那么 session 同步解决了

web2 到 MySQL 中加缓存可以避免频繁的从 mysql 中读取相同的数据, 加一个缓存层直接提升了速度,(注意缓存是直接存在内存中的, 提高了 IO 速度)

后面的 Web 服务不管是什么系统(Nginx Apache), 只要内容一样就可以了, 但是一样的方便维护

Nginx 的负载均衡模块目前支持 4 种调度算法,下面进行分别介绍,其中后两项属于第 三方的调度方法:

轮询 poll(默认)。每个请求按时间顺序逐一分配到不同的后端服务器,如果后端某台 服务器宕机, 故障系统被自动剔除,使用户访问不受影响。Weight 指定轮询权值,Weight 值越大,分配到的访问机率越高,主要用于后端每 个服务器性能不均的情况下。就是权重值, 可以设置

ip_hash。每个请求按访问 IP 的 hash 结果分配,这样来自同一个 IP 的访客固定访 问一个后端服务器,有效解决了动态网页存在的 session 共享问题。fair。比上面两个更加智能的负载均衡算法。此种算法可以依据页面大小和加载时 间长短智能地进行负载均衡,也就是根据后端服务器响应时间来分配请求,响应时间短的优先分配。Nginx 本身是不支持 fair 的,如果需要使用这种调度算法,必须下载 Nginx 的 upstream_fair 模块。
url_hash。按访问 url 的 hash 结果来分配请求,使每个 url 定向到同一个后端服务器,可以进一步提高后端缓存服务器的效率。Nginx 本身是不支持 url_hash 的,如果需要使用这种调度算法,必须安装 Nginx 的 hash 软件包。

ip_hash 在背后还是需要轮询的, 只是在轮询的基础上做了识别

注意 当负载调度算法为 ip_hash 时,后端服务器在负载均衡调度中的状态不能是 weight 和 backup。

没有指定的就是默认的, 就是轮询


做负载均衡服务器:

  1. upstream myserver {
  2. # server 172.16.60.32:80 weight=2 max_fails=3 fail_timeout=20s; 权重
  3. # server 172.16.60.31:80 weight=1 max_fails=3 fail_timeout=20s;
  4. server 172.16.60.32:80;
  5. server 172.16.60.31:80;
  6. server 172.16.60.52:80;
  7. }
  8. server {
  9. listen 80;
  10. server_name localhost;
  11. #charset koi8-r;
  12. #access_log logs/host.access.log main;
  13. location /{
  14. root html;
  15. index index.html index.htm;
  16. proxy_pass http://myserver; ## 注意这里, 就是引用上面定义的 proxy, 定义了就要引用
  17. proxy_next_upstream http_500 http_502 http_503 error timeout invalid_header;
  18. include /opt/nginx/conf/proxy.conf;
  19. }
  20. #error_page 404 /404.html;
  21. # redirect server error pages to the static page /50x.html
  22. #
  23. error_page 500502503504/50x.html;
  24. location =/50x.html {
  25. root html;
  26. }

需要创建 /opt/nginx/conf/proxy.conf 文件:

  1. proxy_redirect off;
  2. proxy_set_header Host $host;
  3. proxy_set_header X-Real-IP $remote_addr;
  4. proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
  5. proxy_connect_timeout 90;
  6. proxy_send_timeout 90;
  7. proxy_read_timeout 90;
  8. proxy_buffer_size 4k;
  9. proxy_buffers 432k;
  10. proxy_busy_buffers_size 64k;
  11. proxy_temp_file_write_size 64k;

三种算法区别: 
轮询

  1. upstream myserver {
  2. server 172.16.60.32:80;
  3. server 172.16.60.31:80;
  4. server 172.16.60.52:80;
  5. }

权重:

  1. upstream myserver {
  2. server 172.16.60.32:80 weight=2 max_fails=3 fail_timeout=20s;
  3. server 172.16.60.31:80 weight=1 max_fails=3 fail_timeout=20s;
  4. server 172.16.60.52:80 weight=3 max_fails=3 fail_timeout=20s;
  5. }

IP hash:

  1. upstream myserver {
  2. ip_hash;
  3. server 172.16.60.32:80;
  4. server 172.16.60.52:80;
  5. server 172.16.60.31:80;
  6. }

假如提示 80 端口占用就使用 fuser -k 80/tcp 杀掉占用 80 端口的程序

nginx 集群实验总结; 
1, 明确拓扑结构, 明确 IP 地址架构 
2, 确定 real_server 确定是可用的 
3, 确定 real_server 和集群服务器上 selinux 和 seLinux 不影响服务 
4, 看好了自己启用的 nginx 的目录是自己所配置的, 不要改错了文件夹, 
5, 定义了负载均衡器名称要调用, 一旦访问 80 端口就要转到负载均衡器上面, 前面的 http:// 表明转发的是 http 协议, 是固定语法, 是 
6, 注意括号问题 
7, 看英文报错误

那么问题来了: 
数据从客户机 –> 负载均衡—>real_server 的来回? 从封装角度理解 
数据经过负载均衡服务器之后, 源 IP 和目的 IP 是否会发生改变?


答案: 数据包经过 nginx 均衡服务器后, 目的端口和目的 IP 地址和 mac 地址变为 real_server 的, 源 IP 和端口和 mac 变为 nginx 服务器的 
nginx 是负责的代理的工作, 完全代理, 所以外面的客户机是根本就不知道里面 real_server 的真实地址的

高性能: 大量的并发, 同时处理大量的请求和数据–> 集群解决方案 
高可用: 备份—> 备份


keepalived:

keepalived 是什么?

keepalived 是集群管理中保证集群高可用的一个服务软件,其功能类似于 heartbeat,用来防止单点故障。heartbeat(心跳)

keepalived 工作原理

keepalived 是以 VRRP 协议为实现基础的,VRRP 全称 Virtual Router Redundancy Protocol,即虚拟路由冗余协议。
虚拟路由冗余协议,可以认为是实现路由器高可用的协议,即将 N 台提供相同功��的路由器组成一个路由器组,这个组里面有一个 master 和多个 backup,master 上面有一个对外提供服务的 vip(该路由器所在局域网内其他机器的默认路由为该 vip),master 会发组播,当 backup 收不到 vrrp 包时就认为 master 宕掉了,这时就需要根据 VRRP 的优先级来选举一个 backup 当 master。这样的话就可以保证路由器的高可用了。
keepalived 主要有三个模块,分别是 core、check 和 vrrp。core 模块为 keepalived 的核心,负责主进程的启动、维护以及全局配置文件的加载和解析。check 负责健康检查,包括常见的各种检查方式。vrrp 模块是来实现 VRRP 协议的。

keepalived 的配置文件

keepalived 只有一个配置文件 keepalived.conf,里面主要包括以下几个配置区域,分别是 global_defs、static_ipaddress、static_routes、vrrp_script、vrrp_instance 和 virtual_server。

global_defs 区域

主要是配置故障发生时的通知对象以及机器标识


什么是四层负载均衡, 什么是七层负载均衡?

四层: 传输层,IP+port 
七层: 应用层, 当然也能够用四层进行负载均衡

为什么四层的负载均衡快? 各自的优缺点

四层负载均衡只修改 IP 包头的 IP 地址和端口, 只相当于个路由器的功能, 外面能看真实服务器的 IP 地址, 不做 tcp 连接, 只是做个转发, 所以说四层要快, 大并发 
七层负载均衡是代理 TCP 连接, 外面看不到里面的真实情况, 我们学的 nginx 里面的就是七层, 两面都要建立 tcp 连接, 所以对性能的要求会更高

四层:lvs–> 是中国人章文嵩搞的, 现在在淘宝网, 现在已经嵌入到 Linux 内核中去了, 美国人的 F5 也能够实现四层负载均衡,
七层:nginx,HAproxy, 等

lvs 也是需要 keepalived 做高可用的

集群:cluster

更多 Nginx 负载均衡配置 相关教程见以下内容

Nginx 负载均衡配置说明 http://www.linuxidc.com/Linux/2016-03/129424.htm

Linux 下 Nginx+Tomcat 负载均衡和动静分离配置要点  http://www.linuxidc.com/Linux/2016-01/127255.htm

Docker+Nginx+Tomcat7 配置简单的负载均衡  http://www.linuxidc.com/Linux/2015-12/125907.htm

Nginx 负载均衡(主备)+Keepalived  http://www.linuxidc.com/Linux/2015-12/126865.htm

使用 Nginx 作为负载均衡器 http://www.linuxidc.com/Linux/2015-12/125789.htm

使用 Nginx 简单实现负载均衡  http://www.linuxidc.com/Linux/2016-08/134443.htm

Nginx 负载均衡与高可用的实现 http://www.linuxidc.com/Linux/2016-04/130350.htm

Nginx 的详细介绍:请点这里
Nginx 的下载地址:请点这里

本文永久更新链接地址:http://www.linuxidc.com/Linux/2016-10/136116.htm

正文完
星哥玩云-微信公众号
post-qrcode
 0
星锅
版权声明:本站原创文章,由 星锅 于2022-01-21发表,共计4419字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中

星哥玩云

星哥玩云
星哥玩云
分享互联网知识
用户数
4
文章数
19351
评论数
4
阅读量
7995260
文章搜索
热门文章
星哥带你玩飞牛NAS-6:抖音视频同步工具,视频下载自动下载保存

星哥带你玩飞牛NAS-6:抖音视频同步工具,视频下载自动下载保存

星哥带你玩飞牛 NAS-6:抖音视频同步工具,视频下载自动下载保存 前言 各位玩 NAS 的朋友好,我是星哥!...
星哥带你玩飞牛NAS-3:安装飞牛NAS后的很有必要的操作

星哥带你玩飞牛NAS-3:安装飞牛NAS后的很有必要的操作

星哥带你玩飞牛 NAS-3:安装飞牛 NAS 后的很有必要的操作 前言 如果你已经有了飞牛 NAS 系统,之前...
我把用了20年的360安全卫士卸载了

我把用了20年的360安全卫士卸载了

我把用了 20 年的 360 安全卫士卸载了 是的,正如标题你看到的。 原因 偷摸安装自家的软件 莫名其妙安装...
再见zabbix!轻量级自建服务器监控神器在Linux 的完整部署指南

再见zabbix!轻量级自建服务器监控神器在Linux 的完整部署指南

再见 zabbix!轻量级自建服务器监控神器在 Linux 的完整部署指南 在日常运维中,服务器监控是绕不开的...
飞牛NAS中安装Navidrome音乐文件中文标签乱码问题解决、安装FntermX终端

飞牛NAS中安装Navidrome音乐文件中文标签乱码问题解决、安装FntermX终端

飞牛 NAS 中安装 Navidrome 音乐文件中文标签乱码问题解决、安装 FntermX 终端 问题背景 ...
阿里云CDN
阿里云CDN-提高用户访问的响应速度和成功率
随机文章
免费无广告!这款跨平台AI RSS阅读器,拯救你的信息焦虑

免费无广告!这款跨平台AI RSS阅读器,拯救你的信息焦虑

  免费无广告!这款跨平台 AI RSS 阅读器,拯救你的信息焦虑 在算法推荐主导信息流的时代,我们...
4盘位、4K输出、J3455、遥控,NAS硬件入门性价比之王

4盘位、4K输出、J3455、遥控,NAS硬件入门性价比之王

  4 盘位、4K 输出、J3455、遥控,NAS 硬件入门性价比之王 开篇 在 NAS 市场中,威...
再见zabbix!轻量级自建服务器监控神器在Linux 的完整部署指南

再见zabbix!轻量级自建服务器监控神器在Linux 的完整部署指南

再见 zabbix!轻量级自建服务器监控神器在 Linux 的完整部署指南 在日常运维中,服务器监控是绕不开的...
星哥带你玩飞牛NAS-5:飞牛NAS中的Docker功能介绍

星哥带你玩飞牛NAS-5:飞牛NAS中的Docker功能介绍

星哥带你玩飞牛 NAS-5:飞牛 NAS 中的 Docker 功能介绍 大家好,我是星哥,今天给大家带来如何在...
300元就能买到的”小钢炮”?惠普7L四盘位小主机解析

300元就能买到的”小钢炮”?惠普7L四盘位小主机解析

  300 元就能买到的 ” 小钢炮 ”?惠普 7L 四盘位小主机解析 最近...

免费图片视频管理工具让灵感库告别混乱

一言一句话
-「
手气不错
手把手教你,购买云服务器并且安装宝塔面板

手把手教你,购买云服务器并且安装宝塔面板

手把手教你,购买云服务器并且安装宝塔面板 前言 大家好,我是星哥。星哥发现很多新手刚接触服务器时,都会被“选购...
开发者福利:免费 .frii.site 子域名,一分钟申请即用

开发者福利:免费 .frii.site 子域名,一分钟申请即用

  开发者福利:免费 .frii.site 子域名,一分钟申请即用 前言 在学习 Web 开发、部署...
星哥带你玩飞牛NAS硬件 01:捡垃圾的最爱双盘,暴风二期矿渣为何成不老神话?

星哥带你玩飞牛NAS硬件 01:捡垃圾的最爱双盘,暴风二期矿渣为何成不老神话?

星哥带你玩飞牛 NAS 硬件 01:捡垃圾的最爱双盘,暴风二期矿渣为何成不老神话? 前言 在选择 NAS 用预...
三大开源投屏神器横评:QtScrcpy、scrcpy、escrcpy 谁才是跨平台控制 Android 的最优解?

三大开源投屏神器横评:QtScrcpy、scrcpy、escrcpy 谁才是跨平台控制 Android 的最优解?

  三大开源投屏神器横评:QtScrcpy、scrcpy、escrcpy 谁才是跨平台控制 Andr...
星哥带你玩飞牛NAS-16:飞牛云NAS换桌面,fndesk图标管理神器上线!

星哥带你玩飞牛NAS-16:飞牛云NAS换桌面,fndesk图标管理神器上线!

  星哥带你玩飞牛 NAS-16:飞牛云 NAS 换桌面,fndesk 图标管理神器上线! 引言 哈...