解决golang使用elastic连接elasticsearch时自动转换连接地址

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了解决golang使用elastic连接elasticsearch时自动转换连接地址相关的知识,希望对你有一定的参考价值。

参考技术A 使用 olivere/ elastic 连接elasticsearch时,发现连接地址明明输入的时候是公网地址,但是连接时会自动转换成内网地址或者docker中的ip地址,导致服务连接不上。

如何解决 AWS Elastic Beanstalk 中的 SMTP 连接超时异常?

【中文标题】如何解决 AWS Elastic Beanstalk 中的 SMTP 连接超时异常?【英文标题】:How to solve SMTP Connection timeout Exception in AWS Elastic Beanstalk? 【发布时间】:2020-07-26 13:11:22 【问题描述】:

我已经使用 Elastic Beanstalk 在 EC2 实例中部署了 springboot java jar。将用户添加到 DB 后 jar 中的 api 发送确认邮件。此功能在本地主机中运行良好,但是在 aws 实例上,我得到网关超时 504。

这里是 SMTP 服务器的设置(它是不使用用户名、密码的智能服务器,我在服务器中添加了我的 EC2 实例的公共 IP 地址) Java SMTP 设置:

String host = "212.48.*.*";
        Properties props = new Properties();
        props.put("mail.smtp.ssl.trust", "false");
        props.put("mail.smtp.auth", "false");
        props.put("mail.smtp.starttls.enable", "false");
        props.put("mail.smtp.host", host);
        props.put("mail.smtp.port", "25");
Session session = Session.getInstance(props);
            Message message = new MimeMessage(session);
            message.setFrom(new InternetAddress(from));
            message.setRecipients(Message.RecipientType.TO,
                    InternetAddress.parse(receiverMail));

                     Transport.send(message);

================================================ ====== 错误信息: 2020-04-13 20:56:45.521 错误 5887 --- [nio-5000-exec-2] oaccC[.[.[/].[dispatcherServlet]:Servlet.service() 用于 servlet [dispatcherServlet] path [] 抛出异常 [请求处理失败;嵌套异常是 java.lang.RuntimeException: com.sun.mail.util.MailConnectException: 无法连接到主机,端口:212.48..*, 25;超时-1; 嵌套异常是: java.net.ConnectException:连接超时(连接超时)] 根本原因

java.net.ConnectException:连接超时(连接超时) 在 java.net.PlainSocketImpl.socketConnect(Native Method) ~[na:1.8.0_232] 在 java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:350) ~[na:1.8.0_232] 在 java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:206) ~[na:1.8.0_232] 在 java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:188) ~[na:1.8.0_232] 在 java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392) ~[na:1.8.0_232] 在 java.net.Socket.connect(Socket.java:607) ~[na:1.8.0_232] 在 java.net.Socket.connect(Socket.java:556) ~[na:1.8.0_232]

【问题讨论】:

【参考方案1】:

看起来 AWSEC2 实例不允许外部 SMTP 服务器,我通过在 AWS SES 中验证域并使用 SMTP 设置解决了这个问题。

【讨论】:

以上是关于解决golang使用elastic连接elasticsearch时自动转换连接地址的主要内容,如果未能解决你的问题,请参考以下文章

解决golang使用elastic连接elasticsearch时自动转换连接地址

golang elasticsearch7的使用

AWS 与 Elastic 矛盾再升级!

AWS 与 Elastic 矛盾再升级!

使用 Elastic Stack 来监控和调优 Golang 应用程序

Elasticsearch:Elastic Maps 现在支持机器学习异常层