温馨提示×

如何配置Ubuntu MongoDB网络

小樊
44
2025-12-30 10:31:04
栏目: 云计算

Ubuntu 上配置 MongoDB 网络的实用步骤

一 基础网络绑定与端口

  • 编辑配置文件:sudo nano /etc/mongod.conf
  • 在 net 段设置监听地址与端口(示例为监听本机与内网地址):
    net:
      port: 27017
      bindIp: 127.0.0.1,192.168.1.100
    
    说明:将 bindIp 改为服务器的具体内网/公网 IP 可开启远程访问;生产环境不建议使用 0.0.0.0(监听所有地址)。如需变更端口,请同步更新客户端连接串与防火墙规则。
  • 使配置生效:sudo systemctl restart mongod
  • 验证监听:ss -lntp | grep 27017 或 sudo netstat -an | grep 27017

二 防火墙放行

  • UFW(推荐):仅允许受信网段访问
    • 允许某台主机:sudo ufw allow from 192.168.1.50 to any port 27017 proto tcp
    • 允许整个网段:sudo ufw allow from 192.168.1.0/24 to any port 27017 proto tcp
    • 查看规则:sudo ufw status
  • iptables:sudo iptables -A INPUT -p tcp -s 192.168.1.0/24 --dport 27017 -j ACCEPT
  • 云服务器注意同时放通云厂商安全组中的 27017/tcp 入站规则。

三 启用认证与创建管理员

  • 开启访问控制:在 /etc/mongod.conf 的 security 段启用
    security:
      authorization: enabled
    
    重启:sudo systemctl restart mongod
  • 创建管理员用户(连接到本机 mongod):
    use admin
    db.createUser({
      user: "admin",
      pwd: "StrongPassword123!",
      roles: [{ role: "root", db: "admin" }]
    })
    
  • 远程连接示例:mongo --host your_server_ip --port 27017 -u app_user -p app_password --authenticationDatabase your_database

四 可选 加密与网络性能优化

  • TLS/SSL 加密(可选但强烈推荐):在 net 段配置 ssl 并指定证书/密钥,客户端连接时添加 ?tls=true 等参数,保障公网传输安全。
  • 连接与并发优化(示例):
    net:
      maxIncomingConnections: 50000
      connectTimeoutMS: 5000
      socketTimeoutMS: 60000
    
  • 系统网络与内核参数(提升高并发与稳定性):
    • 增加文件描述符与连接队列:
      fs.file-max = 1000000
      net.core.somaxconn = 65535
      net.ipv4.tcp_max_syn_backlog = 65535
      net.ipv4.tcp_tw_reuse = 1
      
      应用:sudo sysctl -p
    • 禁用透明大页(THP):
      echo "never" | sudo tee /sys/kernel/mm/transparent_hugepage/enabled
      echo "never" | sudo tee /sys/kernel/mm/transparent_hugepage/defrag
      
  • 监控:mongostat 查看连接数(conn),netstat -antp | grep mongod 排查连接状态。

五 常见问题排查清单

  • 服务未监听或配置未生效:检查 mongod.conf 语法、sudo systemctl status mongod、以及重启是否成功。
  • 端口未放行:核对 UFW/iptables 与云安全组是否允许 27017/tcp 入站。
  • 仅本机能连:确认 bindIp 包含服务器实际 IP(而非仅 127.0.0.1),且客户端使用服务器 IP 连接。
  • 认证失败:确认已启用 authorization,并使用 --authenticationDatabase 指定正确库(如 admin)。
  • 监听地址错误:用 ss/ netstat 确认 mongod 正在期望的 IP:端口 上监听。

0