Есть ли способ установить подчиненный узел в качестве второго главного узла, если предыдущий мастер не работает в ipfs-cluster-service? - PullRequest
0 голосов
/ 02 апреля 2019

Я пытаюсь поэкспериментировать с ipfs-cluster. Я замечаю, что сеть кластера (Master_N0, Slave_N1, Slave_N2) работает нормально, когда я сначала запускаю master-узел, а затем присоединяю подчиненные узлы к этому master, используя --bootstrap. Проблема в том, что если по какой-то причине главный узел выходит из строя, то все его подчиненные узлы (Slave_N1, Slave_N2) также отключаются от кластерной сети. Так что я просто хочу знать, есть ли какой-нибудь способ. Если мой главный узел (Master_N0) выйдет из строя, он автоматически (с некоторыми флагами или сценарием) сделает одного из подчиненных (Slave_N1 или Slave_N2) в качестве главного (так что кластер- сеть останется в рабочем состоянии независимо от того, выйдет ли кто-нибудь из строя).

Это мой Мастер $ HOME / .ipfs-cluster / service.json файл

{
  "cluster": {
    "id": "Qme1gDJ1VuLN7UZPbhk72Jwh2apBgqM2RakcQPV6XPkvn",
    "peername": "Master-Node",
    "private_key": "CAASpgkwggSRuxfFuSJD06UoxS7D+mctCAoiODsvmYUWOb5+U+I7P0QBG1ZYDBv67Jw97NEI+nbL1vLMQDUlwKBgDm4YatGm3IzgdGs1s1lJVgcNvuWPeX70ryFT2mMIAeIHE2pnXSTW5sVEU1ijgWQnj3K3G31g7bHEK7BUiZB+qcHHkab8hfjJNw3TQg5Cb9dyx3nKoWvAyKZ4REVshv3fYswL0npY5Ol+tfqazlSdNsaNvBLzfE3r4nQbQlCihgtAoGAamsv1rGmfOEn8MX81CVm7Sm+/oaFMKkt+Db1Hqgd1DxMbzVxlR/wxvi5GpkjbnD6IsEXJh8BX2UzYHoTJmekICdmgd626fdXEMBxzELTJIzv49NROID8P+UZTYB/JfezttmFq4YNcBxOZNXnqrsVHKQR2lC1ZFlD2y1cEBLr2XcCgYBcqSzMCjZkeGwFJUsUy8J20OjZ7FXiBp/bWCr0bVCQhvUEL7AzwL+ef5Iuvw5DbTwtdNdQgfGs5bNHz75FbvoXMAGhSnWi540AjIaICtJ8U0WzFRMU3J89g...,
    "secret": "ece81c477e07d89fd7bf511314e24349aecfd46dc4a7a2f582c112f7a8ceda0",
    "leave_on_shutdown": false,
    "listen_multiaddress": "/ip4/0.0.0.0/tcp/9096",
    "state_sync_interval": "10m0s",
    "ipfs_sync_interval": "2m10s",
    "replication_factor_min": -1,
    "replication_factor_max": -1,
    "monitor_ping_interval": "15s",
    "peer_watch_interval": "5s",
    "disable_repinning": false
  },
  "consensus": {
    "raft": {
      "init_peerset": [],
      "wait_for_leader_timeout": "15s",
      "network_timeout": "10s",
      "commit_retries": 1,
      "commit_retry_delay": "200ms",
      "backups_rotate": 6,
      "heartbeat_timeout": "1s",
      "election_timeout": "1s",
      "commit_timeout": "50ms",
      "max_append_entries": 64,
      "trailing_logs": 10240,
      "snapshot_interval": "2m0s",
      "snapshot_threshold": 8192,
      "leader_lease_timeout": "500ms"
    }
  },
  "api": {
    "ipfsproxy": {
      "listen_multiaddress": "/ip4/127.0.0.1/tcp/9095",
      "node_multiaddress": "/ip4/127.0.0.1/tcp/5001",
      "read_timeout": "0s",
      "read_header_timeout": "5s",
      "write_timeout": "0s",
      "idle_timeout": "1m0s",
      "extract_headers_path": "/api/v0/version",
      "extract_headers_ttl": "5m0s"
    },
    "restapi": {
      "http_listen_multiaddress": "/ip4/127.0.0.1/tcp/9094",
      "read_timeout": "0s",
      "read_header_timeout": "5s",
      "write_timeout": "0s",
      "idle_timeout": "2m0s",
      "basic_auth_credentials": null,
      "headers": {},
      "cors_allowed_origins": [
        "*"
      ],
      "cors_allowed_methods": [
        "GET"
      ],
      "cors_allowed_headers": [],
      "cors_exposed_headers": [
        "Content-Type",
        "X-Stream-Output",
        "X-Chunked-Output",
        "X-Content-Length"
      ],
      "cors_allow_credentials": true,
      "cors_max_age": "0s"
    }
  },
  "ipfs_connector": {
    "ipfshttp": {
      "node_multiaddress": "/ip4/127.0.0.1/tcp/5001",
      "connect_swarms_delay": "30s",
      "pin_method": "refs",
      "ipfs_request_timeout": "5m0s",
      "pin_timeout": "24h0m0s",
      "unpin_timeout": "3h0m0s"
    }
  },
  "pin_tracker": {
    "maptracker": {
      "max_pin_queue_size": 50000,
      "concurrent_pins": 10
    },
    "stateless": {
      "max_pin_queue_size": 50000,
      "concurrent_pins": 10
    }
  },
  "monitor": {
    "monbasic": {
      "check_interval": "15s"
    },
    "pubsubmon": {
      "check_interval": "15s"
    }
  },
  "informer": {
    "disk": {
      "metric_ttl": "30s",
      "metric_type": "freespace"
    },
    "numpin": {
      "metric_ttl": "10s"
    }
  },
  "observations": {
    "metrics": {
      "enable_stats": false,
      "prometheus_endpoint": "/ip4/0.0.0.0/tcp/8888",
      "reporting_interval": "2s"
    },
    "tracing": {
      "enable_tracing": false,
      "jaeger_agent_endpoint": "/ip4/0.0.0.0/udp/6831",
      "sampling_prob": 0.3,
      "service_name": "cluster-daemon"
    }
  }
}
...