利用nginx实现基于传输层的四层负载均衡

nginx利用ngx_stream_core_module实现四层的负载均衡服务。作为四层负载均衡nginx和lvs的区别在于:

  • lvs工作于内核层,相对来说效率更高,性能更强;

  • nginx工作于用户空间;

  • lvs不会受到套接字数量的限制;

  • nginx作为四层负载均衡也需要监听套接字来和客户端,后台服务器进行连接,会受到套接字数量限制,不过这个问题可以通过keepalive长连接来避免;

一、实验环境

此次实验基于三台服务器实现,分别负载httpd服务、ssh服务和mysql服务:

  • nginx四层负载均衡器:192.168.11.100

  • 内网真实服务器RS-1:192.168.11.201;

  • 内网真实服务器RS-2:192.168.11.202;

二、实验配置步骤:

内网服务器配置:

  1. 内网两台服务器分别安装nginx、和mysql服务,并开启相关服务

    yum install -y nginx mariadb-server

nginx负载均衡器配置:

  1. 修改/etc/nginx/nginx.conf配置文件:

    #定义http、mysql和ssh的负载均衡集群并调用,默认算法为rr(轮询)# stream {         upstream websrvs {                 server 192.168.11.201:80;                 server 192.168.11.202:80;         }          upstream mysqlsrvs {                 server 192.168.11.201:3306;                 server 192.168.11.202:3306;         }          upstream sshsrvs {                 server 192.168.11.201:22;                 server 192.168.11.202:22;         }         server {                 listen 80;                 proxy_pass websrvs;         }         server {                 listen 10022;                 proxy_pass sshsrvs;         } }
  2. 测试是否可行:

    1. 测试http:

      利用nginx实现基于传输层的四层负载均衡

    2. 测试ssh:

      利用nginx实现基于传输层的四层负载均衡

      可以看到两次登录的主机名完全不一样

    3. 测试mysql:

      在一个数据库建立新库,名字为testdb,另一个不建立,然后用for循环查询库即可看到结果:

      利用nginx实现基于传输层的四层负载均衡

      可以看到每次呈现的数据库都不一样,所以说明是通过轮询方法连接到两台不同的数据库了。

原创文章,作者:王子豪,如若转载,请注明出处:http://www.178linux.com/79335

(1)
王子豪王子豪
上一篇 2017-07-03 12:30
下一篇 2017-07-03 15:42

相关推荐

  • phpMyAdmin安装部署

    phpMyAdmin安装部署 phpMyAdmin 是一个用PHP编写的软件工具,可以通过web方式控制和操作MySQL数据库。通过phpMyAdmin 可以完全对数据库进行操作,例如建立、复制和删除数据等等。如果使用合适的工具,MySQL数据库的管理就会变得相当简单。应用 MySQL 命令行方式需要对 MySQL 知识非常熟悉,对SQL语言也是同样的道理。…

    2017-06-13
  • Nginx反向代理、负载均衡的实现

    概述:     上篇介绍了Nginx作为web服务器的一些常用配置的说明,但是在实际生产环境中,Nginx更多是作为前端的负载均衡器,反代前端用户请求到后端真实的web服务器上,完成LNAMP的组合的方式存在。本篇就介绍一些Nginx作为http的反向代理和前端负载均衡调度器的一些常用配置,具体包括:  &n…

    Linux干货 2016-11-01
  • Linux Services and Security–part2

    一、请描述一次完整的http请求处理过程 (1).建立或处理连接:接收请求或拒绝请求; (2).接收请求:接收来自于网络上的主机请求报文中对某特定资源的一次请求的过程; 接收请求的模型: 并发访问响应模型: 单进程I/O模型:启动一个进程处理用户请求;这意味着,一次只能处理一个请求,多个请求被串行响应; 多进程I/O结构:并行启动多个进程,每个进程响应一个请…

    Linux干货 2017-11-13
  • 第一周作业

    1、描述计算机的组成及其功能。
    2、按系列罗列Linux的发行版,并描述不同发行版之间的联系与区别。
    3、描述Linux的哲学思想,并按照自己的理解对其进行解释性描述。
    4、说明Linux系统上命令的使用格式;详细介绍ifconfig、echou、tty、startx、export、pwd、history、shutdown、poweroff、reboot、hwclock、date命令的使用,并配合相应的示例来阐述。
    5、如何在Linux系统上获取命令的帮助信息,请详细列出,并描述man文档的章节是如何划分的。
    6、请罗列Linux发行版的基础目录名称命名法则及共用规定。

    Linux干货 2017-12-03
  • 马哥教育网络班22期+第2周课程练习

    一、Linux上的文件管理类命令都有哪些,其常用的使用方法及其相关示例演示。      文件管理命令有:mkdir  rm  tree  ls  等等  1、mkdir [options] /path/to/somewhere      &…

    Linux干货 2016-08-22
  • 语言的歧义

    语言是人与人相互沟通的途径,而计算机语言则是人和计算机沟通的途径。就算是任何再完美的自然语言都会有歧义,但是又是什么让人和计算计算机间产生了歧义呢?下面这篇文章来自Gowri Kumar的Puzzle C一文。我做了一些整理,挑选了其中的一些问题,并在之后配上相应的答案(这些答案是我加的,如果需要原版的答案可以直接和本文作者Gowri Kumar联系,作者的…

    Linux干货 2016-05-08