我们正在使用托管的 mySQL 数据库服务器,该服务器会生成除默认的 3306 之外的端口,我们无法控制它。
我们不想对所有 Ubuntu 22 应用服务器上的现有连接脚本进行更改,因为大多数通常使用默认的 3306 连接到任何 mysql 主机。
有没有办法使用 Iptables 或其他技术在我们的 Ubuntu 服务器上自动将传出连接从端口 3306 转发到特定域或 IP 的端口 11728(比如说)?
意思是,如果我们尝试从我们的 Web 服务器建立到 mydatabase.somehost.com 和端口 3306 的 mysql 连接,它会自动将连接重定向到端口 11728?
我们当然希望通过主机名/IP 指定该规则,以便我们不会影响默认 3306 的其他连接转发到该端口的可能性。
这可能吗?
答案1
虽然你可以用 iptables 来解决这个问题,但何必呢?毕竟你需要在 DBMS 和应用程序之间进行一些抽象,以处理到备份 DBMS 的故障转移(而 VIP 很糟糕)。只需配置你正在使用的任何内容(例如 haproxy、sqlproxy)即可连接到不同的端口。
答案2
使用iptables
:
# iptables -t nat -A OUTPUT --destination x.x.x.x -p tcp --dport 3306 -j DNAT --to-destination x.x.x.x:11728
您的数据库服务器的地址在哪里x.x.x.x
?当然,请将其替换11728
为机器实际监听的任何端口。