MongoDB集群搭建(win7&CentOS7)

本博客为记录搭建MongoDB集群搭建过程

1,MongoDB Replica set集群搭建准备(主从仲裁):

      介质(根据操作系统下载相应版本):https://www.mongodb.com/download-center/v2/community

      集群配置手册(官方):https://docs.mongodb.com/manual/reference/configuration-options/

      其他的相关概念请自行查看文档

2,集群搭建(1主,1从,1仲裁)

       1,根据操作系统解压相应的安装包

       2,准备目录:

          1),mkdir ~/primary                         //存放主节点目录

          2),mkdir ~/secondary                     //存放从节点目录

          3),,mkdir ~/arbiter                         //存放仲裁者节点目录

          4),mkdir ~/primary/data               //存放主节点数据目录

          5),mkdir ~/primary/keyFile           //存放节点间鉴权文件目录

          6),mkdir ~/primary/log                //存放主节点日志文件目录

          7),mkdir ~/primary/pid                //存放主节点pid文件目录

          8),vi ~/primary/log/mongo.log     //保存主节点日志的文件

          9),vi ~/primary/pid/mongo.pid   //保存主节点pid的文件

          10),vi ~/primary/keyFile/key.key     //保存节点间认证秘钥的文件

          11),vi ~/primary/mongo.conf   //保存主节点配置信息的文件

          注:4)~11)步骤需要在~/secondary和~/arbiter建立相同的目录文件

       3,配置内部认证秘钥:

           在所有角色的keyFile目录下的key.key的文件中写入相同的秘钥, 该文件需要设置600权限, 该文件在所有节点下应保证完全一致

      4,配置启动配置信息          

          vim ~/primary/mongo.conf

          vim ~/secondary /mongo.conf

          vim ~/arbiter /mongo.conf

         以上三个文件中配置以下信息:

         security:

             authorization: enabled                                                                                                                                       #开启验证

             keyFile: "E:/tools/mongoDB-win/mongodb-win32-x86_64-2008plus-ssl-4.0.3/primary/keyFile/key.txt"     #指定秘钥文件

        storage:

           dbPath: "E:/tools/mongoDB-win/mongodb-win32-x86_64-2008plus-ssl-4.0.3/primary/data"                    #指定存储目录

           directoryPerDB: true                                                                                                                                           #开启按库分目录

      systemLog:

         destination: file                                                                                                                                                   

         path: "E:/tools/mongoDB-win/mongodb-win32-x86_64-2008plus-ssl-4.0.3/primary/log/mongo.log"          #指定log文件

        logAppend: true                                                                                                                                                #追加的方式记录日志

    processManagement:

        pidFilePath: "E:/tools/mongoDB-win/mongodb-win32-x86_64-2008plus-ssl-4.0.3/primary/pid/mongo.pid"     #指定pid文件

   replication:

       replSetName: "testdb"                                                                                                                                            #指定集群名称

      oplogSizeMB: 100                                                                                                                                                    #指定日志大小

    net:

        bindIp: 0.0.0.0                                                                                                                                                           #指定允许访问的ip, 如果想要允许所有ip可访问, 此项要配置成0.0.0.0, 如果不配则默认只可以被127.0.0.1访问

       port: 8081                                                                                                                                                              #指定端口

  5,配置集群

         1),屏蔽认证(注释掉security的配置)启动集群(mongod -f ~/primary/mongo.conf )

          2),连接客户端(mongo --port=port),进入mongo shell端

          3),配置节点角色

               在mongo shell中执行:

                    cfg={ _id:"testdb", members:[ {_id:0,host:'127.0.0.1:8081',priority:2}, {_id:1,host:'127.0.0.1:8082',priority:1}, {_id:2,host:'127.0.0.1:8083',arbiterOnly:true}] };

                    注:_id:"testdb",要与配置文件中的replSetName一致,priority高的将成为主节点,arbiterOnly:true节点将成为仲裁者节点

                    rs.initiate(cfg);启用配置

   6,设置用户

         1)连接主节点,进入mongo shell端

         2)创建用户:db.createUser({user:"yourAccount", pwd:"yourPassword",roles:[{role:"userAdminAnyDatabases", db:"admin"}]})

            注:role:"userAdminAnyDatabases",角色需要配置mongoDB中已经存在的角色,db:"admin"角色所属数据库(角色是随数据库走的)

        注:集群模式必须在主节点创建角色, 主节点创建的角色将被同步到集群各节点

  7,放开认证屏蔽,重启集群

3,java使用MongoDB集群Demo

      1,mvn依赖:

         <dependency>

              <groupId>org.mongodb</groupId>

              <artifactId>mongo-java-driver</artifactId>

              <version>3.8.0</version>

        </dependency>

      2,java 代码

   public static void main(String[] args) {

   

    /**

    * 组织nameServerAddr

    */

    ServerAddress serverAddress = new ServerAddress("127.0.0.1", 8081);

        ServerAddress serverAddress1 = new ServerAddress("127.0.0.1", 8082);

        ServerAddress serverAddress2 = new ServerAddress("127.0.0.1", 8083);

        List<ServerAddress> seeds = new ArrayList<ServerAddress>();

        seeds.add(serverAddress);

        seeds.add(serverAddress1);

        seeds.add(serverAddress2);

       

        /**

         * 连接认证信息:用户名:test1, 库:test, 密码:123456

         */

        MongoCredential credentials = MongoCredential.createCredential("test1", "test", "123456".toCharArray());

       

        /**

         * 连接参数

         */

        Builder builder = new Builder();

        builder.connectionsPerHost(1000);

        builder.maxWaitTime(100000);

        builder.threadsAllowedToBlockForConnectionMultiplier(50);

        MongoClientOptions options = builder.build();

       

        /**

         * 连接

         */

        MongoClient client = new MongoClient(seeds,credentials,options);

       

        /**

         * 获取数据库

         */

        MongoDatabase db = client.getDatabase("test");

       

        /**

         * 获取test库下的test collection

         */

        MongoCollection<Document> collection = db.getCollection("test");

       

        /**

         * 组织数据

         */

        Document document = new Document("id","123456");

       

        /**

         * 插入数据

         */

         collection.insertOne(document);

    }

           

   

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值