Docs 菜单
Docs 主页
/
MongoDB Manual
/ / / / /

使用 .tgz Tarball 在 Red Hat 或 CentOS 上安装 MongoDB Enterprise

在此页面上

  • Overview
  • Considerations
  • 安装 MongoDB Enterprise 版
  • 运行 MongoDB Enterprise 版
  • 更多信息

使用本教程手动安装 MongoDB 8.0 Red Hat Enterprise Linux、CentOS Linux 或 Oracle Linux [ 1 ]上的 Enterprise 版,使用下载的 .tgz tarball。

MongoDB Enterprise Edition 可在特定平台上使用,并支持与安全和监控相关的多项功能。

本教程将安装 MongoDB 8.0 企业版。要安装其他版本的 MongoDB Enterprise,请使用此页面左上角的版本下拉菜单选择该版本的文档。

虽然可按本文档所述方法通过下载的 .tgz Tarball 手动安装 MongoDB,但可能时仍建议在您的系统上使用 yum 包管理器来安装 MongoDB。使用包管理器会自动安装所需的全部依赖项,提供 mongod.conf 示例文件来帮助您入门,并简化未来的升级和维护任务。

➤ 有关说明,请参阅使用 yum 软件包经理安装MongoDB

使用 .tgz 包安装服务器时,您需要按照 mongosh 安装说明单独下载和安装 mongosh

MongoDB 8.0 企业版支持以下 64位版本的 Red Hat Enterprise Linux (RHEL)、CentOS Linux、Oracle Linux [ 1 ] 、Rocky Linux 和 AlmaLinux [ 2 ]x 86 _ 64架构:

  • RHEL / CentOS Stream / Oracle / Rocky / AlmaLinux 9

  • RHEL / CentOS Stream / Oracle / Rocky / AlmaLinux 8

MongoDB 仅支持这些平台的 64 位版本。

MongoDB 8.0 RHEL / CentOS / Oracle / Rocky / Alma Linux 上的 Enterprise 版还支持部分平台上的ARM 64架构。

更多信息,请参阅平台支持

[1](1, 2) MongoDB 仅支持运行 Red Hat Compatible Kernel (RHCK) 的 Oracle Linux。MongoDB 支持 Unbreakable Enterprise Kernel (UEK)。
[2] 针对 RHEL 版本 8.0+ 发布的 MongoDB 本地部署产品,与 Rocky Linux 版本 8.0+ 和 AlmaLinux 版本 8.0+ 兼容并受支持(前提是这些发行版能满足其承诺,提供完整的 RHEL 兼容性)。

在生产环境中部署 MongoDB 之前,请参阅自管理部署的生产注意事项文档,其中提供了有关生产环境中 MongoDB 部署的性能注意事项和配置建议。

使用以下命令安装 MongoDB Enterprise .tgz Tarball 所需的依赖项:

sudo yum install cyrus-sasl cyrus-sasl-gssapi cyrus-sasl-plain krb5-libs libcurl openldap openssl xz-libs
sudo yum install cyrus-sasl cyrus-sasl-gssapi cyrus-sasl-plain krb5-libs libcurl openldap openssl xz-libs
sudo yum install cyrus-sasl cyrus-sasl-gssapi cyrus-sasl-plain krb5-libs libcurl openldap openssl xz-libs

按照以下步骤从 .tgz 手动安装 MongoDB Enterprise Edition。

1

安装所需的必备包后,请从以下链接下载 MongoDB Enterprise tgz tarball:

MongoDB 下载中心

  1. Version 下拉列表中选择要下载的 MongoDB 版本。

  2. Platform 下拉菜单中,选择您操作系统的版本和架构。

  3. Package 下拉菜单中,选择 tgz

  4. 单击 Download(连接)。

2

例如,从系统 shell 中,您可以使用 tar 命令进行提取:

tar -zxvf mongodb-linux-*-8.0.0.tgz
3

MongoDB 二进制文件位于 tarball 的 bin/ 目录中。您可以执行以下任一操作:

  • 将二进制文件复制到 PATH 变量中列出的目录中,例如 /usr/local/bin(根据需要使用您的安装目录来更新 /path/to/the/mongodb-directory/

    sudo cp /path/to/the/mongodb-directory/bin/* /usr/local/bin/
  • 创建指向 PATH 变量中所列目录的二进制文件的符号链接,例如 /usr/local/bin(根据需要使用您的安装目录更新 /path/to/the/mongodb-directory/):

    sudo ln -s /path/to/the/mongodb-directory/bin/* /usr/local/bin/
4

安装 mongosh 然后使用 MongoDB Shell 连接到您的部署。

MongoDB 下载中心下载所需 mongosh 版本的对应包,并将其解压。

大多数类 Unix 操作系统都会限制进程可以使用的系统资源。 这些限制可能会对MongoDB操作产生负面影响,应该进行调整。 有关平台的建议设置,请参阅自管理部署的 UNIX ulimit设置

注意

如果打开文件数的 ulimit 值低于 64000,MongoDB 会生成初创企业警告。

默认情况下,MongoDB 使用 mongod 用户帐户运行,并且使用以下默认目录:

  • /var/lib/mongo (数据目录)

  • /var/log/mongodb (日志目录)

创建 MongoDB 数据与日志目录:

sudo mkdir -p /var/lib/mongo
sudo mkdir -p /var/log/mongodb

默认情况下,MongoDB 使用 mongod 用户帐户运行。创建一个 mongod 和一个 mongodb 群组。确保 mongod 属于该群组,然后将这些目录的所有者和群组设为 mongod

sudo chown -R mongod:mongod /var/lib/mongo
sudo chown -R mongod:mongod /var/log/mongodb

要使用除默认目录外的数据目录和/或日志目录:

  1. 创建新目录。

  2. 编辑配置文件 /etc/mongod.conf 并相应修改以下字段:

    • storage.dbPath 指定新的数据目录路径(例如/some/data/directory

    • systemLog.path 以指定新的日志文件路径(例如 /some/log/directory/mongod.log

  3. 确保运行 MongoDB 的用户有权访问这些目录:

    sudo chown -R mongod:mongod <directory>

    如果更改运行 MongoDB 进程的用户,必须赋予新用户访问这些目录的权限。

  4. 如果强制执行,请配置 SELinux。请参阅配置 SELinux

警告

配置不当的 SELinux 策略可能不安全,或是可能导致 mongod 实例无法运行。

如果 SELinux 处于enforcing(强制执行)模式,则须为 MongoDB 自定义 SELinux 策略以

  • 允许访问 cgroup

  • 允许访问 netstat

当前的 SELinux 策略不允许 MongoDB 进程访问 /sys/fs/cgroup,如此才能确定系统上的可用内存。如果打算以 enforcing(强制执行)模式运行 SELinux,则需对 SELinux 策略进行以下调整:

  1. 确保您的系统已安装 checkpolicy 包:

    sudo yum install checkpolicy
  2. 创建自定义策略文件 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
  3. 创建后,通过运行以下三个命令来编译并加载自定义策略模块:

    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

现在,MongoDB 进程可在 SELinux 设为 enforcing(强制执行)的情况下访问正确的文件。

当前的 SELinux 策略不允许 MongoDB 进程打开和读取 /proc/net/netstat,如此才能进行全时诊断数据捕获 (FTDC)。如果打算在 enforcing(强制执行)模式下运行 SELinux,则需对 SELinux 策略进行以下调整:

  1. 确保您的系统已安装 checkpolicy 包:

    sudo yum install checkpolicy
  2. 创建自定义策略文件 mongodb_proc_net.te

    cat > mongodb_proc_net.te <<EOF
    module mongodb_proc_net 1.0;
    require {
    type cgroup_t;
    type configfs_t;
    type file_type;
    type mongod_t;
    type proc_net_t;
    type sysctl_fs_t;
    type var_lib_nfs_t;
    class dir { search getattr };
    class file { getattr open read };
    }
    #============= mongod_t ==============
    allow mongod_t cgroup_t:dir { search getattr } ;
    allow mongod_t cgroup_t:file { getattr open read };
    allow mongod_t configfs_t:dir getattr;
    allow mongod_t file_type:dir { getattr search };
    allow mongod_t file_type:file getattr;
    allow mongod_t proc_net_t:file { open read };
    allow mongod_t sysctl_fs_t:dir search;
    allow mongod_t var_lib_nfs_t:dir search;
    EOF
  3. 创建后,通过运行以下三个命令来编译并加载自定义策略模块:

    checkmodule -M -m -o mongodb_proc_net.mod mongodb_proc_net.te
    semodule_package -o mongodb_proc_net.pp -m mongodb_proc_net.mod
    sudo semodule -i mongodb_proc_net.pp
  1. 更新 SELinux 策略以允许 mongod 服务使用新目录:

    sudo semanage fcontext -a -t <type> </some/MongoDB/directory.*>

    按需指定以下类型之一:

    • mongod_var_lib_t 针对数据目录

    • mongod_log_t 针对日志文件目录

    • mongod_var_run_t 针对 PID 文件目录

    注意

    请务必在目录末尾包含 .*

  2. 更新新目录的 SELinux 用户策略:

    sudo chcon -Rv -u system_u -t <type> </some/MongoDB/directory>

    按需指定以下类型之一:

    • mongod_var_lib_t 针对数据目录

    • mongod_log_t 针对日志目录

    • mongod_var_run_t 针对 PID 文件目录

  3. 将更新后的 SELinux 策略应用于目录:

    sudo restorecon -R -v </some/MongoDB/directory>

例如:

提示

请务必为 semanage fcontext 操作在此目录末尾包含 .*

  • 如果使用的是非默认 MongoDB 数据路径 /mongodb/data

    sudo semanage fcontext -a -t mongod_var_lib_t '/mongodb/data.*'
    sudo chcon -Rv -u system_u -t mongod_var_lib_t '/mongodb/data'
    sudo restorecon -R -v '/mongodb/data'
  • 如果使用的是非默认 MongoDB 日志目录 /mongodb/log(即,如果日志文件路径为 /mongodb/log/mongod.log):

    sudo semanage fcontext -a -t mongod_log_t '/mongodb/log.*'
    sudo chcon -Rv -u system_u -t mongod_log_t '/mongodb/log'
    sudo restorecon -R -v '/mongodb/log'
sudo semanage port -a -t mongod_port_t -p tcp <portnumber>

重要

除上述内容之外,如果 SELinux 处于 enforcing(强制执行)模式,还需针对以下每种情况进一步自定义 SELinux 策略:

请按照以下步骤在您的系统上运行 MongoDB Enterprise Edition。参照这些操作说明的前提是您在使用默认设置。

1

创建 MongoDB 实例存储其数据的目录。例如:

sudo mkdir -p /var/lib/mongo

创建 MongoDB 实例用于存储日志的目录。例如:

sudo mkdir -p /var/log/mongodb

启动 MongoDB 进程的用户必须具有对这些目录的读取和写入权限。例如,如果你打算自己运行 MongoDB:

sudo chown `whoami` /var/lib/mongo # Or substitute another user
sudo chown `whoami` /var/log/mongodb # Or substitute another user
2

要运行 MongoDB,请在系统提示符下运行 mongod 进程。

mongod --dbpath /var/lib/mongo --logpath /var/log/mongodb/mongod.log --fork

有关命令行选项 --dbpath--logpath 的详情,请参阅选项

3

检查日志文件 /var/log/mongodb/mongod.log 中以下行的进程输出,验证 MongoDB 是否成功启动:

[initandlisten] waiting for connections on port 27017

可能会在进程输出中看到非严重警告。只要看到上述日志行,便可在 MongoDB 初次计算期间安心地忽略这些警告。

4

在与 mongod 相同的主机上启动 mongosh 会话。您可以在不使用任何命令行选项的情况下运行 mongosh,从而连接在本地主机上运行且默认端口号为 27017 的 mongod

mongosh

如需进一步了解使用 mongosh 进行连接(例如连接在其他主机和/或端口上运行的 mongod 实例),请参阅 mongosh 文档。

为了帮助您开始使用 MongoDB,MongoDB 提供了各种驱动程序版本的入门指南。关于驱动程序文档,请参阅 开始使用 MongoDB 开发。

默认情况下,MongoDB 会以将 bindIp 设为 127.0.0.1 来启动,从而绑定到本地主机网络接口。这意味着 mongod 只能接受来自同一计算机上运行的客户端的连接。远程客户端无法连接到 mongod,且 mongod 无法初始化副本集,除非将此值设为有效的网络接口。

该值可通过以下任一方式配置:

  • 在 MongoDB 配置文件中使用 bindIp,或

  • 通过命令行参数 --bind_ip

警告

将实例绑定到可公开访问的 IP 地址之前,必须保护集群免遭未经授权的访问。有关安全建议的完整列表,请参阅自管理部署的安全清单。至少应考虑启用身份验证强化网络基础设施。

有关配置bindIp的详细信息,请参阅自托管部署中的IP绑定。

后退

在 Red Hat 上安装