Еуропадағы MongoDB үшін бұлт сервері: реплика жиыны нұсқаулығы
MongoDB - ең кең орналастырылған құжаттық деректер базасы, оның үстінде мазмұнды басқару жүйелерінен нақты уақыттағы аналитикаға дейінгі бәрі жұмыс істейді. Еуропалық пайдаланушыларға қызмет көрсететін қосымшалар үшін MongoDB осы деректерді қайда және кімнің юрисдикциясында сақтайтыны оның қаншалықты жақсы жұмыс істейтінінен кем маңызды емес.
Бұл нұсқаулық MongoDB-нің жабдыққа қоятын талаптарын, WiredTiger сақтау қозғалтқышының негізгі баптау параметрлерін және дұрыс бапталған ЕО бұлт сервері қандай өткізу қабілетін беретінін баяндайды.
Деректердің ЕО ішінде сақталуы MongoDB үшін неге маңызды
GDPR ЕО тұрғындарының дербес деректерін өңдейтін кез келген жүйеге қолданылады. MongoDB базалары әдетте пайдаланушы профильдерін, мінез-құлық деректерін және транзакция жазбаларын сақтайды - бұның бәрі GDPR аймағына кіреді. ЕО компаниясындағы ЕО бұлт серверінде орналастыру деректеріңіз ЕО юрисдикциясынан шықпайтынын білдіреді, ал бұл стандартты шарттық ережелерсіз және беру әсерін күрделі бағалаусыз сақталу орны талабын орындайды.
Талапқа сәйкестіктен басқа, ЕО хостингі еуропалық пайдаланушылар үшін кешігуді төмендетеді. MongoDB-нің икемді құжат моделі байланысты деректерді құжат ішіне салуға түрткі болады, демек базаға жүгіну азаяды. Сервер қосымшамен бір өңірде болғанда әрқайсысы жылдамырақ. Прагадағы база берлиндік қосымшаға АҚШ дата-орталығындағы базадан бір сұранысқа 70-100 мс жылдам жауап береді.
MongoDB үшін серверге қойылатын ең аз талаптар
MongoDB-дегі WiredTiger қозғалтқышы ОЖ файл кешінен бөлек кешті пайдаланады. WiredTiger кеші де, ОЖ кеші де қолжетімді RAM-нан ұтады:
- Шағын (әзірлеу мен стейджинг, секундына 1000 операциядан аз) - 4 vCPU, 8 ГБ RAM, 100 ГБ NVMe SSD
- Орташа (продакшен, секундына 1000-20000 операция) - 8 vCPU, 32 ГБ RAM, 500 ГБ NVMe SSD
- Ірі (өткізу қабілеті жоғары немесе деректер жиыны үлкен) - 16 және одан көп vCPU, 64-128 ГБ RAM, 1 ТБ және одан көп NVMe SSD
WiredTiger әдепкіде кешке (RAM минус 1 ГБ) шамасының 50%-ін алады. 32 ГБ серверде бұл шамамен 15,5 ГБ. Мәнді көтеруге болады, бірақ ОЖ-ға, жадтағы индекстерге және қосылымдарға кететін шығынға қор қалдырыңыз.
Ұсынылатын DCXV конфигурациясы
DCXV бұлт серверлері MongoDB-нің жазу операциялары мен қысу процестеріне керек кездейсоқ IOPS профилі бар NVMe қорын береді. MongoDB үшін ұсынылатын конфигурациялар:
- 8 vCPU, 32 ГБ RAM, 500 ГБ NVMe - қосымшаның продакшен базасы, реплика жиынының негізгі түйіні
- 16 vCPU, 64 ГБ RAM, 1 ТБ NVMe - ірі құжат қоймалары, жазуы қарқынды жүктемелер немесе аналитикалық сценарийлер
- 3 дана 8 vCPU / 32 ГБ RAM - ЕО дата-орталығының аймақтары арасында жоғары қолжетімділікке үш түйіндік реплика жиыны
DCXV серверлерінің арасындағы жеке желі жиынның репликация трафигін дата-орталықтың желі матасының ішінде ұстайды, бұл реплика артта қалуын азайтады. Реплика жиынының топологиясын талқылап, қосалқы түйіндердің артта қалуын кемітетін желі конфигурациясын алу үшін sales@dcxv.com адресіне жазыңыз.
Жылдам орнатуға арналған командалар
# Ubuntu 22.04-ке MongoDB 7.0 орнату
curl -fsSL https://www.mongodb.org/static/pgp/server-7.0.asc | sudo gpg -o /usr/share/keyrings/mongodb-server-7.0.gpg --dearmor
echo "deb [ arch=amd64,arm64 signed-by=/usr/share/keyrings/mongodb-server-7.0.gpg ] https://repo.mongodb.org/apt/ubuntu jammy/mongodb-org/7.0 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-7.0.list
sudo apt update && sudo apt install -y mongodb-org
# Қызметті іске қосу және қосулы қалдыру
sudo systemctl start mongod
sudo systemctl enable mongod
# Қосылып, база пайдаланушысын жасау
mongosh --quiet <<'EOF'
use admin
db.createUser({
user: "myapp_user",
pwd: "strongpassword",
roles: [{ role: "readWrite", db: "myapp" }]
})
EOF
# 32 ГБ RAM серверіне mongod.conf-тың негізгі параметрлері
# /etc/mongod.conf файлын түзетіңіз
storage:
dbPath: /var/lib/mongodb
engine: wiredTiger
wiredTiger:
engineConfig:
# RAM-ның шамамен 50%, ОЖ кеші мен қосылымдарға қор қалдырып
cacheSizeGB: 20
collectionConfig:
blockCompressor: snappy # snappy = жылдам; zstd = қысуы жақсы
net:
port: 27017
bindIp: 127.0.0.1,10.0.0.5 # localhost және осы сервердің жеке адресі
security:
authorization: enabled
# Өзгерістерді қолдану
sudo systemctl restart mongod
# DCXV жеке желісінде 3 түйіндік реплика жиынын баптау
# Алдымен үш серверде де орындаңыз - mongod.conf жаңартыңыз:
# replication:
# replSetName: "rs0"
# Содан кейін негізгі түйіннен реплика жиынын бастаңыз
mongosh --quiet <<'EOF'
rs.initiate({
_id: "rs0",
members: [
{ _id: 0, host: "10.0.0.5:27017", priority: 2 },
{ _id: 1, host: "10.0.0.6:27017", priority: 1 },
{ _id: 2, host: "10.0.0.7:27017", priority: 1 }
]
})
EOF
# Реплика жиынының күйін тексеру
mongosh --quiet --eval "rs.status()"
# Жинақтарды баптағаннан кейін пайдалы индекстер жасау
mongosh myapp --quiet <<'EOF'
// Жиі сұраныс сызбаларына индекстер - өз деректер сызбаңызға ыңғайлаңыз
db.users.createIndex({ email: 1 }, { unique: true })
db.events.createIndex({ userId: 1, createdAt: -1 })
db.products.createIndex({ category: 1, price: 1 })
// Индекс пайдаланылуын explain арқылы тексеру
db.users.find({ email: "test@example.com" }).explain("executionStats")
EOF
Күтілетін өнімділік көрсеткіштері
MongoDB 7.0 және WiredTiger кеші 20 ГБ болып бапталған 8 vCPU / 32 ГБ RAM / NVMe данасында:
- Оқу өткізу қабілеті (индекс бойынша сұраныстар, кеште) - секундына 50 000-80 000 операция
- Жазу өткізу қабілеті (жалғыз кірістірулер) - секундына 15 000-25 000 операция
- Пакеттік кірістірудің өткізу қабілеті (ordered:false, 1000-дық партиялар) - секундына 100 000-200 000 құжат
- Агрегация құбыры (кештегі деректер жиыны) - секундына 10 000-30 000 құжат
Реплика жиынындағы majority жазу растау деңгейі түйіндер арасындағы айналым уақытына сай кешігу қосады. Бір дата-орталық ішіндегі жеке желіде бұл әдетте жазуға 0,2-0,5 мс қосымша кешігу - продакшен жүктемелерінің көпшілігі үшін қолайлы.
Бұл осы кластағы жабдыққа күтілетін шамалар, өз зертханамыздағы өлшемдер емес. Оларды есептеудің бастау нүктесі деп санап, өз жүктемеңізді өлшеңіз: нақты цифрлар провайдерден гөрі сіздің деректеріңізге, сұраныстарыңызға және баптауыңызға әлдеқайда күштірек байланысты.
Түйін
DCXV-нің ЕО бұлт серверіндегі MongoDB GDPR бойынша деректерді сақтауды, еуропалық пайдаланушыларға төмен кешігуді және құжат моделінің масштабтағы икемділігін береді. Баптаудағы ең әсерлі екі шешім - WiredTiger кешінің өлшемі және сенімділік пен жоғары қолжетімділікті бірден беретін үш түйіндік реплика жиыны. MongoDB инфрақұрылымын Tier III деңгейіндегі ЕО дата-орталығында жинау үшін DCXV-ге жазыңыз.
