MongoDB – это открытая база данных (БД) NoSQL, которая позволяет хранить и обрабатывать большие объёмы данных.
Её основное отличие от традиционных реляционных баз данных заключается в том, что MongoDB использует особую схему данных, которая не требует строгой предварительной фиксации их структуры. Вместо этого MongoDB использует формат JSON-подобных документов, называемых BSON, что делает её более гибкой к постоянно изменяющимся требованиям приложений.
MongoDB предлагает широкий спектр задач и сфер, в которых она может быть полезна:
Хранение данных
MongoDB может использоваться в качестве хранилища данных для различных типов информации. Она позволяет хранить структурированные и неструктурированные данные, такие как документы, JSON-подобные объекты, графы и временные ряды.
Разработка веб-приложений
MongoDB является популярным выбором для разработки веб-приложений, особенно тех, которые обрабатывают большие объёмы данных. Она позволяет легко масштабировать хранилище по мере увеличения нагрузки, а также обеспечивает высокую производительность при чтении и записи информации.
Аналитика данных
Благодаря своим возможностям горизонтального масштабирования и поддержке сложных запросов, MongoDB является хорошим выбором для аналитики данных.
Системы управления контентом
Данная БД используется в некоторых системах управления контентом для хранения и обработки различных типов контента, таких как тексты, изображения, видео и метаданные.
Благодаря своей гибкой схеме данных MongoDB позволяет эффективно хранить и извлекать контент, а также обеспечивает высокую доступность и отказоустойчивость, которые являются важными аспектами для систем управления контентом.
Системы мониторинга
MongoDB также бывает полезна в системах мониторинга для хранения и анализа данных о состоянии и производительности различных компонентов и устройств. Она позволяет хранить данные о событиях, метриках и журналах, а также выполнять быстрый поиск и анализ этих данных.
Интернет вещей
MongoDB может использоваться в приложениях интернета вещей (IoT) для хранения и обработки данных, собранных от различных устройств и датчиков.
Kubernetes (часто сокращают как K8s) – это программное обеспечение c открытым исходным кодом, которое разработала компания Google для автоматизации развертывания, масштабирования и управления контейнерными приложениями.
Подробнее в статье: «Что такое kubernetes».
Для успешной установки MongoDB в Kubernetes необходим настроенный сервер с правами суперпользователя и готовый кластер Kubernetes, о создании которого мы расскажем далее.
Вы можете использовать любую операционную систему, но использование Linux и его дистрибутивов снизит риск возникновения проблем при установке до минимума.
Если вы хотите получить готовый надёжный сервер, RU-CENTER предлагает услугу «Аренда выделенного сервера». Обратившись к нашим специалистам, вы сможете подобрать подходящий тариф и получить не только мощное оборудование для хранения своих данных, но и его круглосуточное обслуживание.
Определите платформу, на которой вы хотите развернуть кластер Kubernetes.
Существует несколько популярных платформ:
Каждая из них имеет свои особенности и требования, поэтому выберите ту, которая наиболее подходит для вашего случая использования.
В нашем руководстве мы используем Docker. С процессом установки вы можете ознакомиться в статье про Kubernetes.
sudo -s
apt-get update && apt install curl apt-transport-https -y && curl -s http
mkdir /usr/local/etc/mongo && cd /usr/local/etc/mongo
cat << EOF > testcluster.conf
<PASTE CONFIGURATION DATA HERE>
EOF
echo "export KUBECONFIG=testcluster.conf" >> ~/.bashrc
kubectl cluster-info
В выводе вы должны увидеть похожую запись:
Kubernetes control plane is running at https://11.11.1.22:2222
To further debug and diagnose cluster problems, use 'kubectl cluster-info dump'.
root@ubuntu:/usr/1ocal/etc/mongo#
Где «https://11.11.1.22:2222» – это ваш IP-адрес.
cat << EOF > PersistVolClaim.yaml
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: mongodatapv
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 1Gi
EOF
Где:
«storage» – ёмкость контейнера в гигабайтах.
«accessModes» указывает тип доступа;
«ReadWriteOnce» позволяет смонтировать том для чтения и записи только одному узлу.
Важно! Если вам необходимо смонтировать том для чтения и записи множеству узлов – установите значение «ReadWriteMany».
Если же том должен быть смонтирован только для чтения нескольких узлов, пропишите «ReadOnlyMany».
К примеру, он может иметь вид:
cat << EOF > Creds.yaml
apiVersion: v1
data:
username: <BASE64_ENCODED_LOGIN>
password: <BASE64_ENCODED_PASSWORD>
kind: Secret
metadata:
creationTimestamp: null
name: creds
EOF
Важно! Для шифрования и дешифрования данных вы можете использовать следующие команды:
echo <обычные данные> | base64 # to crypt data via base64 tool
echo <данные с шифрованием> | base64 -d # to decrypt it
cat << EOF > Deploy.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
labels:
app: mongo
name: mongo
spec:
replicas: 1
selector:
matchLabels:
app: mongo
strategy: {}
template:
metadata:
labels:
app: mongo
spec:
containers:
- image: mongo
name: mongo
args: ["--dbpath","/data/db"]
livenessProbe:
exec:
command:
- mongo
- --disableImplicitSessions
- --eval
readinessProbe:
exec:
command:
- mongo
- --disableImplicitSessions
- --eval
env:
- name: MONGO_INITDB_ROOT_USERNAME
valueFrom:
secretKeyRef:
name: creds
key: username
- name: MONGO_INITDB_ROOT_PASSWORD
valueFrom:
secretKeyRef:
name: creds
key: password
volumeMounts:
- name: "datadir"
mountPath: "/data/db"
volumes:
- name: "datadir"
persistentVolumeClaim:
claimName: "mongopvc"
EOF
kubectl apply -f
В случае успешного запуска в выводе отобразится:
secret/creds created
deployment. apps/mongo created
persistent volume/mongodata created
persistentvolumeclaim/mongodata created
root@ubuntu:/usr/1ocal/etc/mongo#
kubectl exec deployment/client -it -- /bin/bash
mongo
Если подключение прошло успешно, на экране вы увидите:
Важно! БД не будет сохранена, если вы не добавите в неё хоть какие-то данные.
use NEW_DATABASE_NAME
db.createCollection("newdata")
show dbs
Вместо «NEW_DATABASE_NAME» пропишите название базы данных.
Готово! Вы полностью завершили установку MongoDB в кластер Kubernetes.