Organisationer använder sig av infrastruktur i molnet eftersom det erbjuder hastighet, flexibilitet och skalbarhet. Du kan föreställa dig om vi kan snurra upp en ny databasinstans med bara ett klick, och det tar ett par minuter innan den är klar, vi kan också distribuera applikationen snabbare än jämfört med en lokal miljö.
Om du inte använder MongoDB:s egen molntjänst erbjuder de stora molnleverantörerna inte en hanterad MongoDB-tjänst så det är egentligen inte en ettklicksoperation att distribuera en enskild instans eller kluster. Det vanliga sättet är att snurra upp virtuella datorer och sedan distribuera dem på dessa. Utplaceringen måste skötas från A till Ö – vi måste förbereda instansen, installera databasprogramvaran, finjustera några konfigurationer och säkra instansen. Dessa uppgifter är viktiga, även om de inte alltid följs ordentligt - med potentiellt katastrofala konsekvenser.
Automation spelar en viktig roll för att se till att alla uppgifter från installation, konfiguration, härdning och tills databastjänsten är klar. I den här bloggen kommer vi att diskutera distributionsautomatisering för MongoDB.
Software Orchestrator
Det finns många nya programvaruverktyg som hjälper ingenjörer att distribuera och hantera sin infrastruktur. Konfigurationshantering hjälper ingenjörer att implementera snabbare och effektivt, vilket minskar driftsättningstiden för nya tjänster. Populära alternativ inkluderar Ansible, Saltstack, Chef och Puppet. Varje produkt har fördelar och nackdelar, men de fungerar alla väldigt bra och är enormt populära. Att distribuera en tillståndsfull tjänst som en MongoDB ReplicaSet eller Sharded Cluster kan vara lite mer utmanande eftersom dessa är inställningar för flera servrar och verktygen har dåligt stöd för inkrementell koordinering och korsnodskoordination. Driftsättningsprocedurer kräver vanligtvis orkestrering över noder, med uppgifter som utförs i en specifik ordning.
MongoDB-distributionsuppgifter att automatisera
Isättning av en MongoDB-server involverar ett antal saker; lägg till MongoDB-förvaret i lokalt, installera MongoDB-paketet, konfigurera port, användarnamn och starta tjänsten.
Uppgift:installera MongoDB
- name: install mongoDB
apt:
name: mongodb
state: present
update_cache: yes
Uppgift:kopiera mongod.conf från konfigurationsfilen.
- name: copy config file
copy:
src: mongodb.conf
dest: /etc/mongodb.conf
owner: root
group: root
mode: 0644
notify:
- restart mongodb
Uppgift:skapa MongoDB-gränskonfiguration:
- name: create /etc/security/limits.d/mongodb.conf
copy:
src: security-mongodb.conf
dest: /etc/security/limits.d/mongodb.conf
owner: root
group: root
mode: 0644
notify:
- restart mongodb
Uppgift:konfigurera swappiness
- name: config vm.swappiness
sysctl:
name: vm.swappiness
value: '10'
state: present
Uppgift:konfigurera TCP Keepalive-tid
- name: config net.ipv4.tcp_keepalive_time
sysctl:
name: net.ipv4.tcp_keepalive_time
value: '120'
state: present
Uppgift:se till att MongoDB startar automatiskt
- name: Ensure mongodb is running and and start automatically on reboots
systemd:
name: mongodb
enabled: yes
state: started
Vi kan kombinera alla dessa uppgifter till en enda spelbok och köra spelboken för att automatisera distributionen. Om vi kör en Ansible-spelbok från konsolen:
$ ansible-playbook -b mongoInstall.yml
Vi kommer att se utvecklingen av implementeringen från vårt Ansible-skript, utdata bör vara ungefär som nedan:
PLAY [ansible-mongo] **********************************************************
GATHERING FACTS ***************************************************************
ok: [10.10.10.11]
TASK: [install mongoDB] *******************************************************
ok: [10.10.10.11]
TASK: [copy config file] ******************************************************
ok: [10.10.10.11]
TASK: [create /etc/security/limits.d/mongodb.conf]*****************************
ok: [10.10.10.11]
TASK: [config vm.swappiness] **************************************************
ok: [10.10.10.11]
TASK: [config net.ipv4.tcp_keepalive_time]*************************************
ok: [10.10.10.11]
TASK: [config vm.swappiness] **********************************************
ok: [10.10.10.11]
PLAY RECAP ********************************************************************
[10.10.10.11] : ok=6 changed=1 unreachable=0 failed=0
Efter implementeringen kan vi kontrollera MongoDB-tjänsten på målservern.
Deployment Automation of MongoDB med ClusterControl GUI
Det finns två sätt att distribuera MongoDB med ClusterControl. Vi kan använda det från instrumentpanelen för ClusterControl, det är GUI-baserat och behöver bara två dialoger tills det utlöser ett nytt jobb för ny implementering av MongoDB.
Först måste vi fylla i SSH-användaren och lösenordet, fyll i klusternamnet som visas nedan:
Och sedan väljer du leverantör och version av MongoDB, definierar användaren och lösenord, och det sista är att fylla i mål-IP-adressen
Deployment Automation of MongoDB med s9s CLI
Från kommandoradsgränssnittet kan man använda s9s-verktygen. Utplaceringen av MongoDB med s9s är bara ett kommando på en rad enligt nedan:
$ s9s cluster --create --cluster-type=mongodb --nodes="10.10.10.15" --vendor=percona --provider-version=4.2 --db-admin-passwd="12qwaszx" --os-user=vagrant --cluster-name="MongoDB" --wait
Create Mongo Cluster
/ Job 183 FINISHED [██████████] 100% Job finished.
Så att distribuera MongoDB, oavsett om det är ett ReplicaSet eller ett Sharded Cluster, är mycket enkelt och är helt automatiserat av ClusterControl.