From 1d8ba56c6c7d0447423748ab4873d4a28768b991 Mon Sep 17 00:00:00 2001 From: mregrock Date: Fri, 10 Jan 2025 12:09:51 +0300 Subject: [PATCH] Change initial deployment doc --- .../yaml_config_examples/block-4-2.yaml | 264 +++----- .../deprecated/block-4-2.yaml | 185 ++++++ .../mirror-3dc-3-nodes-in-memory.yaml | 141 +++++ .../deprecated/mirror-3dc-3-nodes.yaml | 165 +++++ .../deprecated/mirror-3dc-9-nodes.yaml | 182 ++++++ .../deprecated/single-node-in-memory.yaml | 85 +++ .../deprecated/single-node-with-file.yaml | 85 +++ .../mirror-3dc-3-nodes-in-memory.yaml | 211 ++----- .../mirror-3dc-3-nodes.yaml | 233 +++---- .../mirror-3dc-9-nodes.yaml | 293 ++++----- .../single-node-in-memory.yaml | 137 ++-- .../single-node-with-file.yaml | 137 ++-- .../core/devops/manual/initial-deployment.md | 80 ++- .../cluster-expansion.md | 109 ++++ .../manual-static-group-management/index.md | 9 + .../initial-deployment.md | 597 ++++++++++++++++++ .../migration-to-distconf.md | 29 + .../migration-to-manual-configuration.md | 36 ++ .../state-storage-move.md | 11 +- .../static-group-move.md | 16 +- .../manual-static-group-management/toc_p.yaml | 13 + ydb/docs/ru/core/devops/manual/toc_p.yaml | 4 + .../maintenance/manual/cluster_expansion.md | 46 +- ydb/docs/ru/core/maintenance/manual/index.md | 2 - 24 files changed, 2165 insertions(+), 905 deletions(-) create mode 100644 ydb/deploy/yaml_config_examples/deprecated/block-4-2.yaml create mode 100644 ydb/deploy/yaml_config_examples/deprecated/mirror-3dc-3-nodes-in-memory.yaml create mode 100644 ydb/deploy/yaml_config_examples/deprecated/mirror-3dc-3-nodes.yaml create mode 100644 ydb/deploy/yaml_config_examples/deprecated/mirror-3dc-9-nodes.yaml create mode 100644 ydb/deploy/yaml_config_examples/deprecated/single-node-in-memory.yaml create mode 100644 ydb/deploy/yaml_config_examples/deprecated/single-node-with-file.yaml create mode 100644 ydb/docs/ru/core/devops/manual/manual-static-group-management/cluster-expansion.md create mode 100644 ydb/docs/ru/core/devops/manual/manual-static-group-management/index.md create mode 100644 ydb/docs/ru/core/devops/manual/manual-static-group-management/initial-deployment.md create mode 100644 ydb/docs/ru/core/devops/manual/manual-static-group-management/migration-to-distconf.md create mode 100644 ydb/docs/ru/core/devops/manual/manual-static-group-management/migration-to-manual-configuration.md rename ydb/docs/ru/core/devops/manual/{ => manual-static-group-management}/state-storage-move.md (63%) rename ydb/docs/ru/core/devops/manual/{ => manual-static-group-management}/static-group-move.md (66%) create mode 100644 ydb/docs/ru/core/devops/manual/manual-static-group-management/toc_p.yaml diff --git a/ydb/deploy/yaml_config_examples/block-4-2.yaml b/ydb/deploy/yaml_config_examples/block-4-2.yaml index a3442b76b585..c4d5643f30ac 100644 --- a/ydb/deploy/yaml_config_examples/block-4-2.yaml +++ b/ydb/deploy/yaml_config_examples/block-4-2.yaml @@ -1,185 +1,89 @@ # YDB configuration options and their values # are described in documentaion https://ydb.tech/en/docs/deploy/configuration/config -# static erasure is the parameter that -# describes the fault tolerance mode of the -# cluster. See docs for more details https://ydb.tech/en/docs/deploy/configuration/config#domains-blob -static_erasure: block-4-2 -host_configs: # the list of available host configurations in the cluster. -- drive: - - path: /dev/disk/by-partlabel/ydb_disk_ssd_01 # path of the first disk in the host configration. - type: SSD # kind of the disk: available kinds are SSD, NVME or HDD - - path: /dev/disk/by-partlabel/ydb_disk_ssd_02 - type: SSD - host_config_id: 1 # the unique id of the host config -hosts: -- host: ydb-node-zone-a-1.local # storage node DNS name - host_config_id: 1 # numeric host configuration template identifier. - walle_location: # this parameter describes where host is located. - body: 1 # string representing a host serial number. - data_center: 'zone-a' # string representing the datacenter / availability zone where the host is located. - # if cluster is deployed using mirror-3-dc fault tolerance mode, all hosts must be distributed - # across 3 datacenters. - rack: '1' # string representing a rack identifier where the host is located. - # if cluster is deployed using block-4-2 erasure, all hosts should be distrubited - # accross at least 8 racks. -- host: ydb-node-zone-a-2.local - host_config_id: 1 - walle_location: - body: 2 - data_center: 'zone-a' - rack: '2' -- host: ydb-node-zone-a-3.local - host_config_id: 1 - walle_location: - body: 3 - data_center: 'zone-a' - rack: '3' +metadata: + kind: MainConfig + cluster: "" + version: 0 +config: + yaml_config_enabled: true + erasure: block-4-2 # erasue is the parameter that describes + # the fault tolerance mode of the cluster. + # See docs for more details https://ydb.tech/en/docs/deploy/configuration/config#domains-blob + self_management_config: # automatic management of static resources (static group, state storage, etc) + enabled: true + default_disk_type: SSD # default disk type used for group creation of both kinds + host_configs: # the list of available host configurations in the cluster. + - drive: + - path: /dev/disk/by-partlabel/ydb_disk_ssd_01 # path of the first disk in the host configration. + type: SSD # kind of the disk: available kinds are SSD, NVME or HDD + - path: /dev/disk/by-partlabel/ydb_disk_ssd_02 + type: SSD + host_config_id: 1 # the unique id of the host config + hosts: + - host: ydb-node-zone-a-1.local # storage node DNS name + host_config_id: 1 # numeric host configuration template identifier. + walle_location: # this parameter describes where host is located. + body: 1 # string representing a host serial number. + data_center: 'zone-a' # string representing the datacenter / availability zone where the host is located. + # if cluster is deployed using mirror-3-dc fault tolerance mode, all hosts must be distributed + # across 3 datacenters. + rack: '1' # string representing a rack identifier where the host is located. + # if cluster is deployed using block-4-2 erasure, all hosts should be distrubited + # accross at least 8 racks. + - host: ydb-node-zone-a-2.local + host_config_id: 1 + walle_location: + body: 2 + data_center: 'zone-a' + rack: '2' + - host: ydb-node-zone-a-3.local + host_config_id: 1 + walle_location: + body: 3 + data_center: 'zone-a' + rack: '3' -- host: ydb-node-zone-a-4.local - host_config_id: 1 - walle_location: - body: 4 - data_center: 'zone-a' - rack: '4' -- host: ydb-node-zone-a-5.local - host_config_id: 1 - walle_location: - body: 5 - data_center: 'zone-a' - rack: '5' -- host: ydb-node-zone-a-6.local - host_config_id: 1 - walle_location: - body: 6 - data_center: 'zone-a' - rack: '6' + - host: ydb-node-zone-a-4.local + host_config_id: 1 + walle_location: + body: 4 + data_center: 'zone-a' + rack: '4' + - host: ydb-node-zone-a-5.local + host_config_id: 1 + walle_location: + body: 5 + data_center: 'zone-a' + rack: '5' + - host: ydb-node-zone-a-6.local + host_config_id: 1 + walle_location: + body: 6 + data_center: 'zone-a' + rack: '6' -- host: ydb-node-zone-a-7.local - host_config_id: 1 - walle_location: - body: 7 - data_center: 'zone-a' - rack: '7' -- host: ydb-node-zone-a-8.local - host_config_id: 1 - walle_location: - body: 8 - data_center: 'zone-a' - rack: '8' - -domains_config: - domain: - # There can be only one root domain in a cluster. Domain name prefixes all scheme objects names, e.g. full name of a table table1 in database db1 - # in a cluster with domains_config.domain.name parameter set to Root would be equal to /Root/db1/table1 - - name: Root - storage_pool_types: - - kind: ssd - pool_config: - box_id: 1 - # fault tolerance mode name - none, block-4-2, or mirror-3-dc. - # See docs for more details https://ydb.tech/en/docs/deploy/configuration/config#domains-blob - erasure_species: block-4-2 - kind: ssd - pdisk_filter: - - property: - - type: SSD # device type to match host_configs.drive.type - vdisk_kind: Default - state_storage: - - ring: - node: [1, 2, 3, 4, 5, 6, 7, 8] - nto_select: 5 - ssid: 1 -table_service_config: - sql_version: 1 -actor_system_config: # the configuration of the actor system which descibes how cores of the instance are distributed - executor: # accross different types of workloads in the instance. - - name: System # system executor of the actor system. in this executor YDB launches system type of workloads, like system tablets - # and reads from storage. - threads: 2 # the number of threads allocated to system executor. - type: BASIC - - name: User # user executor of the actor system. In this executor YDB launches user workloads, like datashard activities, - # queries and rpc calls. - threads: 3 # the number of threads allocated to user executor. - type: BASIC - - name: Batch # user executor of the actor system. In this executor YDB launches batch operations, like scan queries, table - # compactions, background compactions. - threads: 2 # the number of threads allocated to the batch executor. - type: BASIC - - name: IO # the io executor. In this executor launches sync operations and writes logs. - threads: 1 - time_per_mailbox_micro_secs: 100 - type: IO - - name: IC # the interconnect executor which YDB uses for network communications accross different nodes of the cluster. - spin_threshold: 10 - threads: 1 # the number of threads allocated to the interconnect executor. - time_per_mailbox_micro_secs: 100 - type: BASIC - scheduler: - progress_threshold: 10000 - resolution: 256 - spin_threshold: 0 -blob_storage_config: # configuration of static blobstorage group. - # YDB uses this group to store system tablets' data, like SchemeShard - service_set: - groups: - - erasure_species: block-4-2 # fault tolerance mode name for the static group - rings: # in block-4-2 must have exactly 1 ring or availability zone. - - fail_domains: - - vdisk_locations: # fail domains of the static group describe where each vdisk of the static group should be located. - - node_id: "ydb-node-zone-a-1.local" - pdisk_category: SSD - path: /dev/disk/by-partlabel/ydb_disk_ssd_01 - - vdisk_locations: - - node_id: "ydb-node-zone-a-2.local" - pdisk_category: SSD - path: /dev/disk/by-partlabel/ydb_disk_ssd_01 - - vdisk_locations: - - node_id: "ydb-node-zone-a-3.local" - pdisk_category: SSD - path: /dev/disk/by-partlabel/ydb_disk_ssd_01 - - vdisk_locations: - - node_id: "ydb-node-zone-a-4.local" - pdisk_category: SSD - path: /dev/disk/by-partlabel/ydb_disk_ssd_01 - - vdisk_locations: - - node_id: "ydb-node-zone-a-5.local" - pdisk_category: SSD - path: /dev/disk/by-partlabel/ydb_disk_ssd_01 - - vdisk_locations: - - node_id: "ydb-node-zone-a-6.local" - pdisk_category: SSD - path: /dev/disk/by-partlabel/ydb_disk_ssd_01 - - vdisk_locations: - - node_id: "ydb-node-zone-a-7.local" - pdisk_category: SSD - path: /dev/disk/by-partlabel/ydb_disk_ssd_01 - - vdisk_locations: - - node_id: "ydb-node-zone-a-8.local" - pdisk_category: SSD - path: /dev/disk/by-partlabel/ydb_disk_ssd_01 -channel_profile_config: - profile: - - channel: - - erasure_species: block-4-2 - pdisk_category: 1 - storage_pool_kind: ssd - - erasure_species: block-4-2 - pdisk_category: 1 - storage_pool_kind: ssd - - erasure_species: block-4-2 - pdisk_category: 1 - storage_pool_kind: ssd - profile_id: 0 -interconnect_config: - start_tcp: true - encryption_mode: OPTIONAL - path_to_certificate_file: "/opt/ydb/certs/node.crt" - path_to_private_key_file: "/opt/ydb/certs/node.key" - path_to_ca_file: "/opt/ydb/certs/ca.crt" -grpc_config: - cert: "/opt/ydb/certs/node.crt" - key: "/opt/ydb/certs/node.key" - ca: "/opt/ydb/certs/ca.crt" - services_enabled: - - legacy + - host: ydb-node-zone-a-7.local + host_config_id: 1 + walle_location: + body: 7 + data_center: 'zone-a' + rack: '7' + - host: ydb-node-zone-a-8.local + host_config_id: 1 + walle_location: + body: 8 + data_center: 'zone-a' + rack: '8' + interconnect_config: + start_tcp: true + encryption_mode: OPTIONAL + path_to_certificate_file: "/opt/ydb/certs/node.crt" + path_to_private_key_file: "/opt/ydb/certs/node.key" + path_to_ca_file: "/opt/ydb/certs/ca.crt" + grpc_config: + cert: "/opt/ydb/certs/node.crt" + key: "/opt/ydb/certs/node.key" + ca: "/opt/ydb/certs/ca.crt" + services_enabled: + - legacy diff --git a/ydb/deploy/yaml_config_examples/deprecated/block-4-2.yaml b/ydb/deploy/yaml_config_examples/deprecated/block-4-2.yaml new file mode 100644 index 000000000000..a3442b76b585 --- /dev/null +++ b/ydb/deploy/yaml_config_examples/deprecated/block-4-2.yaml @@ -0,0 +1,185 @@ +# YDB configuration options and their values +# are described in documentaion https://ydb.tech/en/docs/deploy/configuration/config + +# static erasure is the parameter that +# describes the fault tolerance mode of the +# cluster. See docs for more details https://ydb.tech/en/docs/deploy/configuration/config#domains-blob +static_erasure: block-4-2 +host_configs: # the list of available host configurations in the cluster. +- drive: + - path: /dev/disk/by-partlabel/ydb_disk_ssd_01 # path of the first disk in the host configration. + type: SSD # kind of the disk: available kinds are SSD, NVME or HDD + - path: /dev/disk/by-partlabel/ydb_disk_ssd_02 + type: SSD + host_config_id: 1 # the unique id of the host config +hosts: +- host: ydb-node-zone-a-1.local # storage node DNS name + host_config_id: 1 # numeric host configuration template identifier. + walle_location: # this parameter describes where host is located. + body: 1 # string representing a host serial number. + data_center: 'zone-a' # string representing the datacenter / availability zone where the host is located. + # if cluster is deployed using mirror-3-dc fault tolerance mode, all hosts must be distributed + # across 3 datacenters. + rack: '1' # string representing a rack identifier where the host is located. + # if cluster is deployed using block-4-2 erasure, all hosts should be distrubited + # accross at least 8 racks. +- host: ydb-node-zone-a-2.local + host_config_id: 1 + walle_location: + body: 2 + data_center: 'zone-a' + rack: '2' +- host: ydb-node-zone-a-3.local + host_config_id: 1 + walle_location: + body: 3 + data_center: 'zone-a' + rack: '3' + +- host: ydb-node-zone-a-4.local + host_config_id: 1 + walle_location: + body: 4 + data_center: 'zone-a' + rack: '4' +- host: ydb-node-zone-a-5.local + host_config_id: 1 + walle_location: + body: 5 + data_center: 'zone-a' + rack: '5' +- host: ydb-node-zone-a-6.local + host_config_id: 1 + walle_location: + body: 6 + data_center: 'zone-a' + rack: '6' + +- host: ydb-node-zone-a-7.local + host_config_id: 1 + walle_location: + body: 7 + data_center: 'zone-a' + rack: '7' +- host: ydb-node-zone-a-8.local + host_config_id: 1 + walle_location: + body: 8 + data_center: 'zone-a' + rack: '8' + +domains_config: + domain: + # There can be only one root domain in a cluster. Domain name prefixes all scheme objects names, e.g. full name of a table table1 in database db1 + # in a cluster with domains_config.domain.name parameter set to Root would be equal to /Root/db1/table1 + - name: Root + storage_pool_types: + - kind: ssd + pool_config: + box_id: 1 + # fault tolerance mode name - none, block-4-2, or mirror-3-dc. + # See docs for more details https://ydb.tech/en/docs/deploy/configuration/config#domains-blob + erasure_species: block-4-2 + kind: ssd + pdisk_filter: + - property: + - type: SSD # device type to match host_configs.drive.type + vdisk_kind: Default + state_storage: + - ring: + node: [1, 2, 3, 4, 5, 6, 7, 8] + nto_select: 5 + ssid: 1 +table_service_config: + sql_version: 1 +actor_system_config: # the configuration of the actor system which descibes how cores of the instance are distributed + executor: # accross different types of workloads in the instance. + - name: System # system executor of the actor system. in this executor YDB launches system type of workloads, like system tablets + # and reads from storage. + threads: 2 # the number of threads allocated to system executor. + type: BASIC + - name: User # user executor of the actor system. In this executor YDB launches user workloads, like datashard activities, + # queries and rpc calls. + threads: 3 # the number of threads allocated to user executor. + type: BASIC + - name: Batch # user executor of the actor system. In this executor YDB launches batch operations, like scan queries, table + # compactions, background compactions. + threads: 2 # the number of threads allocated to the batch executor. + type: BASIC + - name: IO # the io executor. In this executor launches sync operations and writes logs. + threads: 1 + time_per_mailbox_micro_secs: 100 + type: IO + - name: IC # the interconnect executor which YDB uses for network communications accross different nodes of the cluster. + spin_threshold: 10 + threads: 1 # the number of threads allocated to the interconnect executor. + time_per_mailbox_micro_secs: 100 + type: BASIC + scheduler: + progress_threshold: 10000 + resolution: 256 + spin_threshold: 0 +blob_storage_config: # configuration of static blobstorage group. + # YDB uses this group to store system tablets' data, like SchemeShard + service_set: + groups: + - erasure_species: block-4-2 # fault tolerance mode name for the static group + rings: # in block-4-2 must have exactly 1 ring or availability zone. + - fail_domains: + - vdisk_locations: # fail domains of the static group describe where each vdisk of the static group should be located. + - node_id: "ydb-node-zone-a-1.local" + pdisk_category: SSD + path: /dev/disk/by-partlabel/ydb_disk_ssd_01 + - vdisk_locations: + - node_id: "ydb-node-zone-a-2.local" + pdisk_category: SSD + path: /dev/disk/by-partlabel/ydb_disk_ssd_01 + - vdisk_locations: + - node_id: "ydb-node-zone-a-3.local" + pdisk_category: SSD + path: /dev/disk/by-partlabel/ydb_disk_ssd_01 + - vdisk_locations: + - node_id: "ydb-node-zone-a-4.local" + pdisk_category: SSD + path: /dev/disk/by-partlabel/ydb_disk_ssd_01 + - vdisk_locations: + - node_id: "ydb-node-zone-a-5.local" + pdisk_category: SSD + path: /dev/disk/by-partlabel/ydb_disk_ssd_01 + - vdisk_locations: + - node_id: "ydb-node-zone-a-6.local" + pdisk_category: SSD + path: /dev/disk/by-partlabel/ydb_disk_ssd_01 + - vdisk_locations: + - node_id: "ydb-node-zone-a-7.local" + pdisk_category: SSD + path: /dev/disk/by-partlabel/ydb_disk_ssd_01 + - vdisk_locations: + - node_id: "ydb-node-zone-a-8.local" + pdisk_category: SSD + path: /dev/disk/by-partlabel/ydb_disk_ssd_01 +channel_profile_config: + profile: + - channel: + - erasure_species: block-4-2 + pdisk_category: 1 + storage_pool_kind: ssd + - erasure_species: block-4-2 + pdisk_category: 1 + storage_pool_kind: ssd + - erasure_species: block-4-2 + pdisk_category: 1 + storage_pool_kind: ssd + profile_id: 0 +interconnect_config: + start_tcp: true + encryption_mode: OPTIONAL + path_to_certificate_file: "/opt/ydb/certs/node.crt" + path_to_private_key_file: "/opt/ydb/certs/node.key" + path_to_ca_file: "/opt/ydb/certs/ca.crt" +grpc_config: + cert: "/opt/ydb/certs/node.crt" + key: "/opt/ydb/certs/node.key" + ca: "/opt/ydb/certs/ca.crt" + services_enabled: + - legacy diff --git a/ydb/deploy/yaml_config_examples/deprecated/mirror-3dc-3-nodes-in-memory.yaml b/ydb/deploy/yaml_config_examples/deprecated/mirror-3dc-3-nodes-in-memory.yaml new file mode 100644 index 000000000000..a84b1a10262a --- /dev/null +++ b/ydb/deploy/yaml_config_examples/deprecated/mirror-3dc-3-nodes-in-memory.yaml @@ -0,0 +1,141 @@ +static_erasure: mirror-3-dc +host_configs: +- drive: + - path: SectorMap:1:64 + type: SSD + - path: SectorMap:2:64 + type: SSD + - path: SectorMap:3:64 + type: SSD + host_config_id: 1 +hosts: +- host: localhost + host_config_id: 1 + port: 19001 + walle_location: + body: 1 + data_center: '1' + rack: '1' +- host: localhost + host_config_id: 1 + port: 19002 + walle_location: + body: 2 + data_center: '2' + rack: '2' +- host: localhost + host_config_id: 1 + port: 19003 + walle_location: + body: 3 + data_center: '3' + rack: '3' +domains_config: + domain: + - name: Root + storage_pool_types: + - kind: ssd + pool_config: + box_id: 1 + erasure_species: mirror-3-dc + kind: ssd + geometry: + realm_level_begin: 10 + realm_level_end: 20 + domain_level_begin: 10 + domain_level_end: 256 + pdisk_filter: + - property: + - type: SSD + vdisk_kind: Default + state_storage: + - ring: + node: [1, 2, 3] + nto_select: 3 + ssid: 1 +table_service_config: + sql_version: 1 +actor_system_config: + executor: + - name: System + spin_threshold: 0 + threads: 2 + type: BASIC + - name: User + spin_threshold: 0 + threads: 3 + type: BASIC + - name: Batch + spin_threshold: 0 + threads: 2 + type: BASIC + - name: IO + threads: 1 + time_per_mailbox_micro_secs: 100 + type: IO + - name: IC + spin_threshold: 10 + threads: 1 + time_per_mailbox_micro_secs: 100 + type: BASIC + scheduler: + progress_threshold: 10000 + resolution: 256 + spin_threshold: 0 +blob_storage_config: + service_set: + groups: + - erasure_species: mirror-3-dc + rings: + - fail_domains: + - vdisk_locations: + - node_id: "localhost:19001" + pdisk_category: SSD + path: SectorMap:1:64 + - vdisk_locations: + - node_id: "localhost:19001" + pdisk_category: SSD + path: SectorMap:2:64 + - vdisk_locations: + - node_id: "localhost:19001" + pdisk_category: SSD + path: SectorMap:3:64 + - fail_domains: + - vdisk_locations: + - node_id: "localhost:19002" + pdisk_category: SSD + path: SectorMap:1:64 + - vdisk_locations: + - node_id: "localhost:19002" + pdisk_category: SSD + path: SectorMap:2:64 + - vdisk_locations: + - node_id: "localhost:19002" + pdisk_category: SSD + path: SectorMap:3:64 + - fail_domains: + - vdisk_locations: + - node_id: "localhost:19003" + pdisk_category: SSD + path: SectorMap:1:64 + - vdisk_locations: + - node_id: "localhost:19003" + pdisk_category: SSD + path: SectorMap:2:64 + - vdisk_locations: + - node_id: "localhost:19003" + pdisk_category: SSD + path: SectorMap:3:64 +channel_profile_config: + profile: + - channel: + - erasure_species: mirror-3-dc + pdisk_category: 1 + storage_pool_kind: ssd + - erasure_species: mirror-3-dc + pdisk_category: 1 + storage_pool_kind: ssd + - erasure_species: mirror-3-dc + pdisk_category: 1 + storage_pool_kind: ssd + profile_id: 0 diff --git a/ydb/deploy/yaml_config_examples/deprecated/mirror-3dc-3-nodes.yaml b/ydb/deploy/yaml_config_examples/deprecated/mirror-3dc-3-nodes.yaml new file mode 100644 index 000000000000..c5f0757f7fac --- /dev/null +++ b/ydb/deploy/yaml_config_examples/deprecated/mirror-3dc-3-nodes.yaml @@ -0,0 +1,165 @@ +# YDB configuration options and their values +# are described in documentaion https://ydb.tech/en/docs/deploy/configuration/config + +# static erasure is the parameter that +# describes the fault tolerance mode of the +# cluster. See docs for more details https://ydb.tech/en/docs/deploy/configuration/config#domains-blob +static_erasure: mirror-3-dc +host_configs: # the list of available host configurations in the cluster. +- drive: + - path: /dev/disk/by-partlabel/ydb_disk_ssd_01 # path of the first disk in the host configration. + type: SSD # kind of the disk: available kinds are SSD, NVME, HDD + - path: /dev/disk/by-partlabel/ydb_disk_ssd_02 + type: SSD + - path: /dev/disk/by-partlabel/ydb_disk_ssd_03 + type: SSD + host_config_id: 1 +hosts: +- host: ydb-node-zone-a.local # storage node DNS name + host_config_id: 1 # numeric host configuration template identifier + walle_location: # this parameter describes where host is located. + body: 1 # string representing a host serial number. + data_center: 'zone-a' # string representing the datacenter / availability zone where the host is located. + # if cluster is deployed using mirror-3-dc fault tolerance mode, all hosts must be distributed + # across 3 datacenters. + rack: '1' # string representing a rack identifier where the host is located. + # if cluster is deployed using block-4-2 erasure, all hosts should be distrubited + # accross at least 8 racks. +- host: ydb-node-zone-b.local + host_config_id: 1 + walle_location: + body: 2 + data_center: 'zone-b' + rack: '2' +- host: ydb-node-zone-c.local + host_config_id: 1 + walle_location: + body: 3 + data_center: 'zone-c' + rack: '3' +domains_config: + # There can be only one root domain in a cluster. Domain name prefixes all scheme objects names, e.g. full name of a table table1 in database db1. + # in a cluster with domains_config.domain.name parameter set to Root would be equal to /Root/db1/table1 + domain: + - name: Root + storage_pool_types: + - kind: ssd + pool_config: + box_id: 1 + # fault tolerance mode name - none, block-4-2, or mirror-3-dc.. + # See docs for more details https://ydb.tech/en/docs/deploy/configuration/config#domains-blob + erasure_species: mirror-3-dc + kind: ssd + geometry: + realm_level_begin: 10 + realm_level_end: 20 + domain_level_begin: 10 + domain_level_end: 256 + pdisk_filter: + - property: + - type: SSD # device type to match host_configs.drive.type + vdisk_kind: Default + state_storage: + - ring: + node: [1, 2, 3] + nto_select: 3 + ssid: 1 +table_service_config: + sql_version: 1 +actor_system_config: # the configuration of the actor system which descibes how cores of the instance are distributed + executor: # accross different types of workloads in the instance. + - name: System # system executor of the actor system. in this executor YDB launches system type of workloads, like system tablets + # and reads from storage. + threads: 2 # the number of threads allocated to system executor. + type: BASIC + - name: User # user executor of the actor system. In this executor YDB launches user workloads, like datashard activities, + # queries and rpc calls. + threads: 3 # the number of threads allocated to user executor. + type: BASIC + - name: Batch # user executor of the actor system. In this executor YDB launches batch operations, like scan queries, table + # compactions, background compactions. + threads: 2 # the number of threads allocated to the batch executor. + type: BASIC + - name: IO # the io executor. In this executor launches sync operations and writes logs. + threads: 1 + time_per_mailbox_micro_secs: 100 + type: IO + - name: IC # the interconnect executor which YDB uses for network communications accross different nodes of the cluster. + spin_threshold: 10 + threads: 1 # the number of threads allocated to the interconnect executor. + time_per_mailbox_micro_secs: 100 + type: BASIC + scheduler: + progress_threshold: 10000 + resolution: 256 + spin_threshold: 0 +blob_storage_config: # configuration of static blobstorage group. + # YDB uses this group to store system tablets' data, like SchemeShard + service_set: + groups: + - erasure_species: mirror-3-dc # fault tolerance mode name for the static group + rings: # in mirror-3-dc must have exactly 3 rings or availability zones + - fail_domains: # first record: fail domains of the static group describe where each vdisk of the static group should be located. + - vdisk_locations: + - node_id: ydb-node-zone-a.local + pdisk_category: SSD + path: /dev/disk/by-partlabel/ydb_disk_ssd_01 + - vdisk_locations: + - node_id: ydb-node-zone-a.local + pdisk_category: SSD + path: /dev/disk/by-partlabel/ydb_disk_ssd_02 + - vdisk_locations: + - node_id: ydb-node-zone-a.local + pdisk_category: SSD + path: /dev/disk/by-partlabel/ydb_disk_ssd_03 + - fail_domains: # second ring: fail domains of the static group describe where each vdisk of the static group should be located. + - vdisk_locations: + - node_id: ydb-node-zone-b.local + pdisk_category: SSD + path: /dev/disk/by-partlabel/ydb_disk_ssd_01 + - vdisk_locations: + - node_id: ydb-node-zone-b.local + pdisk_category: SSD + path: /dev/disk/by-partlabel/ydb_disk_ssd_02 + - vdisk_locations: + - node_id: ydb-node-zone-b.local + pdisk_category: SSD + path: /dev/disk/by-partlabel/ydb_disk_ssd_03 + - fail_domains: # third ring: fail domains of the static group describe where each vdisk of the static group should be located. + - vdisk_locations: + - node_id: ydb-node-zone-c.local + pdisk_category: SSD + path: /dev/disk/by-partlabel/ydb_disk_ssd_01 + - vdisk_locations: + - node_id: ydb-node-zone-c.local + pdisk_category: SSD + path: /dev/disk/by-partlabel/ydb_disk_ssd_02 + - vdisk_locations: + - node_id: ydb-node-zone-c.local + pdisk_category: SSD + path: /dev/disk/by-partlabel/ydb_disk_ssd_03 +channel_profile_config: + profile: + - channel: + - erasure_species: mirror-3-dc + pdisk_category: 0 + storage_pool_kind: ssd + - erasure_species: mirror-3-dc + pdisk_category: 0 + storage_pool_kind: ssd + - erasure_species: mirror-3-dc + pdisk_category: 0 + storage_pool_kind: ssd + profile_id: 0 +interconnect_config: + start_tcp: true + encryption_mode: OPTIONAL + path_to_certificate_file: "/opt/ydb/certs/node.crt" + path_to_private_key_file: "/opt/ydb/certs/node.key" + path_to_ca_file: "/opt/ydb/certs/ca.crt" +grpc_config: + cert: "/opt/ydb/certs/node.crt" + key: "/opt/ydb/certs/node.key" + ca: "/opt/ydb/certs/ca.crt" + services_enabled: + - legacy diff --git a/ydb/deploy/yaml_config_examples/deprecated/mirror-3dc-9-nodes.yaml b/ydb/deploy/yaml_config_examples/deprecated/mirror-3dc-9-nodes.yaml new file mode 100644 index 000000000000..ccb58cd2581e --- /dev/null +++ b/ydb/deploy/yaml_config_examples/deprecated/mirror-3dc-9-nodes.yaml @@ -0,0 +1,182 @@ +static_erasure: mirror-3-dc +host_configs: +- drive: + - path: /dev/disk/by-partlabel/ydb_disk_ssd_01 + type: SSD + - path: /dev/disk/by-partlabel/ydb_disk_ssd_02 + type: SSD + host_config_id: 1 +hosts: +- host: ydb-node-zone-a-1.local + host_config_id: 1 + walle_location: + body: 1 + data_center: 'zone-a' + rack: '1' +- host: ydb-node-zone-a-2.local + host_config_id: 1 + walle_location: + body: 2 + data_center: 'zone-a' + rack: '2' +- host: ydb-node-zone-a-3.local + host_config_id: 1 + walle_location: + body: 3 + data_center: 'zone-a' + rack: '3' + +- host: ydb-node-zone-b-1.local + host_config_id: 1 + walle_location: + body: 4 + data_center: 'zone-b' + rack: '4' +- host: ydb-node-zone-b-2.local + host_config_id: 1 + walle_location: + body: 5 + data_center: 'zone-b' + rack: '5' +- host: ydb-node-zone-b-3.local + host_config_id: 1 + walle_location: + body: 6 + data_center: 'zone-b' + rack: '6' + +- host: ydb-node-zone-c-1.local + host_config_id: 1 + walle_location: + body: 7 + data_center: 'zone-c' + rack: '7' +- host: ydb-node-zone-c-2.local + host_config_id: 1 + walle_location: + body: 8 + data_center: 'zone-c' + rack: '8' +- host: ydb-node-zone-c-3.local + host_config_id: 1 + walle_location: + body: 9 + data_center: 'zone-c' + rack: '9' + +domains_config: + domain: + - name: Root + storage_pool_types: + - kind: ssd + pool_config: + box_id: 1 + erasure_species: mirror-3-dc + kind: ssd + pdisk_filter: + - property: + - type: SSD + vdisk_kind: Default + state_storage: + - ring: + node: [1, 2, 3, 4, 5, 6, 7, 8, 9] + nto_select: 9 + ssid: 1 +table_service_config: + sql_version: 1 +actor_system_config: + executor: + - name: System + spin_threshold: 0 + threads: 2 + type: BASIC + - name: User + spin_threshold: 0 + threads: 3 + type: BASIC + - name: Batch + spin_threshold: 0 + threads: 2 + type: BASIC + - name: IO + threads: 1 + time_per_mailbox_micro_secs: 100 + type: IO + - name: IC + spin_threshold: 10 + threads: 1 + time_per_mailbox_micro_secs: 100 + type: BASIC + scheduler: + progress_threshold: 10000 + resolution: 256 + spin_threshold: 0 +blob_storage_config: + service_set: + groups: + - erasure_species: mirror-3-dc + rings: + - fail_domains: + - vdisk_locations: + - node_id: "ydb-node-zone-a-1.local" + pdisk_category: SSD + path: /dev/disk/by-partlabel/ydb_disk_ssd_01 + - vdisk_locations: + - node_id: "ydb-node-zone-a-2.local" + pdisk_category: SSD + path: /dev/disk/by-partlabel/ydb_disk_ssd_01 + - vdisk_locations: + - node_id: "ydb-node-zone-a-3.local" + pdisk_category: SSD + path: /dev/disk/by-partlabel/ydb_disk_ssd_01 + - fail_domains: + - vdisk_locations: + - node_id: "ydb-node-zone-b-1.local" + pdisk_category: SSD + path: /dev/disk/by-partlabel/ydb_disk_ssd_01 + - vdisk_locations: + - node_id: "ydb-node-zone-b-2.local" + pdisk_category: SSD + path: /dev/disk/by-partlabel/ydb_disk_ssd_01 + - vdisk_locations: + - node_id: "ydb-node-zone-b-3.local" + pdisk_category: SSD + path: /dev/disk/by-partlabel/ydb_disk_ssd_01 + - fail_domains: + - vdisk_locations: + - node_id: "ydb-node-zone-c-1.local" + pdisk_category: SSD + path: /dev/disk/by-partlabel/ydb_disk_ssd_01 + - vdisk_locations: + - node_id: "ydb-node-zone-c-2.local" + pdisk_category: SSD + path: /dev/disk/by-partlabel/ydb_disk_ssd_01 + - vdisk_locations: + - node_id: "ydb-node-zone-c-3.local" + pdisk_category: SSD + path: /dev/disk/by-partlabel/ydb_disk_ssd_01 +channel_profile_config: + profile: + - channel: + - erasure_species: mirror-3-dc + pdisk_category: 1 + storage_pool_kind: ssd + - erasure_species: mirror-3-dc + pdisk_category: 1 + storage_pool_kind: ssd + - erasure_species: mirror-3-dc + pdisk_category: 1 + storage_pool_kind: ssd + profile_id: 0 +interconnect_config: + start_tcp: true + encryption_mode: OPTIONAL + path_to_certificate_file: "/opt/ydb/certs/node.crt" + path_to_private_key_file: "/opt/ydb/certs/node.key" + path_to_ca_file: "/opt/ydb/certs/ca.crt" +grpc_config: + cert: "/opt/ydb/certs/node.crt" + key: "/opt/ydb/certs/node.key" + ca: "/opt/ydb/certs/ca.crt" + services_enabled: + - legacy diff --git a/ydb/deploy/yaml_config_examples/deprecated/single-node-in-memory.yaml b/ydb/deploy/yaml_config_examples/deprecated/single-node-in-memory.yaml new file mode 100644 index 000000000000..539c7c02884d --- /dev/null +++ b/ydb/deploy/yaml_config_examples/deprecated/single-node-in-memory.yaml @@ -0,0 +1,85 @@ +static_erasure: none +host_configs: +- drive: + - path: SectorMap:1:64 + type: SSD + host_config_id: 1 +hosts: +- host: localhost + host_config_id: 1 + port: 19001 + walle_location: + body: 1 + data_center: '1' + rack: '1' +domains_config: + domain: + - name: Root + storage_pool_types: + - kind: ssd + pool_config: + box_id: 1 + erasure_species: none + kind: ssd + pdisk_filter: + - property: + - type: SSD + vdisk_kind: Default + state_storage: + - ring: + node: + - 1 + nto_select: 1 + ssid: 1 +table_service_config: + sql_version: 1 +actor_system_config: + executor: + - name: System + spin_threshold: 0 + threads: 2 + type: BASIC + - name: User + spin_threshold: 0 + threads: 3 + type: BASIC + - name: Batch + spin_threshold: 0 + threads: 2 + type: BASIC + - name: IO + threads: 1 + time_per_mailbox_micro_secs: 100 + type: IO + - name: IC + spin_threshold: 10 + threads: 1 + time_per_mailbox_micro_secs: 100 + type: BASIC + scheduler: + progress_threshold: 10000 + resolution: 256 + spin_threshold: 0 +blob_storage_config: + service_set: + groups: + - erasure_species: none + rings: + - fail_domains: + - vdisk_locations: + - node_id: 1 + path: SectorMap:1:64 + pdisk_category: SSD +channel_profile_config: + profile: + - channel: + - erasure_species: none + pdisk_category: 1 + storage_pool_kind: ssd + - erasure_species: none + pdisk_category: 1 + storage_pool_kind: ssd + - erasure_species: none + pdisk_category: 1 + storage_pool_kind: ssd + profile_id: 0 diff --git a/ydb/deploy/yaml_config_examples/deprecated/single-node-with-file.yaml b/ydb/deploy/yaml_config_examples/deprecated/single-node-with-file.yaml new file mode 100644 index 000000000000..b5be946fc8f2 --- /dev/null +++ b/ydb/deploy/yaml_config_examples/deprecated/single-node-with-file.yaml @@ -0,0 +1,85 @@ +static_erasure: none +host_configs: +- drive: + - path: /tmp/pdisk.data + type: SSD + host_config_id: 1 +hosts: +- host: localhost + host_config_id: 1 + port: 19001 + walle_location: + body: 1 + data_center: '1' + rack: '1' +domains_config: + domain: + - name: Root + storage_pool_types: + - kind: ssd + pool_config: + box_id: 1 + erasure_species: none + kind: ssd + pdisk_filter: + - property: + - type: SSD + vdisk_kind: Default + state_storage: + - ring: + node: + - 1 + nto_select: 1 + ssid: 1 +table_service_config: + sql_version: 1 +actor_system_config: + executor: + - name: System + spin_threshold: 0 + threads: 2 + type: BASIC + - name: User + spin_threshold: 0 + threads: 3 + type: BASIC + - name: Batch + spin_threshold: 0 + threads: 2 + type: BASIC + - name: IO + threads: 1 + time_per_mailbox_micro_secs: 100 + type: IO + - name: IC + spin_threshold: 10 + threads: 1 + time_per_mailbox_micro_secs: 100 + type: BASIC + scheduler: + progress_threshold: 10000 + resolution: 256 + spin_threshold: 0 +blob_storage_config: + service_set: + groups: + - erasure_species: none + rings: + - fail_domains: + - vdisk_locations: + - node_id: 1 + path: /tmp/pdisk.data + pdisk_category: SSD +channel_profile_config: + profile: + - channel: + - erasure_species: none + pdisk_category: 0 + storage_pool_kind: ssd + - erasure_species: none + pdisk_category: 0 + storage_pool_kind: ssd + - erasure_species: none + pdisk_category: 0 + storage_pool_kind: ssd + profile_id: 0 diff --git a/ydb/deploy/yaml_config_examples/mirror-3dc-3-nodes-in-memory.yaml b/ydb/deploy/yaml_config_examples/mirror-3dc-3-nodes-in-memory.yaml index a84b1a10262a..fddbaac05ad3 100644 --- a/ydb/deploy/yaml_config_examples/mirror-3dc-3-nodes-in-memory.yaml +++ b/ydb/deploy/yaml_config_examples/mirror-3dc-3-nodes-in-memory.yaml @@ -1,141 +1,70 @@ -static_erasure: mirror-3-dc -host_configs: -- drive: - - path: SectorMap:1:64 - type: SSD - - path: SectorMap:2:64 - type: SSD - - path: SectorMap:3:64 - type: SSD - host_config_id: 1 -hosts: -- host: localhost - host_config_id: 1 - port: 19001 - walle_location: - body: 1 - data_center: '1' - rack: '1' -- host: localhost - host_config_id: 1 - port: 19002 - walle_location: - body: 2 - data_center: '2' - rack: '2' -- host: localhost - host_config_id: 1 - port: 19003 - walle_location: - body: 3 - data_center: '3' - rack: '3' -domains_config: - domain: - - name: Root - storage_pool_types: - - kind: ssd - pool_config: - box_id: 1 - erasure_species: mirror-3-dc - kind: ssd - geometry: - realm_level_begin: 10 - realm_level_end: 20 - domain_level_begin: 10 - domain_level_end: 256 - pdisk_filter: - - property: - - type: SSD - vdisk_kind: Default - state_storage: - - ring: - node: [1, 2, 3] - nto_select: 3 - ssid: 1 -table_service_config: - sql_version: 1 -actor_system_config: - executor: - - name: System - spin_threshold: 0 - threads: 2 - type: BASIC - - name: User - spin_threshold: 0 - threads: 3 - type: BASIC - - name: Batch - spin_threshold: 0 - threads: 2 - type: BASIC - - name: IO - threads: 1 - time_per_mailbox_micro_secs: 100 - type: IO - - name: IC - spin_threshold: 10 - threads: 1 - time_per_mailbox_micro_secs: 100 - type: BASIC - scheduler: - progress_threshold: 10000 - resolution: 256 - spin_threshold: 0 -blob_storage_config: - service_set: - groups: - - erasure_species: mirror-3-dc - rings: - - fail_domains: - - vdisk_locations: - - node_id: "localhost:19001" - pdisk_category: SSD - path: SectorMap:1:64 - - vdisk_locations: - - node_id: "localhost:19001" - pdisk_category: SSD - path: SectorMap:2:64 - - vdisk_locations: - - node_id: "localhost:19001" - pdisk_category: SSD - path: SectorMap:3:64 - - fail_domains: - - vdisk_locations: - - node_id: "localhost:19002" - pdisk_category: SSD - path: SectorMap:1:64 - - vdisk_locations: - - node_id: "localhost:19002" - pdisk_category: SSD - path: SectorMap:2:64 - - vdisk_locations: - - node_id: "localhost:19002" - pdisk_category: SSD - path: SectorMap:3:64 - - fail_domains: - - vdisk_locations: - - node_id: "localhost:19003" - pdisk_category: SSD - path: SectorMap:1:64 - - vdisk_locations: - - node_id: "localhost:19003" - pdisk_category: SSD - path: SectorMap:2:64 - - vdisk_locations: - - node_id: "localhost:19003" - pdisk_category: SSD - path: SectorMap:3:64 -channel_profile_config: - profile: - - channel: - - erasure_species: mirror-3-dc - pdisk_category: 1 - storage_pool_kind: ssd - - erasure_species: mirror-3-dc - pdisk_category: 1 - storage_pool_kind: ssd - - erasure_species: mirror-3-dc - pdisk_category: 1 - storage_pool_kind: ssd - profile_id: 0 +metadata: + kind: MainConfig + cluster: "" + version: 0 +config: + yaml_config_enabled: true + erasure: mirror-3-dc + self_management_config: + enabled: true + default_disk_type: SSD + host_configs: + - drive: + - path: SectorMap:1:64 + type: SSD + - path: SectorMap:2:64 + type: SSD + - path: SectorMap:3:64 + type: SSD + host_config_id: 1 + hosts: + - host: localhost + host_config_id: 1 + port: 19001 + walle_location: + body: 1 + data_center: '1' + rack: '1' + - host: localhost + host_config_id: 1 + port: 19002 + walle_location: + body: 2 + data_center: '2' + rack: '2' + - host: localhost + host_config_id: 1 + port: 19003 + walle_location: + body: 3 + data_center: '3' + rack: '3' + table_service_config: + sql_version: 1 + actor_system_config: + executor: + - name: System + spin_threshold: 0 + threads: 2 + type: BASIC + - name: User + spin_threshold: 0 + threads: 3 + type: BASIC + - name: Batch + spin_threshold: 0 + threads: 2 + type: BASIC + - name: IO + threads: 1 + time_per_mailbox_micro_secs: 100 + type: IO + - name: IC + spin_threshold: 10 + threads: 1 + time_per_mailbox_micro_secs: 100 + type: BASIC + scheduler: + progress_threshold: 10000 + resolution: 256 + spin_threshold: 0 diff --git a/ydb/deploy/yaml_config_examples/mirror-3dc-3-nodes.yaml b/ydb/deploy/yaml_config_examples/mirror-3dc-3-nodes.yaml index c5f0757f7fac..4f2533091b2e 100644 --- a/ydb/deploy/yaml_config_examples/mirror-3dc-3-nodes.yaml +++ b/ydb/deploy/yaml_config_examples/mirror-3dc-3-nodes.yaml @@ -1,12 +1,20 @@ # YDB configuration options and their values # are described in documentaion https://ydb.tech/en/docs/deploy/configuration/config -# static erasure is the parameter that -# describes the fault tolerance mode of the -# cluster. See docs for more details https://ydb.tech/en/docs/deploy/configuration/config#domains-blob -static_erasure: mirror-3-dc -host_configs: # the list of available host configurations in the cluster. -- drive: +metadata: + kind: MainConfig + cluster: "" + version: 0 +config: + yaml_config_enabled: true + erasure: mirror-3-dc # erasue is the parameter that describes + # the fault tolerance mode of the cluster. + # See docs for more details https://ydb.tech/en/docs/deploy/configuration/config#domains-blob + self_management_config: # automatic management of static resources (static group, state storage, etc) + enabled: true + default_disk_type: SSD # default disk type used for group creation of both kinds + host_configs: # the list of available host configurations in the cluster. + - drive: - path: /dev/disk/by-partlabel/ydb_disk_ssd_01 # path of the first disk in the host configration. type: SSD # kind of the disk: available kinds are SSD, NVME, HDD - path: /dev/disk/by-partlabel/ydb_disk_ssd_02 @@ -14,152 +22,67 @@ host_configs: # the list of available host configurations in the cluster. - path: /dev/disk/by-partlabel/ydb_disk_ssd_03 type: SSD host_config_id: 1 -hosts: -- host: ydb-node-zone-a.local # storage node DNS name - host_config_id: 1 # numeric host configuration template identifier - walle_location: # this parameter describes where host is located. - body: 1 # string representing a host serial number. - data_center: 'zone-a' # string representing the datacenter / availability zone where the host is located. - # if cluster is deployed using mirror-3-dc fault tolerance mode, all hosts must be distributed - # across 3 datacenters. - rack: '1' # string representing a rack identifier where the host is located. - # if cluster is deployed using block-4-2 erasure, all hosts should be distrubited - # accross at least 8 racks. -- host: ydb-node-zone-b.local - host_config_id: 1 - walle_location: - body: 2 - data_center: 'zone-b' - rack: '2' -- host: ydb-node-zone-c.local - host_config_id: 1 - walle_location: - body: 3 - data_center: 'zone-c' - rack: '3' -domains_config: - # There can be only one root domain in a cluster. Domain name prefixes all scheme objects names, e.g. full name of a table table1 in database db1. - # in a cluster with domains_config.domain.name parameter set to Root would be equal to /Root/db1/table1 - domain: - - name: Root - storage_pool_types: - - kind: ssd - pool_config: - box_id: 1 - # fault tolerance mode name - none, block-4-2, or mirror-3-dc.. - # See docs for more details https://ydb.tech/en/docs/deploy/configuration/config#domains-blob - erasure_species: mirror-3-dc - kind: ssd - geometry: - realm_level_begin: 10 - realm_level_end: 20 - domain_level_begin: 10 - domain_level_end: 256 - pdisk_filter: - - property: - - type: SSD # device type to match host_configs.drive.type - vdisk_kind: Default - state_storage: - - ring: - node: [1, 2, 3] - nto_select: 3 - ssid: 1 -table_service_config: - sql_version: 1 -actor_system_config: # the configuration of the actor system which descibes how cores of the instance are distributed - executor: # accross different types of workloads in the instance. - - name: System # system executor of the actor system. in this executor YDB launches system type of workloads, like system tablets - # and reads from storage. - threads: 2 # the number of threads allocated to system executor. - type: BASIC - - name: User # user executor of the actor system. In this executor YDB launches user workloads, like datashard activities, - # queries and rpc calls. - threads: 3 # the number of threads allocated to user executor. - type: BASIC - - name: Batch # user executor of the actor system. In this executor YDB launches batch operations, like scan queries, table - # compactions, background compactions. - threads: 2 # the number of threads allocated to the batch executor. - type: BASIC - - name: IO # the io executor. In this executor launches sync operations and writes logs. - threads: 1 - time_per_mailbox_micro_secs: 100 - type: IO - - name: IC # the interconnect executor which YDB uses for network communications accross different nodes of the cluster. - spin_threshold: 10 - threads: 1 # the number of threads allocated to the interconnect executor. - time_per_mailbox_micro_secs: 100 - type: BASIC - scheduler: - progress_threshold: 10000 - resolution: 256 - spin_threshold: 0 -blob_storage_config: # configuration of static blobstorage group. - # YDB uses this group to store system tablets' data, like SchemeShard - service_set: - groups: - - erasure_species: mirror-3-dc # fault tolerance mode name for the static group - rings: # in mirror-3-dc must have exactly 3 rings or availability zones - - fail_domains: # first record: fail domains of the static group describe where each vdisk of the static group should be located. - - vdisk_locations: - - node_id: ydb-node-zone-a.local - pdisk_category: SSD - path: /dev/disk/by-partlabel/ydb_disk_ssd_01 - - vdisk_locations: - - node_id: ydb-node-zone-a.local - pdisk_category: SSD - path: /dev/disk/by-partlabel/ydb_disk_ssd_02 - - vdisk_locations: - - node_id: ydb-node-zone-a.local - pdisk_category: SSD - path: /dev/disk/by-partlabel/ydb_disk_ssd_03 - - fail_domains: # second ring: fail domains of the static group describe where each vdisk of the static group should be located. - - vdisk_locations: - - node_id: ydb-node-zone-b.local - pdisk_category: SSD - path: /dev/disk/by-partlabel/ydb_disk_ssd_01 - - vdisk_locations: - - node_id: ydb-node-zone-b.local - pdisk_category: SSD - path: /dev/disk/by-partlabel/ydb_disk_ssd_02 - - vdisk_locations: - - node_id: ydb-node-zone-b.local - pdisk_category: SSD - path: /dev/disk/by-partlabel/ydb_disk_ssd_03 - - fail_domains: # third ring: fail domains of the static group describe where each vdisk of the static group should be located. - - vdisk_locations: - - node_id: ydb-node-zone-c.local - pdisk_category: SSD - path: /dev/disk/by-partlabel/ydb_disk_ssd_01 - - vdisk_locations: - - node_id: ydb-node-zone-c.local - pdisk_category: SSD - path: /dev/disk/by-partlabel/ydb_disk_ssd_02 - - vdisk_locations: - - node_id: ydb-node-zone-c.local - pdisk_category: SSD - path: /dev/disk/by-partlabel/ydb_disk_ssd_03 -channel_profile_config: - profile: - - channel: - - erasure_species: mirror-3-dc - pdisk_category: 0 - storage_pool_kind: ssd - - erasure_species: mirror-3-dc - pdisk_category: 0 - storage_pool_kind: ssd - - erasure_species: mirror-3-dc - pdisk_category: 0 - storage_pool_kind: ssd - profile_id: 0 -interconnect_config: - start_tcp: true - encryption_mode: OPTIONAL - path_to_certificate_file: "/opt/ydb/certs/node.crt" - path_to_private_key_file: "/opt/ydb/certs/node.key" - path_to_ca_file: "/opt/ydb/certs/ca.crt" -grpc_config: - cert: "/opt/ydb/certs/node.crt" - key: "/opt/ydb/certs/node.key" - ca: "/opt/ydb/certs/ca.crt" - services_enabled: - - legacy + hosts: + - host: ydb-node-zone-a.local # storage node DNS name + host_config_id: 1 # numeric host configuration template identifier + walle_location: # this parameter describes where host is located. + body: 1 # string representing a host serial number. + data_center: 'zone-a' # string representing the datacenter / availability zone where the host is located. + # if cluster is deployed using mirror-3-dc fault tolerance mode, all hosts must be distributed + # across 3 datacenters. + rack: '1' # string representing a rack identifier where the host is located. + # if cluster is deployed using block-4-2 erasure, all hosts should be distrubited + # accross at least 8 racks. + - host: ydb-node-zone-b.local + host_config_id: 1 + walle_location: + body: 2 + data_center: 'zone-b' + rack: '2' + - host: ydb-node-zone-c.local + host_config_id: 1 + walle_location: + body: 3 + data_center: 'zone-c' + rack: '3' + table_service_config: + sql_version: 1 + actor_system_config: # the configuration of the actor system which descibes how cores of the instance are distributed + executor: # accross different types of workloads in the instance. + - name: System # system executor of the actor system. in this executor YDB launches system type of workloads, like system tablets + # and reads from storage. + threads: 2 # the number of threads allocated to system executor. + type: BASIC + - name: User # user executor of the actor system. In this executor YDB launches user workloads, like datashard activities, + # queries and rpc calls. + threads: 3 # the number of threads allocated to user executor. + type: BASIC + - name: Batch # user executor of the actor system. In this executor YDB launches batch operations, like scan queries, table + # compactions, background compactions. + threads: 2 # the number of threads allocated to the batch executor. + type: BASIC + - name: IO # the io executor. In this executor launches sync operations and writes logs. + threads: 1 + time_per_mailbox_micro_secs: 100 + type: IO + - name: IC # the interconnect executor which YDB uses for network communications accross different nodes of the cluster. + spin_threshold: 10 + threads: 1 # the number of threads allocated to the interconnect executor. + time_per_mailbox_micro_secs: 100 + type: BASIC + scheduler: + progress_threshold: 10000 + resolution: 256 + spin_threshold: 0 + interconnect_config: + start_tcp: true + encryption_mode: OPTIONAL + path_to_certificate_file: "/opt/ydb/certs/node.crt" + path_to_private_key_file: "/opt/ydb/certs/node.key" + path_to_ca_file: "/opt/ydb/certs/ca.crt" + grpc_config: + cert: "/opt/ydb/certs/node.crt" + key: "/opt/ydb/certs/node.key" + ca: "/opt/ydb/certs/ca.crt" + services_enabled: + - legacy diff --git a/ydb/deploy/yaml_config_examples/mirror-3dc-9-nodes.yaml b/ydb/deploy/yaml_config_examples/mirror-3dc-9-nodes.yaml index ccb58cd2581e..242df9a520bd 100644 --- a/ydb/deploy/yaml_config_examples/mirror-3dc-9-nodes.yaml +++ b/ydb/deploy/yaml_config_examples/mirror-3dc-9-nodes.yaml @@ -1,182 +1,115 @@ -static_erasure: mirror-3-dc -host_configs: -- drive: - - path: /dev/disk/by-partlabel/ydb_disk_ssd_01 - type: SSD - - path: /dev/disk/by-partlabel/ydb_disk_ssd_02 - type: SSD - host_config_id: 1 -hosts: -- host: ydb-node-zone-a-1.local - host_config_id: 1 - walle_location: - body: 1 - data_center: 'zone-a' - rack: '1' -- host: ydb-node-zone-a-2.local - host_config_id: 1 - walle_location: - body: 2 - data_center: 'zone-a' - rack: '2' -- host: ydb-node-zone-a-3.local - host_config_id: 1 - walle_location: - body: 3 - data_center: 'zone-a' - rack: '3' +metadata: + kind: MainConfig + cluster: "" + version: 0 +config: + yaml_config_enabled: true + erasure: mirror-3-dc + self_management_config: + enabled: true + default_disk_type: SSD + host_configs: + - drive: + - path: /dev/disk/by-partlabel/ydb_disk_ssd_01 + type: SSD + - path: /dev/disk/by-partlabel/ydb_disk_ssd_02 + type: SSD + host_config_id: 1 + hosts: + - host: ydb-node-zone-a-1.local + host_config_id: 1 + walle_location: + body: 1 + data_center: 'zone-a' + rack: '1' + - host: ydb-node-zone-a-2.local + host_config_id: 1 + walle_location: + body: 2 + data_center: 'zone-a' + rack: '2' + - host: ydb-node-zone-a-3.local + host_config_id: 1 + walle_location: + body: 3 + data_center: 'zone-a' + rack: '3' -- host: ydb-node-zone-b-1.local - host_config_id: 1 - walle_location: - body: 4 - data_center: 'zone-b' - rack: '4' -- host: ydb-node-zone-b-2.local - host_config_id: 1 - walle_location: - body: 5 - data_center: 'zone-b' - rack: '5' -- host: ydb-node-zone-b-3.local - host_config_id: 1 - walle_location: - body: 6 - data_center: 'zone-b' - rack: '6' + - host: ydb-node-zone-b-1.local + host_config_id: 1 + walle_location: + body: 4 + data_center: 'zone-b' + rack: '4' + - host: ydb-node-zone-b-2.local + host_config_id: 1 + walle_location: + body: 5 + data_center: 'zone-b' + rack: '5' + - host: ydb-node-zone-b-3.local + host_config_id: 1 + walle_location: + body: 6 + data_center: 'zone-b' + rack: '6' -- host: ydb-node-zone-c-1.local - host_config_id: 1 - walle_location: - body: 7 - data_center: 'zone-c' - rack: '7' -- host: ydb-node-zone-c-2.local - host_config_id: 1 - walle_location: - body: 8 - data_center: 'zone-c' - rack: '8' -- host: ydb-node-zone-c-3.local - host_config_id: 1 - walle_location: - body: 9 - data_center: 'zone-c' - rack: '9' - -domains_config: - domain: - - name: Root - storage_pool_types: - - kind: ssd - pool_config: - box_id: 1 - erasure_species: mirror-3-dc - kind: ssd - pdisk_filter: - - property: - - type: SSD - vdisk_kind: Default - state_storage: - - ring: - node: [1, 2, 3, 4, 5, 6, 7, 8, 9] - nto_select: 9 - ssid: 1 -table_service_config: - sql_version: 1 -actor_system_config: - executor: - - name: System - spin_threshold: 0 - threads: 2 - type: BASIC - - name: User - spin_threshold: 0 - threads: 3 - type: BASIC - - name: Batch - spin_threshold: 0 - threads: 2 - type: BASIC - - name: IO - threads: 1 - time_per_mailbox_micro_secs: 100 - type: IO - - name: IC - spin_threshold: 10 - threads: 1 - time_per_mailbox_micro_secs: 100 - type: BASIC - scheduler: - progress_threshold: 10000 - resolution: 256 - spin_threshold: 0 -blob_storage_config: - service_set: - groups: - - erasure_species: mirror-3-dc - rings: - - fail_domains: - - vdisk_locations: - - node_id: "ydb-node-zone-a-1.local" - pdisk_category: SSD - path: /dev/disk/by-partlabel/ydb_disk_ssd_01 - - vdisk_locations: - - node_id: "ydb-node-zone-a-2.local" - pdisk_category: SSD - path: /dev/disk/by-partlabel/ydb_disk_ssd_01 - - vdisk_locations: - - node_id: "ydb-node-zone-a-3.local" - pdisk_category: SSD - path: /dev/disk/by-partlabel/ydb_disk_ssd_01 - - fail_domains: - - vdisk_locations: - - node_id: "ydb-node-zone-b-1.local" - pdisk_category: SSD - path: /dev/disk/by-partlabel/ydb_disk_ssd_01 - - vdisk_locations: - - node_id: "ydb-node-zone-b-2.local" - pdisk_category: SSD - path: /dev/disk/by-partlabel/ydb_disk_ssd_01 - - vdisk_locations: - - node_id: "ydb-node-zone-b-3.local" - pdisk_category: SSD - path: /dev/disk/by-partlabel/ydb_disk_ssd_01 - - fail_domains: - - vdisk_locations: - - node_id: "ydb-node-zone-c-1.local" - pdisk_category: SSD - path: /dev/disk/by-partlabel/ydb_disk_ssd_01 - - vdisk_locations: - - node_id: "ydb-node-zone-c-2.local" - pdisk_category: SSD - path: /dev/disk/by-partlabel/ydb_disk_ssd_01 - - vdisk_locations: - - node_id: "ydb-node-zone-c-3.local" - pdisk_category: SSD - path: /dev/disk/by-partlabel/ydb_disk_ssd_01 -channel_profile_config: - profile: - - channel: - - erasure_species: mirror-3-dc - pdisk_category: 1 - storage_pool_kind: ssd - - erasure_species: mirror-3-dc - pdisk_category: 1 - storage_pool_kind: ssd - - erasure_species: mirror-3-dc - pdisk_category: 1 - storage_pool_kind: ssd - profile_id: 0 -interconnect_config: - start_tcp: true - encryption_mode: OPTIONAL - path_to_certificate_file: "/opt/ydb/certs/node.crt" - path_to_private_key_file: "/opt/ydb/certs/node.key" - path_to_ca_file: "/opt/ydb/certs/ca.crt" -grpc_config: - cert: "/opt/ydb/certs/node.crt" - key: "/opt/ydb/certs/node.key" - ca: "/opt/ydb/certs/ca.crt" - services_enabled: - - legacy + - host: ydb-node-zone-c-1.local + host_config_id: 1 + walle_location: + body: 7 + data_center: 'zone-c' + rack: '7' + - host: ydb-node-zone-c-2.local + host_config_id: 1 + walle_location: + body: 8 + data_center: 'zone-c' + rack: '8' + - host: ydb-node-zone-c-3.local + host_config_id: 1 + walle_location: + body: 9 + data_center: 'zone-c' + rack: '9' + table_service_config: + sql_version: 1 + actor_system_config: + executor: + - name: System + spin_threshold: 0 + threads: 2 + type: BASIC + - name: User + spin_threshold: 0 + threads: 3 + type: BASIC + - name: Batch + spin_threshold: 0 + threads: 2 + type: BASIC + - name: IO + threads: 1 + time_per_mailbox_micro_secs: 100 + type: IO + - name: IC + spin_threshold: 10 + threads: 1 + time_per_mailbox_micro_secs: 100 + type: BASIC + scheduler: + progress_threshold: 10000 + resolution: 256 + spin_threshold: 0 + interconnect_config: + start_tcp: true + encryption_mode: OPTIONAL + path_to_certificate_file: "/opt/ydb/certs/node.crt" + path_to_private_key_file: "/opt/ydb/certs/node.key" + path_to_ca_file: "/opt/ydb/certs/ca.crt" + grpc_config: + cert: "/opt/ydb/certs/node.crt" + key: "/opt/ydb/certs/node.key" + ca: "/opt/ydb/certs/ca.crt" + services_enabled: + - legacy diff --git a/ydb/deploy/yaml_config_examples/single-node-in-memory.yaml b/ydb/deploy/yaml_config_examples/single-node-in-memory.yaml index 539c7c02884d..51b1afd6410e 100644 --- a/ydb/deploy/yaml_config_examples/single-node-in-memory.yaml +++ b/ydb/deploy/yaml_config_examples/single-node-in-memory.yaml @@ -1,85 +1,52 @@ -static_erasure: none -host_configs: -- drive: - - path: SectorMap:1:64 - type: SSD - host_config_id: 1 -hosts: -- host: localhost - host_config_id: 1 - port: 19001 - walle_location: - body: 1 - data_center: '1' - rack: '1' -domains_config: - domain: - - name: Root - storage_pool_types: - - kind: ssd - pool_config: - box_id: 1 - erasure_species: none - kind: ssd - pdisk_filter: - - property: - - type: SSD - vdisk_kind: Default - state_storage: - - ring: - node: - - 1 - nto_select: 1 - ssid: 1 -table_service_config: - sql_version: 1 -actor_system_config: - executor: - - name: System - spin_threshold: 0 - threads: 2 - type: BASIC - - name: User - spin_threshold: 0 - threads: 3 - type: BASIC - - name: Batch - spin_threshold: 0 - threads: 2 - type: BASIC - - name: IO - threads: 1 - time_per_mailbox_micro_secs: 100 - type: IO - - name: IC - spin_threshold: 10 - threads: 1 - time_per_mailbox_micro_secs: 100 - type: BASIC - scheduler: - progress_threshold: 10000 - resolution: 256 - spin_threshold: 0 -blob_storage_config: - service_set: - groups: - - erasure_species: none - rings: - - fail_domains: - - vdisk_locations: - - node_id: 1 - path: SectorMap:1:64 - pdisk_category: SSD -channel_profile_config: - profile: - - channel: - - erasure_species: none - pdisk_category: 1 - storage_pool_kind: ssd - - erasure_species: none - pdisk_category: 1 - storage_pool_kind: ssd - - erasure_species: none - pdisk_category: 1 - storage_pool_kind: ssd - profile_id: 0 +metadata: + kind: MainConfig + cluster: "" + version: 0 +config: + yaml_config_enabled: true + erasure: none + self_management_config: + enabled: true + default_disk_type: SSD + host_configs: + - drive: + - path: SectorMap:1:64 + type: SSD + host_config_id: 1 + hosts: + - host: localhost + host_config_id: 1 + port: 19001 + walle_location: + body: 1 + data_center: '1' + rack: '1' + table_service_config: + sql_version: 1 + actor_system_config: + executor: + - name: System + spin_threshold: 0 + threads: 2 + type: BASIC + - name: User + spin_threshold: 0 + threads: 3 + type: BASIC + - name: Batch + spin_threshold: 0 + threads: 2 + type: BASIC + - name: IO + threads: 1 + time_per_mailbox_micro_secs: 100 + type: IO + - name: IC + spin_threshold: 10 + threads: 1 + time_per_mailbox_micro_secs: 100 + type: BASIC + scheduler: + progress_threshold: 10000 + resolution: 256 + spin_threshold: 0 diff --git a/ydb/deploy/yaml_config_examples/single-node-with-file.yaml b/ydb/deploy/yaml_config_examples/single-node-with-file.yaml index b5be946fc8f2..812d0edc3a71 100644 --- a/ydb/deploy/yaml_config_examples/single-node-with-file.yaml +++ b/ydb/deploy/yaml_config_examples/single-node-with-file.yaml @@ -1,85 +1,52 @@ -static_erasure: none -host_configs: -- drive: - - path: /tmp/pdisk.data - type: SSD - host_config_id: 1 -hosts: -- host: localhost - host_config_id: 1 - port: 19001 - walle_location: - body: 1 - data_center: '1' - rack: '1' -domains_config: - domain: - - name: Root - storage_pool_types: - - kind: ssd - pool_config: - box_id: 1 - erasure_species: none - kind: ssd - pdisk_filter: - - property: - - type: SSD - vdisk_kind: Default - state_storage: - - ring: - node: - - 1 - nto_select: 1 - ssid: 1 -table_service_config: - sql_version: 1 -actor_system_config: - executor: - - name: System - spin_threshold: 0 - threads: 2 - type: BASIC - - name: User - spin_threshold: 0 - threads: 3 - type: BASIC - - name: Batch - spin_threshold: 0 - threads: 2 - type: BASIC - - name: IO - threads: 1 - time_per_mailbox_micro_secs: 100 - type: IO - - name: IC - spin_threshold: 10 - threads: 1 - time_per_mailbox_micro_secs: 100 - type: BASIC - scheduler: - progress_threshold: 10000 - resolution: 256 - spin_threshold: 0 -blob_storage_config: - service_set: - groups: - - erasure_species: none - rings: - - fail_domains: - - vdisk_locations: - - node_id: 1 - path: /tmp/pdisk.data - pdisk_category: SSD -channel_profile_config: - profile: - - channel: - - erasure_species: none - pdisk_category: 0 - storage_pool_kind: ssd - - erasure_species: none - pdisk_category: 0 - storage_pool_kind: ssd - - erasure_species: none - pdisk_category: 0 - storage_pool_kind: ssd - profile_id: 0 +metadata: + kind: MainConfig + cluster: "" + version: 0 +config: + yaml_config_enabled: true + self_management_config: + enabled: true + erasure: none + default_disk_type: SSD + host_configs: + - drive: + - path: /tmp/pdisk.data + type: SSD + host_config_id: 1 + hosts: + - host: localhost + host_config_id: 1 + port: 19001 + walle_location: + body: 1 + data_center: '1' + rack: '1' + table_service_config: + sql_version: 1 + actor_system_config: + executor: + - name: System + spin_threshold: 0 + threads: 2 + type: BASIC + - name: User + spin_threshold: 0 + threads: 3 + type: BASIC + - name: Batch + spin_threshold: 0 + threads: 2 + type: BASIC + - name: IO + threads: 1 + time_per_mailbox_micro_secs: 100 + type: IO + - name: IC + spin_threshold: 10 + threads: 1 + time_per_mailbox_micro_secs: 100 + type: BASIC + scheduler: + progress_threshold: 10000 + resolution: 256 + spin_threshold: 0 diff --git a/ydb/docs/ru/core/devops/manual/initial-deployment.md b/ydb/docs/ru/core/devops/manual/initial-deployment.md index 2a451e6ffb3a..9c469d59013e 100644 --- a/ydb/docs/ru/core/devops/manual/initial-deployment.md +++ b/ydb/docs/ru/core/devops/manual/initial-deployment.md @@ -133,11 +133,11 @@ sudo usermod -aG disk ydb 2. Очистите диск встроенной в исполняемый файл `ydbd` командой: -{% note warning %} + {% note warning %} -После выполнения команды данные на диске сотрутся. + После выполнения команды данные на диске сотрутся. -{% endnote %} + {% endnote %} ```bash sudo LD_LIBRARY_PATH=/opt/ydb/lib /opt/ydb/bin/ydbd admin bs disk obliterate /dev/disk/by-partlabel/ydb_disk_ssd_01 @@ -151,9 +151,9 @@ sudo usermod -aG disk ydb 1. Скачайте пример конфига для соответствующей модели отказа вашего кластера: - * [block-4-2](https://github.com/ydb-platform/ydb/blob/stable-23-3/ydb/deploy/yaml_config_examples/block-4-2.yaml) - для однодатацентрового кластера. - * [mirror-3dc](https://github.com/ydb-platform/ydb/blob/stable-23-3/ydb/deploy/yaml_config_examples/mirror-3dc-9-nodes.yaml) - для cross-DC кластера из 9 нод. - * [mirror-3dc-3nodes](https://github.com/ydb-platform/ydb/blob/stable-23-3//ydb/deploy/yaml_config_examples/mirror-3dc-3-nodes.yaml) - для cross-DC кластера из 3 нод. + * [block-4-2](https://github.com/ydb-platform/ydb/blob/main/ydb/deploy/yaml_config_examples/block-4-2.yaml) - для однодатацентрового кластера. + * [mirror-3dc](https://github.com/ydb-platform/ydb/blob/main/ydb/deploy/yaml_config_examples/mirror-3dc-9-nodes.yaml) - для cross-DC кластера из 9 нод. + * [mirror-3dc-3nodes](https://github.com/ydb-platform/ydb/blob/main/ydb/deploy/yaml_config_examples/mirror-3dc-3-nodes.yaml) - для cross-DC кластера из 3 нод. 1. В секции `host_configs` укажите все диски и их тип на каждой из нод кластера. Возможные варианты типов дисков: @@ -192,48 +192,42 @@ sudo usermod -aG disk ydb rack: '1' ``` -1. В секции `blob_storage_config` скорректируйте FQDN всех нод, используемых для размещения статической группы хранения: - - * для схемы `mirror-3-dc` необходимо указать FQDN для 9 нод; - * для схемы `block-4-2` необходимо указать FQDN для 8 нод. - 1. Включите аутентификацию пользователей (опционально). - Если вы планируете использовать в кластере {{ ydb-short-name }} возможности аутентификации и разграничения доступа пользователей, добавьте в секцию `domains_config` следующие дополнительные параметры: + Если вы планируете использовать в кластере {{ ydb-short-name }} возможности аутентификации и разграничения доступа пользователей, добавьте секцию `security_config` со следующими параметрами: ```yaml - domains_config: - security_config: - enforce_user_token_requirement: true - monitoring_allowed_sids: - - "root" - - "ADMINS" - - "DATABASE-ADMINS" - administration_allowed_sids: - - "root" - - "ADMINS" - - "DATABASE-ADMINS" - viewer_allowed_sids: - - "root" - - "ADMINS" - - "DATABASE-ADMINS" + security_config: + enforce_user_token_requirement: true + monitoring_allowed_sids: + - "root" + - "ADMINS" + - "DATABASE-ADMINS" + administration_allowed_sids: + - "root" + - "ADMINS" + - "DATABASE-ADMINS" + viewer_allowed_sids: + - "root" + - "ADMINS" + - "DATABASE-ADMINS" ``` При использовании режима шифрования трафика убедитесь в наличии в конфигурационном файле {{ ydb-short-name }} установленных путей к файлам ключей и сертификатов в секциях `interconnect_config` и `grpc_config`: ```yaml interconnect_config: - start_tcp: true - encryption_mode: OPTIONAL - path_to_certificate_file: "/opt/ydb/certs/node.crt" - path_to_private_key_file: "/opt/ydb/certs/node.key" - path_to_ca_file: "/opt/ydb/certs/ca.crt" + start_tcp: true + encryption_mode: OPTIONAL + path_to_certificate_file: "/opt/ydb/certs/node.crt" + path_to_private_key_file: "/opt/ydb/certs/node.key" + path_to_ca_file: "/opt/ydb/certs/ca.crt" grpc_config: - cert: "/opt/ydb/certs/node.crt" - key: "/opt/ydb/certs/node.key" - ca: "/opt/ydb/certs/ca.crt" - services_enabled: - - legacy + cert: "/opt/ydb/certs/node.crt" + key: "/opt/ydb/certs/node.key" + ca: "/opt/ydb/certs/ca.crt" + services_enabled: + - legacy ``` Сохраните конфигурационный файл {{ ydb-short-name }} под именем `/opt/ydb/cfg/config.yaml` на каждом сервере кластера. @@ -331,7 +325,7 @@ sudo chmod 700 /opt/ydb/certs ```bash ydb -e grpcs://:2135 -d /Root --ca-file ca.crt \ - --user root --no-password auth get-token --force >token-file + --user root --no-password auth get-token --force > token-file ``` В качестве сервера для подключения (параметр `-e` или `--endpoint`) может быть указан любой из серверов хранения в составе кластера. @@ -340,8 +334,8 @@ sudo chmod 700 /opt/ydb/certs ```bash export LD_LIBRARY_PATH=/opt/ydb/lib - /opt/ydb/bin/ydbd -f token-file --ca-file ca.crt -s grpcs://`hostname -f`:2135 \ - admin blobstorage config init --yaml-file /opt/ydb/cfg/config.yaml + ydb --token-file token-file --ca-file ca.crt -e grpcs://:2135 \ + admin cluster bootstrap --uuid <строка> echo $? ``` @@ -351,8 +345,8 @@ sudo chmod 700 /opt/ydb/certs ```bash export LD_LIBRARY_PATH=/opt/ydb/lib - /opt/ydb/bin/ydbd --ca-file ca.crt -s grpcs://`hostname -f`:2135 \ - admin blobstorage config init --yaml-file /opt/ydb/cfg/config.yaml + ydb --ca-file ca.crt -e grpcs://:2135 \ + admin cluster bootstrap --uuid <строка> echo $? ``` @@ -583,7 +577,7 @@ sudo chmod 700 /opt/ydb/certs ```bash export LD_LIBRARY_PATH=/opt/ydb/lib - /opt/ydb/bin/ydbd admin blobstorage config init --yaml-file /opt/ydb/cfg/config.yaml + ydb admin blobstorage bootstrap --uuid <строка> echo $? ``` diff --git a/ydb/docs/ru/core/devops/manual/manual-static-group-management/cluster-expansion.md b/ydb/docs/ru/core/devops/manual/manual-static-group-management/cluster-expansion.md new file mode 100644 index 000000000000..ee124a6d87e0 --- /dev/null +++ b/ydb/docs/ru/core/devops/manual/manual-static-group-management/cluster-expansion.md @@ -0,0 +1,109 @@ +# Расширение кластера + +Вы можете расширить кластер {{ ydb-short-name }}, добавив новые узлы в конфигурацию кластера. Ниже приведены необходимые действия по расширению кластера {{ ydb-short-name }}, установленного вручную на виртуальные машины или физические сервера. Расширение кластера в среде Kubernetes осуществляется путём корректировки настроек контроллера {{ ydb-short-name }} для Kubernetes. + +Расширение кластера {{ ydb-short-name }} не требует приостановки доступа пользователей к базам данных. При расширении кластера выполняется перезапуск его компонент для применения изменений в конфигурации, что, в свою очередь, может привести к необходимости повтора выполняемых на кластере транзакций. Повторы транзакций выполняются автоматически за счет использования приложениями возможностей SDK {{ ydb-short-name }} по контролю ошибок и повтору операций. + +## Подготовка новых серверов {#add-host} + +В случае размещения новых статических или динамических узлов кластера на новых серверах, не входивших ранее в состав расширяемого кластера {{ ydb-short-name }}, на каждом новом сервере необходимо выполнить установку программного обеспечения {{ ydb-short-name }} в соответствии с процедурами, описанными в [инструкции по развертыванию кластеров](../../../devops/manual/manual-static-group-management/initial-deployment.md). В частности, необходимо: + +1. создать учетную запись и группу в операционной системе для работы сервиса {{ ydb-short-name }}; +1. установить программное обеспечение {{ ydb-short-name }}; +1. подготовить и разместить на сервере соответствующий ему ключ и сертификат TLS; +1. скопировать на сервер актуальный конфигурационный файл кластера {{ ydb-short-name }}. + +Используемые на новых серверах сертификаты TLS должны соответствовать [требованиям к заполнению полей](../../../devops/manual/manual-static-group-management/initial-deployment.md#tls-certificates), и быть подписаны доверенным центром регистрации, используемым на уже существующих серверах расширяемого кластера {{ ydb-short-name }}. + +## Добавление динамических узлов {#add-dynamic-node} + +Добавление динамических узлов позволяет увеличить доступные вычислительные ресурсы (процессорные ядра и оперативную память) для выполнения пользовательских запросов кластером {{ ydb-short-name }}. + +Для добавления динамического узла в кластер достаточно запустить процесс, обслуживающий этот узел, передав ему в параметрах командной строки путь к конфигурационному файлу кластера, имя обслуживаемой базы данных и адреса любых трех статических узлов кластера кластера {{ ydb-short-name }}, как показано в [инструкции по развертыванию кластеров](../../../devops/manual/manual-static-group-management/initial-deployment.md#start-dynnode). + +После успешного добавления динамического узла в кластер информация о нем будет доступна на [странице мониторинга кластера во встроенном UI](../../../reference/embedded-ui/ydb-monitoring.md). + +Для вывода динамического узла из кластера достаточно выполнить остановку процесса динамического узла. + +## Добавление статических узлов {#add-static-node} + +Добавление статических узлов позволяет увеличить пропускную способность при выполнении операций ввода-вывода и увеличить доступную емкость для хранения данных в кластере {{ ydb-short-name }}. + +Для добавления статических узлов в кластер необходимо выполнить следующую последовательность действий: + +1. Отформатировать диски, которые будут использоваться для хранения данных {{ ydb-short-name }}, с использованием [процедуры, описанной для этапа развертывания кластера](../../../devops/manual/manual-static-group-management/initial-deployment.md#prepare-disks). + +1. Скорректировать [конфигурационный файл кластера](../../../devops/manual/manual-static-group-management/initial-deployment.md#config): + + * включить в конфигурацию описание добавляемых узлов (в секции `hosts`) и используемых на них дисков (в секции `host_configs`); + * установить номер изменения конфигурации в виде параметра `storage_config_generation: K` на верхнем уровне, где `K` - целое число, номер изменения (при первоначальной установке значение `K=0` или не указано, при первом расширении кластера `K=1`, при втором `K=2`, и так далее). + +1. Скопировать доработанный конфигурационный файл кластера на все существующие и на все добавляемые сервера кластера, заместив им старую версию конфигурационного файла. + +1. Выполнить последовательный перезапуск всех существующих статических узлов кластера, с ожиданием инициализации и восстановления работы каждого перезапускаемого узла. + +1. Выполнить последовательный перезапуск всех существующих динамических узлов кластера. + +1. Запустить процессы, обслуживающие новые статические узлы кластера, на соответствующих серверах. + +1. Убедиться в том, что новые статические узлы отображаются на [странице мониторинга кластера во встроенном UI](../../../reference/embedded-ui/ydb-monitoring.md). + +1. Получить токен аутентификации для выполнения административных команд с помощью {{ ydb-short-name }} CLI, например: + + ```bash + ydb -e grpcs://:2135 -d /Root --ca-file ca.crt \ + --user root auth get-token --force >token-file + ``` + + В примере команды выше используются следующие параметры: + * `node1.ydb.tech` - FQDN любого из серверов, на которых размещены статические узлы кластера; + * `2135` - номер порта grpcs сервиса статических узлов; + * `ca.crt` - имя файла с сертификатом центра регистрации; + * `root` - логин пользователя с административными правами; + * `token-file` - имя файла, в который сохраняется токен аутентификации для последующего использования. + + При выполнении приведенной выше команды {{ ydb-short-name }} CLI запросит пароль для аутентификации указанного пользователя. + +1. Разрешить кластеру {{ ydb-short-name }} использовать диски на новых статических узлах для хранения данных, выполнив следующую команду на любом из узлов кластера: + + ```bash + export LD_LIBRARY_PATH=/opt/ydb/lib + /opt/ydb/bin/ydbd -f ydbd-token-file --ca-file ca.crt -s grpcs://`hostname -f`:2135 \ + admin blobstorage config init --yaml-file /opt/ydb/cfg/config.yaml + echo $? + ``` + + В примере команды выше используются следующие параметры: + + * `ydbd-token-file` - имя файла ранее полученного токена аутентификации; + * `2135` - номер порта grpcs сервиса статических узлов; + * `ca.crt` - имя файла с сертификатом центра регистрации. + + Если при выполнении приведенной выше команды возвращается ошибка сверки номера конфигурации, это означает, что при корректировке конфигурационного файла кластера было неверно установлено поле `storage_config_generation`. Текст ошибки содержит ожидаемое значение номера конфигурации, которое можно использовать для корректировки файла настроек кластера. Пример сообщения об ошибке сверки номера конфигурации: + + ```proto + ErrorDescription: "ItemConfigGeneration mismatch ItemConfigGenerationProvided# 0 ItemConfigGenerationExpected# 1" + ``` + +2. Добавить дополнительные группы хранения в одну или несколько баз данных, выполнив команды следующего вида на любом из узлов кластера: + + ```bash + export LD_LIBRARY_PATH=/opt/ydb/lib + /opt/ydb/bin/ydbd -f ydbd-token-file --ca-file ca.crt -s grpcs://`hostname -f`:2135 \ + admin database /Root/testdb pools add ssd:1 + echo $? + ``` + + В примере команды выше используются следующие параметры: + + * `ydbd-token-file` - имя файла ранее полученного токена аутентификации; + * `2135` - номер порта grpcs сервиса статических узлов; + * `ca.crt` - имя файла с сертификатом центра регистрации; + * `/Root/testdb` - полный путь к базе данных; + * `ssd:1` - имя пула хранения и количество выделяемых групп хранения. + +3. Убедиться, что добавленные группы хранения отображаются [странице мониторинга кластера во встроенном UI](../../../reference/embedded-ui/ydb-monitoring.md). + +Вывод статических узлов из кластера {{ ydb-short-name }} производится в соответствии с [документированной процедурой декомиссии](../../../devops/manual/decommissioning.md). + +В случае повреждения и невозможности ремонта сервера, на котором работает статический узел кластера, необходимо разместить недоступный статический узел на новом сервере, содержащем аналогичное или большее количество и объем дисков. diff --git a/ydb/docs/ru/core/devops/manual/manual-static-group-management/index.md b/ydb/docs/ru/core/devops/manual/manual-static-group-management/index.md new file mode 100644 index 000000000000..1ef122dda9bf --- /dev/null +++ b/ydb/docs/ru/core/devops/manual/manual-static-group-management/index.md @@ -0,0 +1,9 @@ +# Обзор управления статической группой и State Storage вручную + +До версии версии 24.3 включительно, кластеры {{ ydb-short-name }} конфигурировались с помощью ручной настройки [статической группы](../../../concepts/glossary.md#static-group) и [State Storage](../../../concepts/glossary.md#state-storage). Этот раздел содержит инструкции для кластеров, развернутых по старой схеме. + +Основные материалы: + +- [{#T}](cluster_expansion.md) +- [{#T}](moving_state_storage.md) +- [{#T}](static_group_management.md) diff --git a/ydb/docs/ru/core/devops/manual/manual-static-group-management/initial-deployment.md b/ydb/docs/ru/core/devops/manual/manual-static-group-management/initial-deployment.md new file mode 100644 index 000000000000..cd1b25949093 --- /dev/null +++ b/ydb/docs/ru/core/devops/manual/manual-static-group-management/initial-deployment.md @@ -0,0 +1,597 @@ +# Развёртывание {{ ydb-short-name }} кластера вручную + + + +Этот документ описывает способ развернуть мультитенантный кластер {{ ydb-short-name }} на нескольких физических или виртуальных серверах. + +## Перед началом работы {#before-start} + +### Требования {#requirements} + +Ознакомьтесь с [системными требованиями](../../../devops/system-requirements.md) и [топологией кластера](../../../concepts/topology.md). + +У вас должен быть SSH доступ на все сервера. Это необходимо для установки артефактов и запуска исполняемого файла {{ ydb-short-name }}. + +Сетевая конфигурация должна разрешать TCP соединения по следующим портам (по умолчанию, могут быть изменены настройками): + +* 22: сервис SSH; +* 2135, 2136: GRPC для клиент-кластерного взаимодействия; +* 19001, 19002: Interconnect для внутрикластерного взаимодействия узлов; +* 8765, 8766: HTTP интерфейс {{ ydb-short-name }} Embedded UI. + +При размещении нескольких динамических узлов на одном сервере потребуются отдельные порты для gRPC, Interconnect и HTTP интерфейса каждого динамического узла в рамках сервера. + +Убедитесь в том, что системные часы на всех серверах в составе кластера синхронизированы с помощью инструментов `ntpd` или `chrony`. Желательно использовать единый источник времени для всех серверов кластера, чтобы обеспечить одинаковую обработку секунд координации (leap seconds). + +Если применяемый на серверах кластера тип Linux использует `syslogd` для логирования, необходимо настроить ротацию файлов лога с использованием инструмента `logrotate` или его аналогов. Сервисы {{ ydb-short-name }} могут генерировать значительный объем системных логов, в особенности при повышении уровня логирования для диагностических целей, поэтому важно включить ротацию файлов системного лога для исключения ситуаций переполнения файловой системы `/var`. + +Выберите серверы и диски, которые будут использоваться для хранения данных: + +* Используйте схему отказоустойчивости `block-4-2` для развертывания кластера в одной зоне доступности (AZ). Чтобы переживать отказ 2 серверов, используйте не менее 8 серверов. +* Используйте схему отказоустойчивости `mirror-3-dc` для развертывания кластера в трех зонах доступности (AZ). Чтобы переживать отказ 1 AZ и 1 сервера в другой AZ, используйте не менее 9 серверов. Количество задействованных серверов в каждой AZ должно быть одинаковым. + +{% note info %} + +Запускайте каждый статический узел (узел хранения данных) на отдельном сервере. Возможно совмещение статических и динамических узлов на одном сервере, а также размещение на одном сервере нескольких динамических узлов при наличии достаточных вычислительных ресурсов. + +{% endnote %} + +Подробнее требования к оборудованию описаны в разделе [{#T}](../../../devops/system-requirements.md). + +### Подготовка ключей и сертификатов TLS {#tls-certificates} + +Защита трафика и проверка подлинности серверных узлов {{ ydb-short-name }} осуществляется с использованием протокола TLS. Перед установкой кластера необходимо спланировать состав серверов, определиться со схемой именования узлов и конкретными именами, и подготовить ключи и сертификаты TLS. + +Вы можете использовать существующие или сгенерировать новые сертификаты. Следующие файлы ключей и сертификатов TLS должны быть подготовлены в формате PEM: + +* `ca.crt` - сертификат центра регистрации (Certification Authority, CA), которым подписаны остальные сертификаты TLS (одинаковые файлы на всех узлах кластера); +* `node.key` - секретные ключи TLS для каждого из узлов кластера (свой ключ на каждый сервер кластера); +* `node.crt` - сертификаты TLS для каждого из узлов кластера (соответствующий ключу сертификат); +* `web.pem` - конкатенация секретного ключа узла, сертификата узла и сертификата центра регистрации для работы HTTP интерфейса мониторинга (свой файл на каждый сервер кластера). + +Необходимые параметры формирования сертификатов определяются политикой организации. Обычно сертификаты и ключи для {{ ydb-short-name }} формируются со следующими параметрами: + +* ключи RSA длиною 2048 или 4096 бит; +* алгоритм подписи сертификатов SHA-256 с шифрованием RSA; +* срок действия сертификатов узлов не менее 1 года; +* срок действия сертификата центра регистрации не менее 3 лет. + +Необходимо, чтобы сертификат центра регистрации был помечен соответствующим образом: должен быть установлен признак CA, а также включены виды использования "Digital Signature, Non Repudiation, Key Encipherment, Certificate Sign". + +Для сертификатов узлов важно соответствие фактического имени хоста (или имён хостов) значениям, указанным в поле "Subject Alternative Name". Для сертификатов должны быть включены виды использования "Digital Signature, Key Encipherment" и расширенные виды использования "TLS Web Server Authentication, TLS Web Client Authentication". Необходимо, чтобы сертификаты узлов поддерживали как серверную, так и клиентскую аутентификацию (опция `extendedKeyUsage = serverAuth,clientAuth` в настройках OpenSSL). + +Для пакетной генерации или обновления сертификатов кластера {{ ydb-short-name }} с помощью программного обеспечения OpenSSL можно воспользоваться [примером скрипта](https://github.com/ydb-platform/ydb/blob/main/ydb/deploy/tls_cert_gen/), размещённым в репозитории {{ ydb-short-name }} на GitHub. Скрипт позволяет автоматически сформировать необходимые файлы ключей и сертификатов для всего набора узлов кластера за одну операцию, облегчая подготовку к установке. + +## Создайте системного пользователя и группу, от имени которых будет работать {{ ydb-short-name }} {#create-user} + +На каждом сервере, где будет запущен {{ ydb-short-name }}, выполните: + +```bash +sudo groupadd ydb +sudo useradd ydb -g ydb +``` + +Для того, чтобы сервис {{ ydb-short-name }} имел доступ к блочным дискам для работы, необходимо добавить пользователя, под которым будут запущены процессы {{ ydb-short-name }}, в группу `disk`: + +```bash +sudo usermod -aG disk ydb +``` + +## Установите программное обеспечение {{ ydb-short-name }} на каждом сервере {#install-binaries} + +1. Скачайте и распакуйте архив с исполняемым файлом `ydbd` и необходимыми для работы {{ ydb-short-name }} библиотеками: + + ```bash + mkdir ydbd-stable-linux-amd64 + curl -L {{ ydb-binaries-url }}/{{ ydb-stable-binary-archive }} | tar -xz --strip-component=1 -C ydbd-stable-linux-amd64 + ``` + +1. Создайте директории для размещения программного обеспечения {{ ydb-short-name }}: + + ```bash + sudo mkdir -p /opt/ydb /opt/ydb/cfg + ``` + +1. Скопируйте исполняемый файл и библиотеки в соответствующие директории: + + ```bash + sudo cp -iR ydbd-stable-linux-amd64/bin /opt/ydb/ + sudo cp -iR ydbd-stable-linux-amd64/lib /opt/ydb/ + ``` + +1. Установите владельца файлов и каталогов: + + ```bash + sudo chown -R root:bin /opt/ydb + ``` + +## Подготовьте и очистите диски на каждом сервере {#prepare-disks} + +{% include [_includes/storage-device-requirements.md](../../../_includes/storage-device-requirements.md) %} + +1. Создайте разделы на выбранных дисках: + + {% note alert %} + + Следующая операция удалит все разделы на указанном диске! Убедитесь, что вы указали диск, на котором нет других данных! + + {% endnote %} + + ```bash + DISK=/dev/nvme0n1 + sudo parted ${DISK} mklabel gpt -s + sudo parted -a optimal ${DISK} mkpart primary 0% 100% + sudo parted ${DISK} name 1 ydb_disk_ssd_01 + sudo partx --u ${DISK} + ``` + + После выполнения в системе появится диск с меткой `/dev/disk/by-partlabel/ydb_disk_ssd_01`. + + Если вы планируете использовать более одного диска на каждом сервере, укажите для каждого свою уникальную метку вместо `ydb_disk_ssd_01`. Метки дисков должны быть уникальны в рамках каждого сервера, и используются в конфигурационных файлах, как показано в последующих инструкциях. + + Для упрощения последующей настройки удобно использовать одинаковые метки дисков на серверах кластера, имеющих идентичную конфигурацию дисков. + +2. Очистите диск встроенной в исполняемый файл `ydbd` командой: + +{% note warning %} + +После выполнения команды данные на диске сотрутся. + +{% endnote %} + + ```bash + sudo LD_LIBRARY_PATH=/opt/ydb/lib /opt/ydb/bin/ydbd admin bs disk obliterate /dev/disk/by-partlabel/ydb_disk_ssd_01 + ``` + + Проделайте данную операцию для каждого диска, который будет использоваться для хранения данных {{ ydb-short-name }}. + +## Подготовьте конфигурационные файлы {#config} + +Подготовьте конфигурационный файл {{ ydb-short-name }}: + +1. Скачайте пример конфига для соответствующей модели отказа вашего кластера: + + * [block-4-2](https://github.com/ydb-platform/ydb/blob/stable-23-3/ydb/deploy/yaml_config_examples/block-4-2.yaml) - для однодатацентрового кластера. + * [mirror-3dc](https://github.com/ydb-platform/ydb/blob/stable-23-3/ydb/deploy/yaml_config_examples/mirror-3dc-9-nodes.yaml) - для cross-DC кластера из 9 нод. + * [mirror-3dc-3nodes](https://github.com/ydb-platform/ydb/blob/stable-23-3//ydb/deploy/yaml_config_examples/mirror-3dc-3-nodes.yaml) - для cross-DC кластера из 3 нод. + +1. В секции `host_configs` укажите все диски и их тип на каждой из нод кластера. Возможные варианты типов дисков: + + * ROT: rotational, HDD диски. + * SSD: SSD или NVMe диски. + + ```yaml + host_configs: + - drive: + - path: /dev/disk/by-partlabel/ydb_disk_ssd_01 + type: SSD + host_config_id: 1 + ``` + +1. В секции `hosts` укажите FQDN всех нод, их конфигурацию и расположение по датацентрам (`data_center`) и стойкам (`rack`): + + ```yaml + hosts: + - host: node1.ydb.tech + host_config_id: 1 + walle_location: + body: 1 + data_center: 'zone-a' + rack: '1' + - host: node2.ydb.tech + host_config_id: 1 + walle_location: + body: 2 + data_center: 'zone-b' + rack: '1' + - host: node3.ydb.tech + host_config_id: 1 + walle_location: + body: 3 + data_center: 'zone-c' + rack: '1' + ``` + +1. В секции `blob_storage_config` скорректируйте FQDN всех нод, используемых для размещения статической группы хранения: + + * для схемы `mirror-3-dc` необходимо указать FQDN для 9 нод; + * для схемы `block-4-2` необходимо указать FQDN для 8 нод. + +1. Включите аутентификацию пользователей (опционально). + + Если вы планируете использовать в кластере {{ ydb-short-name }} возможности аутентификации и разграничения доступа пользователей, добавьте в секцию `domains_config` следующие дополнительные параметры: + + ```yaml + domains_config: + security_config: + enforce_user_token_requirement: true + monitoring_allowed_sids: + - "root" + - "ADMINS" + - "DATABASE-ADMINS" + administration_allowed_sids: + - "root" + - "ADMINS" + - "DATABASE-ADMINS" + viewer_allowed_sids: + - "root" + - "ADMINS" + - "DATABASE-ADMINS" + ``` + +При использовании режима шифрования трафика убедитесь в наличии в конфигурационном файле {{ ydb-short-name }} установленных путей к файлам ключей и сертификатов в секциях `interconnect_config` и `grpc_config`: + +```yaml +interconnect_config: + start_tcp: true + encryption_mode: OPTIONAL + path_to_certificate_file: "/opt/ydb/certs/node.crt" + path_to_private_key_file: "/opt/ydb/certs/node.key" + path_to_ca_file: "/opt/ydb/certs/ca.crt" +grpc_config: + cert: "/opt/ydb/certs/node.crt" + key: "/opt/ydb/certs/node.key" + ca: "/opt/ydb/certs/ca.crt" + services_enabled: + - legacy +``` + +Сохраните конфигурационный файл {{ ydb-short-name }} под именем `/opt/ydb/cfg/config.yaml` на каждом сервере кластера. + +Более подробная информация по созданию файла конфигурации приведена в разделе [{#T}](../../../reference/configuration/index.md). + +## Скопируйте ключи и сертификаты TLS на каждый сервер {#tls-copy-cert} + +Подготовленные ключи и сертификаты TLS необходимо скопировать в защищенный каталог на каждом из узлов кластера {{ ydb-short-name }}. Ниже приведен пример команд для создания защищенного каталога и копирования файлов с ключами и сертификатами. + +```bash +sudo mkdir -p /opt/ydb/certs +sudo cp -v ca.crt /opt/ydb/certs/ +sudo cp -v node.crt /opt/ydb/certs/ +sudo cp -v node.key /opt/ydb/certs/ +sudo cp -v web.pem /opt/ydb/certs/ +sudo chown -R ydb:ydb /opt/ydb/certs +sudo chmod 700 /opt/ydb/certs +``` + +## Запустите статические узлы {#start-storage} + +{% list tabs group=manual-systemd %} + +- Вручную + + Запустите сервис хранения данных {{ ydb-short-name }} на каждом статическом узле кластера: + + ```bash + sudo su - ydb + cd /opt/ydb + export LD_LIBRARY_PATH=/opt/ydb/lib + /opt/ydb/bin/ydbd server --log-level 3 --syslog --tcp --yaml-config /opt/ydb/cfg/config.yaml \ + --grpcs-port 2135 --ic-port 19001 --mon-port 8765 --mon-cert /opt/ydb/certs/web.pem --node static + ``` + +- С использованием systemd + + Создайте на каждом сервере, где будет размещен статический узел кластера, конфигурационный файл systemd `/etc/systemd/system/ydbd-storage.service` по приведенному ниже образцу. Образец файла также можно [скачать из репозитория](https://github.com/ydb-platform/ydb/blob/main/ydb/deploy/systemd_services/ydbd-storage.service). + + ```ini + [Unit] + Description=YDB storage node + After=network-online.target rc-local.service + Wants=network-online.target + StartLimitInterval=10 + StartLimitBurst=15 + + [Service] + Restart=always + RestartSec=1 + User=ydb + PermissionsStartOnly=true + StandardOutput=syslog + StandardError=syslog + SyslogIdentifier=ydbd + SyslogFacility=daemon + SyslogLevel=err + Environment=LD_LIBRARY_PATH=/opt/ydb/lib + ExecStart=/opt/ydb/bin/ydbd server --log-level 3 --syslog --tcp \ + --yaml-config /opt/ydb/cfg/config.yaml \ + --grpcs-port 2135 --ic-port 19001 --mon-port 8765 \ + --mon-cert /opt/ydb/certs/web.pem --node static + LimitNOFILE=65536 + LimitCORE=0 + LimitMEMLOCK=3221225472 + + [Install] + WantedBy=multi-user.target + ``` + + Запустите сервис на каждом статическом узле {{ ydb-short-name }}: + + ```bash + sudo systemctl start ydbd-storage + ``` + +{% endlist %} + +## Инициализируйте кластер {#initialize-cluster} + +Операция инициализации кластера осуществляет настройку набора статических узлов, перечисленных в конфигурационном файле кластера, для хранения данных {{ ydb-short-name }}. + +Для инициализации кластера потребуется файл сертификата центра регистрации `ca.crt`, путь к которому должен быть указан при выполнении соответствующих команд. Перед выполнением соответствующих команд скопируйте файл `ca.crt` на сервер, на котором эти команды будут выполняться. + +Порядок действий по инициализации кластера зависят от того, включен ли в конфигурационном файле {{ ydb-short-name }} режим аутентификации пользователей. + +{% list tabs group=authentication %} + +- Аутентификация включена + + Для выполнения административных команд (включая инициализацию кластера, создание баз данных, управление дисками и другие) в кластере со включённым режимом аутентификации пользователей необходимо предварительно получить аутентификационный токен с использованием клиента {{ ydb-short-name }} CLI версии 2.0.0 или выше. Клиент {{ ydb-short-name }} CLI следует установить на любом компьютере, имеющем сетевой доступ к узлам кластера (например, на одном из узлов кластера), в соответствии с [инструкцией по установке](../../../reference/ydb-cli/install.md). + + При первоначальной установке кластера в нём существует единственная учётная запись `root` с пустым паролем, поэтому команда получения токена выглядит следующим образом: + + ```bash + ydb -e grpcs://:2135 -d /Root --ca-file ca.crt \ + --user root --no-password auth get-token --force >token-file + ``` + + В качестве сервера для подключения (параметр `-e` или `--endpoint`) может быть указан любой из серверов хранения в составе кластера. + + При успешном выполнении указанной выше команды аутентификационный токен будет записан в файл `token-file`. Файл токена необходимо скопировать на один из серверов хранения в составе кластера, а затем на выбранном сервере выполнить команды: + + ```bash + export LD_LIBRARY_PATH=/opt/ydb/lib + /opt/ydb/bin/ydbd -f token-file --ca-file ca.crt -s grpcs://`hostname -f`:2135 \ + admin blobstorage config init --yaml-file /opt/ydb/cfg/config.yaml + echo $? + ``` + +- Аутентификация выключена + + На одном из серверов хранения в составе кластера выполните команды: + + ```bash + export LD_LIBRARY_PATH=/opt/ydb/lib + /opt/ydb/bin/ydbd --ca-file ca.crt -s grpcs://`hostname -f`:2135 \ + admin blobstorage config init --yaml-file /opt/ydb/cfg/config.yaml + echo $? + ``` + +{% endlist %} + +При успешном выполнении инициализации кластера выведенный на экран код завершения команды инициализации кластера должен быть нулевым. + +## Создайте базу данных {#create-db} + +Для работы со строковыми или колоночными таблицами необходимо создать как минимум одну базу данных и запустить процесс или процессы, обслуживающие эту базу данных (динамические узлы). + +Для выполнения административной команды создания базы данных потребуется файл сертификата центра регистрации `ca.crt`, аналогично описанному выше порядку выполнения действий по инициализации кластера. + +При создании базы данных устанавливается первоначальное количество используемых групп хранения, определяющее доступную пропускную способность ввода-вывода и максимальную емкость хранения. Количество групп хранения может быть при необходимости увеличено после создания базы данных. + +Порядок действий по созданию базы данных зависит от того, включен ли в конфигурационном файле {{ ydb-short-name }} режим аутентификации пользователей. + +{% list tabs group=authentication %} + +- Аутентификация включена + + Необходимо получить аутентификационный токен. Может использоваться файл с токеном аутентификации, полученный при выполнении [инициализации кластера](#initialize-cluster), либо подготовлен новый токен. + + Файл токена необходимо скопировать на один из серверов хранения в составе кластера, а затем на выбранном сервере выполнить команды: + + ```bash + export LD_LIBRARY_PATH=/opt/ydb/lib + /opt/ydb/bin/ydbd -f token-file --ca-file ca.crt -s grpcs://`hostname -s`:2135 \ + admin database /Root/testdb create ssd:1 + echo $? + ``` + +- Аутентификация выключена + + На одном из серверов хранения в составе кластера выполните команды: + + ```bash + export LD_LIBRARY_PATH=/opt/ydb/lib + /opt/ydb/bin/ydbd --ca-file ca.crt -s grpcs://`hostname -s`:2135 \ + admin database /Root/testdb create ssd:1 + echo $? + ``` + +{% endlist %} + +При успешном создании базы данных, выведенный на экран код завершения команды должен быть нулевым. + +В приведенном выше примере команд используются следующие параметры: + +* `/Root` - имя корневого домена, должно соответствовать настройке `domains_config`.`domain`.`name` в файле конфигурации кластера; +* `testdb` - имя создаваемой базы данных; +* `ssd:1` - имя пула хранения и количество выделяемых групп хранения. Имя пула обычно означает тип устройств хранения данных и должно соответствовать настройке `storage_pool_types`.`kind` внутри элемента `domains_config`.`domain` файла конфигурации. + +## Запустите динамические узлы {#start-dynnode} + +{% list tabs group=manual-systemd %} + +- Вручную + + Запустите динамический узел {{ ydb-short-name }} для базы `/Root/testdb`: + + ```bash + sudo su - ydb + cd /opt/ydb + export LD_LIBRARY_PATH=/opt/ydb/lib + /opt/ydb/bin/ydbd server --grpcs-port 2136 --grpc-ca /opt/ydb/certs/ca.crt \ + --ic-port 19002 --ca /opt/ydb/certs/ca.crt \ + --mon-port 8766 --mon-cert /opt/ydb/certs/web.pem \ + --yaml-config /opt/ydb/cfg/config.yaml --tenant /Root/testdb \ + --node-broker grpcs://:2135 \ + --node-broker grpcs://:2135 \ + --node-broker grpcs://:2135 + ``` + + В примере команды выше `` - FQDN трех любых серверов, на которых запущены статические узлы кластера. + +- С использованием systemd + + Создайте конфигурационный файл systemd `/etc/systemd/system/ydbd-testdb.service` по приведенному ниже образцу. Образец файла также можно [скачать из репозитория](https://github.com/ydb-platform/ydb/blob/main/ydb/deploy/systemd_services/ydbd-testdb.service). + + ```ini + [Unit] + Description=YDB testdb dynamic node + After=network-online.target rc-local.service + Wants=network-online.target + StartLimitInterval=10 + StartLimitBurst=15 + + [Service] + Restart=always + RestartSec=1 + User=ydb + PermissionsStartOnly=true + StandardOutput=syslog + StandardError=syslog + SyslogIdentifier=ydbd + SyslogFacility=daemon + SyslogLevel=err + Environment=LD_LIBRARY_PATH=/opt/ydb/lib + ExecStart=/opt/ydb/bin/ydbd server \ + --grpcs-port 2136 --grpc-ca /opt/ydb/certs/ca.crt \ + --ic-port 19002 --ca /opt/ydb/certs/ca.crt \ + --mon-port 8766 --mon-cert /opt/ydb/certs/web.pem \ + --yaml-config /opt/ydb/cfg/config.yaml --tenant /Root/testdb \ + --node-broker grpcs://:2135 \ + --node-broker grpcs://:2135 \ + --node-broker grpcs://:2135 + LimitNOFILE=65536 + LimitCORE=0 + LimitMEMLOCK=32212254720 + + [Install] + WantedBy=multi-user.target + ``` + + В примере файла выше `` - FQDN трех любых серверов, на которых запущены статические узлы кластера. + + Запустите динамический узел {{ ydb-short-name }} для базы `/Root/testdb`: + + ```bash + sudo systemctl start ydbd-testdb + ``` + +{% endlist %} + +Запустите дополнительные динамические узлы на других серверах для масштабирования и обеспечения отказоустойчивости базы данных. + +## Первоначальная настройка учетных записей {#security-setup} + +Если в файле настроек кластера включен режим аутентификации, то перед началом работы с кластером {{ ydb-short-name }} необходимо выполнить первоначальную настройку учетных записей. + +При первоначальной установке кластера {{ ydb-short-name }} автоматически создается учетная запись `root` с пустым паролем, а также стандартный набор групп пользователей, описанный в разделе [{#T}](../../../yql/reference/syntax/alter-group.md#builtin). + +Для выполнения первоначальной настройки учетных записей в созданном кластере {{ ydb-short-name }} выполните следующие операции: + +1. Установите {{ ydb-short-name }} CLI, как описано в [документации](../../../reference/ydb-cli/install.md). + +1. Выполните установку пароля учетной записи `root`: + + ```bash + ydb --ca-file ca.crt -e grpcs://:2136 -d /Root/testdb --user root --no-password \ + yql -s 'ALTER USER root PASSWORD "passw0rd"' + ``` + + Вместо значения `passw0rd` подставьте необходимый пароль. + +1. Создайте дополнительные учетные записи: + + ```bash + ydb --ca-file ca.crt -e grpcs://:2136 -d /Root/testdb --user root \ + yql -s 'CREATE USER user1 PASSWORD "passw0rd"' + ``` + +1. Установите права учетных записей, включив их во встроенные группы: + + ```bash + ydb --ca-file ca.crt -e grpcs://:2136 -d /Root/testdb --user root \ + yql -s 'ALTER GROUP `ADMINS` ADD USER user1' + ``` + +В перечисленных выше примерах команд `` - FQDN сервера, на котором запущен любой динамический узел, обслуживающий базу `/Root/testdb`. + +При выполнении команд создания учетных записей и присвоения групп клиент {{ ydb-short-name }} CLI будет запрашивать ввод пароля пользователя `root`. Избежать многократного ввода пароля можно, создав профиль подключения, как описано в [документации {{ ydb-short-name }} CLI](../../../reference/ydb-cli/profile/index.md). + +## Протестируйте работу с созданной базой {#try-first-db} + +1. Установите {{ ydb-short-name }} CLI, как описано в [документации](../../../reference/ydb-cli/install.md). + +1. Создайте тестовую строковую (`test_row_table`) или колоночную таблицу (`test_column_table`): + +{% list tabs %} + +- Создание строковой таблицы + + ```bash + ydb --ca-file ca.crt -e grpcs://:2136 -d /Root/testdb --user root \ + yql -s 'CREATE TABLE `testdir/test_row_table` (id Uint64, title Utf8, PRIMARY KEY (id));' + ``` + +- Создание колоночной таблицы + + ```bash + ydb --ca-file ca.crt -e grpcs://:2136 -d /Root/testdb --user root \ + yql -s 'CREATE TABLE `testdir/test_column_table` (id Uint64, title Utf8, PRIMARY KEY (id)) WITH (STORE = COLUMN);' + ``` + +{% endlist %} + +Где `` - FQDN сервера, на котором запущен динамический узел, обслуживающий базу `/Root/testdb`. + +## Проверка доступа ко встроенному web-интерфейсу + +Для проверки доступа ко встроенному web-интерфейсу {{ ydb-short-name }} достаточно открыть в Web-браузере страницу с адресом `https://:8765`, где `` - FQDN сервера, на котором запущен любой статический узел {{ ydb-short-name }}. + +В Web-браузере должно быть настроено доверие в отношении центра регистрации, выпустившего сертификаты для кластера {{ ydb-short-name }}, в противном случае будет отображено предупреждение об использовании недоверенного сертификата. + +Если в кластере включена аутентификация, в Web-браузере должен отобразиться запрос логина и пароля. После ввода верных данных аутентификации должна отобразиться начальная страница встроенного web-интерфейса. Описание доступных функций и пользовательского интерфейса приведено в разделе [{#T}](../../../reference/embedded-ui/index.md). + +{% note info %} + +Обычно для обеспечения доступа ко встроенному web-интерфейсу {{ ydb-short-name }} настраивают отказоустойчивый HTTP-балансировщик на базе программного обеспечения `haproxy`, `nginx` или аналогов. Детали настройки HTTP-балансировщика выходят за рамки стандартной инструкции по установке {{ ydb-short-name }}. + +{% endnote %} + + +## Особенности установки {{ ydb-short-name }} в незащищенном режиме + +{% note warning %} + +Мы не рекомендуем использовать незащищенный режим работы {{ ydb-short-name }} ни при эксплуатации, ни при разработке приложений. + +{% endnote %} + +Описанная выше процедура установки предусматривает развёртывание {{ ydb-short-name }} в стандартном защищенном режиме. + +Незащищённый режим работы {{ ydb-short-name }} предназначен для решения тестовых задач, преимущественно связанных с разработкой и тестированием программного обеспечения {{ ydb-short-name }}. В незащищенном режиме: + +* трафик между узлами кластера, а также между приложениями и кластером использует незашифрованные соединения; +* не используется аутентификация пользователей (включение аутентификации при отсутствии шифрования трафика не имеет смысла, поскольку логин и пароль в такой конфигурации передавались бы через сеть в открытом виде). + +Установка {{ ydb-short-name }} для работы в незащищенном режиме производится в порядке, описанном выше, со следующими исключениями: + +1. При подготовке к установке не требуется формировать сертификаты и ключи TLS, и не выполняется копирование сертификатов и ключей на узлы кластера. +1. Из конфигурационных файлов кластерных узлов исключается подсекция `security_config` в секции `domains_config`, а также целиком исключаются секции `interconnect_config` и `grpc_config`. +1. Используются упрощенный вариант команд запуска статических и динамических узлов кластера: исключаются опции с именами файлов сертификатов и ключей, используется протокол `grpc` вместо `grpcs` при указании точек подключения. +1. Пропускается ненужный в незащищенном режиме шаг по получению токена аутентификации перед выполнением инициализации кластера и созданием базы данных. +1. Команда инициализации кластера выполняется в следующей форме: + + ```bash + export LD_LIBRARY_PATH=/opt/ydb/lib + /opt/ydb/bin/ydbd admin blobstorage config init --yaml-file /opt/ydb/cfg/config.yaml + echo $? + ``` + +1. Команда создания базы данных выполняется в следующей форме: + + ```bash + export LD_LIBRARY_PATH=/opt/ydb/lib + /opt/ydb/bin/ydbd admin database /Root/testdb create ssd:1 + ``` + +1. При обращении к базе данных из {{ ydb-short-name }} CLI и приложений используется протокол grpc вместо grpcs, и не используется аутентификация. diff --git a/ydb/docs/ru/core/devops/manual/manual-static-group-management/migration-to-distconf.md b/ydb/docs/ru/core/devops/manual/manual-static-group-management/migration-to-distconf.md new file mode 100644 index 000000000000..24dd299ad6c2 --- /dev/null +++ b/ydb/docs/ru/core/devops/manual/manual-static-group-management/migration-to-distconf.md @@ -0,0 +1,29 @@ +# Миграция на новую конфигурацию + +Данный документ содержит инструкции по миграции на новую конфигурацию кластера {{ ydb-short-name }}. + +{% note info %} +Переход к автоматической конфигурации требуют непосредственного вмешательства администратора кластера, процесс не будет происходить автоматически. +{% endnote %} + +Исходное состояние: кластер сконфигурирован с одним файлом конфигурации `config.yaml`, разложенным по нодам и залитым в систему. + +Для включения автоматической конфигурации кластера, необходимо проделать следующие шаги: + +1. Добавить в `config.yaml` в разделе `config` следующий блок: + +```yaml +self_management_config: + enabled: true +``` + +2. Разложить обновленный конфигурационный файл `config.yaml` по всем нодам кластера. +3. Перезапустить все узлы кластера с помощью процедуры [rolling-restart](../../../maintenance/manual/node_restarting.md). +4. Удалить из файла `config.yaml` блоки `blob_storage_config` и `domains_config`. +5. Выполнить следующую команду с измененным конфигурационным файлом: + +```bash +ydb -e grpc://:2135 admin storage replace -f config.yaml +``` + +В результате проделанных действий кластер будет переведен в режим автоматической конфигурации diff --git a/ydb/docs/ru/core/devops/manual/manual-static-group-management/migration-to-manual-configuration.md b/ydb/docs/ru/core/devops/manual/manual-static-group-management/migration-to-manual-configuration.md new file mode 100644 index 000000000000..477428a9d01d --- /dev/null +++ b/ydb/docs/ru/core/devops/manual/manual-static-group-management/migration-to-manual-configuration.md @@ -0,0 +1,36 @@ +# Миграция на ручную конфигурацию + +Данный документ содержит инструкции по миграции на конфигурацию кластера, с ручным управлением [State Storage](../../../reference/configuration/index.md#domains-state) и [статической группой](../../../reference/configuration/index.md#blob_storage_config). + +{% note info %} + +Данный режим работы конфигурации не рекомендуется для кластеров {ydb-short-name} версии 25.1 и выше и считается устаревшим. + +{% endnote %} + +Исходное состояние: кластер сконфигурирован с одним файлом конфигурации `config.yaml`, с включенны режимом автоконфигурации, разложенным по нодам и залитым в систему. + +Для выключения автоматической конфигурации кластера, необходимо проделать следующие шаги: + +1. Получить текущий конфигурацию кластера с помощью команды: + +```bash +ydb -e grpc://:2135 admin storage fetch > config.yaml +``` + +2. Добавить в конфигурацию в разделе `config` блоки [blob_storage_config](../../../reference/configuration/index.md#blob_storage_config) и [domains_config](../../../reference/configuration/index.md#domains_config) а также следующий блок: + +```yaml +self_management_config: + enabled: false +``` + +3. Выполнить следующую команду с измененным конфигурационным файлом: + +```bash +ydb -e grpc://:2135 admin storage replace -f config.yaml +``` + +4. Разложить обновленный конфигурационный файл по всем нодам кластера. + +В результате проделанных действий кластер будет переведен в режим ручного управления State Storage и статической группой. diff --git a/ydb/docs/ru/core/devops/manual/state-storage-move.md b/ydb/docs/ru/core/devops/manual/manual-static-group-management/state-storage-move.md similarity index 63% rename from ydb/docs/ru/core/devops/manual/state-storage-move.md rename to ydb/docs/ru/core/devops/manual/manual-static-group-management/state-storage-move.md index 26e42790f5cf..e1fe4264c5c6 100644 --- a/ydb/docs/ru/core/devops/manual/state-storage-move.md +++ b/ydb/docs/ru/core/devops/manual/manual-static-group-management/state-storage-move.md @@ -1,8 +1,8 @@ # Перемещение State Storage -Если нужно вывести из эксплуатации хост кластера {{ ydb-short-name }}, на котором располагается часть [State Storage](../../reference/configuration/index.md#domains-state), необходимо переместить ее на другой хост. +Если нужно вывести из эксплуатации хост кластера {{ ydb-short-name }}, на котором располагается часть [State Storage](../../../reference/configuration/index.md#domains-state), необходимо переместить ее на другой хост. -{% include [warning-configuration-error](../_includes/warning-configuration-error.md) %} +{% include [warning-configuration-error](../../_includes/warning-configuration-error.md) %} В качестве примера рассмотрим кластер {{ ydb-short-name }} со следующей конфигурацией State Storage: @@ -21,13 +21,13 @@ domains_config: На хосте с `node_id:1` сконфигурирован и запущен [статический узел](../../reference/configuration/index.md#hosts) кластера, который обслуживает часть State Storage. Предположим, нам нужно вывести из эксплуатации этот хост. -Для замены `node_id:1` мы [добавили](../../maintenance/manual/cluster_expansion.md#add-host) в кластер новый хост с `node_id:10` и [развернули](../../maintenance/manual/cluster_expansion.md#add-static-node) на нем статический узел. +Для замены `node_id:1` мы [добавили](../../../maintenance/manual/manual-static-group-management/cluster-expansion.md#add-host) в кластер новый хост с `node_id:10` и [развернули](../../../maintenance/manual/manual-static-group-management/cluster-expansion.md#add-static-node) на нем статический узел. Чтобы переместить State Storage с хоста `node_id:1` на `node_id:10`: 1. Остановите статические узлы кластера на хостах с `node_id:1` и `node_id:10`. - {% include [fault-tolerance](../_includes/fault-tolerance.md) %} + {% include [fault-tolerance](../../_includes/fault-tolerance.md) %} 1. В конфигурационном файле `config.yaml` измените список хостов `node`, заменив идентификатор удаляемого хоста на идентификатор добавляемого: @@ -43,5 +43,6 @@ domains_config: ``` 1. Обновите конфигурационные файлы `config.yaml` для всех узлов кластера, в том числе и динамических. -1. С помощью процедуры [rolling-restart](../../maintenance/manual/node_restarting.md) перезапустите все узлы кластера, включая динамические, кроме статических узлов на хостах с `node_id:1` и `node_id:10`. Обратите внимание, что между рестартом хостов необходима задержка как минимум в 15 секунд. +1. С помощью процедуры [rolling-restart](../../../maintenance/manual/node_restarting.md) перезапустите все узлы кластера, включая динамические, кроме статических узлов на хостах с `node_id:1` и `node_id:10`. Обратите внимание, что между рестартом хостов необходима задержка как минимум в 15 секунд. 1. Запустите статические узлы кластера на хостах `node_id:1` и `node_id:10`. + diff --git a/ydb/docs/ru/core/devops/manual/static-group-move.md b/ydb/docs/ru/core/devops/manual/manual-static-group-management/static-group-move.md similarity index 66% rename from ydb/docs/ru/core/devops/manual/static-group-move.md rename to ydb/docs/ru/core/devops/manual/manual-static-group-management/static-group-move.md index fad95821f119..7182a69aeb9b 100644 --- a/ydb/docs/ru/core/devops/manual/static-group-move.md +++ b/ydb/docs/ru/core/devops/manual/manual-static-group-management/static-group-move.md @@ -1,10 +1,10 @@ # Перемещение статической группы -Если нужно вывести из эксплуатации хост кластера {{ ydb-short-name }}, на котором располагается часть [статической группы](../../reference/configuration/index.md#blob_storage_config), необходимо переместить ее на другой хост. +Если нужно вывести из эксплуатации хост кластера {{ ydb-short-name }}, на котором располагается часть [статической группы](../../../reference/configuration/index.md#blob_storage_config), необходимо переместить ее на другой хост. -{% include [warning-configuration-error](../_includes/warning-configuration-error.md) %} +{% include [warning-configuration-error](../../_includes/warning-configuration-error.md) %} -В качестве примера рассмотрим кластер {{ ydb-short-name }}, в котором на хосте с `node_id:1` сконфигурирован и запущен [статический узел](../../reference/configuration/index.md#hosts). Этот узел обслуживает часть статической группы. +В качестве примера рассмотрим кластер {{ ydb-short-name }}, в котором на хосте с `node_id:1` сконфигурирован и запущен [статический узел](../../../reference/configuration/index.md#hosts). Этот узел обслуживает часть статической группы. Фрагмент конфигурации статической группы: @@ -30,13 +30,13 @@ blob_storage_config: ... ``` -Для замены `node_id:1` мы [добавили](../../maintenance/manual/cluster_expansion.md#add-host) в кластер новый хост с `node_id:10` и [развернули](../../maintenance/manual/cluster_expansion.md#add-static-node) на нем статический узел. +Для замены `node_id:1` мы [добавили](../../../maintenance/manual/manual-static-group-management/cluster-expansion.md#add-host) в кластер новый хост с `node_id:10` и [развернули](../../../maintenance/manual/manual-static-group-management/cluster-expansion.md#add-static-node) на нем статический узел. Чтобы переместить часть статической группы с хоста `node_id:1` на `node_id:10`: 1. Остановите статический узел кластера на хосте с `node_id:1`. - {% include [fault-tolerance](../_includes/fault-tolerance.md) %} + {% include [fault-tolerance](../../_includes/fault-tolerance.md) %} 1. В конфигурационном файле `config.yaml` измените значение `node_id`, заменив идентификатор удаляемого хоста на идентификатор добавляемого: ```yaml @@ -64,6 +64,6 @@ blob_storage_config: Измените путь `path` и категорию `pdisk_category` диска, если на хосте с `node_id: 10` они отличаются. 1. Обновите конфигурационные файлы `config.yaml` для всех узлов кластера, в том числе и динамических. -1. С помощью процедуры [rolling-restart](../../maintenance/manual/node_restarting.md) перезапустите все статические узлы кластера. -1. Перейдите на страницу мониторинга Embedded UI и убедитесь, что VDisk статической группы появился на целевом физическом диске и реплицируется. Подробнее см. [{#T}](../../reference/embedded-ui/ydb-monitoring.md#static-group). -1. С помощью процедуры [rolling-restart](../../maintenance/manual/node_restarting.md) перезапустите все динамические узлы кластера. +1. С помощью процедуры [rolling-restart](../../../maintenance/manual/node_restarting.md) перезапустите все статические узлы кластера. +1. Перейдите на страницу мониторинга Embedded UI и убедитесь, что VDisk статической группы появился на целевом физическом диске и реплицируется. Подробнее см. [{#T}](../../../reference/embedded-ui/ydb-monitoring.md#static-group). +1. С помощью процедуры [rolling-restart](../../../maintenance/manual/node_restarting.md) перезапустите все динамические узлы кластера. diff --git a/ydb/docs/ru/core/devops/manual/manual-static-group-management/toc_p.yaml b/ydb/docs/ru/core/devops/manual/manual-static-group-management/toc_p.yaml new file mode 100644 index 000000000000..d971e1abcb51 --- /dev/null +++ b/ydb/docs/ru/core/devops/manual/manual-static-group-management/toc_p.yaml @@ -0,0 +1,13 @@ +items: +- name: Первоначальное развертывание + href: initial-deployment.md +- name: Расширение кластера + href: cluster-expansion.md +- name: Перемещение State Storage + href: state-storage-move.md +- name: Перемещение статической группы + href: static-group-move.md +- name: Миграция на ручную конфигурацию + href: migration-to-manual-configuration.md +- name: Миграция на автоматическую конфигурацию + href: migration-to-distconf.md diff --git a/ydb/docs/ru/core/devops/manual/toc_p.yaml b/ydb/docs/ru/core/devops/manual/toc_p.yaml index c935391f83d8..677dbfbd7d3a 100644 --- a/ydb/docs/ru/core/devops/manual/toc_p.yaml +++ b/ydb/docs/ru/core/devops/manual/toc_p.yaml @@ -38,3 +38,7 @@ items: include: mode: link path: federated-queries/toc_p.yaml +- name: Ручной управление статической группой и State Storage + include: + mode: link + path: manual-static-group-management/toc_p.yaml diff --git a/ydb/docs/ru/core/maintenance/manual/cluster_expansion.md b/ydb/docs/ru/core/maintenance/manual/cluster_expansion.md index b6b315e52295..ea9ed3da62a7 100644 --- a/ydb/docs/ru/core/maintenance/manual/cluster_expansion.md +++ b/ydb/docs/ru/core/maintenance/manual/cluster_expansion.md @@ -31,28 +31,13 @@ Для добавления статических узлов в кластер необходимо выполнить следующую последовательность действий: -1. Отформатировать диски, которые будут использоваться для хранения данных {{ ydb-short-name }}, с использованием [процедуры, описанной для этапа развертывания кластера](../../devops/manual/initial-deployment.md#prepare-disks). - -1. Скорректировать [конфигурационный файл кластера](../../devops/manual/initial-deployment.md#config): - - * включить в конфигурацию описание добавляемых узлов (в секции `hosts`) и используемых на них дисков (в секции `host_configs`); - * установить номер изменения конфигурации в виде параметра `storage_config_generation: K` на верхнем уровне, где `K` - целое число, номер изменения (при первоначальной установке значение `K=0` или не указано, при первом расширении кластера `K=1`, при втором `K=2`, и так далее). - -1. Скопировать доработанный конфигурационный файл кластера на все существующие и на все добавляемые сервера кластера, заместив им старую версию конфигурационного файла. - -1. Выполнить последовательный перезапуск всех существующих статических узлов кластера, с ожиданием инициализации и восстановления работы каждого перезапускаемого узла. - -1. Выполнить последовательный перезапуск всех существующих динамических узлов кластера. - -1. Запустить процессы, обслуживающие новые статические узлы кластера, на соответствующих серверах. - -1. Убедиться в том, что новые статические узлы отображаются на [странице мониторинга кластера во встроенном UI](../../reference/embedded-ui/ydb-monitoring.md). +1. Очистить диски, которые будут использоваться для хранения данных {{ ydb-short-name }}, с использованием [процедуры, описанной для этапа развертывания кластера](../../devops/manual/initial-deployment.md#prepare-disks). 1. Получить токен аутентификации для выполнения административных команд с помощью {{ ydb-short-name }} CLI, например: ```bash ydb -e grpcs://:2135 -d /Root --ca-file ca.crt \ - --user root auth get-token --force >token-file + --user root auth get-token --force > token-file ``` В примере команды выше используются следующие параметры: @@ -64,12 +49,31 @@ При выполнении приведенной выше команды {{ ydb-short-name }} CLI запросит пароль для аутентификации указанного пользователя. +1. Получить текущую конфигурацию кластера, выполнив команду следующего вида на любом из узлов кластера: + + ```bash + ydb --token-file token-file --ca-file ca.crt -e grpcs://:2135 \ + admin cluster config fetch > config.yaml + ``` + +1. Скорректировать [конфигурационный файл кластера](../../devops/manual/initial-deployment.md#config), включив в конфигурацию описание добавляемых узлов (в секции `hosts`) и используемых на них дисков (в секции `host_configs`); + +1. Скопировать доработанный конфигурационный файл кластера на все существующие и на все добавляемые сервера кластера, заместив им старую версию конфигурационного файла. + +1. Выполнить последовательный перезапуск всех существующих статических узлов кластера, с ожиданием инициализации и восстановления работы каждого перезапускаемого узла. + +1. Выполнить последовательный перезапуск всех существующих динамических узлов кластера. + +1. Запустить процессы, обслуживающие новые статические узлы кластера, на соответствующих серверах. + +1. Убедиться в том, что новые статические узлы отображаются на [странице мониторинга кластера во встроенном UI](../../reference/embedded-ui/ydb-monitoring.md). + 1. Разрешить кластеру {{ ydb-short-name }} использовать диски на новых статических узлах для хранения данных, выполнив следующую команду на любом из узлов кластера: ```bash export LD_LIBRARY_PATH=/opt/ydb/lib - /opt/ydb/bin/ydbd -f ydbd-token-file --ca-file ca.crt -s grpcs://`hostname -f`:2135 \ - admin blobstorage config init --yaml-file /opt/ydb/cfg/config.yaml + ydb --token-file ydbd-token-file --ca-file ca.crt -e grpcs://:2135 \ + admin cluster config replace -f config.yaml echo $? ``` @@ -79,10 +83,10 @@ * `2135` - номер порта grpcs сервиса статических узлов; * `ca.crt` - имя файла с сертификатом центра регистрации. - Если при выполнении приведенной выше команды возвращается ошибка сверки номера конфигурации, это означает, что при корректировке конфигурационного файла кластера было неверно установлено поле `storage_config_generation`. Текст ошибки содержит ожидаемое значение номера конфигурации, которое можно использовать для корректировки файла настроек кластера. Пример сообщения об ошибке сверки номера конфигурации: + Если при выполнении приведенной выше команды возвращается ошибка сверки версии конфигурации, это означает, что версия текущего конфига устарела и необходимо получить новый из кластера, повторив шаг 3. Пример сообщения об ошибке сверки версии конфигурации: ```proto - ErrorDescription: "ItemConfigGeneration mismatch ItemConfigGenerationProvided# 0 ItemConfigGenerationExpected# 1" + ErrorDescription: "ConfigVersion mismatch ConfigVersionProvided# 0 ConfigVersionExpected# 1" ``` 2. Добавить дополнительные группы хранения в одну или несколько баз данных, выполнив команды следующего вида на любом из узлов кластера: diff --git a/ydb/docs/ru/core/maintenance/manual/index.md b/ydb/docs/ru/core/maintenance/manual/index.md index 6d2f6d1c383e..539fc13f6933 100644 --- a/ydb/docs/ru/core/maintenance/manual/index.md +++ b/ydb/docs/ru/core/maintenance/manual/index.md @@ -6,8 +6,6 @@ * [{#T}](cluster_expansion.md). * [{#T}](adding_storage_groups.md). - * [{#T}](../../devops/manual/state-storage-move.md) - * [{#T}](../../devops/manual/static-group-move.md) * Обслуживание: