在 Red Hat 或 CentOS 上安装 MongoDB Enterprise Edition
在本页面
Overview
使用本教程,可以使用yum
软件包 Management 器在 Red Hat Enterprise Linux,CentOS Linux 或 Oracle Linux [1]上安装 MongoDB 3.6 Enterprise Edition。
MongoDB 企业版在某些平台上可用,并且包含对与安全性和监视有关的多种功能的支持。
MongoDB Version
本教程将安装 MongoDB 3.6 Enterprise Edition。要安装其他版本的 MongoDB Enterprise,请使用此页面左上角的版本下拉菜单选择该版本的文档。
Considerations
Platform Support
EOL Notice
-
MongoDB 3.6.17 企业版在s390x上删除了对 RHEL/CentOS/Oracle 7 的支持
-
MongoDB 3.6.14 企业版在s390x上删除了对 RHEL/CentOS/Oracle 6 的支持
MongoDB 3.6 Enterprise Edition 支持x86_64体系结构上的 Red Hat Enterprise Linux(RHEL),CentOS Linux 和 Oracle Linux [1]的以下 64 位 版本:
-
RHEL/CentOS/Oracle 8(从 MongoDB Enterprise 3.6.17 开始)
-
RHEL/CentOS/Oracle 7
-
RHEL/CentOS/Oracle 6
MongoDB 仅支持这些平台的 64 位版本。
RHEL/CentOS/Oracle 上的 MongoDB 3.6 企业版还支持某些平台上的PPC64LE体系结构。
有关更多信息,请参见Supported Platforms。
[1] | (1,2) MongoDB 仅支持运行 Red Hat 兼容内核(RHCK)的 Oracle Linux。 MongoDB 不支持 Unbreakable Enterprise Kernel(UEK)。 |
Windows Subsystem for Linux (WSL) - Unsupported
MongoDB 不支持 Linux 的 Windows 子系统(WSL)。
Production Notes
在生产环境中部署 MongoDB 之前,请考虑Production Notes文档,该文档提供了生产 MongoDB 部署的性能注意事项和配置建议。
安装 MongoDB 企业版
请按照以下步骤使用yum
程序包 Management 器安装 MongoDB 企业版。
Configure repository.
创建一个/etc/yum.repos.d/mongodb-enterprise-3.6.repo
文件,以便您可以使用yum
直接安装 MongoDB 企业版:
[mongodb-enterprise-3.6]
name=MongoDB Enterprise Repository
baseurl=https://repo.mongodb.com/yum/redhat/$releasever/mongodb-enterprise/3.6/$basearch/
gpgcheck=1
enabled=1
gpgkey=https://www.mongodb.org/static/pgp/server-3.6.asc
Note
如果您在以前的 MongoDB 安装中的此目录中有mongodb-enterprise.repo
文件,则应将其删除。使用上面的mongodb-enterprise-3.6.repo
文件安装 MongoDB 3.6.
您也可以直接从MongoDB repository下载.rpm
文件。下载按 Red Hat/CentOS 版本(例如7
),MongoDB release version(例如3.6
),然后是体系结构(例如x86_64
)进行组织。奇数编号的 MongoDB 发布版本(例如3.7
)是开发版本,不适合生产部署。
安装 MongoDB Enterprise 软件包。
安装 MongoDB Enterprise 的 3.6 版本候选版本。
发出以下命令:
sudo yum install -y mongodb-enterprise
安装特定版本的 MongoDB Enterprise。
要安装特定发行版,必须分别指定每个组件包以及版本号,如以下示例所示:
sudo yum install -y mongodb-enterprise-3.6.19 mongodb-enterprise-server-3.6.19 mongodb-enterprise-shell-3.6.19 mongodb-enterprise-mongos-3.6.19 mongodb-enterprise-tools-3.6.19
如果您仅安装mongodb-enterprise=3.6.19
并且不包括组件包,则无论您指定哪个版本,都将安装每个 MongoDB 包的最新版本。
固定特定版本的 MongoDB Enterprise。
尽管您可以指定任何可用的 MongoDB Enterprise 版本,但是yum
将在更新版本可用时升级软件包。为防止意外升级,请通过将以下exclude
指令添加到/etc/yum.conf
文件中来固定软件包:
exclude=mongodb-enterprise,mongodb-enterprise-server,mongodb-enterprise-shell,mongodb-enterprise-mongos,mongodb-enterprise-tools
运行 MongoDB 企业版
Prerequisites
ulimit
大多数类 Unixos 都限制了会话可能使用的系统资源。这些限制可能会对 MongoDB 的运行产生负面影响。有关更多信息,请参见UNIX ulimit 设置。
Directory Paths
使用默认目录
默认情况下,MongoDB 使用mongod
用户帐户运行,并使用以下默认目录:
-
/var/lib/mongo
(数据目录) -
/var/log/mongodb
(日志目录) -
➤如果您是通过程序包 Management 器安装的,
- 将创建默认目录,并将这些目录的所有者和组设置为
mongod
。
- 将创建默认目录,并将这些目录的所有者和组设置为
-
➤如果通过下载压缩包进行安装,
- 未创建默认的 MongoDB 目录。要创建 MongoDB 数据和日志目录:
sudo mkdir -p /var/lib/mongo
sudo mkdir -p /var/log/mongodb
默认情况下,MongoDB 使用mongod
用户帐户运行。创建后,将这些目录的所有者和组设置为mongod
:
sudo chown -R mongod:mongod <directory>
使用非默认目录
要使用默认目录以外的数据目录和/或日志目录:
-
创建一个或多个新目录。
-
编辑配置文件
/etc/mongod.conf
,并相应地修改以下字段: -
storage.dbPath指定新的数据目录路径(例如
/some/data/directory
) -
systemLog.path指定新的日志文件路径(例如
/some/log/directory/mongod.log
) -
确保运行 MongoDB 的用户有权访问一个或多个目录:
sudo chown -R mongod:mongod <directory>
如果您更改运行 MongoDB 进程的用户,则必须向新用户授予对这些目录的访问权限。
- 如果强制配置 SELinux。参见Configure SELinux。
Configure SELinux
Important
如果 SELinux 处于enforcing
模式,则必须为 MongoDB 自定义 SELinux 策略。
当前的 SELinux 策略不允许 MongoDB 进程访问/sys/fs/cgroup
,这是确定系统上可用内存所必需的。如果打算以enforcing
模式运行 SELinux,则需要对 SELinux 策略进行以下调整:
- 确保您的系统已安装
checkpolicy
软件包:
sudo yum install checkpolicy
- 创建一个自定义策略文件
mongodb_cgroup_memory.te
:
cat > mongodb_cgroup_memory.te <<EOF
module mongodb_cgroup_memory 1.0;
require {
type cgroup_t;
type mongod_t;
class dir search;
class file { getattr open read };
}
#============= mongod_t ==============
allow mongod_t cgroup_t:dir search;
allow mongod_t cgroup_t:file { getattr open read };
EOF
- 创建完成后,通过运行以下三个命令来编译并加载自定义策略模块:
checkmodule -M -m -o mongodb_cgroup_memory.mod mongodb_cgroup_memory.te
semodule_package -o mongodb_cgroup_memory.pp -m mongodb_cgroup_memory.mod
sudo semodule -i mongodb_cgroup_memory.pp
现在,将 SELinux 设置为enforcing
,MongoDB 进程就可以访问正确的文件。
Important
如果 SELinux 处于enforcing
模式,则在以下两种情况下,您还需要进一步自定义 SELinux 策略:
-
您不是使用默认的 MongoDB 目录(对于 RHEL 7.0),和/或
-
您不是使用默认的 MongoDB 端口 **。
非默认 MongoDB 目录路径
- 更新 SELinux 策略以允许
mongod
服务使用新目录:
semanage fcontext -a -t <type> </some/MongoDB/directory.*>
在适当的地方指定以下类型之一:
-
mongod_var_lib_t
用于数据目录 -
mongod_log_t
用于日志文件目录 -
mongod_var_run_t
用于 pid 文件目录
Note
确保在目录末尾包含.*
。
- 为新目录更新 SELinux 用户策略:
chcon -Rv -u system_u -t <type> </some/MongoDB/directory>
在适当的地方指定以下类型之一:
-
mongod_var_lib_t
用于数据目录 -
mongod_log_t
用于日志目录 -
mongod_var_run_t
用于 pid 文件目录 -
将更新的 SELinux 策略应用于目录:
restorecon -R -v </some/MongoDB/directory>
For examples:
Tip
-
根据您的用户权限,您可能需要使用
sudo
来执行这些操作。 -
对于
semanage fcontext
操作,请确保在目录末尾包含.*
。
- 如果使用非默认的 MongoDB 数据路径
/mongodb/data
:
semanage fcontext -a -t mongod_var_lib_t '/mongodb/data.*'
chcon -Rv -u system_u -t mongod_var_lib_t '/mongodb/data'
restorecon -R -v '/mongodb/data'
- 如果使用非默认的 MongoDB 日志目录
/mongodb/log
(例如,日志文件路径为/mongodb/log/mongod.log
):
semanage fcontext -a -t mongod_log_t '/mongodb/log.*'
chcon -Rv -u system_u -t mongod_log_t '/mongodb/log'
restorecon -R -v '/mongodb/log'
非默认 MongoDB 端口
Tip
根据您的用户权限,您可能需要使用sudo
来执行该操作。
semanage port -a -t mongod_port_t -p tcp <portnumber>
可选。禁止 FTDC 警告
当前的 SELinux 策略不允许 MongoDB 进程打开并为Diagnostic Parameters(FTDC)读取/proc/net/netstat
。这样,审核日志可能包含许多有关无法访问此路径的消息。
要跟踪建议的修复程序,请参阅https://github.com/fedora-selinux/selinux-policy-contrib/pull/79。
(可选)作为临时解决方案,您可以手动调整 SELinux 策略:
- 确保您的系统已安装
checkpolicy
软件包:
sudo yum install checkpolicy
- 创建一个自定义策略文件
mongodb_proc_net.te
:
cat > mongodb_proc_net.te <<EOF
module mongodb_proc_net 1.0;
require {
type proc_net_t;
type mongod_t;
class file { open read };
}
#============= mongod_t ==============
allow mongod_t proc_net_t:file { open read };
EOF
- 创建完成后,通过运行以下三个命令来编译并加载自定义策略模块:
Tip
根据您的用户权限,您可能需要使用sudo
来执行semodule
操作。
checkmodule -M -m -o mongodb_proc_net.mod mongodb_proc_net.te
semodule_package -o mongodb_proc_net.pp -m mongodb_proc_net.mod
semodule -i mongodb_proc_net.pp
Procedure
请按照以下步骤在系统上运行 MongoDB 企业版。这些说明假定您使用的是默认设置。
Init System
要运行和 Managementmongod进程,您将使用 os 的内置init system。最新版本的 Linux 倾向于使用 systemd (使用systemctl
命令),而较早版本的 Linux 倾向于使用 System V init (使用service
命令)。
如果不确定平台使用哪个初始化系统,请运行以下命令:
ps --no-headers -o comm 1
然后根据结果在下面选择适当的选项卡:
-
systemd
-选择下面的“ systemd(systemctl)”标签。 -
init
-选择下面的“系统 V 初始化(服务)”标签。
Start MongoDB.
You can start the mongod process by issuing the following command:
sudo systemctl start mongod
If you receive an error similar to the following when starting mongod:
Failed to start mongod.service: Unit mongod.service not found.
Run the following command first:
sudo systemctl daemon-reload
Then run the start command above again.
Verify that MongoDB has started successfully.
You can verify that the mongod process has started successfully by issuing the following command:
sudo systemctl status mongod
You can optionally ensure that MongoDB will start following a system reboot by issuing the following command:
sudo systemctl enable mongod
Stop MongoDB.
As needed, you can stop the mongod process by issuing the following command:
sudo systemctl stop mongod
Restart MongoDB.
You can restart the mongod process by issuing the following command:
sudo systemctl restart mongod
You can follow the state of the process for errors or important messages by watching the output in the /var/log/mongodb/mongod.log
file.
Begin using MongoDB.
Start a mongo shell on the same host machine as the mongod. Use the --host command line option to specify the localhost address and port that the mongod listens on:
mongo --host 127.0.0.1:27017
Later, to stop MongoDB, press Control+C
in the terminal where the mongod instance is running.
Start MongoDB.
You can start the mongod process by issuing the following command:
sudo service mongod start
Verify that MongoDB has started successfully
You can verify that the mongod process has started successfully by checking the contents of the log file at /var/log/mongodb/mongod.log
for a line reading
[initandlisten] waiting for connections on port <port>
where <port>
is the port configured in /etc/mongod.conf
, 27017
by default.
You can optionally ensure that MongoDB will start following a system reboot by issuing the following command:
sudo chkconfig mongod on
Stop MongoDB.
As needed, you can stop the mongod process by issuing the following command:
sudo service mongod stop
Restart MongoDB.
You can restart the mongod process by issuing the following command:
sudo service mongod restart
You can follow the state of the process for errors or important messages by watching the output in the /var/log/mongodb/mongod.log
file.
Begin using MongoDB.
Start a mongo shell on the same host machine as the mongod. Use the --host command line option to specify the localhost address and port that the mongod listens on:
mongo --host 127.0.0.1:27017
Later, to stop MongoDB, press Control+C
in the terminal where the mongod instance is running.
Uninstall MongoDB
要从系统中完全删除 MongoDB,必须删除 MongoDB 应用程序本身,配置文件以及任何包含数据和日志的目录。以下部分将指导您完成必要的步骤。
Warning
此过程将“完全”删除 MongoDB,其配置和“所有”数据库。此过程是不可逆的,因此请确保在 continue 操作之前备份所有配置和数据。
Stop MongoDB.
通过发出以下命令来停止mongod进程:
sudo service mongod stop
Remove Packages.
删除以前安装的所有 MongoDB 软件包。
sudo yum erase $(rpm -qa | grep mongodb-enterprise)
删除数据目录。
删除 MongoDB 数据库和日志文件。
sudo rm -r /var/log/mongodb
sudo rm -r /var/lib/mongo
Additional Information
默认情况下,localhost 绑定
默认情况下,MongoDB 在bindIp设置为127.0.0.1
的情况下启动,该绑定到 localhost 网络接口。这意味着mongod
仅可以接受来自同一计算机上运行的 Client 端的连接。远程 Client 端将无法连接到mongod
,并且mongod
将无法初始化replica set,除非将此值设置为有效的网络接口。
可以配置此值:
Warning
绑定到非 localhost(例如可公开访问)的 IP 地址之前,请确保已保护群集免受未经授权的访问。有关安全建议的完整列表,请参见Security Checklist。至少考虑enabling authentication和加强网络基础设施。
有关配置bindIp的更多信息,请参见MongoDB 配置强化。
MongoDB 企业版软件包
MongoDB Enterprise Edition 可从其自己的专用存储库中获得,并且包含以下官方支持的软件包:
Package Name | Description |
---|---|
mongodb-enterprise | metapackage 将自动安装下面列出的四个组件包。 |
mongodb-enterprise-server | 包含mongod守护程序以及相关的配置和初始化脚本。 |
mongodb-enterprise-mongos | 包含mongos守护程序。 |
mongodb-enterprise-shell | 包含mongo shell。 |
mongodb-enterprise-tools | 包含以下 MongoDB 工具:mongoimport bsondump,mongodump,mongoexport,mongofiles,mongoperf,mongorestore,mongostat和mongotop。 |