如何通过公网访问MongoDB云数据库?

本文涉及的产品
Redis 开源版,标准版 2GB
推荐场景:
搭建游戏排行榜
云原生多模数据库 Lindorm,多引擎 多规格 0-4节点
云数据库 Tair(兼容Redis),内存型 2GB
简介: 基于安全原因考虑,阿里云MongoDB云数据库目前只支持从阿里云ECS上访问,无法通过公网直接访问,不方便用户在本地开发环境里直接进行测试,本文介绍能让用户通过公网访问MongoDB云数据库的方案,切记本文的方案仅可用于测试环境,生产环境连接MongoDB云数据库请参考使用正确的姿势连接复.

基于安全原因考虑,阿里云MongoDB云数据库目前只支持从阿里云ECS上访问,无法通过公网直接访问,不方便用户在本地开发环境里直接进行测试,本文介绍能让用户通过公网访问MongoDB云数据库的方案,切记本文的方案仅可用于测试环境,生产环境连接MongoDB云数据库请参考使用正确的姿势连接复制集

环境准备

  • 包含公网 + 私网ip的ECS

    • 公网ip:xx.xx.xx.xx
    • 私网ip:yy.yy.yy.yy
  • MongoDB云数据库

    • 节点1:dds-2ze56d3294df7b491.mongodb.rds.aliyuncs.com:3717 (Primary,通过ping域名来获取对应的ip,假设为zz.zz.zz.zz,因域名对应的ip可能发生变化,在生产环境切勿直接指定ip)
    • 节点2:dds-2ze56d3294df7b492.mongodb.rds.aliyuncs.com:3717

目标

通过xx.xx.xx.xx:27017能访问到zz.zz.zz.zz:3717提供的MongoDB云服务。

使用iptables

利用iptables的nat机制,可以方便的实现请求转发,首先需要ECS开启包转发的支持

echo 1 > /proc/sys/net/ipv4/ip_forward

配置转发规则

iptables -t nat -A PREROUTING -d xx.xx.xx.xx -p tcp --dport 27017 -j DNAT --to-destination zz.zz.zz.zz:3717

iptables -t nat -A POSTROUTING -d zz.zz.zz.zz -p tcp --dport 3717 -j SNAT --to-source yy.yy.yy.yy

此时你就能在任意能连通公网的机器上连接xx.xx.xx.xx:27017访问MongoDB云服务,所有的请求都会转发到zz.zz.zz.zz:3717上。需要注意的是,此时访问xx.xx.xx.xx:27017只能以单节点的方式直连,而不能按复制集的方式访问。

mongo --host xx.xx.xx.xx:27017 --authenticationDatabase admin -uroot -pxxx

使用haproxy

haproxy支持tcp(四层)、http(七层)2种转发模式,类似于iptables,我们也可以利用haproxy来实现公网访问MongoDB云数据库。

修改/etc/haproxy/haproxy.cfg配置文件内容,根据默认的配置文件稍作修改,主要配置tcp转发模式、前端、后端服务的地址信息。(haproxy版本为1.5.4)

global
    log         127.0.0.1 local2

    chroot      /var/lib/haproxy
    pidfile     /var/run/haproxy.pid
    maxconn     4000
    user        haproxy
    group       haproxy
    daemon

    # turn on stats unix socket
    stats socket /var/lib/haproxy/stats

defaults
    # 使用tcp转发模式
    mode                    tcp
    log                     global
    option                  dontlognull
    option http-server-close
    option                  redispatch
    retries                 3
    timeout http-request    10s
    timeout queue           1m
    timeout connect         10s
    timeout client          1m
    timeout server          1m
    timeout http-keep-alive 10s
    timeout check           10s
    maxconn                 3000
    
    # 前端地址信息, xx.xx.xx.xx:27017
frontend  main xx.xx.xx.xx:27017
    default_backend             app

    # 后端地址信息,zz.zz.zz.zz:3717 
backend app
    balance     roundrobin
    server  app1 zz.zz.zz.zz:3717 check

启动haproxy

haproxy -f /etc/haproxy/haproxy.cfg

此时你就能在任意能连通公网的机器上连接xx.xx.xx.xx:27017访问MongoDB云服务,所有的请求都会转发到zz.zz.zz.zz:3717上。需要注意的是,此时访问xx.xx.xx.xx:27017只能以单节点的方式直连,而不能按复制集的方式访问。

mongo --host xx.xx.xx.xx:27017 --authenticationDatabase admin -uroot -pxxx

以上服务同样适用于RDSRedis云数据库,但切记仅能用于测试环境,生产环境请使用正确的姿势连接MongoDB复制集

参考资料

相关实践学习
MongoDB数据库入门
MongoDB数据库入门实验。
快速掌握 MongoDB 数据库
本课程主要讲解MongoDB数据库的基本知识,包括MongoDB数据库的安装、配置、服务的启动、数据的CRUD操作函数使用、MongoDB索引的使用(唯一索引、地理索引、过期索引、全文索引等)、MapReduce操作实现、用户管理、Java对MongoDB的操作支持(基于2.x驱动与3.x驱动的完全讲解)。 通过学习此课程,读者将具备MongoDB数据库的开发能力,并且能够使用MongoDB进行项目开发。   相关的阿里云产品:云数据库 MongoDB版 云数据库MongoDB版支持ReplicaSet和Sharding两种部署架构,具备安全审计,时间点备份等多项企业能力。在互联网、物联网、游戏、金融等领域被广泛采用。 云数据库MongoDB版(ApsaraDB for MongoDB)完全兼容MongoDB协议,基于飞天分布式系统和高可靠存储引擎,提供多节点高可用架构、弹性扩容、容灾、备份回滚、性能优化等解决方案。 产品详情: https://www.aliyun.com/product/mongodb
相关文章
|
8月前
|
运维 安全 Nacos
nacos常见问题之暴露到公网被改写数据库如何解决
Nacos是阿里云开源的服务发现和配置管理平台,用于构建动态微服务应用架构;本汇总针对Nacos在实际应用中用户常遇到的问题进行了归纳和解答,旨在帮助开发者和运维人员高效解决使用Nacos时的各类疑难杂症。
234 3
|
8月前
|
网络协议 关系型数据库 MySQL
如何搭建MariaDB并实现无公网ip环境远程连接本地数据库
如何搭建MariaDB并实现无公网ip环境远程连接本地数据库
147 0
|
2月前
|
安全 Nacos 数据库
Nacos是一款流行的微服务注册与配置中心,但直接暴露在公网中可能导致非法访问和数据库篡改
Nacos是一款流行的微服务注册与配置中心,但直接暴露在公网中可能导致非法访问和数据库篡改。本文详细探讨了这一问题的原因及解决方案,包括限制公网访问、使用HTTPS、强化数据库安全、启用访问控制、监控和审计等步骤,帮助开发者确保服务的安全运行。
67 3
|
5月前
|
网络协议 NoSQL 网络安全
【Azure 应用服务】由Web App“无法连接数据库”而逐步分析到解析内网地址的办法(SQL和Redis开启private endpoint,只能通过内网访问,无法从公网访问的情况下)
【Azure 应用服务】由Web App“无法连接数据库”而逐步分析到解析内网地址的办法(SQL和Redis开启private endpoint,只能通过内网访问,无法从公网访问的情况下)
|
5月前
|
安全 Nacos 数据库
【技术安全大揭秘】Nacos暴露公网后被非法访问?!6大安全加固秘籍,手把手教你如何保护数据库免遭恶意篡改,打造坚不可摧的微服务注册与配置中心!从限制公网访问到启用访问控制,全方位解析如何构建安全防护体系,让您从此告别数据安全风险!
【8月更文挑战第15天】Nacos是一款广受好评的微服务注册与配置中心,但其公网暴露可能引发数据库被非法访问甚至篡改的安全隐患。本文剖析此问题并提供解决方案,包括限制公网访问、启用HTTPS、加强数据库安全、配置访问控制及监控等,帮助开发者确保服务安全稳定运行。
456 0
|
7月前
|
SQL 运维 DataWorks
DataWorks操作报错合集之通过公网连接数据库时,报错连接不稳定,如何解决
DataWorks是阿里云提供的一站式大数据开发与治理平台,支持数据集成、数据开发、数据服务、数据质量管理、数据安全管理等全流程数据处理。在使用DataWorks过程中,可能会遇到各种操作报错。以下是一些常见的报错情况及其可能的原因和解决方法。
|
7月前
|
数据采集 DataWorks NoSQL
DataWorks产品使用合集之如何打通公网数据库
DataWorks作为一站式的数据开发与治理平台,提供了从数据采集、清洗、开发、调度、服务化、质量监控到安全管理的全套解决方案,帮助企业构建高效、规范、安全的大数据处理体系。以下是对DataWorks产品使用合集的概述,涵盖数据处理的各个环节。
65 1
|
8月前
|
网络协议 安全 关系型数据库
IntelliJ IDEA如何使用固定地址公网远程访问本地Mysql数据库
IntelliJ IDEA如何使用固定地址公网远程访问本地Mysql数据库
126 1
|
8月前
|
人工智能 NoSQL MongoDB
|
8月前
|
网络协议 关系型数据库 MySQL
Linux Ubuntu系统安装MySQL并实现公网连接本地数据库【内网穿透】
Linux Ubuntu系统安装MySQL并实现公网连接本地数据库【内网穿透】

相关产品

  • 云数据库 MongoDB 版