首页 > 系统相关 >通过iptables做本地端口分流实现高性能服务

通过iptables做本地端口分流实现高性能服务

时间:2023-07-19 14:47:06浏览次数:31  
标签:iptables -- 端口 tcp 高性能 every dport

根据以往经验,在高配置服务器上部署Java服务,建议部署多个JVM实例,以提升JVM示例内存回收效率;
此时面临负载分发问题,常规想法是通过Nginx或者Apache做负载分流。然而在高并发情况下无论外置负载还是本机负载,都需要处理TCP端口占用问题,处理起来并不简单。

近期在做一个高性能测试时候,一位同学提供了不一样的思路,通过iptables为本机端口做负载分流,效果箱单不错。

iptables端口转发规则

两个端口实例:
iptables -t nat -I PREROUTING 1 -p tcp --dport 80 -m statistic --mode nth --every 2 --packet 0 -j REDIRECT --to-port 9000
iptables -t nat -I PREROUTING 2 -p tcp --dport 80 -m statistic --mode nth --every 1 --packet 0 -j REDIRECT --to-port 9001

四个端口实例:
iptables -t nat -I PREROUTING 1 -p tcp --dport 80 -m statistic --mode nth --every 4 --packet 0 -j REDIRECT --to-port 9000
iptables -t nat -I PREROUTING 2 -p tcp --dport 80 -m statistic --mode nth --every 3 --packet 0 -j REDIRECT --to-port 9001
iptables -t nat -I PREROUTING 3 -p tcp --dport 80 -m statistic --mode nth --every 2 --packet 0 -j REDIRECT --to-port 9002
iptables -t nat -I PREROUTING 4 -p tcp --dport 80 -m statistic --mode nth --every 1 --packet 0 -j REDIRECT --to-port 9003

dport是监听端口,可以理解为负载端口
toport是负载端口
every可以理解为步长或权重

标签:iptables,--,端口,tcp,高性能,every,dport
From: https://www.cnblogs.com/bitlife/p/17565496.html

相关文章

  • Linux系统Apache添加监听端口后无法启动服务并报错:Job for httpd.service failed beca
    导言:这是SELinux安全机制导致的。解决方法:1.查看当前httpd端口#semanageport-l|grephttp2.将对应端口加入SELinux,以8068为例#semanageport-a-thttp_port_t-ptcp80683.再次查看#semanageport-l|grephttp4.重启Apache服务#systemctlrestarth......
  • docker -p 多个端口
    Docker-p多个端口Docker是一种开源的容器化平台,允许开发者将应用程序及其依赖项打包到一个独立的容器中,并在任何环境中运行。在Docker中,可以使用docker-p命令来将容器内的端口映射到主机的端口上。这使得容器内的应用程序可以通过主机的IP地址和端口号进行访问。而对于需要同......
  • Windows修改远程桌面3389端口bat脚本
    使用Bat脚本修改Windows服务器3389远程端口脚本;食用时将以下代码保存为.bat或.cmd即可,注意编码格式否则会出现乱码;使用管理员模式打开,否则可能无法修改。@echooffecho————————————————-echo–%~nx0echo–echo–Windows远程桌面端口修改echo–......
  • 用 Golang 从0到1实现一个高性能的 Worker Pool(一) - 每天5分钟玩转 GPT 编程系列(3)
    目录1.概述2.设计2.1让GPT-4给出功能点2.2自己总结需求,再给GPT派活3.实现3.1你先随意发挥3.2你得让Worker跑起来呀3.3你说说Pool满了怎么办3.4你得把UT给我加上3.5你再给我把文档补上4.总结1.概述话说,早几天一口气过了一遍Golang的并发机制:跟着GPT-4......
  • 命令_查看占用端口 netstat -ano|findstr "8080"
    查看占用端口 netstat-ano|findstr"8080" tasklist|findstr"12448"netstat-ano|findstr"8080"列说明1:协议 2:本地地址    3:外部地址   4:状态     5:PID查看PID对应的进程名称:tasklist|findstr"12448"......
  • NODE_EXPORTER 修改端口
    转载自:https://duanzhanpu.cn/index.php/archives/87/================== 修改prometheus中node-exporter端口因其他业务已占用9100端口,需修改为其他端口#启动时指定端口$nohup./node_exporter--web.listen-address=:7100......
  • 高级java高并发,高性能,分布式,高可用,负载均衡,系统架构实战
    提到锁,大家肯定想到的是sychronized关键字。是用它可以解决一切并发问题,但是,对于系统吞吐量要求更高的话,我们这提供几个小技巧。帮助大家减小锁颗粒度,提高并发能力。初级技巧-乐观锁乐观锁使用的场景是,读不会冲突,写会冲突。同时读的频率远大于写。悲观锁的实现: 悲观的认为所......
  • 高性能RestTemplate配置
    简述RestTemplateSpring框架中的RestTemplate是访问Rest服务的客户端底层通过使用java.net包实现创建HTTP请求通过使用ClientHttpRequestFactory指定不同的HTTP请求方式,主要提供了两种实现方式​ SimpleClientHttpRequest(默认)底层使用J2SE通过的方法(java.net包提......
  • 三菱以太网通讯端口号
    大家好,今天要和大家分享一个在生产管理系统中的常见问题:如何更方便地上位机访问PLC。我们知道,三菱FX系列PLC好多型号常常不带网口,这给上位机访问带来了不小的麻烦。但是,通过一款名为捷米特JM-ETH-FX的转换器,我们可以轻松解决这个问题。那么,这款转换器到底有哪些特点和优势呢?让我们......
  • SSH隧道技术-端口转发
    第19篇:SSH隧道技术-端口转发(干货)铁甲万能狗C++/Python程序媛、量化交易。爱好:历史、语言学 1人赞同了该文章SSH的端口转发按照SSH主机(即客户端和服务端)的相对物理距离分为本地转发和远程转发。本地转发,即是在本地客户机由SSH客户端实现的端口转......