美文网首页
mongodb副本集搭建

mongodb副本集搭建

作者: 快点给我想个名 | 来源:发表于2019-12-05 15:36 被阅读0次

    非安全认证

    环境说明

    Linux:CentOS7
    MongoDB:mongodb-linux-x86_64-enterprise-rhel70-4.0.13
    服务器IP:192.168.6.128、192.168.6.129、192.168.6.130、192.168.6.131
    架构:一主两从一仲裁

    解压Mongodb
    1. 解压文件并重命名为mongodb-4.0.13
    创建日志及数据存放目录
    1. 目录结构如图 data和log目录.png
    创建配置文件 参考官网说明
    1. 同一副本集的服务器replSetName相同。以128服务器为例:
    processManagement:
       fork: true
    net:
       bindIp: 192.168.6.128,127.0.0.1 #对应服务器填写自身对应IP地址
       port: 27017
    storage:
       dbPath: /usr/local/mongodb-4.0.13/replica_set/data
    systemLog:
       destination: file
       path: "/usr/local/mongodb-4.0.13/replica_set/log/mongodb.log"
       logAppend: true
    storage:
       journal:
          enabled: true
    replication:
       replSetName: set0
    
    启动MongoDB
    启动mongod客户端.png
    配置副本集 参考官网说明
    1. 这里配置不加入仲裁节点,稍候以命令方式加入。
    2. 登录任意一台服务器的mongo客户端,执行如下命令:
    var rsconf = {
        _id: "set0",
        members: 
        [
            {
                _id: 1,
                host: "192.168.6.128:27017"
            },
            {
                _id: 2,
                host: "192.168.6.129:27017"
            },
            {
                _id: 3,
                host: "192.168.6.130:27017"
            }
        ]
    }
    
    1. 副本集初始化
    rs.initiate(rsconf)
    
    添加仲裁节点
    1. 通过mongo登录主节点,将仲裁节点加入副本集。执行
     rs.addArb("192.168.6.131:27017")
    

    最后可通过rs.status()命令查看副本集状态信息

    安全认证

    其他步骤相同,不同点从配置文件开始

    创建key 参考官方说明
    1. 每个服务器都需要执行下列命令,或通过scp拷贝文件到其他服务器对应目录
    openssl rand -base64 756 > /usr/local/mongodb-4.0.13/replica_set/key/replicat_set.key
    chmod 600 /usr/local/mongodb-4.0.13/replica_set/key/replicat_set.key
    
    创建配置文件
    processManagement:
       fork: true
    net:
       bindIp: 192.168.6.128 #对应服务器填写自身对应IP地址
       port: 27017
    storage:
       dbPath: /usr/local/mongodb-4.0.13/replica_set/data
    systemLog:
       destination: file
       path: "/usr/local/mongodb-4.0.13/replica_set/log/mongodb.log"
       logAppend: true
    storage:
       journal:
          enabled: true
    replication:
       replSetName: set0
    # 不同点在下面,指定key路径
    security:
      keyFile: /usr/local/mongodb-4.0.13/replica_set/key/replicat_set.key
    
    启动MongoDB
    1. 启动mongodb
    2. 创建管理员
    use admin
    db.createUser(
       {
         user: "simon",
         pwd: "123456",
         roles: [{role:"userAdminAnyDatabase",db:"admin"}]
       }
    )
    
    1. 创建完成后,执行添加仲裁节点失败,查看官网文档,添加下列角色。之后在添加仲裁节点成功。
    db.grantRolesToUser("simon", ["clusterAdmin"])
    

    java客户端操作

    1. 创建test数据库
    2. 创建用户并授权
    db.createUser(
       {
         user: "tester",
         pwd: "123456",
         roles: [{role:"readWrite",db:"test"}]
       }
    )
    
    
    1. 客户端插入数据
    public static void main(String[] args) {
            List<ServerAddress> list = new ArrayList<>(4);
            ServerAddress s128 = new ServerAddress("192.168.6.128");
            ServerAddress s129 = new ServerAddress("192.168.6.129");
            ServerAddress s130 = new ServerAddress("192.168.6.130");
            list.add(s128);
            list.add(s129);
            list.add(s130);
    
            MongoCredential credential = MongoCredential.createCredential("tester", "test", "123456".toCharArray());
            MongoClientOptions mongoClientOptions = MongoClientOptions.builder().build();
            MongoClient mongoClient = new MongoClient(list,credential,mongoClientOptions);
            MongoDatabase test = mongoClient.getDatabase("test");
    
            MongoCollection<Document> simon = test.getCollection("simon");
    
            for(int i = 21 ;i < 39;i++){
                Document document = new Document();
                document.append("name","张三" + i);
                document.append("age",i);
                document.append("sex",((i & 1) == 0 ? "男":"女"));
                simon.insertOne(document);
            }
        }
    

    相关文章

      网友评论

          本文标题:mongodb副本集搭建

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