利用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

相关推荐

  • grep命令系列:grep中的正则表达式

     grep :是一款文本过滤工具 。其作用:根据用户指定的“模式”对目标文本进行逐个的匹配检查。  正则表达式 REGEXP:有一类特殊字符及文本字符所编写的模式,其中有些字符不表示字面的意义,而表示控制或通配的功能。    正则表达式分为两种:         基本正则表达式:…

    Linux干货 2017-04-10
  • 8月22日shell脚本编程之循环和函数

    shell脚本编程 本章内容 编程基础 脚本基本格式 变量 运算 条件测试 流程控制 函数 数组 高级字符串操作 高级变量 配置用户环境 编程基础 程序:指令+数据 编程程序风格:   过程式:以指令为中心,数据服务于指令   对象式:以数据为中心,指令服务于数据 shell程序:提供了编程能力,解释执行 程序的执行方…

    Linux干货 2016-08-24
  • jenkins+gitlab构建安卓自动编译环境

        因工作关系接触到接触到安卓自动编译环境,网上的资料都推荐了jenkins,因为第一次接触安卓和jenkins,踩了不少的坑,有总结才有进步。    gitlab环境之前已经安装完成可用,具体步骤另外详解吧。本例目标是在gitlab可用前提下,通过jenkins将git仓库的代码自行编译打包,生成可用的apk安装…

    Linux干货 2016-07-16
  • C++的std::string的“读时也拷贝”技术!

    C++的std::string的读时也拷贝技术! 嘿嘿,你没有看错,我也没有写错,是读时也拷贝技术。什么?我的错,你之前听说写过时才拷贝,嗯,不错的确有这门技术,英文是Copy On Write,简写就是COW,非常’牛’!那么我们就来看看这个’牛’技术的效果吧。 我们先编写一段程序 #include <string> #include…

    Linux干货 2015-04-03
  • linux用户权限管理

    用户: 管理员–root= 0 普通用户–(1-65535) 系统用户–(1-499),(1-999) 登录用户–(500+),(1000+) 用户和组的配置文件位置: /etc/passwd– 存储系统用户所有信息 /etc/group– 存储用户组的所有信息 /etc/shadow&…

    2017-04-02
  • 冒泡算法,源码安装http,yum浅谈

    生成10个随机数,采用冒泡算法进行升序或降序排序 #!/bin/bash #author:maoxiong QQ:111111111 #verson:1.0  date:2016-08  #illustrate: declare -a array #create 10 randomnum for num in {0..9} do &nbs…

    Linux干货 2016-08-26