Подходът за изчисления в облак адресира някои от предизвикателствата, свързани с работата на системи за обработка на данни. Компаниите, управлявани от данни, изтласкват бърза бизнес трансформация с облачни услуги и мнозина виждат облачните услуги като значително подобрение в автоматизацията, надеждността и мащабирането при поискване в сравнение с традиционните инфраструктурни модели, които се появиха преди. Характерът при поискване на парадигмата на софтуера като услуга (SaaS) означава, че организациите могат да купуват това, от което се нуждаят, когато имат нужда от него. Разбира се, разходите и рентабилността са от решаващо значение, но не единствените.
При проектирането на системни архитектури ние винаги търсим системите, които отговарят на точния брой потребители, на правилното ниво на производителност за всеки. Искаме да избегнем проблеми с производителността и тесни места и ако тези проблеми се случат, искаме система, която да се адаптира към променящото се търсене.
Искаме и нещата по-бързи. Процесът на гъвкаво развитие става все по-популярен; главно защото ускорява предоставянето на първоначалната бизнес стойност и (чрез процес на непрекъснато планиране и обратна връзка) може да гарантира, че възвръщаемостта на инвестициите е максимална.
Накрая искаме намаляване на сложността. Ключова характеристика на MongoDB е вграденото му резервиране. Ако имате два или повече възли за данни, те могат да бъдат конфигурирани като набор от реплики или mongodb фрагменти. Без подходяща автоматизация, това може да бъде повтаряща се задача за няколко екипа (мрежа, съхранение, ОС и т.н.). Облачната автоматизация може да ви помогне да намалите зависимостите между различните групи във вашата организация. Например, може да не е необходимо да включвате мрежовия екип, когато създавате нова система за база данни.
Облачната автоматизация не само спестява време и пари, но и прави вашата организация по-конкурентоспособна на предизвикателния пазар.
В този блог ще разгледаме Atlas, решението от MongoDB, което се опитва да реши всички тези проблеми.
Първи стъпки с MongoDB Atlas
За да започнете с MongoDB Atlas, отидете на https://cloud.mongodb.com. Във формуляра за регистрация трябва да предоставите минимална информация като имейл, компания, държава и мобилен номер.
MongoDB Atlas върши отлична работа при предоставянето и настройката на инфраструктурата. Целият процес използва динамичен уеб интерфейс, който ви превежда през различни опции за внедряване. Това е лесно, интуитивно и не изисква специални познания.
След първото влизане ще бъдете помолени да изградите първия си клъстер в един от трите най-значими облака. Atlas работи с Amazon AWS, Google Cloud и Microsoft Azure. Въз основа на вашия избор можете да изберете местоположението на предпочитаното местоположение на центъра за данни. За да увеличите наличността, можете да зададете Multi-Region, Workload Isolation или да зададете различни опции за репликация. Всеки проект на Atlas поддържа до 25 клъстера, но след контакт с поддръжката трябва да можете да хоствате повече.
Трябва да изберете подходящия размер на сървъра, заедно с IO и капацитет за съхранение. В тази статия ще използваме безплатната версия. Безплатно е да започнете с MongoDB Atlas за създаване на прототипи, ранна разработка или за учене. Кредитната карта не е необходима, така че не е нужно да се притеснявате за скрити разходи. Безплатното издание, наречено M0 Sandbox, е ограничено до:
- 512 MB хранилище
- vCPU споделен
- RAM споделена
- 100 максимални връзки
- Има ограничение от един M0 клъстер на проект.
За специализирани клъстери MongoDB Atlas се таксува на час въз основа на това колко използвате. Цената зависи от редица фактори, най-важното от размера и броя на сървърите, които използвате. Цената започва с 0,08/час (M10, 2GB RAM, 10GB съхранение, 1vCPU) до M700 със 768GB RAM, 4096 GB съхранение, 96vCPU от $33,26/час. Очевидно ще трябва да включите други фактори на разходите, като например разходите за архивиране.
Според изчисленията на MongoDB, AWS, набор от копия от 3 възела от M40s и стартиране 24/7 в продължение на един месец, използвайки включените 80 GB стандартно блоково хранилище, би ви струвало около $947.
Основната настройка работи с репликация. Ако имате нужда от разделяне, типът на екземпляра M30 е минимум (8GB RAM, 40GB съхранение, 2vCPU, цена от $0,54/час).
Първоначална настройка на MongoDB Atlas Network Access
Една от първите стъпки, които трябва да направим след създаването на клъстер, е да активираме белия списък за IP адреси. За да разрешите достъп отвсякъде, можете да зададете вход в белия списък на 0.0.0.0/0, но не се препоръчва. Ако не знаете вашия IP адрес, Atlas ще ви помогне да го идентифицирате.
За да поддържате връзката си по-сигурна, можете също да настроите мрежова пирингова връзка . Тази функция не е налична за клъстери M0, M2 и M5. Мрежовият пиринг позволява свързаност между MongoDB VPC и вашия доставчик на облак. Peer VPC мрежа позволява на различни VOC ti да комуникират в частно пространство, трафикът не преминава през публичния интернет.
За да започнете работа с новия си клъстер, създайте първоначален потребител. Направете го в раздела Достъп до базата данни. MongoDB използва Salted Challenge Response Authentication Mechanism. Това е механизъм за сигурност, базиран на SHA-256, потребителски идентификационни данни срещу името, паролата и базата данни за удостоверяване на потребителя.
Миграция на съществуващ MongoDB клъстер към MongoDB Atlas
Има също така възможност за мигриране на съществуващия ви on-prem клъстер към Mongo Atlas. Това се прави чрез специална услуга, наречена Live Migration Service. Процесът на Atlas Live Migration предава данни през контролиран от MongoDB сървър на приложения.
Миграцията на живо работи, като поддържа клъстер в MongoDB Atlas в синхрон с вашата изходна база данни. По време на този процес вашето приложение може да продължи да чете и пише от вашата изходна база данни. Тъй като процесът следи предстоящите промени, всички ще бъдат репликирани и миграцията може да се извърши онлайн. Вие решавате кога да промените настройката на връзката на приложението и да извършите превключване. За да извърши процеса, който е по-малко склонен, Atlas предоставя опция Validate, която проверява IP достъпа до белия списък, конфигурацията на SSL, CA и т.н.
Важното тук е, че услугата е безплатна.
Ако не се нуждаете от онлайн миграция, можете също да използвате mongoimport. Използвайте mongo shell с минимална версия 3.2.7, винаги използвайте SSL. Можете да получите тестови данни от тук.
mongoimport --host TestCluster-shard-0/testcluster-shard-*****.azure.mongodb.net:27017,testcluster-shard-****.azure.mongodb.net:27017,testcluster-shard-******.azure.mongodb.net:27017 --ssl --username admin --authenticationDatabase admin --type JSON --file city_inspections.json
2019-08-15T21:53:09.921+0200 WARNING: ignoring unsupported URI parameter 'replicaset'
2019-08-15T21:53:09.922+0200 no collection specified
2019-08-15T21:53:09.922+0200 using filename 'city_inspections' as collection
Enter password:
2019-08-15T21:53:14.288+0200 connected to: mongodb://testcluster-shard-*****.azure.mongodb.net:27017,testcluster-shard-*****.azure.mongodb.net:27017,testcluster-shard-*****.azure.mongodb.net:27017/?replicaSet=TestCluster-shard-0
2019-08-15T21:53:17.289+0200 [........................] test.city_inspections 589KB/23.2MB (2.5%)
2019-08-15T21:53:20.290+0200 [#.......................] test.city_inspections 1.43MB/23.2MB (6.2%)
2019-08-15T21:53:23.292+0200 [##......................] test.city_inspections 2.01MB/23.2MB (8.6%)
...
2019-08-15T21:55:09.140+0200 [########################] test.city_inspections 23.2MB/23.2MB (100.0%)
2019-08-15T21:55:09.140+0200 81047 document(s) imported successfully. 0 document(s) failed to import.
За да проверите данните, влезте с mongo shell.
mongo "mongodb+srv://testcluster-*****.azure.mongodb.net/test" --username admin
MongoDB shell version v4.2.0
Enter password:
connecting to: mongodb://testcluster-shard-00-00-*****.azure.mongodb.net:27017,testcluster-shard-00-02-*****.azure.mongodb.net:27017,testcluster-shard-00-01-*****.azure.mongodb.net:27017/test?authSource=admin&compressors=disabled&gssapiServiceName=mongodb&replicaSet=TestCluster-shard-0&ssl=true
2019-08-15T22:15:58.068+0200 I NETWORK [js] Starting new replica set monitor for TestCluster-shard-0/testcluster-shard-00-00-*****.azure.mongodb.net:27017,testcluster-shard-00-02-*****.azure.mongodb.net:27017,testcluster-shard-00-01-*****.azure.mongodb.net:27017
2019-08-15T22:15:58.069+0200 I CONNPOOL [ReplicaSetMonitor-TaskExecutor] Connecting to testcluster-shard-00-01-*****.azure.mongodb.net:27017
2019-08-15T22:15:58.070+0200 I CONNPOOL [ReplicaSetMonitor-TaskExecutor] Connecting to testcluster-shard-00-00-*****.azure.mongodb.net:27017
2019-08-15T22:15:58.070+0200 I CONNPOOL [ReplicaSetMonitor-TaskExecutor] Connecting to testcluster-shard-00-02-*****.azure.mongodb.net:27017
2019-08-15T22:15:58.801+0200 I NETWORK [ReplicaSetMonitor-TaskExecutor] Confirmed replica set for TestCluster-shard-0 is TestCluster-shard-0/testcluster-shard-00-00-*****.azure.mongodb.net:27017,testcluster-shard-00-01-*****.azure.mongodb.net:27017,testcluster-shard-00-02-*****.azure.mongodb.net:27017
Implicit session: session { "id" : UUID("6a5d1ee6-064b-4ba8-881a-71aa4aef4983") }
MongoDB server version: 4.0.12
WARNING: shell and server versions do not match
MongoDB Enterprise TestCluster-shard-0:PRIMARY> show collections;
city_inspections
MongoDB Enterprise TestCluster-shard-0:PRIMARY> db.city_inspections.find();
{ "_id" : ObjectId("56d61033a378eccde8a83557"), "id" : "10284-2015-ENFO", "certificate_number" : 9287088, "business_name" : "VYACHESLAV KANDZHANOV", "date" : "Feb 25 2015", "result" : "No Violation Issued", "sector" : "Misc Non-Food Retail - 817", "address" : { "city" : "NEW YORK", "zip" : 10030, "street" : "FREDRCK D BLVD", "number" : 2655 } }
{ "_id" : ObjectId("56d61033a378eccde8a83559"), "id" : "10302-2015-ENFO", "certificate_number" : 9287089, "business_name" : "NYC CANDY STORE SHOP CORP", "date" : "Feb 25 2015", "result" : "No Violation Issued", "sector" : "Cigarette Retail Dealer - 127", "address" : { "city" : "NEW YORK", "zip" : 10030, "street" : "FREDRCK D BLVD", "number" : 2653 } }
...
{ "_id" : ObjectId("56d61033a378eccde8a8355e"), "id" : "10391-2015-ENFO", "certificate_number" : 3019415, "business_name" : "WILFREDO DELIVERY SERVICE INC", "date" : "Feb 26 2015", "result" : "Fail", "sector" : "Fuel Oil Dealer - 814", "address" : { "city" : "WADING RIVER", "zip" : 11792, "street" : "WADING RIVER MANOR RD", "number" : 1607 } }
Type "it" for more
MongoDB Enterprise TestCluster-shard-0:PRIMARY>
Заключение
Това е всичко за част първа. В следващата статия ще разгледаме мониторинг, архивиране, ежедневна администрация и новата услуга на MongoDB за изграждане на езера от данни. Останете на линия!