Mongodb - осколочные узлы и маршрутизаторы не создают сокет после истечения срока действия ssl-сертификатов - PullRequest
0 голосов
/ 21 февраля 2020

Пн go Описание кластера сегментов:

ОС: Redhat 6 - Ядро Версия: 2.6.32-754.27.1.el6.x86_64

пн go версия:

MongoDB shell version v3.4.6
git version: c55eb86ef46ee7aede3b1e2a5d184a7df4bfb5b5
OpenSSL version: OpenSSL 1.0.1e-fips 11 Feb 2013
allocator: tcmalloc
modules: none
build environment:
    distmod: rhel62
    distarch: x86_64
    target_arch: x86_64

версия mongos:

mongos version v3.4.6
git version: c55eb86ef46ee7aede3b1e2a5d184a7df4bfb5b5
OpenSSL version: OpenSSL 1.0.1e-fips 11 Feb 2013
allocator: tcmalloc
modules: none
build environment:
    distmod: rhel62
    distarch: x86_64
    target_arch: x86_64

Пн go Узлы кластера сегментов:

4 nodes act as both config servers and mongo router
2 nodes are members of a shard1
2 nodes are members of a shard2
1 node is an arbiter only for shard1 and shard2

Все узлы соединяются друг с другом по протоколу SSL

В соответствии с настройкой для каждой роли:

mongod для Mon go config:

systemLog:
  destination: file
  logAppend: true
  path: /var/log/mongodb/mongod.log
security:
  authorization: enabled
  clusterAuthMode: x509
  javascriptEnabled: true
storage:
  dbPath: /var/lib/mongo
  journal:
    enabled: true
    commitIntervalMs: 500
  wiredTiger:
    engineConfig:
      cacheSizeGB: 12
    collectionConfig:
      blockCompressor: zlib
processManagement:
  fork: false
  pidFilePath: /var/run/mongodb/mongod.pid
net:
  port: 7772
  bindIp: 127.0.0.1,IP_ETH1
  ssl:
    mode: requireSSL
    PEMKeyFile: /mongo_certs/config_router_hostname.pem
    CAFile: /etc/ssl/certs/ca-bundle.crt
    clusterFile: /mongo_certs/mongo_cluster.pem
    allowConnectionsWithoutCertificates: true
    disabledProtocols: TLS1_0,TLS1_1
replication:
  oplogSizeMB: 2048
  replSetName: replconfig01
sharding:

mongos для Mon go Маршрутизатор:

systemLog:
  destination: file
  logAppend: true
  path: /var/log/mongodb/mongos.log
security:
  clusterAuthMode: x509
processManagement:
  fork: false
  pidFilePath: /var/run/mongodb/mongos.pid
net:
  port: 7770
  bindIp: 127.0.0.1,192.IP_ETH1,IP_ETH2
  ssl:
    mode: requireSSL
    PEMKeyFile: /mongo_certs/config_router_hostname.pem
    CAFile: /etc/ssl/certs/ca-bundle.crt
    clusterFile: /mongo_certs/mongo_cluster.pem
    allowConnectionsWithoutCertificates: true
    disabledProtocols: TLS1_0,TLS1_1
replication:
   localPingThresholdMs: 15
sharding:
   configDB: replconfig01/node1.domain.com:7772,node2.domain.com:7772,node3.domain.com:7772,node4.domain.com:7772

mongod для узлов сегментов

destination: file
  logAppend: true
  path: /var/log/mongodb/mongod.log
security:
  authorization: enabled
  clusterAuthMode: x509
  javascriptEnabled: true
storage:
  dbPath: /var/lib/mongo
  journal:
    enabled: true
    commitIntervalMs: 500
  wiredTiger:
    engineConfig:
      cacheSizeGB: 12
    collectionConfig:
      blockCompressor: zlib
processManagement:
  fork: false
  pidFilePath: /var/run/mongodb/mongod.pid
net:
  port: 7770
  bindIp: 127.0.0.1,IP_ETH1,IP_ETH2
  ssl:
    mode: requireSSL
    PEMKeyFile: /mongo_certs/hostanme.pem
    CAFile: /etc/ssl/certs/ca-bundle.crt
    clusterFile: /mongo_certs/mongo_cluster.pem
    allowConnectionsWithoutCertificates: true
    disabledProtocols: TLS1_0,TLS1_1
replication:
  oplogSizeMB: 2048
  replSetName: shardreplica02
sharding:
  clusterRole: shardsvr

Описание проблемы

Кластер работал должным образом до истечения срока действия сертификатов. После замены сертификатов на новые перезапуск mongod на узлах сегмента и только mongos на узлах Config / Router не работает должным образом. Я имею в виду, что сервис запущен, но сокет все еще не работает. Если я выполняю команду netstat для порта, я получаю следующее:

# netstat -nap | grep 6516
udp        0      0 0.0.0.0:40682               0.0.0.0:*                               6516/mongod
unix  2      [ ]         STREAM                   3648511 6516/mongod         /tmp/mongodb-7770.sock

В результате я не могу войти в БД. Решение, которое я нашел для правильного перезапуска кластера, заключается в очистке всего узла и его перенастройке.

Но если я заменю сертификаты до истечения срока их действия, у меня не возникнет этой проблемы.

Кто-нибудь знает почему это? И как только срок действия сертификатов истекает до их продления, как я могу продолжать использовать их без очистки?

Заранее спасибо

Cesars

...