Arangodb Cluster - Невозможно взаимодействовать с узлом координатора в кластере после перезапуска кластера, когда в каталоге данных есть данные
- ArangoDB Версия: 3.4.4
- Двигатель хранения: RocksDB
- Режим развертывания: кластер
- Стратегия развертывания: ручной запуск в Docker
- Конфигурация: см. Настройки сервера ниже
- Инфраструктура: собственная
- Операционная система: Centos 7
- Общий объем оперативной памяти на вашем компьютере: 12 ГБ каждый (Non-prod Cluster)
- Используемые диски: SSD
- Используемый пакет: Docker - официальный
Настройки сервера
Настройки агентства:
arangod --server.storage-engine rocksdb --server.endpoint tcp://0.0.0.0:8529 --agency.my-address=tcp://agency1:8529 --server.authentication false --agency.activate true --agency.size 3 --agency.supervision true
arangod --server.storage-engine rocksdb --server.endpoint tcp://0.0.0.0:8529 --agency.my-address=tcp://agency2:8529 --server.authentication false --agency.activate true --agency.size 3 --agency.supervision true
arangod --server.storage-engine rocksdb --server.endpoint tcp://0.0.0.0:8529 --agency.my-address=tcp://agency3:8529 --server.authentication false --agency.activate true --agency.size 3 --agency.endpoint tcp://agency1:8529 --agency.endpoint tcp://agency2:8529 --agency.endpoint tcp://agency3:8529 --agency.supervision true
Основные настройки:
arangod --server.storage-engine rocksdb --server.authentication=false --server.endpoint tcp://0.0.0.0:8529 --cluster.my-address tcp://dbserver1:8529 --cluster.my-local-info db1 --cluster.my-role PRIMARY --cluster.agency-endpoint tcp://agency1:8529 --cluster.agency-endpoint tcp://agency2:8529 --cluster.agency-endpoint tcp://agency3:8529
arangod --server.storage-engine rocksdb --server.authentication=false --server.endpoint tcp://0.0.0.0:8529 --cluster.my-address tcp://dbserver2:8529 --cluster.my-local-info db2 --cluster.my-role PRIMARY --cluster.agency-endpoint tcp://agency1:8529 --cluster.agency-endpoint tcp://agency2:8529 --cluster.agency-endpoint tcp://agency3:8529
arangod --server.storage-engine rocksdb --server.authentication=false --server.endpoint tcp://0.0.0.0:8529 --cluster.my-address tcp://dbserver3:8529 --cluster.my-local-info db3 --cluster.my-role PRIMARY --cluster.agency-endpoint tcp://agency1:8529 --cluster.agency-endpoint tcp://agency2:8529 --cluster.agency-endpoint tcp://agency3:8529
Настройки координатора:
arangod --server.storage-engine rocksdb --server.authentication=false --server.endpoint tcp://0.0.0.0:8529 --cluster.my-address tcp://coordinator1:8529 --cluster.my-local-info coord1 --cluster.my-role COORDINATOR --cluster.agency-endpoint tcp://agency1:8529 --cluster.agency-endpoint tcp://agency2:8529 --cluster.agency-endpoint tcp://agency3:8529
arangod --server.storage-engine rocksdb --server.authentication=false --server.endpoint tcp://0.0.0.0:8529 --cluster.my-address tcp://coordinator2:8529 --cluster.my-local-info coord2 --cluster.my-role COORDINATOR --cluster.agency-endpoint tcp://agency1:8529 --cluster.agency-endpoint tcp://agency2:8529 --cluster.agency-endpoint tcp://agency3:8529
arangod --server.storage-engine rocksdb --server.authentication=false --server.endpoint tcp://0.0.0.0:8529 --cluster.my-address tcp://coordinator3:8529 --cluster.my-local-info coord3 --cluster.my-role COORDINATOR --cluster.agency-endpoint tcp://agency1:8529 --cluster.agency-endpoint tcp://agency2:8529 --cluster.agency-endpoint tcp://agency3:8529
Текущая конфигурация сервера:
{
"check-configuration": false,
"config": "/tmp/arangod.conf",
"configuration": "/tmp/arangod.conf",
"console": false,
"daemon": false,
"default-language": "en_US",
"define": [],
"dump-dependencies": false,
"dump-options": false,
"fortune": false,
"gid": "",
"hund": false,
"log": [
"info",
"info"
],
"pid-file": "",
"supervisor": false,
"uid": "",
"version": false,
"working-directory": "/var/tmp",
"agency.activate": false,
"agency.compaction-keep-size": 50000,
"agency.compaction-step-size": 1000,
"agency.disaster-recovery-id": "",
"agency.election-timeout-max": 5,
"agency.election-timeout-min": 1,
"agency.endpoint": [],
"agency.max-append-size": 250,
"agency.my-address": "",
"agency.pool-size": 1,
"agency.size": 1,
"agency.supervision": false,
"agency.supervision-frequency": 1,
"agency.supervision-grace-period": 10,
"agency.wait-for-sync": true,
"arangosearch.threads": 0,
"arangosearch.threads-limit": 0,
"cache.rebalancing-interval": 2000000,
"cache.size": 2612399104,
"cluster.agency-endpoint": [
"tcp://agency1:8529",
"tcp://agency2:8529",
"tcp://agency3:8529"
],
"cluster.agency-prefix": "arango",
"cluster.create-waits-for-sync-replication": true,
"cluster.index-create-timeout": 3600,
"cluster.my-address": "tcp://coordinator1:8529",
"cluster.my-advertised-endpoint": "",
"cluster.my-role": "COORDINATOR",
"cluster.require-persisted-id": false,
"cluster.synchronous-replication-timeout-factor": 1,
"cluster.synchronous-replication-timeout-per-4k": 0.1,
"cluster.system-replication-factor": 2,
"compaction.db-sleep-time": 1,
"compaction.dead-documents-threshold": 16384,
"compaction.dead-size-percent-threshold": 0.1,
"compaction.dead-size-threshold": 131072,
"compaction.max-file-size-factor": 3,
"compaction.max-files": 3,
"compaction.max-result-file-size": 134217728,
"compaction.min-interval": 10,
"compaction.min-small-data-file-size": 131072,
"database.auto-upgrade": false,
"database.check-version": false,
"database.directory": "coord1",
"database.force-sync-properties": true,
"database.ignore-datafile-errors": false,
"database.init-database": false,
"database.maximal-journal-size": 33554432,
"database.password": "",
"database.required-directory-state": "any",
"database.restore-admin": false,
"database.throw-collection-not-loaded-error": false,
"database.upgrade-check": true,
"database.wait-for-sync": false,
"foxx.queues": true,
"foxx.queues-poll-interval": 1,
"frontend.proxy-request-check": true,
"frontend.trusted-proxy": [],
"frontend.version-check": true,
"http.allow-method-override": false,
"http.hide-product-header": false,
"http.keep-alive-timeout": 300,
"http.trusted-origin": [],
"javascript.allow-admin-execute": false,
"javascript.app-path": "/var/lib/arangodb3-apps",
"javascript.copy-installation": false,
"javascript.enabled": true,
"javascript.gc-frequency": 60,
"javascript.gc-interval": 2000,
"javascript.module-directory": [],
"javascript.script": [],
"javascript.script-parameter": [],
"javascript.startup-directory": "/usr/share/arangodb3/js",
"javascript.v8-contexts": 64,
"javascript.v8-contexts-max-age": 60,
"javascript.v8-contexts-max-invocations": 0,
"javascript.v8-contexts-minimum": 1,
"javascript.v8-max-heap": 3072,
"javascript.v8-options": [],
"log.color": true,
"log.escape": true,
"log.file": "-",
"log.force-direct": false,
"log.foreground-tty": false,
"log.keep-logrotate": false,
"log.level": [
"info",
"info"
],
"log.line-number": false,
"log.output": [
"-"
],
"log.performance": false,
"log.prefix": "",
"log.request-parameters": true,
"log.role": false,
"log.shorten-filenames": true,
"log.thread": false,
"log.thread-name": false,
"log.use-local-time": false,
"log.use-microtime": false,
"nonce.size": 4194304,
"query.cache-entries": 128,
"query.cache-entries-max-size": 268435456,
"query.cache-entry-max-size": 16777216,
"query.cache-include-system-collections": false,
"query.cache-mode": "off",
"query.fail-on-warning": false,
"query.memory-limit": 0,
"query.optimizer-max-plans": 128,
"query.registry-ttl": 600,
"query.slow-streaming-threshold": 10,
"query.slow-threshold": 10,
"query.tracking": true,
"query.tracking-with-bindvars": true,
"random.generator": 1,
"replication.active-failover": false,
"replication.auto-start": true,
"replication.automatic-failover": false,
"rocksdb.block-align-data-blocks": false,
"rocksdb.block-cache-shard-bits": -1,
"rocksdb.block-cache-size": 3134878924,
"rocksdb.compaction-read-ahead-size": 2097152,
"rocksdb.debug-logging": false,
"rocksdb.delayed_write_rate": 0,
"rocksdb.dynamic-level-bytes": true,
"rocksdb.enable-pipelined-write": false,
"rocksdb.enable-statistics": false,
"rocksdb.enforce-block-cache-size-limit": false,
"rocksdb.intermediate-commit-count": 1000000,
"rocksdb.intermediate-commit-size": 536870912,
"rocksdb.level0-compaction-trigger": 2,
"rocksdb.level0-slowdown-trigger": 20,
"rocksdb.level0-stop-trigger": 36,
"rocksdb.max-background-jobs": 4,
"rocksdb.max-bytes-for-level-base": 268435456,
"rocksdb.max-bytes-for-level-multiplier": 10,
"rocksdb.max-subcompactions": 0,
"rocksdb.max-total-wal-size": 83886080,
"rocksdb.max-transaction-size": 18446744073709552000,
"rocksdb.max-write-buffer-number": 2,
"rocksdb.min-write-buffer-number-to-merge": 1,
"rocksdb.num-levels": 7,
"rocksdb.num-threads-priority-high": 2,
"rocksdb.num-threads-priority-low": 2,
"rocksdb.num-uncompressed-levels": 2,
"rocksdb.optimize-filters-for-hits": false,
"rocksdb.recycle-log-file-num": 0,
"rocksdb.sync-interval": 100,
"rocksdb.table-block-size": 16384,
"rocksdb.throttle": true,
"rocksdb.total-write-buffer-size": 4179838566,
"rocksdb.transaction-lock-timeout": 1000,
"rocksdb.use-direct-io-for-flush-and-compaction": false,
"rocksdb.use-direct-reads": false,
"rocksdb.use-file-logging": false,
"rocksdb.use-fsync": false,
"rocksdb.wal-directory": "",
"rocksdb.wal-file-timeout": 10,
"rocksdb.wal-file-timeout-initial": 180,
"rocksdb.wal-recovery-skip-corrupted": false,
"rocksdb.write-buffer-size": 67108864,
"server.allow-use-database": false,
"server.authentication": false,
"server.authentication-system-only": true,
"server.authentication-timeout": 0,
"server.authentication-unix-sockets": true,
"server.check-max-memory-mappings": true,
"server.descriptors-minimum": 0,
"server.endpoint": [
"tcp://0.0.0.0:8529"
],
"server.flush-interval": 1000000,
"server.gid": "",
"server.jwt-secret": "",
"server.jwt-secret-keyfile": "",
"server.local-authentication": true,
"server.maintenance-actions-block": 2,
"server.maintenance-actions-linger": 3600,
"server.maintenance-threads": 2,
"server.maximal-queue-size": 4096,
"server.maximal-threads": 64,
"server.minimal-threads": 2,
"server.prio1-size": 1048576,
"server.rest-server": true,
"server.scheduler-queue-size": 128,
"server.statistics": true,
"server.storage-engine": "rocksdb",
"server.uid": "",
"ssl.cafile": "",
"ssl.cipher-list": "HIGH:!EXPORT:!aNULL@STRENGTH",
"ssl.ecdh-curve": "prime256v1",
"ssl.keyfile": "",
"ssl.options": 2147485780,
"ssl.protocol": 5,
"ssl.session-cache": false,
"tcp.backlog-size": 64,
"tcp.reuse-address": true,
"temp.path": "",
"vst.maxsize": 30720,
"wal.allow-oversize-entries": true,
"wal.directory": "",
"wal.flush-timeout": 15000,
"wal.historic-logfiles": 10,
"wal.ignore-logfile-errors": false,
"wal.ignore-recovery-errors": false,
"wal.logfile-size": 33554432,
"wal.open-logfiles": 0,
"wal.reserve-logfiles": 3,
"wal.slots": 1048576,
"wal.sync-interval": 100000,
"wal.throttle-wait": 15000,
"wal.throttle-when-pending": 0,
"wal.use-mlock": false
}
Кластер работает и работает как положено при запуске заново. Если я выключил его, а затем перезапустил (теперь в каталоге данных есть файлы, в которых он ранее был пуст), я получаю сообщение об ошибке 503 при попытке доступа к веб-интерфейсу. Кроме того, узел-координатор регистрирует ошибку:
2019-03-26T21:58:47Z [1] ERROR {cluster} ClusterComm::performRequests: got BACKEND_UNAVAILABLE or TIMEOUT from shard:s3010020:/_db/_system/_api/document?collection=s3010020&waitForSync=false&returnNew=false&returnOld=false&isRestore=false&overwrite=false
Единственный способ исправить эту ошибку - завершить работу кластера и удалить все файлы из каталога данных на основных узлах. Затем перезагрузите. Я бы подумал, что кластер базы данных должен иметь возможность иметь существующие файлы в каталоге данных при запуске, поэтому я предполагаю, что это проблема настроек с моей стороны. Любая помощь / предложения будут высоко оценены, в этот момент мне нужно запустить кластер, где каждый узел НЕ имеет постоянного тома, поэтому я не теряю связь с кластером. Они запускаются и получают данные, которые исправны и работают, но, если все пойдет не так, я потеряю все данные (опять же, это кластер TEST/NON-PROD). Стоит отметить, что я наблюдал журналы во время процесс выключения для всех узлов в кластере, и все они выключаются должным образом (то есть не принудительно выключаются)