博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
物联网架构成长之路(10)-Nginx负载均衡
阅读量:4882 次
发布时间:2019-06-11

本文共 2968 字,大约阅读时间需要 9 分钟。

0. 前言

  关于Nginx负载均衡的简单配置,我以前博客配置过基于HTTP的负载均衡。这次的负载均衡有点不一样,就是基于TCP的负载均衡。基于HTTP负载均衡是默认的Nginx版本支持的,配置也很简单,但是基于TCP的负载均衡,配置起来就有一点点麻烦了。

1. 下载安装

  由于我们要用到四层TCP层负载均衡,所以要自己编译Nginx,在这里下载最新版   中间我们可能要进行调试一些参数,可以下载这个扩展 git clone  

  然后编译

1 ./configure --prefix=/root/workspace/emq/nginx --with-stream --add-module=/root/workspace/emq/nginx-1.12.2/echo-nginx-module --with-http_geoip_module

  可能会要求安装这个libgeoip-devapt-get install libgeoip-dev 由于我只是需要用到里面的geo扩展,不需要对应的信息,如果有需要的可以在这里下载数据包  

 

  当出现上图信息,表示编译成功

1 make && make install

2. 增加虚拟网卡

  一种是临时增加,一种是配置到开机启动

1 ifconfig eth1:1 172.16.23.111 netmask 255.255.255.0 up2 ifconfig eth1:1 down

  vim /etc/network/interfaces  增加后重启网卡

1 auto lo 2 iface lo inet loopback 3  4 auto eth1 5 iface eth1 inet static 6     address 172.16.23.204 7     netmask 255.255.255.0 8     gateway 172.16.23.1 9 10 #auto eth1:111 #iface eth1:1 inet static12 #    address 172.16.23.10413 #    netmask 255.255.255.014 #    gateway 172.16.23.1

3. nginx.conf 配置文件

1 user root; 2  3 worker_processes auto; 4  5 events { 6     worker_connections 1024; 7 } 8  9 stream {10 11     upstream backend {12         server 172.16.20.217:60000;13         server 172.16.20.217:60001;14     }15 16     upstream backbind {17         server 172.16.23.203:54321;18     }19 20     map $msec $proxy_bind_ip {21         ~[0-5]$ 172.16.23.111;22         ~[5-9]$ 172.16.23.204;23     }24 25     server {26         listen 12345;27         proxy_pass backend;28         proxy_bind $proxy_bind_ip;29     }30 }31 32 http {33     geo $LB {34         default 1;35      #include conf/geo.conf36         172.16.20.217 0;37         172.16.20.218 1;38     }39     map $LB $proxy_bind_ip {40        0 172.16.23.111;41        1 172.16.23.204;42     }43     map $msec $proxy_bind_ip_2 {44         ~[0-5]$ 172.16.23.111;45         ~[5-9]$ 172.16.23.204;46     }47     server {48         listen 8888;49         location /test {50             echo $proxy_bind_ip;51             echo $proxy_bind_ip_2;52             echo $connection;53             echo "hostname" $hostname;54             echo "msec" $msec;55             echo "pid" $pid;56             echo "proxy_protocol" $proxy_protocol_addr ":" $proxy_protocol_port;57             echo "remote:" $remote_addr ":" $remote_port;58             echo "server:" $server_addr ":" $server_port;59             echo "status:" $status;60             echo "time:" $time_iso8601;61             echo "time:" $time_local;62         }63     }64 }

  增加nginxecho模块、geo模块、stream模块

  一开始调试时,使用http{}进行调试,因为访问  就可以进行变量调试了,以为不清楚map的语法,所以只能一点一点调试。

  upstream {} 后端负载均衡器

  map {} 变量映射

  geo {} IP过滤等功能

  server {} 服务器配置

  更多功能这里不做描述,网上资料更多更全。

4. 测试

  从上面两个图可以看到,创建两个服务监听应用

  172.16.23.217:60000 172.16.23.217:60001 这两个模拟的是实际应用中的后端业务应用(MQTT集群) 

  TCP Client 创建5个连接,模拟不同客户端(MQTT设备)

  172.16.23.204:12345 172.16.23.111:12345 这两个是负载均衡器Nginx监听的端口。

  5个客户端连接连到Nginx负载均衡器,Nginx会随机负载到6000060001两台后端应用服务,并且也会随机使用Nginx的虚拟网卡204111

 

转载于:https://www.cnblogs.com/wunaozai/p/8278956.html

你可能感兴趣的文章
让应用在横屏模式下启动
查看>>
Intent传递list集合时异常解决
查看>>
登录验证码demo-java
查看>>
【线程的状态转换图及常见执行情况】
查看>>
Velocity简单语法及VelocityHelper封装
查看>>
【js】走近小程序
查看>>
日常练习 1.0
查看>>
Linux下的Telnet设置方法介绍
查看>>
【mmall】学习Spring要善用Spring的Github
查看>>
css--小白入门篇4
查看>>
node.js的介绍
查看>>
WCF入门(七)——异常处理1
查看>>
VisualStudio Shell简介 — 集成插件
查看>>
php集成环境
查看>>
Ubuntu下的负载均衡Web集群配置
查看>>
Create a site by Google Site - All Free
查看>>
[诈骗]“中国移动”发送诈骗短信,china mobile 是骗子吗?
查看>>
Oracle调整内存超出限制出现ORA-27100: shared memory realm already exists问题解决办法
查看>>
玩转WIN7的MKLINK
查看>>
c# 微信分享-原始代码
查看>>