微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

AWS Redshift 连接失败 [错误设置/关闭连接:连接超时]

如何解决AWS Redshift 连接失败 [错误设置/关闭连接:连接超时]

概述

我参考本教程学习将 Amazon RDS for Oracle 数据库迁移到 Amazon Redshift https://docs.aws.amazon.com/dms/latest/sbs/CHAP_RDSOracle2Redshift.html

麻烦

我在回答以下问题时遇到了麻烦。 I would like migrate Oralce DB to Amazon Redshift with AWS SCT

我在人们的帮助下摆脱了困境。然而,我遇到了新的麻烦。 我尝试使用 AWS SCT 连接到 Amazon Redshift。 AWS Redshift 无法连接。 images

我看到了日志文件。日志中记录了一个错误

2020-12-31 20:56:16.358 [  78]      LOADER ERROR   Connection to 'jdbc:redshift://oracletoredshiftdwusingdms-redshiftcluster-1dll5wg4tqddk.cnxpo3loreqp.us-east-1.redshift.amazonaws.com:5439/test' wasn't established. ERROR: code: 500150; message: [Amazon](500150) Error setting/closing connection: Connection timed out: connect.
2020-12-31 20:56:16.358 [  78]      LOADER ERROR   Error chain:
[Amazon](500150) Error setting/closing connection: Connection timed out: connect.
------------------------------
java.sql.sqlException: [Amazon](500150) Error setting/closing connection: Connection timed out: connect.
    at com.amazon.redshift.client.PGClient.connect(UnkNown Source)
    at com.amazon.redshift.client.PGClient.<init>(UnkNown Source)
    at com.amazon.redshift.core.PGJDBCConnection.connect(UnkNown Source)
    at com.amazon.jdbc.common.BaseConnectionFactory.doConnect(UnkNown Source)
    at com.amazon.jdbc.common.AbstractDriver.connect(UnkNown Source)
    at com.amazon.sct.dbloader.JdbcDriverAdapter.connect(JdbcDriverAdapter.java:30)
    at java.sql/java.sql.DriverManager.getConnection(DriverManager.java:677)
    at java.sql/java.sql.DriverManager.getConnection(DriverManager.java:189)
    at com.amazon.sct.dbloader.DbLoaderDataSource.testConnection(DbLoaderDataSource.java:109)
    at com.amazon.sct.dbloader.sqlLoaderEngine.testConnection(sqlLoaderEngine.java:1706)
    at com.amazon.sct.dbloader.DbLoader.checkConnection(DbLoader.java:706)
    at com.amazon.sct.dbloader.DbLoader.connect(DbLoader.java:406)
    at com.amazon.sct.dbloader.DbLoaderContainer.checkAccessibility(DbLoaderContainer.java:30)
    at com.amazon.sct.task.TestConnectionTask.call(TestConnectionTask.java:40)
    at com.amazon.sct.task.TestConnectionTask.call(TestConnectionTask.java:18)
    at javafx.concurrent.Task$TaskCallable.call(Task.java:1425)
    at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
Caused by: com.amazon.support.exceptions.GeneralException: [Amazon](500150) Error setting/closing connection: Connection timed out: connect.
    ... 17 more
Caused by: java.net.ConnectException: Connection timed out: connect
    at java.base/sun.nio.ch.Net.connect0(Native Method)
    at java.base/sun.nio.ch.Net.connect(Net.java:476)
    at java.base/sun.nio.ch.Net.connect(Net.java:468)
    at java.base/sun.nio.ch.socketChannelImpl.connect(SocketChannelImpl.java:694)
    at java.base/sun.nio.ch.socketAdaptor.connect(SocketAdaptor.java:100)
    at com.amazon.redshift.client.PGClient.connect(UnkNown Source)
    at com.amazon.redshift.client.PGClient.<init>(UnkNown Source)
    at com.amazon.redshift.core.PGJDBCConnection.connect(UnkNown Source)
    at com.amazon.jdbc.common.BaseConnectionFactory.doConnect(UnkNown Source)
    at com.amazon.jdbc.common.AbstractDriver.connect(UnkNown Source)
    at com.amazon.sct.dbloader.JdbcDriverAdapter.connect(JdbcDriverAdapter.java:30)
    at java.sql/java.sql.DriverManager.getConnection(DriverManager.java:677)
    at java.sql/java.sql.DriverManager.getConnection(DriverManager.java:189)
    at com.amazon.sct.dbloader.DbLoaderDataSource.testConnection(DbLoaderDataSource.java:109)
    at com.amazon.sct.dbloader.sqlLoaderEngine.testConnection(sqlLoaderEngine.java:1706)
    at com.amazon.sct.dbloader.DbLoader.checkConnection(DbLoader.java:706)
    at com.amazon.sct.dbloader.DbLoader.connect(DbLoader.java:406)
    at com.amazon.sct.dbloader.DbLoaderContainer.checkAccessibility(DbLoaderContainer.java:30)
    at com.amazon.sct.task.TestConnectionTask.call(TestConnectionTask.java:40)
    at com.amazon.sct.task.TestConnectionTask.call(TestConnectionTask.java:18)
    at javafx.concurrent.Task$TaskCallable.call(Task.java:1425)
    at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
    at java.base/java.lang.Thread.run(Thread.java:834)

2020-12-31 20:56:16.359 [  78]     GENERAL INFO    Test connecting to Amazon Redshift database finished in 0:00:21.113 sec with memory consumption of 516.25 MB (497.79 MB .. 516.25 MB).
2020-12-31 20:56:16.359 [  78]     GENERAL INFO    Test connecting to Amazon Redshift database statistics:
    GENERAL: 0:00:21.113 sec
2020-12-31 20:56:16.365 [  19]     GENERAL ERROR   com.amazon.sct.dbloader.DbLoaderHandledException: Connection wasn't established. Check connection properties.
java.util.concurrent.ExecutionException: com.amazon.sct.dbloader.DbLoaderHandledException: Connection wasn't established. Check connection properties.
    at java.base/java.util.concurrent.FutureTask.report(FutureTask.java:122)
    at java.base/java.util.concurrent.FutureTask.get(FutureTask.java:191)
    at com.amazon.sct.task.launcher.CommonTaskLauncher.lambda$run$0(CommonTaskLauncher.java:39)
    at com.sun.javafx.binding.ExpressionHelper$Generic.fireValueChangedEvent(ExpressionHelper.java:360)
    at com.sun.javafx.binding.ExpressionHelper.fireValueChangedEvent(ExpressionHelper.java:80)
    at javafx.beans.property.ObjectPropertyBase.fireValueChangedEvent(ObjectPropertyBase.java:106)
    at javafx.beans.property.ObjectPropertyBase.markInvalid(ObjectPropertyBase.java:113)
    at javafx.beans.property.ObjectPropertyBase.set(ObjectPropertyBase.java:147)
    at javafx.concurrent.Task.setState(Task.java:698)
    at javafx.concurrent.Task$TaskCallable.lambda$call$2(Task.java:1455)
    at com.sun.javafx.application.PlatformImpl.lambda$runLater$10(PlatformImpl.java:428)
    at java.base/java.security.AccessController.doPrivileged(Native Method)
    at com.sun.javafx.application.PlatformImpl.lambda$runLater$11(PlatformImpl.java:427)
    at com.sun.glass.ui.invokelaterdispatcher$Future.run(invokelaterdispatcher.java:96)
    at com.sun.glass.ui.win.WinApplication._enternestedEventLoopImpl(Native Method)
    at com.sun.glass.ui.win.WinApplication._enternestedEventLoop(WinApplication.java:201)
    at com.sun.glass.ui.Application.enternestedEventLoop(Application.java:509)
    at com.sun.glass.ui.EventLoop.enter(EventLoop.java:107)
    at com.sun.javafx.tk.quantum.QuantumToolkit.enternestedEventLoop(QuantumToolkit.java:635)
    at javafx.stage.Stage.showAndWait(Stage.java:465)
    at javafx.scene.control.HeavyweightDialog.showAndWait(HeavyweightDialog.java:162)
    at javafx.scene.control.Dialog.showAndWait(Dialog.java:346)
    at com.amazon.sct.handler.CreateConnectionHandler.createConnection(CreateConnectionHandler.java:51)
    at com.amazon.sct.viewmodel.Appviewmodel.createConnection(Appviewmodel.java:1406)
    at com.amazon.sct.viewmodel.Appviewmodel.createTargetConnection(Appviewmodel.java:774)
    at com.amazon.sct.view.AppView.loadTarget(AppView.java:348)
    at com.amazon.sct.view.AppView.lambda$initConnectionMenusBindings$27(AppView.java:1077)
    at com.sun.javafx.event.CompositeEventHandler.dispatchBubblingEvent(CompositeEventHandler.java:86)
    at com.sun.javafx.event.EventHandlerManager.dispatchBubblingEvent(EventHandlerManager.java:238)
    at com.sun.javafx.event.EventHandlerManager.dispatchBubblingEvent(EventHandlerManager.java:191)
    at com.sun.javafx.event.CompositeEventdispatcher.dispatchBubblingEvent(CompositeEventdispatcher.java:59)
    at com.sun.javafx.event.BasicEventdispatcher.dispatchEvent(BasicEventdispatcher.java:58)
    at com.sun.javafx.event.EventdispatchChainImpl.dispatchEvent(EventdispatchChainImpl.java:114)
    at com.sun.javafx.event.BasicEventdispatcher.dispatchEvent(BasicEventdispatcher.java:56)
    at com.sun.javafx.event.EventdispatchChainImpl.dispatchEvent(EventdispatchChainImpl.java:114)
    at com.sun.javafx.event.BasicEventdispatcher.dispatchEvent(BasicEventdispatcher.java:56)
    at com.sun.javafx.event.EventdispatchChainImpl.dispatchEvent(EventdispatchChainImpl.java:114)
    at com.sun.javafx.event.EventUtil.fireEventImpl(EventUtil.java:74)
    at com.sun.javafx.event.EventUtil.fireEvent(EventUtil.java:54)
    at javafx.event.Event.fireEvent(Event.java:198)
    at javafx.scene.Scene$MouseHandler.process(Scene.java:3862)
    at javafx.scene.Scene.processMouseEvent(Scene.java:1849)
    at javafx.scene.Scene$ScenePeerListener.mouseEvent(Scene.java:2590)
    at com.sun.javafx.tk.quantum.GlassViewEventHandler$MouseEventNotification.run(GlassViewEventHandler.java:409)
    at com.sun.javafx.tk.quantum.GlassViewEventHandler$MouseEventNotification.run(GlassViewEventHandler.java:299)
    at java.base/java.security.AccessController.doPrivileged(Native Method)
    at com.sun.javafx.tk.quantum.GlassViewEventHandler.lambda$handleMouseEvent$2(GlassViewEventHandler.java:447)
    at com.sun.javafx.tk.quantum.QuantumToolkit.runWithoutRenderLock(QuantumToolkit.java:412)
    at com.sun.javafx.tk.quantum.GlassViewEventHandler.handleMouseEvent(GlassViewEventHandler.java:446)
    at com.sun.glass.ui.View.handleMouseEvent(View.java:556)
    at com.sun.glass.ui.View.notifyMouse(View.java:942)
    at com.sun.glass.ui.win.WinApplication._runLoop(Native Method)
    at com.sun.glass.ui.win.WinApplication.lambda$runLoop$3(WinApplication.java:174)
    at java.base/java.lang.Thread.run(Thread.java:834)
Caused by: com.amazon.sct.dbloader.DbLoaderHandledException: Connection wasn't established. Check connection properties.
    at com.amazon.sct.dbloader.DbLoader.checkConnection(DbLoader.java:721)
    at com.amazon.sct.dbloader.DbLoader.connect(DbLoader.java:406)
    at com.amazon.sct.dbloader.DbLoaderContainer.checkAccessibility(DbLoaderContainer.java:30)
    at com.amazon.sct.task.TestConnectionTask.call(TestConnectionTask.java:40)
    at com.amazon.sct.task.TestConnectionTask.call(TestConnectionTask.java:18)
    at javafx.concurrent.Task$TaskCallable.call(Task.java:1425)
    at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
    ... 1 more

我的尝试

[Amazon](500150) Error setting/closing connection: Connection timed out: connect.

我认为上述错误类似于 issues。 因此,我启动了安全组控制台并添加了 [Rule: Type=Redshift,Source=MyIP]。

我保存了它并尝试再次连接。 不幸的是,AWS Redshift 无法连接并出现相同的错误。 我不知道下次要做什么。 我该怎么办?

解决方法

要解决此问题,您可以使用以下步骤;

(1) 为了更快地排除故障,您可以使用 ping 命令来检查主机/机器/笔记本电脑/台式机的网络可达性,而不是您的 Java 应用程序。

(2) 如果第一步成功,则在您的主机/机器/笔记本电脑/桌面上使用 Windows 命令提示符或 Windows PowerShell 或任何 Linux shell/命令行工具尝试执行以下命令;

nc -vz -w 3 "${DB_HOST}" "${DB_PORT}"

telnet "${DB_HOST}" "${DB_PORT}"

(3) 如果来自步骤 (1) 或 (2) 的命令因“连接超时”错误而失败,则

(3.1) 使用 VPC Reachability Analyzer :使用源类型网络接口和源作为部署应用程序的机器的网络接口 ID 创建和分析路径。此外,选择目标类型作为网络接口和目标作为 AWS Red Shift 的网络接口 ID。将目标端口设置为 5439,保持协议为 TCP。 注意:完成此路径分析需要几分钟时间。

(3.2) 如果您启用了 VPC 流日志,那么您可以跟踪 vpc 流日志以检查哪些 AWS 资源正在拒绝网络流量。有关 VPC 流日志信息,请参阅来自 AWS 的 this 文档。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。