我有一个 Node.js 应用程序和一个在 AWS ECS 上运行的 MongoDB 数据库。我目前的设置由 2 个 ELB 和 2 个实例组成,每个实例运行一个 Docker 容器及其分配的服务(节点/mongo):
Elastic Load Balancer -> Dockerized Node -> Elastic Load Balancer -> Dockerized MongoDB
Run Code Online (Sandbox Code Playgroud)
我正在运行 MongoDB 的官方 Docker 映像:https : //registry.hub.docker.com/_/mongo/
关于如何使用 Docker 和 ECS 为 MongoDB 部署副本集的任何指示,每个副本都运行在不同的实例上?
对于生产分片 MongoDB 安装,我们需要 3 个配置服务器。根据文档“配置服务器 mongod 进程相当轻量级,可以在执行其他工作的机器上运行”。但是,在默认配置中,它们都启用了日志记录,并且预分配会占用 3 GB 的磁盘空间。我假设配置服务器的实际数据和交易量非常小,所以这似乎有点太多了。
有没有办法(安全地!)以更少的磁盘使用日志来运行这些配置服务器?我是否需要在配置服务器上进行日志记录?我可以将期刊大小设置得更小吗?
在这里使用 Ubuntu 12.04、nginx 和 php5-fpm
我让 mongo 在 php 5.3 上运行良好,然后我添加了 ondrej/php5 ppa 并更新到 php5.4。它保留了 GD 和 CURL 扩展,但不保留 mongo。我将该行重新添加到 php.ini 文件中,但什么也没添加。然后我启用了启动错误并得到了这个:
PHP Startup: Unable to load dynamic library '/usr/lib/php5/20100525/mongo.so' - /usr/lib/php5/20100525/mongo.so: cannot open shared object file: No such file or directory
Run Code Online (Sandbox Code Playgroud)
所以,疯狂的猜测,我做了find -name 'mongo.so'并将文件从 20090626/ 移动到 20100525/ ...这导致了这个错误:
PHP Startup: mongo: Unable to initialize module
Module compiled with module API=20090626
PHP compiled with module API=20100525
These options need to match
Run Code Online (Sandbox Code Playgroud)
然后我做了pecl uninstall mongo和pecl install …
我遵循了此处列出的所有官方指令:
详细地说,我做了:
sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv 7F0CEB10
Run Code Online (Sandbox Code Playgroud)
(看起来没问题)
echo "deb http://repo.mongodb.org/apt/ubuntu "$(lsb_release -sc)"/mongodb-org/3.0 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-3.0.list
Run Code Online (Sandbox Code Playgroud)
(似乎没问题,因为文件 /etc/apt/sources.list.d/mongodb-org-3.0.list 是使用正确的条目创建的)
sudo apt-get update
Run Code Online (Sandbox Code Playgroud)
(似乎没问题,因为我在列表中看到了回购)
但是当我这样做时:
sudo apt-get install -y mongodb-org
Run Code Online (Sandbox Code Playgroud)
它总是说“找不到包 mongodb-org”。
如果我做:
sudo apt-get install -y mongodb
Run Code Online (Sandbox Code Playgroud)
它可以工作,但它不安装 3.0 版,而是安装 2.4 版
在删除/清除 2.4 版本后,我多次尝试安装 3.0,但结果相同:“找不到包 mongodb-org”
如何安装 3.0 版?
编辑
apt-cache search mongodb没有找到任何关于mongodb-org 的信息
这是/etc/apt/sources.list.d/mongodb-org-3.0.list的内容:
deb http://repo.mongodb.org/apt/ubuntu trusty/mongodb-org/3.0 multiverse
Run Code Online (Sandbox Code Playgroud)
这些是关于 mondodb 的apt-get update产生的行:
Ign http://repo.mongodb.org trusty/mongodb-org/3.0 InRelease
Trovato …Run Code Online (Sandbox Code Playgroud) 使用mongo来自 docker hub的官方镜像,我运行以下命令使其运行:
docker run --name api -p 127.0.0.1:27017:27017 -p 127.0.0.1:28017:28017 -d mongo
Run Code Online (Sandbox Code Playgroud)
然后从另一个终端外壳,我运行 mongo
但是,我不断收到以下错误:
MongoDB shell version: 3.2.3
connecting to: test
2016-02-18T13:52:08.110-0700 I NETWORK [thread1] Socket recv() errno:104 Connection reset by peer 127.0.0.1:27017
2016-02-18T13:52:08.110-0700 I NETWORK [thread1] SocketException: remote: (NONE):0 error: 9001 socket exception [RECV_ERROR] server [127.0.0.1:27017]
2016-02-18T13:52:08.110-0700 E QUERY [thread1] Error: network error while attempting to run command 'isMaster' on host '127.0.0.1:27017' :
connect@src/mongo/shell/mongo.js:224:14
@(connect):1:6
exception: connect failed
Run Code Online (Sandbox Code Playgroud)
我检查了容器的日志,一切似乎都正确:
2016-02-18T20:51:20.538+0000 I CONTROL [initandlisten] MongoDB starting …Run Code Online (Sandbox Code Playgroud) 我将 mongodb repo 添加到源列表:
deb http://repo.mongodb.org/apt/debian jessie/mongodb-org/3.4 main
Run Code Online (Sandbox Code Playgroud)
然后 apt-get update。
当我尝试安装时,mongodb-org我得到了这个:
root@ns:~# aptitude install mongodb-org
The following NEW packages will be installed:
mongodb-org mongodb-org-mongos{ab} mongodb-org-server{ab} mongodb-org-shell{ab} mongodb-org-tools{ab}
0 packages upgraded, 5 newly installed, 0 to remove and 0 not upgraded.
Need to get 66.7 MB of archives. After unpacking 269 MB will be used.
The following packages have unmet dependencies:
mongodb-org-mongos : Depends: libssl1.0.0 (>= 1.0.1) which is a virtual package and is not provided by …Run Code Online (Sandbox Code Playgroud) 到目前为止,我们已经运行 mongo 4 个月了,但最近我看到了很多
SocketException handling request, closing client connection: 9001 socket exception [2] server [127.0.0.1:58996]
我怎么知道这个错误的原因?是否与代码问题或管理员配置有关?
我们有 Fedora 16 服务器,mongo 版本 2.0.7
如何mongod在 CentOS 上为进程/用户设置 ulimit ?
我已经阅读了官方文档,但它没有提供特定于操作系统的说明。
我需要设置ulimit -u 64000并需要它在重启后保持不变。
我正在运行 CentOS 5.5,但很快就会升级到 6.5。
我不想修改包管理器安装的任何脚本
我正在使用默认的 MongoDB Docker 映像,并且正在尝试为数据库创建一个新用户。
我目前正在尝试这样做:
FROM docker.io/mongo:3.2
MAINTAINER <alexandernst> alexandernst@gmail.com
ADD create_ddbb.js /tmp/
RUN mongod --fork --logpath /var/log/mongodb.log \
&& sleep 5 && mongo foobar /tmp/create_ddbb.js
Run Code Online (Sandbox Code Playgroud)
和create_ddbb.js:
db.createUser(
{
user: "*******",
pwd: "*******************",
roles: [
{ role: "readWrite", db: "foobar" }
]
}
);
Run Code Online (Sandbox Code Playgroud)
当我构建 Dockerfile 时,我看到:
Step 4 : RUN mongod --fork --logpath /var/log/mongodb.log && sleep 5 && mongo foobar /tmp/create_ddbb.js
---> Running in 58ba44d02508
about to fork child process, waiting until server is ready for connections. …Run Code Online (Sandbox Code Playgroud) 如何正确配置 MongoDB 以在 Ubuntu 上使用 Letsencrypt SSL?
我使用 Letsencrypt 创建了一个 SSL 证书并通过以下方式将其组合:
cat /etc/letsencrypt/live/example.com/fullchain.pem /etc/letsencrypt/live/example.com/privkey.pem > /etc/ssl/mongo.pem
Run Code Online (Sandbox Code Playgroud)
并设置 mongo 配置,如:
net:
port: 27017
bindIp: 0.0.0.0
ssl:
mode: requireSSL
PEMKeyFile: /etc/ssl/mongo.pem
Run Code Online (Sandbox Code Playgroud)
但是在尝试启动 Mongo 时出现此错误:
No SSL certificate validation can be performed since no CA file has been provided; please specify an sslCAFile parameter
Run Code Online (Sandbox Code Playgroud)
如何正确设置 CAFile?Ubuntu 通常不会在自己的文件中使用带有一堆不同根证书的“CA 路径”吗?我尝试使用 CURL CA 包,但这也不起作用。
我使用的是 Mongo v3.0.12 和 Ubuntu 14.04
mongodb ×10
docker ×3
ubuntu ×2
amazon-ecs ×1
apt ×1
centos ×1
installation ×1
journalling ×1
pecl ×1
php-fpm ×1
php5 ×1
replication ×1
sharding ×1
ssl ×1
tls ×1
ubuntu-14.04 ×1
ulimit ×1