MongoDB副本集集群搭建

1. 官方安装文档推荐

https://docs.mongodb.com/manual/tutorial/install-mongodb-enterprise-on-red-hat/

2. 使用 .rpm 包安装

     (1). 配置存储库

         创建一个/etc/yum.repos.d/mongodb-enterprise.repo文件,以便您可以使用yum以下命令直接安装MongoDB企业

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

     (2). 安装MongoDB Enterprise软件包

            当前目录下发出命令:

sudo yum install -y mongodb-enterprise

3. 虚拟机配置

     (1). 部署三台虚拟机,三个Mongo节点都按照以下方式创建

            配置每个虚拟机的IP和端口号

10.10.11.41:20001
10.10.11.42:20002
10.10.11.43:20003

      (2). 文件存储地址创建

             [1]. MongoDB数据存储地址:/data/mongo-conf/data1/data

             [2]. MongoDB日志存储地址:/data/mongo-conf/data1/log/mongod.log

             [3]. MongoDB启动Config文件: /data/mongo-conf/data1/config.conf

systemLog:
  destination: file
  path: /data/mongo-conf/data1/log/mongod.log
  logAppend: true
storage:
  journal:
    enabled: true
  dbPath: /data/mongo-conf/data1/data
  directoryPerDB: true
  wiredTiger:
    engineConfig:
      directoryForIndexes: true
    collectionConfig:
      blockCompressor: zlib
    indexConfig:
      prefixCompression: true
processManagement:
  fork: false
  pidFilePath: /data/mongo-conf/data1/data/mongod.pid
  timeZoneInfo: /usr/share/zoneinfo
net:
  port: 20001
  bindIp: 0.0.0.0  # Enter 0.0.0.0,:: to bind to all IPv4 and IPv6 addresses or, alternatively, use the net.bindIpAll setting.
replication:
  oplogSizeMB: 8224 #oplog集合大小
  replSetName: rep1 #集群名称

               [4]. MongoDB启动命令: 

/usr/bin/mongod -f /data/mongo-conf/data1/config.conf &

               [5]. 创建MongoDB启动脚本: /data/mongo-conf/data1/start-mongodb.sh

/usr/bin/mongod -f /data/mongo-conf/data1/config.conf &

               [6]. 设置权限: 

chmod 777 start-mongodb.sh

               [7]. 初始化可复制集命令

//复制集初始化,在主节点上执行,ip禁止使用localhost

rs.initiate({
      _id: "configRS",
      version: 1,
      members: [{ _id: 0, host : "10.10.11.41:20001" }]});

rs.add("10.10.11.42:20002");//有几个节点就执行几次方法

rs.add("10.10.11.43:20003");//有几个节点就执行几次方法

               [8]. 测试可复制集

                   在每个节点运行 rs.status() 或 isMaster()命令查看复制集状态

3. 使用正确的姿势连接复制集

     MongoDB复制集里Primary节点是不固定的,不固定的,不固定的! 所以生产环境千万不要直连Primary,千万不要直连Primary,千万不要直连Primary!                                                                          

重要的事情说3遍

     (1). JAVA原生驱动开发

List<ServerAddress> asList = Arrays.asList(
                            new ServerAddress("10.10.11.41", 20001), 
                            new ServerAddress("10.10.11.42", 20002), 
                            new ServerAddress("10.10.11.43", 20003));
client = new MongoClient(asList);

     (2). Spring配置开发

<mongo:mongo-client   
replica-set="10.10.11.41:20001,10.10.11.42:20002,10.10.11.43:20003">
</mongo:mongo-client>

      

     (3). 配置Tips

配置Tips:
关注Write Concern参数的设置,默认值1可以满足大多数场景的需求。W值大于1可以提高数据的可靠持久化,但会降低写性能。
在options里添加readPreference=secondaryPreferred即可实现读写分离,读请求优先到Secondary节点,从而实现读写分离的功能

   

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章