ต่อไปนี้เป็นตัวอย่างของYAML configs สำหรับ Linux (เส้นทางและตัวเลือก Windows แตกต่างกันเล็กน้อย) โดยพื้นฐานแล้วจะเป็นการตั้งค่าเริ่มต้นและการตั้งค่าที่ใช้กันทั่วไปอย่างชัดเจน
ขั้นแรกเป็นแบบสแตนด์อโลนที่mongod
มีพอร์ตเริ่มต้นเส้นทางการตั้งค่าสมุดรายวัน - นี่จะเป็นประเภทของการกำหนดค่าที่ใช้สำหรับการทดสอบในท้องถิ่นโดยมีความพิเศษเล็กน้อยเพื่อแสดงสไตล์ทั่วไป:
storage:
dbPath: "/data/db"
directoryPerDB: true
journal:
enabled: true
systemLog:
destination: file
path: "/data/db/mongodb.log"
logAppend: true
timeStampFormat: iso8601-utc
processManagement:
fork: true
net:
bindIp: 127.0.0.1
port: 27017
wireObjectCheck : false
unixDomainSocket:
enabled : true
หมายเหตุบางประการเกี่ยวกับการกำหนดค่านี้:
- โดยทั่วไปคุณไม่ต้องการให้วัตถุตรวจสอบ (
wireObjectCheck: false
) ในการผลิต แต่สำหรับการโหลดข้อมูลจำนวนมากเพื่อการทดสอบมันจะเพิ่มความเร็วขึ้นเล็กน้อยและมีความเสี่ยงน้อยที่สุดในสภาพแวดล้อมดังกล่าว
- สิ่งนี้จะไม่ทำงานสำหรับการทำซ้ำเว้นแต่ว่าสมาชิกทั้งหมดของชุดเรพลิกาจะอยู่ในที่อยู่ IP ลูปแบ็ค (เนื่องจากนี่เป็นเพียงการเชื่อมโยงที่ระบุเท่านั้น) ดังนั้นระวัง
ตอนนี้เรามาดูตัวอย่างไฟล์ปรับแต่งสำหรับสมาชิกชุดเรพพลิกาทั่วไปที่เปิดใช้งานการรับรองความถูกต้องและทำงานเป็นส่วนหนึ่งของคลัสเตอร์ที่แตกออก:
storage:
dbPath: "/data/db"
directoryPerDB: true
journal:
enabled: true
systemLog:
destination: file
path: "/var/log/mongodb.log"
logAppend: true
timeStampFormat: iso8601-utc
replication:
oplogSizeMB: 10240
replSetName: "rs1"
processManagement:
fork: true
net:
bindIp: 192.0.2.1
port: 27018
security:
keyFile: "/data/key/rs1.key"
authorization: "enabled"
sharding:
clusterRole: "shardsvr"
หมายเหตุบางประการเกี่ยวกับการกำหนดค่านี้:
- อีกครั้งมีการประกาศอย่างชัดเจนของค่าเริ่มต้นและการตั้งค่าโดยนัย (พอร์ตจะส่อให้เห็นโดย clusterRole เช่น) โดยทั่วไปจะแนะนำให้หลีกเลี่ยงความสับสน
- ตอนนี้การรวม IP เป็นที่อยู่ IP ภายนอกเท่านั้นดังนั้นการสื่อสารกับ loopback IP จะล้มเหลว แต่การจำลองแบบสามารถทำงานกับโฮสต์ระยะไกลได้
- ค่าเริ่มต้นของ oplog เป็น 5% ของพื้นที่ว่างดังนั้นจึงเป็นเรื่องปกติในปริมาณมากที่จะอนุรักษ์และกำหนดขนาดที่จัดสรรอย่างชัดเจน
ถัดไปตัวอย่างการกำหนดค่าmongos
:
sharding:
configDB: "config1.example.net:27019,config2.example.net:27019,config3.example.net:27019"
autoSplit: true
systemLog:
destination: file
path: "/var/log/mongos.log"
processManagement:
fork: true
net:
port: 27017
bindIp: 192.0.2.2
maxIncomingConnections: 5000
security:
keyFile: "/data/key/mongos.key"
authorization: "enabled"
การเปลี่ยนแปลงที่จำเป็นเท่านั้นที่นี่คือการลบที่ไม่ใช้กับmongos
(เนื่องจากไม่ได้จัดเก็บข้อมูล) และการเพิ่มของconfigDB
สตริงซึ่งจะต้องเหมือนกันในทุกmongos
กระบวนการ ฉันได้เพิ่มการตั้งค่าการเชื่อมต่อสูงสุดเป็นตัวอย่างมันไม่จำเป็น แต่มักจะเป็นความคิดที่ดีสำหรับกลุ่มที่ใหญ่กว่า
การปัดเศษคลัสเตอร์ที่แตกออกเรามีเซิร์ฟเวอร์การกำหนดค่าตัวอย่างซึ่งเป็นส่วนย่อยของสมาชิกชุดแบบจำลองที่มีการเปลี่ยนแปลงเล็กน้อย:
storage:
dbPath: "/data/db"
journal:
enabled: true
systemLog:
destination: file
path: "/var/log/mongodb.log"
logAppend: true
timeStampFormat: iso8601-utc
processManagement:
fork: true
net:
bindIp: 192.0.2.3
port: 27019
security:
keyFile: "/data/key/config.key"
authorization: "enabled"
sharding:
clusterRole: "configsvr"
ในที่สุด MongoDB 3.0 (ยังไม่วางจำหน่าย ณ เวลาที่เขียนนี้) จะแนะนำตัวเลือกใหม่ ๆ มากมายโดยเฉพาะอย่างยิ่งกับการแนะนำเอ็นจิ้นการจัดเก็บใหม่ ดังนั้นนี่คือตัวอย่างของวิธีการกำหนดค่าสมาชิกชุดแบบจำลองเดียวกัน แต่เวลานี้ด้วยเอ็นจินการเก็บข้อมูล WiredTiger และวิธีการบีบอัดแบบ snappy (ค่าเริ่มต้น) (หมายเหตุ: เปลี่ยนแปลงจากต้นฉบับเนื่องจากSERVER-16266และตัวอย่างเพิ่มengineConfig
):
storage:
dbPath: "/data/db"
engine: "wiredTiger"
wiredTiger:
engineConfig:
cacheSizeGB: 8
collectionConfig:
blockCompressor: snappy
systemLog:
destination: file
path: "/var/log/mongodb.log"
logAppend: true
timeStampFormat: iso8601-utc
replication:
oplogSizeMB: 10240
replSetName: "rs1"
processManagement:
fork: true
net:
bindIp: "192.0.2.1,127.0.0.1"
port: 27018
security:
keyFile: "/data/key/rs1.key"
authorization: "enabled"
sharding:
clusterRole: "shardsvr"
ในฐานะที่เป็นการเพิ่มโบนัสขั้นสุดท้ายฉันแสดงวิธีผูกหลายที่อยู่ IP โดยใช้รายการในกรณีนี้ IP ภายนอกและ IP ลูปแบ็ค