MongoDB部署

作者: 唯爱熊 | 来源:发表于2019-12-24 14:19 被阅读0次

    一.安装

    1.下载并解压
    #安装依赖
    [root@mongodb01 ~]# yum install libcurl openssl -y
    #下载安装包
    [root@mongodb01 ~]# wget https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-rhel70-4.0.14.tgz
    #解压到/opt目录下
    [root@mongodb01 ~]# tar xf mongodb-linux-x86_64-rhel70-4.0.14.tgz -C /opt/
    #切换目录并设置软链接
    [root@mongodb01 ~]# cd /opt/
    [root@mongodb01 /opt]# ln -s mongodb-linux-x86_64-rhel70-4.0.14 mongodb
    
    2.创建文件目录以及数据目录
    [root@mongodb01 /opt]# mkdir -p /opt/mongo_27017/{conf,log,pid}
    
    [root@mongodb01 /opt]# mkdir -p /data/mongo_27017 
    

    二. 配置启动mongo

    1.创建配置文件
    [root@mongodb01 ~]# cat >/opt/mongo_27017/conf/mongodb.conf<<EOF
    systemLog:
      destination: file   
      logAppend: true  
      path: /opt/mongo_27017/log/mongodb.log
    
    storage:
      journal:
        enabled: true
      dbPath: /data/mongo_27017
      directoryPerDB: true
      wiredTiger:
         engineConfig:
            cacheSizeGB: 1
            directoryForIndexes: true
         collectionConfig:
            blockCompressor: zlib
         indexConfig:
            prefixCompression: true
    
    processManagement:
      fork: true
      pidFilePath: /opt/mongo_27017/pid/mongod.pid
    
    net:
      port: 27017
      bindIp: 127.0.0.1,10.0.0.72
    EOF
    
    2.启动mongo
    [root@mongodb01 ~]# /opt/mongodb/bin/mongod -f /opt/mongo_27017/conf/mongodb.conf
    
    3.检查是否启动
    [root@mongodb01 ~]# netstat -lntup|grep 27017
    

    三.配置登录mongo

    1.写入环境变量
    [root@mongodb01 ~]# echo 'export PATH=/opt/mongodb/bin:$PATH' >> /etc/profile
    [root@mongodb01 ~]# source /etc/profile
    
    2.登录
    [root@mongodb01 ~]# mongo
    ......
    2019-12-23T18:58:02.051+0800 I STORAGE  [initandlisten] ** WARNING: The configured WiredTiger cache size is more than 80% of available RAM.
    2019-12-23T18:58:02.051+0800 I STORAGE  [initandlisten] **          See http://dochub.mongodb.org/core/faq-memory-diagnostics-wt
    2019-12-23T18:58:02.641+0800 I CONTROL  [initandlisten] 
    2019-12-23T18:58:02.641+0800 I CONTROL  [initandlisten] ** WARNING: Access control is not enabled for the database.
    2019-12-23T18:58:02.641+0800 I CONTROL  [initandlisten] **          Read and write access to data and configuration is unrestricted.
    2019-12-23T18:58:02.641+0800 I CONTROL  [initandlisten] ** WARNING: You are running this process as the root user, which is not recommended.
    2019-12-23T18:58:02.641+0800 I CONTROL  [initandlisten] 
    2019-12-23T18:58:02.641+0800 I CONTROL  [initandlisten] 
    2019-12-23T18:58:02.641+0800 I CONTROL  [initandlisten] ** WARNING: /sys/kernel/mm/transparent_hugepage/enabled is 'always'.
    2019-12-23T18:58:02.641+0800 I CONTROL  [initandlisten] **        We suggest setting it to 'never'
    2019-12-23T18:58:02.641+0800 I CONTROL  [initandlisten] 
    2019-12-23T18:58:02.641+0800 I CONTROL  [initandlisten] ** WARNING: /sys/kernel/mm/transparent_hugepage/defrag is 'always'.
    2019-12-23T18:58:02.641+0800 I CONTROL  [initandlisten] **        We suggest setting it to 'never'
    2019-12-23T18:58:02.641+0800 I CONTROL  [initandlisten] 
    2019-12-23T18:58:02.641+0800 I CONTROL  [initandlisten] ** WARNING: soft rlimits too low. rlimits set to 3805 processes, 65535 files. Number of processes should be at least 32767.5 : 0.5 times number of files.
    Enable MongoDB's free cloud-based monitoring service, which will then receive and display
    metrics about your deployment (disk utilization, CPU, operation statistics, etc).
    
    The monitoring data will be available on a MongoDB website with a unique URL accessible to you
    and anyone you share the URL with. MongoDB may use this information to make product
    improvements and to suggest MongoDB products and deployment options to you.
    
    To enable free monitoring, run the following command: db.enableFreeMonitoring()
    To permanently disable this reminder, run the following command: db.disableFreeMonitoring()
    ---
    
    > 
    
    3.关闭

    方法1:

    #使用localhost登录
    [root@mongodb01 ~]# mongo localhost:27017
    >use admin
    >db.shutdownServer()
    

    方法2:

    [root@mongodb01 ~]# mongod -f /opt/mongo_27017/conf/mongodb.conf --shutdown
    

    四.优化告警

    1.访问控制
    WARNING: Access control is not enabled for the database.
    Read and write access to data and configuration is unrestricted.
    解决方法:
    开启安全认证功能
    
    
    2.以root用户运行
    WARNING: You are running this process as the root user, which is not recommended.
    

    解法
    解决方法1:创建普通用并切换启动

    mongod -f /opt/mongo_27017/conf/mongodb.conf --shutdown
    useradd mongo
    echo '123456'|passwd --stdin mongo
    chown -R mongo:mongo /opt/
    chown -R mongo:mongo /data/
    su - mongo
    mongod -f /opt/mongo_27017/conf/mongodb.conf
    mongo
    

    解决方法2:创建systemcd启动文件

    cat >/lib/systemd/system/mongod.service<<EOF
    [Unit]
    Description=MongoDB Database Server
    Documentation=https://docs.mongodb.org/manual
    After=network.target
    
    [Service]
    User=mongod
    Group=mongod
    Environment="OPTIONS=-f /opt/mongo_27017/conf/mongodb.conf"
    ExecStart=/opt/mongodb/bin/mongod \$OPTIONS
    ExecStartPre=/usr/bin/chown -R mongod:mongod /opt/mongo_27017
    ExecStartPre=/usr/bin/chown -R mongod:mongod /data/mongo_27017
    PermissionsStartOnly=true
    PIDFile=/opt/mongo_27017/pid/mongod.pid
    Type=forking
    # file size
    LimitFSIZE=infinity
    # cpu time
    LimitCPU=infinity
    # virtual memory size
    LimitAS=infinity
    # open files
    LimitNOFILE=64000
    # processes/threads
    LimitNPROC=64000
    # locked memory
    LimitMEMLOCK=infinity
    # total threads (user+kernel)
    TasksMax=infinity
    TasksAccounting=false
    # Recommended limits for for mongod as specified in
    # http://docs.mongodb.org/manual/reference/ulimit/#recommended-settings
    
    [Install]
    WantedBy=multi-user.target
    EOF
    #创建用户
    [root@mongodb01 ~]# useradd mongod -M -s /sbin/nologin
    #启动mongodb
    [root@mongodb01 ~]# systemctl daemon-reload
    [root@mongodb01 ~]# systemctl start mongod
    
    
    3.关闭大内存页技术
    WARNING: /sys/kernel/mm/transparent_hugepage/enabled is 'always'.
    We suggest setting it to 'never'
    WARNING: /sys/kernel/mm/transparent_hugepage/defrag is 'always'.
    We suggest setting it to 'never'
    

    解决方法:
    1.临时解决

    [root@mongodb01 ~]# echo "never" >/sys/kernel/mm/transparent_hugepage/enabled
    [root@mongodb01 ~]# echo "never" >/sys/kernel/mm/transparent_hugepage/defrag
    
    2.写入开机自启动
    [root@mongodb01 ~]# chmod +x /etc/rc.d/rc.local
    [root@mongodb01 ~]# vim /etc/rc.d/rc.local
    echo "never" >/sys/kernel/mm/transparent_hugepage/enabled
    echo "never" >/sys/kernel/mm/transparent_hugepage/defrag
    

    验证:

    [root@mongodb01 ~]# mongod -f /opt/mongo_27017/conf/mongodb.conf --shutdown
    [root@mongodb01 ~]# mongod -f /opt/mongo_27017/conf/mongodb.conf 
    [root@mongodb01 ~]# mongo 
    
    4.解决rlimits太低
    WARNING: soft rlimits too low. rlimits set to 31771 processes, 65535 files. Number of processes should be at least 32767.5 : 0.5 times number of files.
    

    解法
    1.解决方法

    [root@mongodb01 ~]# vim /etc/profile
    ulimit -f unlimited
    ulimit -t unlimited
    ulimit -v unlimited
    ulimit -n 64000
    ulimit -m unlimited
    ulimit -u 64000
    #生效配置:
    [root@mongodb01 ~]# source /etc/profile
    

    验证:

    [root@mongodb01 ~]# mongod -f /opt/mongo_27017/conf/mongodb.conf --shutdown
    [root@mongodb01 ~]# mongod -f /opt/mongo_27017/conf/mongodb.conf 
    [root@mongodb01 ~]# mongo 
    

    2.解决方法:创建systemcd启动文件启动
    说明:之前已经设置。

    5.关闭共享
    ---
    Enable MongoDB's free cloud-based monitoring service, which will then receive and display
    metrics about your deployment (disk utilization, CPU, operation statistics, etc).
    
    The monitoring data will be available on a MongoDB website with a unique URL accessible to you
    and anyone you share the URL with. MongoDB may use this information to make product
    improvements and to suggest MongoDB products and deployment options to you.
    
    To enable free monitoring, run the following command: db.enableFreeMonitoring()
    To permanently disable this reminder, run the following command: db.disableFreeMonitoring()
    ---
    

    解决办法

    > db.disableFreeMonitoring()
    

    五.mongodb 默认存在的库

    test:登录时默认存在的库
    管理MongoDB有关的系统库
    admin库:系统预留库,MongoDB系统管理库
    local库:本地预留库,存储关键日志
    config库:MongoDB配置信息库
    
    show databases/show dbs
    show tables/show collections
    use admin 
    db/select database()
    

    相关文章

      网友评论

        本文标题:MongoDB部署

        本文链接:https://www.haomeiwen.com/subject/yfnxoctx.html