gpt4 book ai didi

linux - 无法连接到远程 mongodb 服务器

转载 作者:IT老高 更新时间:2023-10-28 13:10:50 25 4
gpt4 key购买 nike

我正在尝试创建一个远程 mongodb 服务器来处理我的 java 项目。

我正在使用 vagrant + ansible 创建环境,但是我无法获得连接。

我总是被网络拒绝连接。本地主机上的相同代码完美运行。

我正在使用 vagrant box:chef/centos-6.5

我的ansible任务如下:

- name: Download EPEL Repo
get_url: url=http://dl.fedoraproject.org/pub/epel/6/x86_64/epel- release-6-8.noarch.rpm dest=/tmp/epel-release-6-8.noarch.rpm
- name: Install EPEL Repo
command: rpm -ivh /tmp/epel-release-6-8.noarch.rpm creates=/etc/yum.repos.d/epel.repo
- name: Install libselinux-python
yum: name=libselinux-python
- name: Create the repository for 10Gen
copy: src=10gen.repo.j2 dest=/etc/yum.repos.d/10gen.repo
- name: Create the EPEL Repository.
copy: src=epel.repo.j2 dest=/etc/yum.repos.d/epel.repo
- name: Create the GPG key for EPEL
copy: src=RPM-GPG-KEY-EPEL-6 dest=/etc/pki/rpm-gpg
- name: Create the mongod user
user: name=mongod comment="MongoD"
- name: Create the data directory for the namenode metadata
file: path={{ mongodb_datadir_prefix }} owner=mongod group=mongod state=directory
- name: Install the mongodb package
yum: name={{ item }} state=installed
with_items:
- libselinux-python
- mongo-10gen
- mongo-10gen-server
- bc
- python-pip
- name: Install the latest pymongo package
pip: name=pymongo state=latest use_mirrors=no

我添加了 iptables 异常(exception):

sudo iptables -A INPUT -p tcp --dport 27017 -j ACCEPT

哪个是活跃的:

[root@localhost ~]# iptables -L -v
Chain INPUT (policy ACCEPT 209 packets, 13148 bytes)
pkts bytes target prot opt in out source destination
1070 68777 ACCEPT tcp -- any any anywhere anywhere tcp dpt:27017

我的java代码定义MongoDbFactory

public @Bean
MongoDbFactory mongoDbFactory() throws Exception {
MongoClient mongo = new MongoClient("<ip-of-machine>", 27017);
return new SimpleMongoDbFactory(mongo, "test");
}

但我在尝试连接时总是遇到以下异常。

com.mongodb.MongoTimeoutException: Timed out after 10000 ms while waiting for a server that matches AnyServerSelector{}. Client view of cluster state is {type=Unknown, servers=[{address=192.168.1.11:27017, type=Unknown, state=Connecting, exception={com.mongodb.MongoException$Network: Exception opening the socket}, caused by {java.net.ConnectException: Connection refused}}]

如果我从 localhost 运行 mongodb 并相应地更改 ip,一切正常。

谢谢

最佳答案

首先,为确保这不是防火墙问题,请在两台服务器上停止 IPTABLES(之后不要忘记重新启用)。

在您尝试连接的机器上,直接 ssh 到它并确保 MongoDB 正在运行,本地连接并检查您是否可以访问数据库。

默认情况下,MongoDb 未配置为接受来自远程主机的连接,您能否确保您的 /etc/mongodb.conf 文件中有这些行:

bind_ip = 0.0.0.0
port = 27017

确保在进行任何更改后重新启动 MongoDB。如果您仍有问题,请尝试此操作并发表评论,我会更新答案并提供更多建议。

编辑: 从 2.6 版开始,配置文件格式已更改为 YAML,详情 here ,该文件应位于 /etc/mongod.conf

net:
bindIp: 0.0.0.0
port: 27017

关于linux - 无法连接到远程 mongodb 服务器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28002848/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com