当前位置:首页>编程日记>正文

Nginx负载均衡之TCP端口高可用(二)

    在前面我们实现了基本的HTTP反向代理,从互联网过来的请求已经可以分发到后端多台网站服务器上,但不是所有的业务都是网络类型的,此篇文章我们主要讨论的是TCP 端口的负载均衡做法,昨天也有小伙伴提到了,在HTTP反向代理中,我们并没有讨论会话保持健康检查,我们将会在这篇文章结束后,专门写一篇关于会话保持和检查检查的文章,来分析他们的做法。

    我们正式开始此篇的重点,我们要实现的是用户通过Nginx来访问一个或多个端口,这种场景还是蛮多的,例如OpenStack的控制节点等无状态的服务就需要一个统一的访问入口,例如对外的API接口、MySQL服务器等,但凡是需要对外提供一个高可用端口的场景,都用的上。

TCP 负载均衡

目标: 通过Nginx来实现后端两台服务器的负载均衡,且以轮询的方式将请求分发到不同的服务器上,此处我们就以SSH的22号端口来演示。

 

角色机器名IP地址
NginxHost1192.168.30.130
TCP 端口服务器Host2192.168.30.131
TCP 端口服务器Host3

192.168.30.132

备用TCP 端口服务器Host4192.168.30.133


新建一个port.conf的配置文件,我们将用这些文件来实现此实验目标,但是我们要注意位置,配置文件不要新建到conf.d目录中,因为如下图所示,这个位置是包含在HTTP这个块中的,我们需要新建一个,例如port.conf.d的目录,并在nginx主配置文件中,包括此目录 

查看不能放在conf.d的原因

Nginx负载均衡之TCP端口高可用(二) 配图01

包含port.conf.d目录

vim /etc/nginx/nginx.conf

在此文件中的最后一行,添加如下所示的内容

include /etc/nginx/port.conf.d/*.conf;

Nginx负载均衡之TCP端口高可用(二) 配图02

新建配置文件

mkdir /etc/nginx/port.conf.d

vim /etc/nginx/port.conf.d/port.conf

Nginx负载均衡之TCP端口高可用(二) 配图03

将以下内容复制粘贴到配置文件中

stream {

    upstream sshport {

        server 192.168.30.131:22 weight=10;

        server 192.168.30.132:22 weight=10;

        server 192.168.30.133:22 backup;

    }

    server {

        listen 2000;

        proxy_pass sshport;

}

配置文件效果如下

Nginx负载均衡之TCP端口高可用(二) 配图04

开启nginx服务器的TCP 2000端口防火墙

firewall-cmd --add-port=2000/tcp

firewall-cmd --add-port=2000/tcp --permanent

如果你的服务器开启了selinux,可能会启动失败,由于selinux不在讨论范围内,你可以使用以下命令临时关闭selinux

setenforce 0

重启Nginx服务

systemctl restart nginx.service

查看侦听

netstat -tunlp | grep 2000

Nginx负载均衡之TCP端口高可用(二) 配图05

高可用验证

在ssh时,指定端口为2000,我们可以看到,输入密码后,直接登录了host2,也就是说代理成功

Nginx负载均衡之TCP端口高可用(二) 配图06

我们来测试一下,如果host2关机会怎么样,你可以在host2上执行以下命令关机

systemctl poweroff

再次登录的时候报错SSH,这是因为host2已经关机,尝试链接host3,发现指纹不对,可以执行rm -rf /root/.ssh/known_hosts删除

Nginx负载均衡之TCP端口高可用(二) 配图07

此时我们可以看到,host2关机后,再次连接,就会有host3为你提供服务

Nginx负载均衡之TCP端口高可用(二) 配图08

      结合上一篇和本篇文章,我们已经可以简单完成HTTP类型的网站和TCP 端口的高可用配置,下一篇我们重点来讲一下在常规的负载均衡背后的技术,会话保持、健康检查、场景的负载均衡策略都会在下一篇讲到。



http://www.coolblog.cn/news/87c76f02be8cff6d.html

相关文章:

  • asp多表查询并显示_SpringBoot系列(五):SpringBoot整合Mybatis实现多表关联查询
  • s7day2学习记录
  • 【求锤得锤的故事】Redis锁从面试连环炮聊到神仙打架。
  • 矿Spring入门Demo
  • 拼音怎么写_老师:不会写的字用圈代替,看到孩子试卷,网友:人才
  • Linux 实时流量监测(iptraf中文图解)
  • Win10 + Python + GPU版MXNet + VS2015 + RTools + R配置
  • 美颜
  • shell访问php文件夹,Shell获取某目录下所有文件夹的名称
  • 如何优雅的实现 Spring Boot 接口参数加密解密?
  • LeCun亲授的深度学习入门课:从飞行器的发明到卷积神经网络
  • Mac原生Terminal快速登录ssh
  • java受保护的数据与_Javascript类定义语法,私有成员、受保护成员、静态成员等介绍...
  • mysql commit 机制_1024MySQL事物提交机制
  • 支撑微博千亿调用的轻量级RPC框架:Motan
  • jquery 使用小技巧
  • 2019-9
  • 法拉利虚拟学院2010 服务器,法拉利虚拟学院2010
  • vscode pylint 错误_将实际未错误的py库添加到pylint白名单
  • 科学计算工具NumPy(3):ndarray的元素处理
  • 工程师在工作电脑存 64G 不雅文件,被公司开除后索赔 41 万,结果…
  • linux批量创建用户和密码
  • newinsets用法java_Java XYPlot.setInsets方法代碼示例
  • js常用阻止冒泡事件
  • 气泡图在开源监控工具中的应用效果
  • 各类型土地利用图例_划重点!国土空间总体规划——土地利用
  • php 启动服务器监听
  • dubbo简单示例
  • 【设计模式】 模式PK:策略模式VS状态模式
  • [iptables]Redhat 7.2下使用iptables实现NAT
  • Ubuntu13.10:[3]如何开启SSH SERVER服务
  • CSS小技巧——CSS滚动条美化
  • JS实现-页面数据无限加载
  • 阿里巴巴分布式服务框架 Dubbo
  • 最新DOS大全
  • Django View(视图系统)
  • 阿里大鱼.net core 发送短信
  • 程序员入错行怎么办?
  • 两张超级大表join优化
  • 第九天函数
  • Linux软件安装-----apache安装
  • HDU 5988 最小费用流
  • Sorenson Capital:值得投资的 5 种 AI 技术
  • 《看透springmvc源码分析与实践》读书笔记一
  • 正式开课!如何学习相机模型与标定?(单目+双目+鱼眼+深度相机)
  • Arm芯片的新革命在缓缓上演
  • nagios自写插件—check_file
  • python3 错误 Max retries exceeded with url 解决方法
  • 行为模式之Template Method模式
  • 通过Spark进行ALS离线和Stream实时推荐