Этот документ описывает распространённые проблемы новой архитектуры YMatrix 5.X.
В эпоху 4.X поддерживался перезапуск компонентов, таких как графический интерфейс (MXUI), с помощью sudo systemctl restart matrixdb.supervisor.service.
Однако в архитектуре 5.X Supervisor управляет большим количеством дочерних процессов, включая etcd, службы высокой доступности и процессы Postmaster.
Поэтому при произвольном останове или перезапуске Supervisor произойдёт перезапуск ключевых процессов, таких как etcd и Postmaster. В лучшем случае кластер аварийно завершит работу, в худшем — произойдёт потеря данных.
Следовательно, за исключением случаев удаления кластера базы данных, удаления программного обеспечения базы данных и т.п., не используйте команду для перезапуска Supervisor.
Новая архитектура разработана с учётом обеспечения высокой доступности даже при самых строгих сетевых разделениях.
Сервис Cluster/Shard отвечает за управление состоянием кластера базы данных. Если сетевые разделения препятствуют его связи с другими частями кластера, которые должны работать корректно, он не сможет принять правильное решение о состоянии кластера.
Чтобы максимально сохранить доступность кластера базы данных в любой ситуации сбоя, сервисы, требующие принятия решений о состоянии кластера, также обеспечивают собственную высокую доступность. Способность объективно оценивать ситуацию при различных сетевых исключениях — это ключевая причина внедрения кластеров etcd.
Обычно набор сервисов Cluster/Shard запускается на каждом узле. Однако в рамках всего кластера одновременно может быть активен только один экземпляр каждого сервиса. Остальные неактивные экземпляры автоматически выберут один из них в качестве нового активного, как только истечёт таймаут активного экземпляра.
Вы можете использовать Графический интерфейс для операций масштабирования.
Причины отказа от использования matrixdb.supervisor.service
В архитектуре YMatrix 5 supervisor управляет большим количеством дочерних процессов, включая кластеры etcd, службы высокой доступности, процессы postmaster и др. Произвольная остановка или перезапуск supervisor приведёт к перезапуску ключевых процессов, таких как etcd и postmaster, что вызовет проблемы с базой данных.
Поэтому при необходимости перезапуска определённого компонента рекомендуется использовать инструмент supervisorctl.
Управление отдельными компонентами
supervisor[mxadmin@mdw3 ~]$ systemctl status matrixdb5.supervisor.service
● matrixdb5.supervisor.service - MatrixDB 5 Supervisord Daemon
Loaded: loaded (/usr/lib/systemd/system/matrixdb5.supervisor.service; enabled; vendor preset: enabled)
Active: active (running) since Wed 2023-05-24 21:04:35 PDT; 1h 28min ago
Process: 4426 ExecStop=/bin/bash -c exec "$MXHOME"/bin/supervisorctl shutdown (code=exited, status=1/FAILURE)
Main PID: 4439 (supervisord)
Memory: 605.4M
CGroup: /system.slice/matrixdb5.supervisor.service
├─ 954 /bin/dbus-daemon --fork --print-pid 4 --print-address 6 --session
├─ 955 /bin/dbus-daemon --fork --print-pid 4 --print-address 6 --session
├─ 3357 /bin/dbus-daemon --fork --print-pid 4 --print-address 6 --session
├─ 4439 /opt/ymatrix/matrixdb5/bin/supervisord -c /etc/matrixdb5/supervisor.conf
├─ 4451 mxctl telegraf exec --gpname mdw3 --mxui-collector --socket-addr mdw3:51574 --cluster-id AuWFhsrjyywC4xfMahgyor --master-role --dbhost mdw3 --dbport ...
├─ 4461 mxctl telegraf exec --gpname mdw3 --mxui-collector --socket-addr mdw3:56639 --cluster-id GFpQhTxkwGqb7qM6iYVA8y --master-role --dbhost mdw3 --dbport ...
├─ 4470 /opt/ymatrix/matrixdb5/bin/cylinder -nofile -port 4637 -db-cluster-id AuWFhsrjyywC4xfMahgyor
├─ 4479 /opt/ymatrix/matrixdb5/bin/telegraf --config /tmp/mxui_collector_AuWFhsrjyywC4xfMahgyor.conf
├─ 4515 /opt/ymatrix/matrixdb5/bin/telegraf --config /tmp/mxui_collector_GFpQhTxkwGqb7qM6iYVA8y.conf
├─ 4528 /bin/dbus-daemon --fork --print-pid 4 --print-address 6 --session
├─ 4539 /bin/dbus-daemon --fork --print-pid 4 --print-address 6 --session
├─ 4997 /opt/ymatrix/matrixdb5/bin/mxui
├─12093 /usr/lib64/sa/sadc -S DISK 4 2 /tmp/sysstat-3640257011
└─12094 /usr/lib64/sa/sadc -S DISK 4 2 /tmp/sysstat-3256168522
[mxadmin@mdw3 ~]$ supervisorctl status
Status:
1. pc_id:{group:"mxui_collector_AuWFhsrjyywC4xfMahgyor" name:"mxui_collector_AuWFhsrjyywC4xfMahgyor"} describe:"pid 4451, uptime 1:29:17" now:1684992833 state:"Running" log_file:"/var/log/matrixdb5/mxui_collector_AuWFhsrjyywC4xfMahgyor.log" stdout_log_file:"/var/log/matrixdb5/mxui_collector_AuWFhsrjyywC4xfMahgyor.log" pid:4451
2. pc_id:{group:"cylinder_AuWFhsrjyywC4xfMahgyor" name:"cylinder_AuWFhsrjyywC4xfMahgyor"} describe:"pid 4470, uptime 1:29:17" now:1684992833 state:"Running" log_file:"/var/log/matrixdb5/cylinder_AuWFhsrjyywC4xfMahgyor.log" stdout_log_file:"/var/log/matrixdb5/cylinder_AuWFhsrjyywC4xfMahgyor.log" pid:4470
3. pc_id:{group:"shard_AuWFhsrjyywC4xfMahgyor" name:"shard_AuWFhsrjyywC4xfMahgyor"} describe:"pid 4477, uptime 1:29:17" now:1684992833 state:"Running" log_file:"/var/log/matrixdb5/shard_AuWFhsrjyywC4xfMahgyor.log" stdout_log_file:"/var/log/matrixdb5/shard_AuWFhsrjyywC4xfMahgyor.log" pid:4477
4. pc_id:{group:"mxui" name:"mxui"} describe:"pid 4997, uptime 1:24:43" now:1684992833 state:"Running" log_file:"/var/log/matrixdb5/mxui.log" stdout_log_file:"/var/log/matrixdb5/mxui.log" pid:4997
5. pc_id:{group:"replication-1_AuWFhsrjyywC4xfMahgyor" name:"replication-1_AuWFhsrjyywC4xfMahgyor"} describe:"pid 4484, uptime 1:29:17" now:1684992833 state:"Running" log_file:"/var/log/matrixdb5/replication-1_AuWFhsrjyywC4xfMahgyor.log" stdout_log_file:"/var/log/matrixdb5/replication-1_AuWFhsrjyywC4xfMahgyor.log" pid:4484
6. pc_id:{group:"replication-3_AuWFhsrjyywC4xfMahgyor" name:"replication-3_AuWFhsrjyywC4xfMahgyor"} describe:"pid 4466, uptime 1:29:17" now:1684992833 state:"Running" log_file:"/var/log/matrixdb5/replication-3_AuWFhsrjyywC4xfMahgyor.log" stdout_log_file:"/var/log/matrixdb5/replication-3_AuWFhsrjyywC4xfMahgyor.log" pid:4466
7. pc_id:{group:"etcd" name:"etcd"} describe:"pid 4450, uptime 1:29:17" now:1684992833 state:"Running" log_file:"/mxdata_20230514185455/etcd/log/etcd.log" stdout_log_file:"/mxdata_20230514185455/etcd/log/etcd.log" pid:4450
8. pc_id:{group:"replication-2_AuWFhsrjyywC4xfMahgyor" name:"replication-2_AuWFhsrjyywC4xfMahgyor"} describe:"pid 4453, uptime 1:29:17" now:1684992833 state:"Running" log_file:"/var/log/matrixdb5/replication-2_AuWFhsrjyywC4xfMahgyor.log" stdout_log_file:"/var/log/matrixdb5/replication-2_AuWFhsrjyywC4xfMahgyor.log" pid:4453
9. pc_id:{group:"cluster_AuWFhsrjyywC4xfMahgyor" name:"cluster_AuWFhsrjyywC4xfMahgyor"} describe:"pid 4454, uptime 1:29:17" now:1684992833 state:"Running" log_file:"/var/log/matrixdb5/cluster_AuWFhsrjyywC4xfMahgyor.log" stdout_log_file:"/var/log/matrixdb5/cluster_AuWFhsrjyywC4xfMahgyor.log" pid:4454
10. pc_id:{group:"deployer" name:"deployer"} describe:"pid 4457, uptime 1:29:17" now:1684992833 state:"Running" log_file:"/var/log/matrixdb5/deployer.log" stdout_log_file:"/var/log/matrixdb5/deployer.log" pid:4457
11. pc_id:{group:"mxui_collector_GFpQhTxkwGqb7qM6iYVA8y" name:"mxui_collector_GFpQhTxkwGqb7qM6iYVA8y"} describe:"pid 4461, uptime 1:29:17" now:1684992833 state:"Running" log_file:"/var/log/matrixdb5/mxui_collector_GFpQhTxkwGqb7qM6iYVA8y.log" stdout_log_file:"/var/log/matrixdb5/mxui_collector_GFpQhTxkwGqb7qM6iYVA8y.log" pid:4461
[mxadmin@mdw3 ~]$ supervisorctl restart mxui
Restarted:
1. name:"mxui"
Нет.
Сервис Supervisor не запускает Segment (или группу процессов PostgreSQL) автоматически. Supervisor может запускать только те сервисы, которые зарегистрированы в нём. Группа процессов PostgreSQL является потомком процесса службы репликации и управляется именно этим процессом, а не сервисом Supervisor. Запуск и остановка группы процессов осуществляются исключительно инструментами управления кластером (mxstart, mxstop, mxrecover и др.) через вызов API службы репликации.