更正 3 节点集群的 EventStore 配置?

Correct EventStore config for a 3 node cluster?

所以我将 EventStore 5.0.7 安装为 3 节点集群,工作正常。

我尝试升级到 EventStore 21.10.1。自从 5.x 移动到 20.x 和 21.x 以来,EventStore 的配置发生了重大变化,尽管多次阅读了各种文档,但我仍然做错了。

我们看到有 6 个节点出现 - 每个服务器两次 - 八卦失败,没有任何工作,即无法插入事件。

我做错了什么?


EventStore 5.0.7

EventStore 21.10.1

EventStore 21.10.1 的配置

---
# Paths
Db: /var/lib/eventstore
Index: /var/lib/eventstore/index
Log: /var/log/eventstore

# Run in insecure mode
Insecure: true
DisableInternalTcpTls: true
DisableExternalTcpTls: true

# Network configuration
IntIp: 172.31.47.243
ExtIp: 0.0.0.0
HttpPort: 2113
IntTcpPort: 1112
ExtTcpPort: 1113
EnableExternalTcp: true
EnableAtomPubOverHTTP: false

# Projections configuration
RunProjections: System
ClusterSize: 3

LogLevel: Verbose
LogHttpRequests: true
LogFailedAuthenticationAttempts: true
LogConfig: /etc/eventstore/logconfig.json

HttpPortAdvertiseAs: 2114
ExtHostAdvertiseAs: 54.209.234.141

IntTcpHeartbeatTimeout: 2000
ExtTcpHeartbeatTimeout: 2000
IntTcpHeartbeatInterval: 5000
ExtTcpHeartbeatInterval: 5000
GossipTimeoutMs: 5000
GossipIntervalMs: 2000

StatsPeriodSec: 900

DiscoverViaDns: false
GossipSeed: 172.31.45.192:2113,172.31.41.141:2113

EventStore 21.10.1 的配置(如启动时所见)

MODIFIED OPTIONS:

     STATS PERIOD SEC:                        900 (Yaml)
     LOG HTTP REQUESTS:                       true (Yaml)
     LOG FAILED AUTHENTICATION ATTEMPTS:      true (Yaml)
     INSECURE:                                true (Yaml)
     LOG:                                     /var/log/eventstore (Yaml)
     LOG CONFIG:                              /etc/eventstore/logconfig.json (Yaml)
     LOG LEVEL:                               Verbose (Yaml)
     CLUSTER SIZE:                            3 (Yaml)
     DISCOVER VIA DNS:                        false (Yaml)
     GOSSIP SEED:                             172.31.46.96:2113,172.31.40.110:2113 (Yaml)
     GOSSIP INTERVAL MS:                      2000 (Yaml)
     GOSSIP TIMEOUT MS:                       5000 (Yaml)
     DB:                                      /var/lib/eventstore (Yaml)
     INDEX:                                   /var/lib/eventstore/index (Yaml)
     INT IP:                                  172.31.35.133 (Yaml)
     EXT IP:                                  0.0.0.0 (Yaml)
     HTTP PORT:                               2113 (Yaml)
     ENABLE EXTERNAL TCP:                     true (Yaml)
     INT TCP PORT:                            1112 (Yaml)
     EXT TCP PORT:                            1113 (Yaml)
     EXT HOST ADVERTISE AS:                   3.82.200.231 (Yaml)
     HTTP PORT ADVERTISE AS:                  2114 (Yaml)
     INT TCP HEARTBEAT TIMEOUT:               2000 (Yaml)
     EXT TCP HEARTBEAT TIMEOUT:               2000 (Yaml)
     INT TCP HEARTBEAT INTERVAL:              5000 (Yaml)
     EXT TCP HEARTBEAT INTERVAL:              5000 (Yaml)
     DISABLE INTERNAL TCP TLS:                true (Yaml)
     DISABLE EXTERNAL TCP TLS:                true (Yaml)
     ENABLE ATOM PUB OVER HTTP:               false (Yaml)
     RUN PROJECTIONS:                         System (Yaml)

DEFAULT OPTIONS:

     HELP:                                    False (<DEFAULT>)
     VERSION:                                 False (<DEFAULT>)
     CONFIG:                                  /etc/eventstore/eventstore.conf (<DEFAULT>)
     WHAT IF:                                 False (<DEFAULT>)
     START STANDARD PROJECTIONS:              False (<DEFAULT>)
     DISABLE HTTP CACHING:                    False (<DEFAULT>)
     WORKER THREADS:                          0 (<DEFAULT>)
     ENABLE HISTOGRAMS:                       False (<DEFAULT>)
     SKIP INDEX SCAN ON READS:                False (<DEFAULT>)
     MAX APPEND SIZE:                         1048576 (<DEFAULT>)
     LOG CONSOLE FORMAT:                      Plain (<DEFAULT>)
     LOG FILE SIZE:                           1073741824 (<DEFAULT>)
     LOG FILE INTERVAL:                       Day (<DEFAULT>)
     LOG FILE RETENTION COUNT:                31 (<DEFAULT>)
     DISABLE LOG FILE:                        False (<DEFAULT>)
     AUTHORIZATION TYPE:                      internal (<DEFAULT>)
     AUTHORIZATION CONFIG:                    <empty> (<DEFAULT>)
     AUTHENTICATION TYPE:                     internal (<DEFAULT>)
     AUTHENTICATION CONFIG:                   <empty> (<DEFAULT>)
     DISABLE FIRST LEVEL HTTP AUTHORIZATION:  False (<DEFAULT>)
     TRUSTED ROOT CERTIFICATES PATH:          <empty> (<DEFAULT>)
     CERTIFICATE RESERVED NODE COMMON NAME:   eventstoredb-node (<DEFAULT>)
     CERTIFICATE FILE:                        <empty> (<DEFAULT>)
     CERTIFICATE PRIVATE KEY FILE:            <empty> (<DEFAULT>)
     CERTIFICATE PASSWORD:                    <empty> (<DEFAULT>)
     CERTIFICATE STORE LOCATION:              <empty> (<DEFAULT>)
     CERTIFICATE STORE NAME:                  <empty> (<DEFAULT>)
     CERTIFICATE SUBJECT NAME:                <empty> (<DEFAULT>)
     CERTIFICATE THUMBPRINT:                  <empty> (<DEFAULT>)
     STREAM INFO CACHE CAPACITY:              0 (<DEFAULT>)
     NODE PRIORITY:                           0 (<DEFAULT>)
     COMMIT COUNT:                            -1 (<DEFAULT>)
     PREPARE COUNT:                           -1 (<DEFAULT>)
     CLUSTER DNS:                             fake.dns (<DEFAULT>)
     CLUSTER GOSSIP PORT:                     2113 (<DEFAULT>)
     GOSSIP ALLOWED DIFFERENCE MS:            60000 (<DEFAULT>)
     READ ONLY REPLICA:                       False (<DEFAULT>)
     UNSAFE ALLOW SURPLUS NODES:              False (<DEFAULT>)
     DEAD MEMBER REMOVAL PERIOD SEC:          1800 (<DEFAULT>)
     LEADER ELECTION TIMEOUT MS:              1000 (<DEFAULT>)
     QUORUM SIZE:                             1 (<DEFAULT>)
     PREPARE ACK COUNT:                       1 (<DEFAULT>)
     COMMIT ACK COUNT:                        1 (<DEFAULT>)
     MIN FLUSH DELAY MS:                      2 (<DEFAULT>)
     DISABLE SCAVENGE MERGING:                False (<DEFAULT>)
     SCAVENGE HISTORY MAX AGE:                30 (<DEFAULT>)
     CACHED CHUNKS:                           -1 (<DEFAULT>)
     CHUNKS CACHE SIZE:                       536871424 (<DEFAULT>)
     MAX MEM TABLE SIZE:                      1000000 (<DEFAULT>)
     HASH COLLISION READ LIMIT:               100 (<DEFAULT>)
     MEM DB:                                  False (<DEFAULT>)
     USE INDEX BLOOM FILTERS:                 True (<DEFAULT>)
     INDEX CACHE SIZE:                        0 (<DEFAULT>)
     SKIP DB VERIFY:                          False (<DEFAULT>)
     WRITE THROUGH:                           False (<DEFAULT>)
     UNBUFFERED:                              False (<DEFAULT>)
     CHUNK INITIAL READER COUNT:              5 (<DEFAULT>)
     PREPARE TIMEOUT MS:                      2000 (<DEFAULT>)
     COMMIT TIMEOUT MS:                       2000 (<DEFAULT>)
     WRITE TIMEOUT MS:                        2000 (<DEFAULT>)
     UNSAFE DISABLE FLUSH TO DISK:            False (<DEFAULT>)
     UNSAFE IGNORE HARD DELETE:               False (<DEFAULT>)
     SKIP INDEX VERIFY:                       False (<DEFAULT>)
     INDEX CACHE DEPTH:                       16 (<DEFAULT>)
     OPTIMIZE INDEX MERGE:                    False (<DEFAULT>)
     ALWAYS KEEP SCAVENGED:                   False (<DEFAULT>)
     REDUCE FILE CACHE PRESSURE:              False (<DEFAULT>)
     INITIALIZATION THREADS:                  1 (<DEFAULT>)
     READER THREADS COUNT:                    0 (<DEFAULT>)
     MAX AUTO MERGE INDEX LEVEL:              2147483647 (<DEFAULT>)
     WRITE STATS TO DB:                       False (<DEFAULT>)
     MAX TRUNCATION:                          268435456 (<DEFAULT>)
     CHUNK SIZE:                              268435456 (<DEFAULT>)
     STATS STORAGE:                           File (<DEFAULT>)
     DB LOG FORMAT:                           V2 (<DEFAULT>)
     STREAM EXISTENCE FILTER SIZE:            256000000 (<DEFAULT>)
     KEEP ALIVE INTERVAL:                     10000 (<DEFAULT>)
     KEEP ALIVE TIMEOUT:                      10000 (<DEFAULT>)
     INT HOST ADVERTISE AS:                   <empty> (<DEFAULT>)
     ADVERTISE HOST TO CLIENT AS:             <empty> (<DEFAULT>)
     ADVERTISE HTTP PORT TO CLIENT AS:        0 (<DEFAULT>)
     ADVERTISE TCP PORT TO CLIENT AS:         0 (<DEFAULT>)
     EXT TCP PORT ADVERTISE AS:               0 (<DEFAULT>)
     INT TCP PORT ADVERTISE AS:               0 (<DEFAULT>)
     GOSSIP ON SINGLE NODE:                   <empty> (<DEFAULT>)
     CONNECTION PENDING SEND BYTES THRESHOLD: 10485760 (<DEFAULT>)
     CONNECTION QUEUE SIZE THRESHOLD:         50000 (<DEFAULT>)
     DISABLE ADMIN UI:                        False (<DEFAULT>)
     DISABLE STATS ON HTTP:                   False (<DEFAULT>)
     DISABLE GOSSIP ON HTTP:                  False (<DEFAULT>)
     ENABLE TRUSTED AUTH:                     False (<DEFAULT>)
     PROJECTION THREADS:                      3 (<DEFAULT>)
     PROJECTIONS QUERY EXPIRY:                5 (<DEFAULT>)
     FAULT OUT OF ORDER PROJECTIONS:          False (<DEFAULT>)
     PROJECTION COMPILATION TIMEOUT:          500 (<DEFAULT>)
     PROJECTION EXECUTION TIMEOUT:            250 (<DEFAULT>)

八卦 EventStore 21.10.1

{
  "members": [
    {
      "instanceId": "ed2ee047-eb59-4b11-86fd-a5b366edd0ce",
      "timeStamp": "2022-01-12T23:17:42.539034Z",
      "state": "Unknown",
      "isAlive": true,
      "internalTcpIp": "172.31.46.231",
      "internalTcpPort": 1112,
      "internalSecureTcpPort": 0,
      "externalTcpIp": "52.91.48.59",
      "externalTcpPort": 1113,
      "externalSecureTcpPort": 0,
      "httpEndPointIp": "52.91.48.59",
      "httpEndPointPort": 2114,
      "lastCommitPosition": -1,
      "writerCheckpoint": 0,
      "chaserCheckpoint": 0,
      "epochPosition": -1,
      "epochNumber": -1,
      "epochId": "00000000-0000-0000-0000-000000000000",
      "nodePriority": 0,
      "isReadOnlyReplica": false
    },
    {
      "instanceId": "dfcc4139-2966-454c-8cee-71261cedafba",
      "timeStamp": "2022-01-12T23:17:40.0803168Z",
      "state": "Unknown",
      "isAlive": false,
      "internalTcpIp": "172.31.46.43",
      "internalTcpPort": 1112,
      "internalSecureTcpPort": 0,
      "externalTcpIp": "44.201.237.180",
      "externalTcpPort": 1113,
      "externalSecureTcpPort": 0,
      "httpEndPointIp": "44.201.237.180",
      "httpEndPointPort": 2114,
      "lastCommitPosition": -1,
      "writerCheckpoint": 0,
      "chaserCheckpoint": 0,
      "epochPosition": -1,
      "epochNumber": -1,
      "epochId": "00000000-0000-0000-0000-000000000000",
      "nodePriority": 0,
      "isReadOnlyReplica": false
    },
    {
      "instanceId": "2a47929c-afd6-496f-b87b-d85904eeed18",
      "timeStamp": "2022-01-12T23:17:40.539795Z",
      "state": "Unknown",
      "isAlive": true,
      "internalTcpIp": "172.31.38.246",
      "internalTcpPort": 1112,
      "internalSecureTcpPort": 0,
      "externalTcpIp": "3.93.17.39",
      "externalTcpPort": 1113,
      "externalSecureTcpPort": 0,
      "httpEndPointIp": "3.93.17.39",
      "httpEndPointPort": 2114,
      "lastCommitPosition": -1,
      "writerCheckpoint": 0,
      "chaserCheckpoint": 0,
      "epochPosition": -1,
      "epochNumber": -1,
      "epochId": "00000000-0000-0000-0000-000000000000",
      "nodePriority": 0,
      "isReadOnlyReplica": false
    },
    {
      "instanceId": "00000000-0000-0000-0000-000000000000",
      "timeStamp": "2022-01-12T22:39:46.4047071Z",
      "state": "Manager",
      "isAlive": true,
      "internalTcpIp": "172.31.46.43",
      "internalTcpPort": 2113,
      "internalSecureTcpPort": 0,
      "externalTcpIp": "172.31.46.43",
      "externalTcpPort": 2113,
      "externalSecureTcpPort": 0,
      "httpEndPointIp": "172.31.46.43",
      "httpEndPointPort": 2113,
      "lastCommitPosition": -1,
      "writerCheckpoint": -1,
      "chaserCheckpoint": -1,
      "epochPosition": -1,
      "epochNumber": -1,
      "epochId": "00000000-0000-0000-0000-000000000000",
      "nodePriority": 0,
      "isReadOnlyReplica": false
    },
    {
      "instanceId": "00000000-0000-0000-0000-000000000000",
      "timeStamp": "2022-01-12T22:53:47.9621597Z",
      "state": "Manager",
      "isAlive": true,
      "internalTcpIp": "172.31.46.231",
      "internalTcpPort": 2113,
      "internalSecureTcpPort": 0,
      "externalTcpIp": "172.31.46.231",
      "externalTcpPort": 2113,
      "externalSecureTcpPort": 0,
      "httpEndPointIp": "172.31.46.231",
      "httpEndPointPort": 2113,
      "lastCommitPosition": -1,
      "writerCheckpoint": -1,
      "chaserCheckpoint": -1,
      "epochPosition": -1,
      "epochNumber": -1,
      "epochId": "00000000-0000-0000-0000-000000000000",
      "nodePriority": 0,
      "isReadOnlyReplica": false
    },
    {
      "instanceId": "00000000-0000-0000-0000-000000000000",
      "timeStamp": "2022-01-12T22:53:47.9621597Z",
      "state": "Manager",
      "isAlive": true,
      "internalTcpIp": "172.31.38.246",
      "internalTcpPort": 2113,
      "internalSecureTcpPort": 0,
      "externalTcpIp": "172.31.38.246",
      "externalTcpPort": 2113,
      "externalSecureTcpPort": 0,
      "httpEndPointIp": "172.31.38.246",
      "httpEndPointPort": 2113,
      "lastCommitPosition": -1,
      "writerCheckpoint": -1,
      "chaserCheckpoint": -1,
      "epochPosition": -1,
      "epochNumber": -1,
      "epochId": "00000000-0000-0000-0000-000000000000",
      "nodePriority": 0,
      "isReadOnlyReplica": false
    }
  ],
  "serverIp": "52.91.48.59",
  "serverPort": 2114
}

此在线工具:https://configurator.eventstore.com/ 应该可以帮助您正确设置配置