Разгръщането на база данни за множество сървъри става по-сложно и отнема много време с времето при добавяне на нови ресурси или извършване на промени. Освен това има вероятност от човешки грешки, които могат да доведат до катастрофални резултати всеки път, когато системата се конфигурира ръчно.
Инструментът за автоматизиране на внедряването на база данни ще ни позволи да разположим база данни на множество сървъри, вариращи от среда за разработка до производствена среда. Резултатите от автоматизирано внедряване са надеждни, по-ефективни и предсказуеми, освен че предоставят информация за текущото състояние на вашите възли, която може да се използва допълнително за планиране на ресурси, които ще трябва да добавите към вашите сървъри. С добре управлявано внедряване, производителността както на разработчиците, така и на оперативните екипи се подобрява, като по този начин позволява на бизнеса да се развива по-бързо, да постига повече и поради лесното често внедряване, цялостната настройка на софтуера в крайна сметка ще бъде по-добра и ще функционира надеждно за крайните потребители.
MongoDB може да се разположи ръчно, но задачата става все по-тромава, когато трябва да конфигурирате клъстер от много членове, хоствани на различни сървъри. Следователно трябва да решим да използваме автомобилен инструмент, който може да ни спести стреса. Някои от наличните инструменти, които могат да се използват, включват Puppet, Chef, Ansible и SaltStack.
Основните предимства от внедряването на вашия MongoDB с някой от тези инструменти са:
- Спестяване на време. Представете си, че имате 50 възела за вашата база данни и трябва да актуализирате версията на MongoDB за всеки. Това ще ви отнеме години да преминавате през процеса. Въпреки това, с автоматичен инструмент, просто ще трябва да напишете някои инструкции и да издадете команда, за да извършите останалата част от актуализацията вместо вас. След това разработчиците ще имат време да работят върху нови функции, вместо да коригират ръчните внедрявания.
- Намалени грешки, следователно удовлетвореност на клиентите. Правенето на нови актуализации може да доведе до грешки в системата на база данни, особено ако конфигурацията трябва да се извърши ръчно. С инструмент като SaltStack премахването на ръчни стъпки намалява човешката грешка и честите актуализации с нови функции ще отговорят на нуждите на клиентите, като по този начин поддържат организацията конкурентоспособна.
- По-ниска цена за конфигурация. С инструмент за внедряване всеки може да внедри дори и себе си, тъй като самият процес ще бъде много по-лесен. Това ще премахне необходимостта от експерти за извършване на работата и ще намали грешките
Какво е SaltStack
SaltStack е инструмент за дистанционно изпълнение с отворен код и система за управление на конфигурацията, разработена в Python.
Функциите за отдалечено изпълнение се използват за изпълнение на команди на различни машини паралелно с гъвкава система за насочване. Ако например имате 3 сървърни машини и искате да инсталирате MongoDB за всяка, можете да стартирате инсталационните команди на тези машини едновременно от главен възел.
По отношение на управлението на конфигурацията е създаден интерфейс клиент-сървър, за да улесни и сигурно трансформира инфраструктурните компоненти в желаното състояние.
Архитектура на SaltStack
Основният модел на настройка за SaltStack е клиент-сървър, където сървърът може да бъде наричан главен, а клиентите като подчинени. Капитанът издава команда или по-скоро инструкции като управляваща система, която трябва да се изпълни от клиентите/миньоните, които са контролираните системи.
Компоненти на SaltSack
По-долу е направен SaltStack
- Господар :Отговаря за издаването на инструкции на подчинените и промяната им в желаното състояние след изпълнение.
- Миньон :Това е управляваната система, която трябва да бъде трансформирана в някакво желано състояние.
- Зърна сол : това са статични данни или метаданни относно миньона и представляват информация като модел, сериен номер, капацитет на паметта и операционна система. Те се събират, когато миньонът за първи път се свърже със сървъра. Те могат да се използват за насочване към определена група миньони във връзка с някакъв аспект. Например, можете да изпълните команда, която да инсталира MongoDB за всички машини с операционна система Windows.
- Емодули/инструкции за изпълнение :Това са Ad hoc команди, издадени на един или повече целеви миньони и се изпълняват от командния ред.
- Стълбове :са дефинирани от потребителя променливи, разпределени между миньоните. Те се използват за:конфигурация на миньон, силно чувствителни данни, произволни данни и променливи. Не всички миньони са достъпни за всички стълбове, може да се ограничи кои стълбове са за определена група миньони.
- Файлове на състоянието . Това е ядрото на Salt state System (SLS) и представлява състоянието, в което трябва да бъде системата. Това е еквивалент на книга за игри в случай на Ansible, като се има предвид, че те също са във формат YAML, т.е.
#/srv/salt/mongodbInstall.sls (file root)
install_mongodb: (task id)
pkg.installed: (state declaration)
-name:mongodb (name of package to install)
-
Голен файл :Използва се за картографиране на група машини и дефиниране кои файлове на състоянието трябва да бъдат приложени . т.е.
#/srv/salt/top.sls
base:
‘minion1’:
-mongodb
-
Salt Proxy : Това е функция, която позволява да се контролират устройства, които не могат да изпълняват стандартна сол-миньон. Те включват мрежови устройства с API, работещи на собствена ОС, устройства с ограничения на процесора и паметта или такива, които не могат да изпълняват миньони поради причини за сигурност. Трябва да се използва прокси сървър на Junos за откриване, контрол, отдалечено изпълнение и управление на състоянието на тези устройства.
Инсталиране на SaltStack
Можем да използваме командата pip, за да инсталираме SaltStack като
$ pip install salt
За да потвърдите инсталацията, изпълнете командата $ salt --version и трябва да получите нещо като сол 2019.2.2 (Флуор)
Преди да се свърже с главната, миньонът ще изисква минимална конфигурация на главния IP адрес и идентификатор на миньона, които ще бъдат използвани от главната за справка. Тези конфигурации могат да се направят във файловете /etc/salt/minion.
След това можем да стартираме главния в различни режими, който е демон или в режим на отстраняване на грешки. За случая на демон ще имате $salt-master -d, а за режим на отстраняване на грешки, $salt-master -l debug. Ще трябва да приемете ключа на миньона, преди да го стартирате, като изпълните $ salt-key -a nameOfMinion. За да изброите наличните ключове, изпълнете $ salt-key -l
В случая с миньона можем да го започнем с $salt-minion -l debug.
Например, ако искаме да създадем файл във всички миньони от капитана, можем да изпълним командата
$ salt ‘’*” file.touch ‘/tmp/salt_files/sample.text
Всички възли ще имат нов файл sample.text в папката salt_files. Опцията * се използва за позоваване на всички миньони. За да посочим например всички миньони с идентификационен номер, които имат низа миньон, ще използваме регулярен израз, както е показано по-долу
$ salt “minion*” file.touch ‘/tmp/salt_files/sample.text
За да видите метаданните, събрани за дадено миньонче, изпълнете:
$salt ‘minion1’ grains.items.
Настройване на MongoDB със SaltStack
Можем да създадем база данни, наречена myAppdata с setDatabase.sls със съдържанието по-долу
classes:
- service.mongodb.server.cluster
parameters:
_param:
mongodb_server_replica_set: myAppdata
mongodb_myAppdata_password: myAppdataPasword
mongodb_admin_password: cloudlab
mongodb_shared_key: xxx
mongodb:
server:
database:
myAppdata:
enabled: true
password: ${_param:mongodb_myAppdata_password}
users:
- name: myAppdata
password: ${_param:mongodb_myAppdata_password}
Стартиране на един единствен сървър MongoDB
mongodb:
server:
enabled: true
bind:
address: 0.0.0.0
port: 27017
admin:
username: admin
password: myAppdataPasword
database:
myAppdata:
enabled: true
encoding: 'utf8'
users:
- name: 'username'
password: 'password'
Настройване на MongoDB клъстер със SaltStack
mongodb:
server:
enabled: true
logging:
verbose: false
logLevel: 1
oplogLevel: 0
admin:
user: admin
password: myAppdataPasword
master: mongo01
members:
- host: 192.168.100.11
priority: 2
- host: 192.168.101.12
- host: 192.168.48.13
replica_set: default
shared_key: myAppdataPasword
Заключение
Подобно на ClusterControl, SaltStack е инструмент за автоматизация, който може да се използва за улесняване на задачите за внедряване и операции. С инструмент за автоматизация има намалени грешки, намалено време за конфигуриране и по-надеждни резултати.