zoukankan      html  css  js  c++  java
  • mongodb集群部署

    部署结构

    一主一从一个投票节点。

    准备三台服务器或者单机上用不同的端口,部署方式一致。

    192.168.2.188:2718

    192.168.2.188:2719

    192.168.2.188:2720(arbiter)

    安装mongodb(yum)

    更新yum源

    vim /etc/yum.repos.d/mongodb-org-4.2.repo
    

    mongodb-org-4.2.repo的内容

    [mongodb-org-4.2]
    name=MongoDB Repository
    baseurl=https://repo.mongodb.org/yum/redhat/$releasever/mongodb-org/4.2/x86_64/
    gpgcheck=1
    enabled=1
    gpgkey=https://www.mongodb.org/static/pgp/server-4.2.asc
    

    执行安装

    yum install -y mongodb-org
    

    创建目录

    mkdir -p /usr/local/mongodb
    cd /usr/local/mongodb
    mkdir 2718
    mkdir 2719
    mkdir 2720
    
    cd 2718
    mkdir data
    touch db.log
    vim db.conf
    

    db.conf配置内容

    //端口
    port=2718
    //绑定IP,多个用逗号隔开,注意绑定localhost
    bind_ip=192.168.2.188,localhost
    //日志的目录,注意要具体到文件
    logpath=/usr/mongodb/2718/db.log
    //数据目录
    dbpath=/usr/mongodb/2718/data/
    //追加的方式写日志
    logappend=true
    //pid文件,可选
    pidfilepath=/usr/mongodb/2718/.pid
    //以守护进程的方式开启mongod的进程
    fork=true
    //oplog的大小,M为单位,复制集同步数据的文件
    oplogSize=1024
    //开启日志
    journal=true
    //复制集的名称
    replSet=NC
    //开启认证
    auth=true
    //复制集之间的通信认证文件
    keyFile=/usr/mongodb/.keyfile
    //本地登录未配置用户的时候,可直接登录,创建用户后失效
    setParameter=enableLocalhostAuthBypass=1
    

    三个目录均创建改文件,注意端口和IP根据需要,对应进行修改。

    创建keyFile,注意keyfile会忽略全部的空格,而且要匹配[0-9a-zA-Z+/],最大长度不能超过1000,建议不要使用太长,在复制集直接通信要做对比,以免影响性能。

    openssl rand -base64 102
    

     .keyfile注意要设置权限600

    要不然会提示

    ERROR: child process failed, exited with error number 1

    查看日志,可以看到

    permissions on /xxx/.keyfile are too open

    chmod 600 .keyfile

    产生的内容保存到conf对应的目录下。

    配置完成后,启动mongod。

    mongod -f /usr/mongodb/2718/db.conf
    mongod -f /usr/mongodb/2719/db.conf
    mongod -f /usr/mongodb/2720/db.conf
    

    启动后,登录任意一个服务,注意要用localhost或者12.7.0.01登录,否则没办法进行用户创建。

    mongo 127.0.0.1:2718/admin
    

    配置复制集信息

    关于一些参数的说明

    “_id":"NC",复制集的名称,与上面配置mongod的conf对应,注意这个名称要保持一致。

    ”members":[]复制集组成的成员

    “arbiterOnly”:标志该节点未投票节点,默认是false

    "votes":1,具有投票权,0不能投票,最多只能有7个节点可以参与投票,

    config={
    	"_id" : "NC",
    	"members" : [
    		{
    			"_id" : 0,
    			"host" : "192.168.2.188:2718",
    			"votes" : 1
    		},
    		{
    			"_id" : 1,
    			"host" : "192.168.2.188:2719",
    			"arbiterOnly" : false,
    			"votes" : 1
    		},
    		{
    			"_id" : 2,
    			"host" : "192.168.2.188:2720",
    			"arbiterOnly" : true,
    			"votes" : 1
    		}
    	]
    }
    

    初始化复制集

    rs.initiate(config) 
    

    执行完成后可以通过命令

    rs.status()
    

    可以查看到当前复制集的状态

    创建超管进行授权

    db.createUser({
       "user":"root",
       "pwd":"root",
       "roles":[{
              "role":"root",
              "db":"admin"
         }] 
    })
    

    重新认证

    db.auth("root","root")
    

    创建其他的数据库的用户,注意,当前在哪个库创建用户,那么创建的用户,只对当前的库有效

    use nc

    db.createUser({ "user":"nc", "pwd":"nc", "roles":[{ "role":"readWrite", "db":"nc" }] })
  • 相关阅读:
    paip.云计算以及分布式计算的区别
    paip.索引的种类以及实现attilax 总结
    paip.分布式应用系统java c#.net php的建设方案
    paip.提升性能--多核编程中的java .net php c++最佳实践 v2.0 cah
    paip.中文 分词 ---paoding 3.1 的使用
    paip.2013年技术趋势以及热点 v2.0 cae
    paip.为什么使用多线程的原因.
    paip.提升性能--多核cpu中的java/.net/php/c++编程
    paip.重装系统需要备份的资料总结..v2.0 cad
    paip.禁用IKAnalyzer 的默认词库.仅仅使用自定义词库.
  • 原文地址:https://www.cnblogs.com/hunter2014/p/11867255.html
Copyright © 2011-2022 走看看