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節點,從而實現讀寫分離的功能

   

 

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