aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authormzinal <zinal@ydb.tech>2023-02-17 13:52:31 +0300
committermzinal <zinal@ydb.tech>2023-02-17 13:52:31 +0300
commit71c9dc43d48055edab1354e1406de37e3e6dd672 (patch)
tree8ae5f6b3b8b905f76e6ecbcd235fdbfb5fc4f948
parentcd21459f6ea789b57cb76b39cb52553923024abd (diff)
downloadydb-71c9dc43d48055edab1354e1406de37e3e6dd672.tar.gz
PR from branch users/mzinal/
better bare metal deployment instruction in Russian systemd service file templates for ydbd, TLS certificate generator script sample for YDB
-rw-r--r--ydb/deploy/systemd_services/nontls/ydbd-storage.service25
-rw-r--r--ydb/deploy/systemd_services/nontls/ydbd-testdb.service25
-rw-r--r--ydb/deploy/systemd_services/ydbd-storage.service26
-rw-r--r--ydb/deploy/systemd_services/ydbd-testdb.service28
-rw-r--r--ydb/deploy/tls_cert_gen/README.md13
-rw-r--r--ydb/deploy/tls_cert_gen/ydb-ca-nodes.txt.example3
-rwxr-xr-xydb/deploy/tls_cert_gen/ydb-ca-update.sh154
-rw-r--r--ydb/deploy/yaml_config_examples/block-4-2.yaml12
-rw-r--r--ydb/deploy/yaml_config_examples/mirror-3dc-3-nodes.yaml12
-rw-r--r--ydb/deploy/yaml_config_examples/mirror-3dc-9-nodes.yaml12
-rw-r--r--ydb/docs/en/core/_includes/storage-device-requirements.md2
-rw-r--r--ydb/docs/en/core/cluster/topology.md5
-rw-r--r--ydb/docs/en/core/deploy/manual/_includes/prepare-configs.md5
-rw-r--r--ydb/docs/en/core/deploy/manual/deploy-ydb-on-premises.md506
-rw-r--r--ydb/docs/ru/core/_includes/storage-device-requirements.md2
-rw-r--r--ydb/docs/ru/core/cluster/system-requirements.md2
-rw-r--r--ydb/docs/ru/core/cluster/topology.md7
-rw-r--r--ydb/docs/ru/core/deploy/manual/_includes/prepare-configs.md5
-rw-r--r--ydb/docs/ru/core/deploy/manual/deploy-ydb-on-premises.md504
19 files changed, 825 insertions, 523 deletions
diff --git a/ydb/deploy/systemd_services/nontls/ydbd-storage.service b/ydb/deploy/systemd_services/nontls/ydbd-storage.service
new file mode 100644
index 0000000000..84e1ac2175
--- /dev/null
+++ b/ydb/deploy/systemd_services/nontls/ydbd-storage.service
@@ -0,0 +1,25 @@
+[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 --grpc-port 2135 --ic-port 19001 --mon-port 8765 --node static
+LimitNOFILE=65536
+LimitCORE=0
+LimitMEMLOCK=3221225472
+
+[Install]
+WantedBy=multi-user.target
diff --git a/ydb/deploy/systemd_services/nontls/ydbd-testdb.service b/ydb/deploy/systemd_services/nontls/ydbd-testdb.service
new file mode 100644
index 0000000000..79a718e91f
--- /dev/null
+++ b/ydb/deploy/systemd_services/nontls/ydbd-testdb.service
@@ -0,0 +1,25 @@
+[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 --grpc-port 2136 --ic-port 19002 --mon-port 8766 --yaml-config /opt/ydb/cfg/config.yaml --tenant /Root/testdb --node-broker <ydb1>:2135 --node-broker <ydb2>:2135 --node-broker <ydb3>:2135
+LimitNOFILE=65536
+LimitCORE=0
+LimitMEMLOCK=32212254720
+
+[Install]
+WantedBy=multi-user.target
diff --git a/ydb/deploy/systemd_services/ydbd-storage.service b/ydb/deploy/systemd_services/ydbd-storage.service
new file mode 100644
index 0000000000..98f321184a
--- /dev/null
+++ b/ydb/deploy/systemd_services/ydbd-storage.service
@@ -0,0 +1,26 @@
+[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
diff --git a/ydb/deploy/systemd_services/ydbd-testdb.service b/ydb/deploy/systemd_services/ydbd-testdb.service
new file mode 100644
index 0000000000..e7bcc24dc3
--- /dev/null
+++ b/ydb/deploy/systemd_services/ydbd-testdb.service
@@ -0,0 +1,28 @@
+[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 --ic-port 19002 \
+ --mon-port 8766 --mon-cert /opt/ydb/certs/web.pem --ca /opt/ydb/certs/ca.crt \
+ --yaml-config /opt/ydb/cfg/config.yaml --tenant /Root/testdb \
+ --node-broker grpcs://<ydb1>:2135 --node-broker grpcs://<ydb2>:2135 --node-broker grpcs://<ydb3>:2135
+LimitNOFILE=65536
+LimitCORE=0
+LimitMEMLOCK=32212254720
+
+[Install]
+WantedBy=multi-user.target
diff --git a/ydb/deploy/tls_cert_gen/README.md b/ydb/deploy/tls_cert_gen/README.md
new file mode 100644
index 0000000000..05d536cff7
--- /dev/null
+++ b/ydb/deploy/tls_cert_gen/README.md
@@ -0,0 +1,13 @@
+# TLS certificate generation script for YDB
+
+In order to simplify generation and re-generation of certificates for YDB cluster, the `ydb-ca-update.sh` script has been created.
+
+The recommended option is to generate a separate certificate for each cluster node. Users may choose to generate a single wildcard certificate for the whole cluster instead, by specifying the host name in the form of `*.domain.com`.
+
+The script reads the list of certificate host names from `ydb-ca-nodes.txt` file, one hostname per line. Host names should be specified exactly as they are defined in the YDB cluster configuration file. If the wildcard name is used, it should match the correspoding hosts DNS names. Up to two host names can be specified in each line, both referring to the same host.
+
+The generated certificates are written into the directory structure in the `CA` subdirectory, which is created if missing.
+
+In case the certificate authority is not initialized yet, private CA key and certificate are generated.
+
+For each host name or wildcard listed in the `ydb-ca-nodes.txt` file, each invocation of the script generates the new key and new certificate signed by the private CA. All generated files are put into `CA/certs/YYYY-MM-DD_hh-mi-ss` subdirectory.
diff --git a/ydb/deploy/tls_cert_gen/ydb-ca-nodes.txt.example b/ydb/deploy/tls_cert_gen/ydb-ca-nodes.txt.example
new file mode 100644
index 0000000000..edede8ace4
--- /dev/null
+++ b/ydb/deploy/tls_cert_gen/ydb-ca-nodes.txt.example
@@ -0,0 +1,3 @@
+ycydb-s1 ycydb-s1.ru-central1.internal
+ycydb-s2 ycydb-s2.ru-central1.internal
+ycydb-s3 ycydb-s3.ru-central1.internal
diff --git a/ydb/deploy/tls_cert_gen/ydb-ca-update.sh b/ydb/deploy/tls_cert_gen/ydb-ca-update.sh
new file mode 100755
index 0000000000..46703add66
--- /dev/null
+++ b/ydb/deploy/tls_cert_gen/ydb-ca-update.sh
@@ -0,0 +1,154 @@
+#! /bin/sh
+
+set -e
+set +u
+
+NODES_FILE=ydb-ca-nodes.txt
+KEY_BITS=4096
+
+[ -d CA ] || mkdir CA
+cd CA
+
+[ -d secure ] || mkdir secure
+[ -d certs ] || mkdir certs
+[ -d nodes ] || mkdir nodes
+
+if [ ! -f ca.cnf ]; then
+ echo "** Generating CA configuration file"
+cat >ca.cnf <<EOF
+[ ca ]
+default_ca = CA_default
+
+[ CA_default ]
+default_days = 365
+database = index.txt
+serial = serial.txt
+default_md = sha256
+copy_extensions = copy
+unique_subject = no
+
+[ req ]
+prompt=no
+distinguished_name = distinguished_name
+x509_extensions = extensions
+
+[ distinguished_name ]
+organizationName = YDB
+commonName = YDB CA
+
+[ extensions ]
+keyUsage = critical,digitalSignature,nonRepudiation,keyEncipherment,keyCertSign
+basicConstraints = critical,CA:true,pathlen:1
+
+[ signing_policy ]
+organizationName = supplied
+commonName = optional
+
+[ signing_node_req ]
+keyUsage = critical,digitalSignature,keyEncipherment
+extendedKeyUsage = serverAuth,clientAuth
+
+# Used to sign client certificates.
+[ signing_client_req ]
+keyUsage = critical,digitalSignature,keyEncipherment
+extendedKeyUsage = clientAuth
+EOF
+fi
+
+if [ ! -f secure/ca.key ]; then
+ echo "** Generating CA key"
+ openssl genrsa -out secure/ca.key ${KEY_BITS}
+fi
+
+if [ ! -f certs/ca.crt ]; then
+ echo "** Generating CA certificate"
+ openssl req -new -x509 -config ca.cnf -key secure/ca.key -out certs/ca.crt -days 1830 -batch
+fi
+
+[ -f index.txt ] || touch index.txt
+[ -f serial.txt ] || (echo 01 >serial.txt)
+
+# The '..' part here is due to changed current directory
+if [ ! -f ../${NODES_FILE} ]; then
+ echo "** Missing file ${NODES_FILE} - EXIT"
+ exit 0
+fi
+
+make_node_conf() {
+ mkdir -p nodes/"$1"
+ cfile=nodes/"$1"/options.cnf
+ if [ ! -f ${cfile} ]; then
+ echo "** Creating node configuration file for $2..."
+cat > ${cfile} <<EOF
+# OpenSSL node configuration file
+[ req ]
+prompt=no
+distinguished_name = distinguished_name
+req_extensions = extensions
+
+[ distinguished_name ]
+organizationName = YDB
+
+[ extensions ]
+subjectAltName = @alt_names
+
+[ alt_names ]
+DNS.1=$2
+EOF
+ if [ ! -z "$3" ]; then
+ vn=1
+ for nn in $3; do
+ vn=`echo "$vn + 1" | bc`
+ echo "DNS.$vn=$nn" >>${cfile}
+ done
+ fi
+ fi
+}
+
+make_node_key() {
+ if [ ! -f nodes/"$1"/node.key ]; then
+ mkdir -p nodes/"$1"
+ echo "** Generating key for node $2..."
+ openssl genrsa -out nodes/"$1"/node.key ${KEY_BITS}
+ fi
+}
+
+make_node_csr() {
+ if [ ! -f nodes/"$1"/node.csr ]; then
+ echo "** Generating CSR for node $2..."
+ openssl req -new -sha256 -config nodes/"$1"/options.cnf -key nodes/"$1"/node.key -out nodes/"$1"/node.csr -batch
+ fi
+}
+
+make_node_cert() {
+ if [ ! -f nodes/"$1"/node.crt ]; then
+ echo "** Generating certificate for node $2..."
+ openssl ca -config ca.cnf -keyfile secure/ca.key -cert certs/ca.crt -policy signing_policy \
+ -extensions signing_node_req -out nodes/"$1"/node.crt -outdir nodes/"$1"/ -in nodes/"$1"/node.csr -batch
+ fi
+ if [ ! -f nodes/"$1"/web.pem ]; then
+ cat nodes/"$1"/node.key nodes/"$1"/node.crt certs/ca.crt >nodes/"$1"/web.pem
+ fi
+}
+
+DEST_NAME=`date "+%Y-%m-%d_%H-%M-%S"`
+[ -d certs/"$DEST_NAME" ] || mkdir certs/"$DEST_NAME"
+cp -v certs/ca.crt certs/"$DEST_NAME"/
+
+move_node_files() {
+ mv -v nodes/"$1" certs/"$DEST_NAME"/
+}
+
+# The '..' part here is due to changed current directory
+(cat ../${NODES_FILE}; echo "") | while read node node2; do
+ if [ ! -z "$node" ]; then
+ safe_node=`echo $node | tr '*$/' '___'`
+ make_node_conf "$safe_node" "$node" "$node2"
+ make_node_key "$safe_node" "$node"
+ make_node_csr "$safe_node" "$node"
+ make_node_cert "$safe_node" "$node"
+ move_node_files "$safe_node" "$node"
+ fi
+done
+
+echo "All done. Certificates are in CA/certs/$DEST_NAME"
diff --git a/ydb/deploy/yaml_config_examples/block-4-2.yaml b/ydb/deploy/yaml_config_examples/block-4-2.yaml
index 2982a718f6..a3442b76b5 100644
--- a/ydb/deploy/yaml_config_examples/block-4-2.yaml
+++ b/ydb/deploy/yaml_config_examples/block-4-2.yaml
@@ -171,3 +171,15 @@ channel_profile_config:
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/mirror-3dc-3-nodes.yaml b/ydb/deploy/yaml_config_examples/mirror-3dc-3-nodes.yaml
index 77d493ad48..c5f0757f7f 100644
--- a/ydb/deploy/yaml_config_examples/mirror-3dc-3-nodes.yaml
+++ b/ydb/deploy/yaml_config_examples/mirror-3dc-3-nodes.yaml
@@ -151,3 +151,15 @@ channel_profile_config:
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/mirror-3dc-9-nodes.yaml b/ydb/deploy/yaml_config_examples/mirror-3dc-9-nodes.yaml
index fcb593b24e..ccb58cd258 100644
--- a/ydb/deploy/yaml_config_examples/mirror-3dc-9-nodes.yaml
+++ b/ydb/deploy/yaml_config_examples/mirror-3dc-9-nodes.yaml
@@ -168,3 +168,15 @@ channel_profile_config:
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/docs/en/core/_includes/storage-device-requirements.md b/ydb/docs/en/core/_includes/storage-device-requirements.md
index 06cd0192b2..823f961d4f 100644
--- a/ydb/docs/en/core/_includes/storage-device-requirements.md
+++ b/ydb/docs/en/core/_includes/storage-device-requirements.md
@@ -6,4 +6,6 @@ The minimum disk size is 80 GB, otherwise the {{ ydb-short-name }} node won't be
Configurations with disks less than 800 GB or any types of storage system virtualization cannot be used for production services or system performance testing.
+We don't recommend storing {{ ydb-short-name }} data on disks used by other processes (including the operating system).
+
{% endnote %}
diff --git a/ydb/docs/en/core/cluster/topology.md b/ydb/docs/en/core/cluster/topology.md
index 4a2a6d059e..563010ca02 100644
--- a/ydb/docs/en/core/cluster/topology.md
+++ b/ydb/docs/en/core/cluster/topology.md
@@ -1,5 +1,10 @@
# Topology
+{{ ydb-short-name }} cluster is built from nodes of two types - static and dynamic:
+
+* static nodes store data, implementing one of the supported redundancy modes depending on the operating mode configured;
+* dynamic nodes execute queries, handle transaction coordination and perform other data management functions.
+
Cluster topology is determined by the fault tolerance requirements. The following operating modes are available:
| Mode | Storage<br>volume multiplier | Minimum<br>number<br>of nodes | Description |
diff --git a/ydb/docs/en/core/deploy/manual/_includes/prepare-configs.md b/ydb/docs/en/core/deploy/manual/_includes/prepare-configs.md
index fe4aaa3d0a..39cabfd401 100644
--- a/ydb/docs/en/core/deploy/manual/_includes/prepare-configs.md
+++ b/ydb/docs/en/core/deploy/manual/_includes/prepare-configs.md
@@ -42,6 +42,11 @@ Prepare a configuration file for {{ ydb-short-name }}:
rack: '1'
```
+1. In the `blob_storage_config` section, update the FQDN of each node used to store the static storage group:
+
+ * in the `mirror-3-dc` mode, FQDNs for 9 nodes are needed;
+ * in the `block-4-2` mode, FQDNs for 8 nodes are needed.
+
1. Enable user authentication (optional).
If you plan to use authentication and user access differentiation features in the {{ ydb-short-name }} cluster, add the following parameters to the `domains_config` section:
diff --git a/ydb/docs/en/core/deploy/manual/deploy-ydb-on-premises.md b/ydb/docs/en/core/deploy/manual/deploy-ydb-on-premises.md
index c1b755f52b..1f98879c04 100644
--- a/ydb/docs/en/core/deploy/manual/deploy-ydb-on-premises.md
+++ b/ydb/docs/en/core/deploy/manual/deploy-ydb-on-premises.md
@@ -6,79 +6,84 @@ This document describes how to deploy a multi-tenant {{ ydb-short-name }} cluste
### Prerequisites {#requirements}
-Make sure you have SSH access to all servers. This is required to install artifacts and run the {{ ydb-short-name }} executable. The network configuration must allow TCP connections on the following ports (by default):
+Review the [system requirements](../../cluster/system-requirements.md) and the [cluster topology](../../cluster/topology.md).
+
+Make sure you have SSH access to all servers. This is required to install artifacts and run the {{ ydb-short-name }} executable.
+
+The network configuration must allow TCP connections on the following ports (by default, can be changed if necessary):
+* 22: SSH service.
* 2135, 2136: GRPC for client-cluster interaction.
* 19001, 19002: Interconnect for intra-cluster node interaction.
-* 8765, 8766: The HTTP interface for cluster monitoring.
+* 8765, 8766: The HTTP interface of {{ ydb-short-name }} Embedded UI.
-Review the [system requirements](../../cluster/system-requirements.md) and the [cluster topology](../../cluster/topology.md).
+Ensure the clock synchronization for the servers within the cluster, using `ntpd` or `chrony` tools. Ideally all servers should be synced to the same time source, to ensure that leap seconds are handled in the same way.
+
+If your servers' Linux flavor uses `syslogd` for logging, configure logfiles rotation using the `logrotate` or similar tools. {{ ydb-short-name }} services may generate a significant amount of log data, specifically when the logging level is increased for diagnostical purposes, so system log files rotation is important to avoid the overflows of the `/var` filesystem.
Select the servers and disks to be used for storing data:
* Use the `block-4-2` fault tolerance model for cluster deployment in one availability zone (AZ). Use at least 8 nodes to be able to withstand the loss of 2 of them.
* Use the `mirror-3-dc` fault tolerance model for cluster deployment in three availability zones (AZ). To survive the loss of a single AZ and of 1 node in another AZ, use at least 9 nodes. The number of nodes in each AZ should be the same.
-Run each static node on a separate server.
+{% note info %}
-For more information about hardware requirements, see [{#T}](../../cluster/system-requirements.md).
+Run each static node on a separate server. Static and dynamic nodes may run on the same server. Multiple dynamic nodes may run on the same server, provided that it has sufficient compute resources.
-## Create a system user and a group to run {{ ydb-short-name }} {#create-user}
-
-On each server that will be running {{ ydb-short-name }}, execute the command below:
-
-```bash
-sudo groupadd ydb
-sudo useradd ydb -g ydb
-```
+{% endnote %}
-To make sure that {{ ydb-short-name }} has access to block disks to run, you need to add the process owner to the `disk` group:
+For more information about the hardware requirements, see [{#T}](../../cluster/system-requirements.md).
-```bash
-sudo usermod -aG disk ydb
-```
+### TLS keys and certificates preparation {#tls-certificates}
-## Prepare and format disks on each server {#prepare-disks}
+Traffic protection and {{ ydb-short-name }} server node authentication is implemented using the TLS protocol. Before installing the cluster, the list of nodes, their naming scheme and particular names should be defined, and used to prepare the TLS keys and certificates.
-{% note warning %}
+The existing or new TLS certificates can be used. The following PEM-encoded key and certificate files are needed to run the cluster:
+* `ca.crt` - public certificate of the Certification Authority (CA), used to sign all other TLS certificate (same file on all servers in the cluster);
+* `node.key` - secret keys for each of the cluster nodes (separate key for each server);
+* `node.crt` - public certificate for each of the cluster nodes (the certificate for the corresponding private key);
+* `web.pem` - node secret key, node public certificate and Certification Authority certificate concatenation, to be used by the internal HTTP monitoring service (separate file for each server).
-We don't recommend storing data on disks used by other processes (including the operating system).
+Certificate parameters are typically defined by the organizational policies. Typically {{ ydb-short-name }} certificates are generated with the following parameters:
+* 2048 or 4096 bit RSA keys;
+* SHA-256 with RSA encryption algorithm for certificate signing;
+* node certificates validity period - 1 year;
+* CA certificate validity period - 3 years or more.
-{% endnote %}
+The CA certificate must be marked appropriately: it needs the CA sign, and the usage for "Digital Signature, Non Repudiation, Key Encipherment, Certificate Sign" enabled.
-{% include [_includes/storage-device-requirements.md](../../_includes/storage-device-requirements.md) %}
+For node certificates, it is important that the actual host name (or names) matches the values specified in the "Subject Alternative Name" field. Node certificates should have "Digital Signature, Key Encipherment" usage enabled, as well as "TLS Web Server Authentication, TLS Web Client Authentication" extended usage. Node certificates should support both server and client authentication (`extendedKeyUsage = serverAuth,clientAuth` option in the OpenSSL settings).
-1. Create a partition on the selected disk:
+{{ ydb-short-name }} repository on Github contains the [sample script](https://github.com/ydb-platform/ydb/blob/main/ydb/deploy/tls_cert_gen/) which can be used to automate the batch generation or renewal of TLS certificates for the whole cluster. The script can build the key and certificate files for the list of cluster nodes in a single operation, which simplifies the installation preparation.
- {% note alert %}
+## Create a system user and a group to run {{ ydb-short-name }} {#create-user}
- The following step will delete all partitions on the specified disks. Make sure that you specified the disks that have no other data!
+On each server that will be running {{ ydb-short-name }}, execute the command below:
- {% endnote %}
+```bash
+sudo groupadd ydb
+sudo useradd ydb -g ydb
+```
- ```bash
- sudo parted /dev/nvme0n1 mklabel gpt -s
- sudo parted -a optimal /dev/nvme0n1 mkpart primary 0% 100%
- sudo parted /dev/nvme0n1 name 1 ydb_disk_ssd_01
- sudo partx --u /dev/nvme0n1
- ```
+To make sure that {{ ydb-short-name }} has access to block disks to run, the new system user needs to be added to the `disk` group:
- As a result, a disk labeled `/dev/disk/by-partlabel/ydb_disk_ssd_01` will appear on the system.
+```bash
+sudo usermod -aG disk ydb
+```
- If you plan to use more than one disk on each server, replace `ydb_disk_ssd_01` with a unique label for each one. You'll need to use these disks later in the configuration files.
+## Install {{ ydb-short-name }} software on each server {#install-binaries}
-1. Download and unpack an archive with the `ydbd` executable and the libraries required for {{ ydb-short-name }} to run:
+1. Download and unpack the archive with the `ydbd` executable and the required libraries:
```bash
mkdir ydbd-stable-linux-amd64
curl -L https://binaries.ydb.tech/ydbd-stable-linux-amd64.tar.gz | tar -xz --strip-component=1 -C ydbd-stable-linux-amd64
```
-1. Create directories to run:
+1. Create the directories to install the {{ ydb-short-name }} binaries:
```bash
sudo mkdir -p /opt/ydb /opt/ydb/cfg
- sudo chown -R ydb:ydb /opt/ydb
```
1. Copy the executable and libraries to the appropriate directories:
@@ -88,183 +93,84 @@ We don't recommend storing data on disks used by other processes (including the
sudo cp -iR ydbd-stable-linux-amd64/lib /opt/ydb/
```
-1. Format the disk with the builtin command below:
-
- ```bash
- sudo LD_LIBRARY_PATH=/opt/ydb/lib /opt/ydb/bin/ydbd admin bs disk obliterate /dev/disk/by-partlabel/ydb_disk_ssd_01
- ```
+1. Set the file and directory ownership:
- Perform this operation for each disk that will be used for data storage.
+ ```bash
+ sudo chown -R root:bin /opt/ydb
+ ```
-## Prepare configuration files {#config}
-
-{% list tabs %}
-
-- Unprotected mode
-
- In unprotected mode, traffic between cluster nodes and between the client and cluster uses an unencrypted connection. Use this mode for testing purposes.
-
- {% include [prepare-configs.md](_includes/prepare-configs.md) %}
+## Prepare and format disks on each server {#prepare-disks}
-- Protected mode
+{% include [_includes/storage-device-requirements.md](../../_includes/storage-device-requirements.md) %}
- In protected mode, traffic between cluster nodes and between the client and cluster is encrypted using the TLS protocol.
+1. Create a partition on the selected disk:
- {% note info %}
+ {% note alert %}
- You can use existing TLS certificates. It's important that certificates support both server and client authentication (`extendedKeyUsage = serverAuth,clientAuth`).
+ The following step will delete all partitions on the specified disks. Make sure that you specified the disks that have no other data!
{% endnote %}
- 1. Create a key and a certificate for the Certification Authority (CA):
-
- 1. Create a directory named `secure` to store the CA key and one named `certs` for certificates and node keys:
-
- ```bash
- mkdir secure
- mkdir certs
- ```
-
- 1. Create a configuration file named `ca.cnf` with the following contents:
-
- ```text
- [ ca ]
- default_ca = CA_default
-
- [ CA_default ]
- default_days = 365
- database = index.txt
- serial = serial.txt
- default_md = sha256
- copy_extensions = copy
- unique_subject = no
-
- [ req ]
- prompt=no
- distinguished_name = distinguished_name
- x509_extensions = extensions
-
- [ distinguished_name ]
- organizationName = YDB
- commonName = YDB CA
-
- [ extensions ]
- keyUsage = critical,digitalSignature,nonRepudiation,keyEncipherment,keyCertSign
- basicConstraints = critical,CA:true,pathlen:1
-
- [ signing_policy ]
- organizationName = supplied
- commonName = optional
-
- [ signing_node_req ]
- keyUsage = critical,digitalSignature,keyEncipherment
- extendedKeyUsage = serverAuth,clientAuth
-
- # Used to sign client certificates.
- [ signing_client_req ]
- keyUsage = critical,digitalSignature,keyEncipherment
- extendedKeyUsage = clientAuth
- ```
-
- 1. Create a CA key:
-
- ```bash
- openssl genrsa -out secure/ca.key 2048
- ```
-
- Save this key separately, you'll need it for issuing certificates. If it's lost, you'll have to reissue all certificates.
-
- 1. Create a private Certificate Authority (CA) certificate:
-
- ```bash
- openssl req -new -x509 -config ca.cnf -key secure/ca.key -out certs/ca.crt -days 1830 -batch
- ```
-
- 1. Create a text database and an OpenSSL certificate index file:
-
- ```bash
- touch index.txt
- echo 01 >serial.txt
- ```
-
- 1. Create keys and certificates for the cluster nodes:
-
- 1. Create a `node.cnf` configuration file with the following contents:
-
- ```text
- # OpenSSL node configuration file
- [ req ]
- prompt = no
- distinguished_name = distinguished_name
- req_extensions = extensions
-
- [ distinguished_name ]
- organizationName = YDB
-
- [ extensions ]
- subjectAltName = DNS:<node>.<domain>
- ```
-
- 1. Create a certificate key:
-
- ```bash
- openssl genrsa -out certs/node.key 2048
- ```
-
- 1. Create a Certificate Signing Request (CSR):
-
- ```bash
- openssl req -new -sha256 -config node.cnf -key certs/node.key -out node.csr -batch
- ```
-
- 1. Create a node certificate:
-
- ```bash
- openssl ca -config ca.cnf -keyfile secure/ca.key -cert certs/ca.crt -policy signing_policy \
- -extensions signing_node_req -out certs/node.crt -outdir certs/ -in node.csr -batch
- ```
+ ```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}
+ ```
- Create similar certificate-key pairs for each node.
+ As a result, a disk labeled `/dev/disk/by-partlabel/ydb_disk_ssd_01` will appear in the system.
- 1. Create certificate directories on each node:
+ If you plan to use more than one disk on each server, replace `ydb_disk_ssd_01` with a unique label for each one. Disk labels must be unique within a single server, and are used in the configuration files, as shown in the subsequent instructions.
- ```bash
- sudo mkdir /opt/ydb/certs
- sudo chown -R ydb:ydb /opt/ydb/certs
- sudo chmod 0750 /opt/ydb/certs
- ```
+ For cluster servers having similar disk configuration it is convenient to use exacty the same disk labels, to simplify the subsequent configuration.
- 1. Copy the certificates and node keys to the installation folder:
+2. Format the disk with the builtin command below:
- ```bash
- sudo -u ydb cp certs/ca.crt certs/node.crt certs/node.key /opt/ydb/certs/
- ```
+ ```bash
+ sudo LD_LIBRARY_PATH=/opt/ydb/lib /opt/ydb/bin/ydbd admin bs disk obliterate /dev/disk/by-partlabel/ydb_disk_ssd_01
+ ```
- 1. {% include [prepare-configs.md](_includes/prepare-configs.md) %}
+ Perform this operation for each disk that will be used to store {{ ydb-short-name }} data.
- 1. Enable the traffic encryption mode in the {{ ydb-short-name }} configuration file.
+## Prepare configuration files {#config}
- In the `interconnect_config` and `grpc_config` sections, specify the path to the certificate, key, and CA certificate:
+{% include [prepare-configs.md](_includes/prepare-configs.md) %}
+
+When TLS traffic protection is to be used (which is the default), ensure that {{ ydb-short-name }} configuration file contains the proper paths to key and certificate files in the `interconnect_config` and `grpc_config` sections, as shown below:
+
+```json
+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
+```
- ```json
- 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"
+Save the {{ ydb-short-name }} configuration file as `/opt/ydb/cfg/config.yaml` on each server of the cluster.
- grpc_config:
- cert: "/opt/ydb/certs/node.crt"
- key: "/opt/ydb/certs/node.key"
- ca: "/opt/ydb/certs/ca.crt"
- ```
+For more detailed information about creating configurations, see [Cluster configurations](../configuration/config.md).
-{% endlist %}
+## Copy TLS keys and certificates to each server {#tls-copy-cert}
-Save the {{ ydb-short-name }} configuration file as `/opt/ydb/cfg/config.yaml` on each cluster node.
+The TLS keys and certificates prepared need to be copied into the protected directory on each node of the {{ ydb-short-name }} cluster. An example of commands to create of the protected directory and copy the key and certificate files into it is shown below.
-For more detailed information about creating configurations, see [Cluster configurations](../configuration/config.md).
+```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 static nodes {#start-storage}
@@ -272,19 +178,19 @@ For more detailed information about creating configurations, see [Cluster config
- Manually
- Run {{ ydb-short-name }} storage on each node:
+ Run {{ ydb-short-name }} storage service on each static node:
```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 \
- --grpc-port 2135 --ic-port 19001 --mon-port 8765 --node static
+ /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
```
- Using systemd
- On every node, create a `/etc/systemd/system/ydbd-storage.service` configuration file with the following contents:
+ On each static node, create a `/etc/systemd/system/ydbd-storage.service` systemd configuration file with the following contents. Sample file is also available [in the repository](https://github.com/ydb-platform/ydb/blob/main/ydb/deploy/systemd_services/ydbd-storage.service).
```text
[Unit]
@@ -305,7 +211,10 @@ For more detailed information about creating configurations, see [Cluster config
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 --grpc-port 2135 --ic-port 19001 --mon-port 8765 --node static
+ 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
@@ -314,7 +223,7 @@ For more detailed information about creating configurations, see [Cluster config
WantedBy=multi-user.target
```
- Run {{ ydb-short-name }} storage on each node:
+ Run {{ ydb-short-name }} storage service on each static node:
```bash
sudo systemctl start ydbd-storage
@@ -324,98 +233,121 @@ For more detailed information about creating configurations, see [Cluster config
## Initialize a cluster {#initialize-cluster}
-Cluster initialization actions depend on whether user authentication mode is enabled in the {{ ydb-short-name }} configuration file.
-
-{% list tabs %}
+Cluster initialization configures the set of static nodes defined in the cluster configuration file to store {{ ydb-short-name }} data.
-- Authentication disabled
+To perform the cluster initialization, the path to the `ca.crt` file containing the Certification Authority certificate has to be specified in the corresponding commands. Copy the `ca.crt` file to the host where those commands will be executed.
- On one of the cluster nodes, run the commands:
+Cluster initialization actions sequence depends on whether user authentication mode is enabled in the {{ ydb-short-name }} configuration file.
- ```bash
- export LD_LIBRARY_PATH=/opt/ydb/lib
- /opt/ydb/bin/ydbd admin blobstorage config init --yaml-file /opt/ydb/cfg/config.yaml
- echo $?
- ```
-
- The command execution code should be null.
+{% list tabs %}
- Authentication enabled
- To execute administrative commands (including cluster initialization, database creation, disk management, and others) in a cluster with user authentication mode enabled, you must first get an authentication token using the {{ ydb-short-name }} CLI client version 2.0.0 or higher. You must install the {{ ydb-short-name }} CLI client on any computer with network access to the cluster nodes (for example, on one of the cluster nodes) by following the [installation instructions](../../reference/ydb-cli/install.md).
+ To execute the administrative commands (including cluster initialization, database creation, disk management, and others) in a cluster with user authentication enabled, an authentication token has to be obtained using the {{ ydb-short-name }} CLI client version 2.0.0 or higher. The {{ ydb-short-name }} CLI client can be installed on any computer with network access to the cluster nodes (for example, on one of the cluster nodes) by following the [installation instructions](../../reference/ydb-cli/install.md).
When the cluster is first installed, it has a single `root` account with a blank password, so the command to get the token is the following:
```bash
- ydb -e grpc://<node1.ydb.tech>:2135 -d /Root \
- --user root --no-password auth get-token --force >token-file
+ ydb -e grpcs://<node1.ydb.tech>:2135 -d /Root --ca-file ca.crt \
+ --user root --no-password auth get-token --force >token-file
```
- Any cluster server can be specified as a connection server (the `-e` or `--endpoint` parameter).
+ Any static node's address can be specified as the endpoint (the `-e` or `--endpoint` parameter).
- If TLS traffic protection was enabled, use the protected `grpcs` protocol instead of the `grpc` protocol in the command above and additionally specify the path to the CA certificate in the `--ca-file` parameter. For example:
+ If the command above is executed successfully, the authentication token will be written to `token-file`. This token file needs to be copied to one of the cluster storage nodes. Next, run the following commands on this cluster node:
```bash
- ydb -e grpcs://<node1.ydb.tech>:2135 -d /Root --ca-file /opt/ydb/certs/ca.crt \
- --user root --no-password auth get-token --force >token-file
+ 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 $?
```
- If the command above is executed successfully, the authentication token will be written to `token-file`. You need to copy this file to the cluster node on which you intend to run the cluster initialization and database creation commands later. Next, run the commands on this cluster node:
+- Authentication disabled
+
+ On one of the cluster storage nodes, run the commands:
```bash
export LD_LIBRARY_PATH=/opt/ydb/lib
- /opt/ydb/bin/ydbd -f token-file admin blobstorage config init --yaml-file /opt/ydb/cfg/config.yaml
+ /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 $?
```
- The command execution code should be null.
-
{% endlist %}
+Upon successful cluster initialization, the command execution status code shown on the screen should be zero.
+
## Create a database {#create-db}
-To work with tables, you need to create at least one database and run a process to service this database (a dynamic node):
+To work with tables, you need to create at least one database and run a process (or processes) to service this database (a dynamic node).
-```bash
-LD_LIBRARY_PATH=/opt/ydb/lib /opt/ydb/bin/ydbd admin database /Root/testdb create ssd:1
-```
+In order to run the database creation administrative command, the `ca.crt` file with the CA certificate is needed, similar to the cluster initialization steps shown above.
-If user authentication mode is enabled in the cluster, the authentication token must be passed to the database creation command. The procedure for getting a token is described in the [cluster initialization](#initialize-cluster) section.
+On database creation the initial number of storage groups is configured, which determines the available input/output throughput and data storage capacity. The number of storage groups can be increased after the database creation, if needed.
-A variant of the database creation command with reference to the token file:
+Database creation actions sequence depends on whether user authentication mode is enabled in the {{ ydb-short-name }} configuration file.
-```bash
-LD_LIBRARY_PATH=/opt/ydb/lib /opt/ydb/bin/ydbd -f token-file admin database /Root/testdb create ssd:1
-```
+{% list tabs %}
+
+- Authentication enabled
+
+ The authentication token is needed. The existing token file obtained at [cluster initialization stage](#initialize-cluster) can be used, or the new token can be obtained.
+
+ The authentication token file needs to be copied to one of the static nodes. Next, run the following commands on this cluster node:
+
+ ```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 $?
+ ```
+
+- Authentication disabled
+
+ On one of the static nodes, run the commands:
+
+ ```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 %}
The command examples above use the following parameters:
* `/Root`: The name of the root domain, must match the `domains_config`.`domain`.`name` setting in the cluster configuration file.
* `testdb`: The name of the created database.
-* `ssd:1`: The name of the storage pool and the number of the block in the pool. The pool name usually means the type of data storage devices and must match the `storage_pool_types`.`kind` setting inside the `domains_config`.`domain` element of the configuration file.
+* `ssd:1`: The name of the storage pool and the number of the storage groups to be used by the database. The pool name usually means the type of data storage devices and must match the `storage_pool_types`.`kind` setting inside the `domains_config`.`domain` element of the configuration file.
+
+Upon successful database creation, the command execution status code shown on the screen should be zero.
-## Start the database dynamic node {#start-dynnode}
+## Start the dynamic nodes {#start-dynnode}
{% list tabs %}
- Manually
- Start the {{ ydb-short-name }} dynamic node for the /Root/testdb database:
+ Start the {{ ydb-short-name }} dynamic node for the `/Root/testdb` database:
```bash
sudo su - ydb
cd /opt/ydb
export LD_LIBRARY_PATH=/opt/ydb/lib
- /opt/ydb/bin/ydbd server --grpc-port 2136 --ic-port 19002 --mon-port 8766 --yaml-config /opt/ydb/cfg/config.yaml \
- --tenant /Root/testdb --node-broker <node1.ydb.tech>:2135 --node-broker <node2.ydb.tech>:2135 --node-broker <node3.ydb.tech>:2135
+ /opt/ydb/bin/ydbd server --grpcs-port 2136 --ic-port 19002 \
+ --mon-port 8766 --mon-cert /opt/ydb/certs/web.pem --ca /opt/ydb/certs/ca.crt \
+ --yaml-config /opt/ydb/cfg/config.yaml --tenant /Root/testdb \
+ --node-broker grpcs://<ydb1>:2135 \
+ --node-broker grpcs://<ydb2>:2135 \
+ --node-broker grpcs://<ydb3>:2135
```
- Where `<nodeN.ydb.tech>` is the FQDN of the servers running the static nodes.
-
- Run additional dynamic nodes on other servers to ensure database availability.
+ In the command shown above `<ydbN>` entries correspond to the FQDNs of any three servers running the static nodes.
- Using systemd
- 1. Create a configuration file named `/etc/systemd/system/ydbd-testdb.service` with the following content:
+ Create a systemd configuration file named `/etc/systemd/system/ydbd-testdb.service` with the following content. Sample file is also available [in the repository](https://github.com/ydb-platform/ydb/blob/main/ydb/deploy/systemd_services/ydbd-testdb.service).
```text
[Unit]
@@ -436,7 +368,12 @@ The command examples above use the following parameters:
SyslogFacility=daemon
SyslogLevel=err
Environment=LD_LIBRARY_PATH=/opt/ydb/lib
- ExecStart=/opt/ydb/bin/ydbd server --grpc-port 2136 --ic-port 19002 --mon-port 8766 --yaml-config /opt/ydb/cfg/config.yaml --tenant /Root/testdb --node-broker <node1.ydb.tech>:2135 --node-broker <node2.ydb.tech>:2135 --node-broker <node3.ydb.tech>:2135
+ ExecStart=/opt/ydb/bin/ydbd server --grpcs-port 2136 --ic-port 19002 \
+ --mon-port 8766 --mon-cert /opt/ydb/certs/web.pem --ca /opt/ydb/certs/ca.crt \
+ --yaml-config /opt/ydb/cfg/config.yaml --tenant /Root/testdb \
+ --node-broker grpcs://<ydb1>:2135 \
+ --node-broker grpcs://<ydb2>:2135 \
+ --node-broker grpcs://<ydb3>:2135
LimitNOFILE=65536
LimitCORE=0
LimitMEMLOCK=32212254720
@@ -445,48 +382,48 @@ The command examples above use the following parameters:
WantedBy=multi-user.target
```
- Where `<nodeN.ydb.tech>` is the FQDN of the servers running the static nodes.
+ In the file shown above `<ydbN>` entries correspond to the FQDNs of any three servers running the static nodes.
- 1. Start the {{ ydb-short-name }} dynamic node for the /Root/testdb database:
+ Start the {{ ydb-short-name }} dynamic node for the `/Root/testdb` database:
```bash
sudo systemctl start ydbd-testdb
```
- 1. Run additional dynamic nodes on other servers to ensure database availability.
-
{% endlist %}
-## Initial account setup {#security-setup}
+Start the additional dynamic nodes on other servers to scale and to ensure database and availability.
-If authentication mode is enabled in the cluster configuration file, initial account setup must be done before working with the {{ ydb-short-name }} cluster.
+## Initial user accounts setup {#security-setup}
+
+If authentication mode is enabled in the cluster configuration file, initial user accounts setup must be done before working with the {{ ydb-short-name }} cluster.
The initial installation of the {{ ydb-short-name }} cluster automatically creates a `root` account with a blank password, as well as a standard set of user groups described in the [Access management](../../cluster/access.md) section.
-To perform initial account setup in the created {{ ydb-short-name }} cluster, run the following operations:
+To perform the initial user accounts setup in the created {{ ydb-short-name }} cluster, run the following operations:
1. Install the {{ ydb-short-name }} CLI as described in the [documentation](../../reference/ydb-cli/install.md).
1. Set the password for the `root` account:
```bash
- ydb -e grpc://<node.ydb.tech>:2136 -d /Root/testdb --user root --no-password \
+ ydb --ca-file ca.crt -e grpcs://<node.ydb.tech>:2136 -d /Root/testdb --user root --no-password \
yql -s 'ALTER USER root PASSWORD "passw0rd"'
```
Replace the `passw0rd` value with the required password.
-1. Create additional accounts:
+1. Create the additional accounts:
```bash
- ydb -e grpc://<node.ydb.tech>:2136 -d /Root/testdb --user root \
+ ydb --ca-file ca.crt -e grpcs://<node.ydb.tech>:2136 -d /Root/testdb --user root \
yql -s 'CREATE USER user1 PASSWORD "passw0rd"'
```
-1. Set the account rights by including them in the integrated groups:
+1. Set the account permissions by including it into the security groups:
```bash
- ydb -e grpc://<node.ydb.tech>:2136 -d /Root/testdb --user root \
+ ydb --ca-file ca.crt -e grpcs://<node.ydb.tech>:2136 -d /Root/testdb --user root \
yql -s 'ALTER GROUP `ADMINS` ADD USER user1'
```
@@ -494,8 +431,6 @@ In the command examples above, `<node.ydb.tech>` is the FQDN of the server runni
When running the account creation and group assignment commands, the {{ ydb-short-name }} CLI client will request the `root` user's password. You can avoid multiple password entries by creating a connection profile as described in the [{{ ydb-short-name }} CLI documentation](../../reference/ydb-cli/profile/index.md).
-If TLS traffic protection was enabled in the cluster, use the protected `grpcs` protocol instead of the `grpc` protocol in the command above and specify the path to the CA certificate in the `--ca-file` parameter (or save it in the connection profile).
-
## Test the created database {#try-first-db}
1. Install the {{ ydb-short-name }} CLI as described in the [documentation](../../reference/ydb-cli/install.md).
@@ -503,15 +438,64 @@ If TLS traffic protection was enabled in the cluster, use the protected `grpcs`
1. Create a `test_table`:
```bash
- ydb -e grpc://<node.ydb.tech>:2136 -d /Root/testdb scripting yql \
- --script 'CREATE TABLE `testdir/test_table` (id Uint64, title Utf8, PRIMARY KEY (id));'
+ ydb --ca-file ca.crt -e grpcs://<node.ydb.tech>:2136 -d /Root/testdb --user root \
+ yql -s 'CREATE TABLE `testdir/test_table` (id Uint64, title Utf8, PRIMARY KEY (id));'
```
Where `<node.ydb.tech>` is the FQDN of the server running the dynamic node that supports the `/Root/testdb` database.
- The command above must be adjusted if TLS traffic protection or user authentication mode is enabled in the cluster. Example:
+## Validate the access to the embedded UI
- ```bash
- ydb -e grpcs://<node.ydb.tech>:2136 -d /Root/testdb --ca-file ydb-ca.crt --user root scripting yql \
- --script 'CREATE TABLE `testdir/test_table` (id Uint64, title Utf8, PRIMARY KEY (id));'
- ```
+To validate the access to {{ ydb-short-name }} embedded UI a Web browser should be used, opening the address `https://<node.ydb.tech>:8765`, where `<node.ydb.tech>` should be replaced with the FQDN of any static node server.
+
+Web browser should be configured to trust the CA used to generate the cluster node certificates, otherwise a warning will be shown that the certificate is not trusted.
+
+In case the authentication is enabled, the Web browser will display the login and password prompt. After entering the correct credentials, the initial {{ ydb-short-name }} embedded UI page will be shown. The available functions and user interface are described in the following document: [{#T}](../../maintenance/embedded_monitoring/index.md).
+
+{% note info %}
+
+Highly available HTTP load balancer, based on `haproxy`, `nginx` or similar software, is typically used to enable access to the {{ ydb-short-name }} embedded UI. The configuration details for HTTP load balancer are out of scope for the basic {{ ydb-short-name }} installation instruction.
+
+{% endnote %}
+
+
+# Installing {{ ydb-short-name }} in the unprotected mode
+
+{% note warning %}
+
+We DO NOT recommend to run {{ ydb-short-name }} in the unprotected mode for any purpose.
+
+{% endnote %}
+
+The installation procedure described above assumes that {{ ydb-short-name }} runs in its default protected mode.
+
+The unprotected {{ ydb-short-name }} mode is also available, and is intended for internal purposes, mainly for the development and testing of {{ ydb-short-name }} software. When running in the unprotected mode:
+* all traffic is passed in the clear text, including the intra-cluster communications and cluster-client communications;
+* user authentication is not used (enabling authentication without TLS traffic protection does not make much sense, as login and password are both passed unprotected through the network).
+
+Installing {{ ydb-short-name }} for the unprotected mode is performed according with the general procedure described above, with the exceptions listed below:
+
+1. TLS keys and certificates generation is skipped. No need to copy the key and certificate files to cluster servers.
+
+1. Subsection `security_config` of section `domains_config` is excluded from the configuration file. Sections `interconnect_config` and `grpc_config` are excluded, too.
+
+1. The syntax of commands to start static and dynamic nodes is reduced: the options referring to TLS key and certificate files are excluded, `grpc` protocol name is used instead of `grpcs` for connection points.
+
+1. The step to obtain the authentication token before cluster initialization and database creation is skipped.
+
+1. Cluster initialization is performed with the following command:
+
+ ```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. Database creation is performed with the following command:
+
+ ```bash
+ export LD_LIBRARY_PATH=/opt/ydb/lib
+ /opt/ydb/bin/ydbd admin database /Root/testdb create ssd:1
+ ```
+
+1. `grpc` protocol is used instead of `grpcs` when configuring the connections to the database in {{ ydb-short-name }} CLI and applications. Authentication is not used.
diff --git a/ydb/docs/ru/core/_includes/storage-device-requirements.md b/ydb/docs/ru/core/_includes/storage-device-requirements.md
index b9dde90f2d..5bed5f0284 100644
--- a/ydb/docs/ru/core/_includes/storage-device-requirements.md
+++ b/ydb/docs/ru/core/_includes/storage-device-requirements.md
@@ -6,4 +6,6 @@
ΠšΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ с дисками объСмом мСньшС 800 Π“Π‘ ΠΈΠ»ΠΈ с Π»ΡŽΠ±Ρ‹ΠΌΠΈ Π²ΠΈΠ΄Π°ΠΌΠΈ Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ систСмы хранСния нСльзя ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ для сСрвисов, находящихся Π² ΠΏΡ€ΠΎΠΌΡ‹ΡˆΠ»Π΅Π½Π½ΠΎΠΉ эксплуатации, Π° Ρ‚Π°ΠΊΠΆΠ΅ для тСстирования ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ систСмы.
+ΠœΡ‹ Π½Π΅ Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡƒΠ΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ для хранСния Π΄Π°Π½Π½Ρ‹Ρ… {{ ydb-short-name }} диски, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ Π΄Ρ€ΡƒΠ³ΠΈΠΌΠΈ процСссами (Π² Ρ‚ΠΎΠΌ числС ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½ΠΎΠΉ систСмой).
+
{% endnote %}
diff --git a/ydb/docs/ru/core/cluster/system-requirements.md b/ydb/docs/ru/core/cluster/system-requirements.md
index c145463cd0..24abfb85e4 100644
--- a/ydb/docs/ru/core/cluster/system-requirements.md
+++ b/ydb/docs/ru/core/cluster/system-requirements.md
@@ -26,7 +26,7 @@
Π Π°Π±ΠΎΡ‚ΠΎΡΠΏΠΎΡΠΎΠ±Π½ΠΎΡΡ‚ΡŒ ΠΈ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ {{ ydb-short-name }} Π½Π΅ Ρ‚Π΅ΡΡ‚ΠΈΡ€ΠΎΠ²Π°Π»Π°ΡΡŒ Π½ΠΈ Π½Π° ΠΊΠ°ΠΊΠΈΡ… Π²ΠΈΠ΄Π°Ρ… Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹Ρ… ΠΈΠ»ΠΈ сСтСвых устройств хранСния.
- ΠŸΡ€ΠΈ ΠΏΠ»Π°Π½ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ мСста стоит ΡƒΡ‡ΠΈΡ‚Ρ‹Π²Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ {{ ydb-short-name }} ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ Ρ‡Π°ΡΡ‚ΡŒ дискового пространства для своих Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΡ… Π½ΡƒΠΆΠ΄. Π’Π°ΠΊ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π½Π° срСднСго Ρ€Π°Π·ΠΌΠ΅Ρ€Π° кластСрС ΠΈΠ· 8 Π½ΠΎΠ΄ ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠΆΠΈΠ΄Π°Ρ‚ΡŒ потрСблСния ΠΏΠΎΠ΄ ΡΡ‚Π°Ρ‚ΠΈΡ‡Π΅ΡΠΊΡƒΡŽ Π³Ρ€ΡƒΠΏΠΏΡƒ ΠΎΠΊΠΎΠ»ΠΎ 100 Π“Π± Π½Π° вСсь кластСр. На большом кластСрС с >1500 Π½ΠΎΠ΄ β€” ΠΎΠΊΠΎΠ»ΠΎ 200 Π“Π±. Π’Π°ΠΊ ΠΆΠ΅ Π΅ΡΡ‚ΡŒ Π»ΠΎΠ³ΠΈ Ρ€Π°Π·ΠΌΠ΅Ρ€ΠΎΠΌ 25.6 Π“Π± Π½Π° ΠΊΠ°ΠΆΠ΄ΠΎΠΌ Pdisk ΠΈ систСмная ΠΎΠ±Π»Π°ΡΡ‚ΡŒ Π½Π° ΠΊΠ°ΠΆΠ΄ΠΎΠΌ Pdisk. Π•Ρ‘ Ρ€Π°Π·ΠΌΠ΅Ρ€ зависит ΠΎΡ‚ Ρ€Π°Π·ΠΌΠ΅Ρ€Π° Pdisk, Π½ΠΎ Π½Π΅ ΠΌΠ΅Π½Π΅Π΅ 0.2 Π“Π±.
+ ΠŸΡ€ΠΈ ΠΏΠ»Π°Π½ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ мСста стоит ΡƒΡ‡ΠΈΡ‚Ρ‹Π²Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ {{ ydb-short-name }} ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ Ρ‡Π°ΡΡ‚ΡŒ дискового пространства для своих Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΡ… Π½ΡƒΠΆΠ΄. Π’Π°ΠΊ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π½Π° срСднСго Ρ€Π°Π·ΠΌΠ΅Ρ€Π° кластСрС ΠΈΠ· 8 ΡƒΠ·Π»ΠΎΠ² ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠΆΠΈΠ΄Π°Ρ‚ΡŒ потрСблСния ΠΏΠΎΠ΄ ΡΡ‚Π°Ρ‚ΠΈΡ‡Π΅ΡΠΊΡƒΡŽ Π³Ρ€ΡƒΠΏΠΏΡƒ ΠΎΠΊΠΎΠ»ΠΎ 100 Π“Π± Π½Π° вСсь кластСр. На большом кластСрС с >1500 ΡƒΠ·Π»ΠΎΠ² β€” ΠΎΠΊΠΎΠ»ΠΎ 200 Π“Π±. Π’Π°ΠΊΠΆΠ΅ Π΅ΡΡ‚ΡŒ систСмныС Π»ΠΎΠ³ΠΈ Ρ€Π°Π·ΠΌΠ΅Ρ€ΠΎΠΌ 25.6 Π“Π± Π½Π° ΠΊΠ°ΠΆΠ΄ΠΎΠΌ Pdisk ΠΈ систСмная ΠΎΠ±Π»Π°ΡΡ‚ΡŒ Π½Π° ΠΊΠ°ΠΆΠ΄ΠΎΠΌ Pdisk. Π•Ρ‘ Ρ€Π°Π·ΠΌΠ΅Ρ€ зависит ΠΎΡ‚ Ρ€Π°Π·ΠΌΠ΅Ρ€Π° Pdisk, Π½ΠΎ Π½Π΅ ΠΌΠ΅Π½Π΅Π΅ 0.2 Π“Π±.
## ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Π°Ρ конфигурация {#software}
diff --git a/ydb/docs/ru/core/cluster/topology.md b/ydb/docs/ru/core/cluster/topology.md
index 98d60a526b..ea10c20440 100644
--- a/ydb/docs/ru/core/cluster/topology.md
+++ b/ydb/docs/ru/core/cluster/topology.md
@@ -1,5 +1,10 @@
# Вопология
+ΠšΠ»Π°ΡΡ‚Π΅Ρ€ {{ ydb-short-name }} состоит ΠΈΠ· статичСских ΠΈ динамичСских ΡƒΠ·Π»ΠΎΠ²:
+
+* статичСскиС ΡƒΠ·Π»Ρ‹ ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΠ²Π°ΡŽΡ‚ Ρ…Ρ€Π°Π½Π΅Π½ΠΈΠ΅ Π΄Π°Π½Π½Ρ‹Ρ…, рСализуя ΠΎΠ΄Π½Ρƒ ΠΈΠ· ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅ΠΌΡ‹Ρ… схСм избыточности Π² зависимости ΠΎΡ‚ установлСнного Ρ€Π΅ΠΆΠΈΠΌΠ° Ρ€Π°Π±ΠΎΡ‚Ρ‹;
+* динамичСскиС ΡƒΠ·Π»Ρ‹ ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΠ²Π°ΡŽΡ‚ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ запросов, ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ†ΠΈΡŽ Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΉ ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ управлСния Π΄Π°Π½Π½Ρ‹ΠΌΠΈ.
+
Вопология кластСра опрСдСляСтся трСбованиями ΠΊ отказоустойчивости. Доступны ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ Ρ€Π΅ΠΆΠΈΠΌΡ‹ Ρ€Π°Π±ΠΎΡ‚Ρ‹:
Π Π΅ΠΆΠΈΠΌ | ΠœΠ½ΠΎΠΆΠΈΡ‚Π΅Π»ΡŒ<br>объСма хранСния | МинимальноС<br>количСство<br>ΡƒΠ·Π»ΠΎΠ² | ОписаниС
@@ -11,7 +16,7 @@
{% note info %}
-Под Π²Ρ‹Ρ…ΠΎΠ΄ΠΎΠΌ ΠΈΠ· строя ΡƒΠ·Π»Π° подразумСваСтся ΠΊΠ°ΠΊ полная Ρ‚Π°ΠΊ ΠΈ частичная Π΅Π³ΠΎ Π½Π΅Π΄ΠΎΡΡ‚ΡƒΠΏΠ½ΠΎΡΡ‚ΡŒ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Π²Ρ‹Ρ…ΠΎΠ΄ ΠΈΠ· строя ΠΎΠ΄Π½ΠΎΠ³ΠΎ диска Π½Π° ΡƒΠ·Π»Π΅.
+Под Π²Ρ‹Ρ…ΠΎΠ΄ΠΎΠΌ ΠΈΠ· строя ΡƒΠ·Π»Π° подразумСваСтся ΠΊΠ°ΠΊ полная, Ρ‚Π°ΠΊ ΠΈ частичная Π΅Π³ΠΎ Π½Π΅Π΄ΠΎΡΡ‚ΡƒΠΏΠ½ΠΎΡΡ‚ΡŒ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Π²Ρ‹Ρ…ΠΎΠ΄ ΠΈΠ· строя ΠΎΠ΄Π½ΠΎΠ³ΠΎ диска Π½Π° ΡƒΠ·Π»Π΅.
ΠŸΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½Ρ‹ΠΉ Π²Ρ‹ΡˆΠ΅ ΠΌΠ½ΠΎΠΆΠΈΡ‚Π΅Π»ΡŒ объСма хранСния относится Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΊ Ρ„Π°ΠΊΡ‚ΠΎΡ€Ρƒ обСспСчСния отказоустойчивости. Для планирования Ρ€Π°Π·ΠΌΠ΅Ρ€Π° Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π° Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΡƒΡ‡ΠΈΡ‚Ρ‹Π²Π°Ρ‚ΡŒ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ Π²Π»ΠΈΡΡŽΡ‰ΠΈΠ΅ Ρ„Π°ΠΊΡ‚ΠΎΡ€Ρ‹ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΡŽ ΠΈ Π³Ρ€Π°Π½ΡƒΠ»ΡΡ€Π½ΠΎΡΡ‚ΡŒ слотов).
diff --git a/ydb/docs/ru/core/deploy/manual/_includes/prepare-configs.md b/ydb/docs/ru/core/deploy/manual/_includes/prepare-configs.md
index 3021eeb304..599bf37e83 100644
--- a/ydb/docs/ru/core/deploy/manual/_includes/prepare-configs.md
+++ b/ydb/docs/ru/core/deploy/manual/_includes/prepare-configs.md
@@ -42,6 +42,11 @@
rack: '1'
```
+1. Π’ сСкции `blob_storage_config` скоррСктируйтС FQDN всСх Π½ΠΎΠ΄, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Ρ… для размСщСния статичСской Π³Ρ€ΡƒΠΏΠΏΡ‹ хранСния:
+
+ * для схСмы `mirror-3-dc` Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ FQDN для 9 Π½ΠΎΠ΄;
+ * для схСмы `block-4-2` Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ FQDN для 8 Π½ΠΎΠ΄.
+
1. Π’ΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅ Π°ΡƒΡ‚Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΡŽ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ (ΠΎΠΏΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎ).
Если Π²Ρ‹ ΠΏΠ»Π°Π½ΠΈΡ€ΡƒΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π² кластСрС {{ ydb-short-name }} возмоТности Π°ΡƒΡ‚Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ ΠΈ разграничСния доступа ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ, Π΄ΠΎΠ±Π°Π²ΡŒΡ‚Π΅ Π² ΡΠ΅ΠΊΡ†ΠΈΡŽ `domains_config` ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹:
diff --git a/ydb/docs/ru/core/deploy/manual/deploy-ydb-on-premises.md b/ydb/docs/ru/core/deploy/manual/deploy-ydb-on-premises.md
index 679a6970e3..0e8768d7b3 100644
--- a/ydb/docs/ru/core/deploy/manual/deploy-ydb-on-premises.md
+++ b/ydb/docs/ru/core/deploy/manual/deploy-ydb-on-premises.md
@@ -6,66 +6,72 @@
### ВрСбования {#requirements}
-Π£ вас Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ ssh доступ Π½Π° всС сСрвСра. Π­Ρ‚ΠΎ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ для установки Π°Ρ€Ρ‚Π΅Ρ„Π°ΠΊΡ‚ΠΎΠ² ΠΈ запуска исполняСмого Ρ„Π°ΠΉΠ»Π° {{ ydb-short-name }}. БСтСвая конфигурация Π΄ΠΎΠ»ΠΆΠ½Π° Ρ€Π°Π·Ρ€Π΅ΡˆΠ°Ρ‚ΡŒ TCP соСдинСния ΠΏΠΎ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΏΠΎΡ€Ρ‚Π°ΠΌ (ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ):
+ΠžΠ·Π½Π°ΠΊΠΎΠΌΡŒΡ‚Π΅ΡΡŒ с [систСмными трСбованиями](../../cluster/system-requirements.md) ΠΈ [Ρ‚ΠΎΠΏΠΎΠ»ΠΎΠ³ΠΈΠ΅ΠΉ кластСра](../../cluster/topology.md).
-* 2135, 2136 - grpc для ΠΊΠ»ΠΈΠ΅Π½Ρ‚-кластСрного взаимодСйствия;
-* 19001, 19002 - Interconnect для внутрикластСрного взаимодСйствия Π½ΠΎΠ΄;
-* 8765, 8766 - http интСрфСйс для ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³Π° кластСра.
+Π£ вас Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ SSH доступ Π½Π° всС сСрвСра. Π­Ρ‚ΠΎ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ для установки Π°Ρ€Ρ‚Π΅Ρ„Π°ΠΊΡ‚ΠΎΠ² ΠΈ запуска исполняСмого Ρ„Π°ΠΉΠ»Π° {{ ydb-short-name }}.
-ΠžΠ·Π½Π°ΠΊΠΎΠΌΡŒΡ‚Π΅ΡΡŒ с [систСмными трСбованиями](../../cluster/system-requirements.md) ΠΈ [Ρ‚ΠΎΠΏΠΎΠ»ΠΎΠ³ΠΈΠ΅ΠΉ кластСра](../../cluster/topology.md).
+БСтСвая конфигурация Π΄ΠΎΠ»ΠΆΠ½Π° Ρ€Π°Π·Ρ€Π΅ΡˆΠ°Ρ‚ΡŒ TCP соСдинСния ΠΏΠΎ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΏΠΎΡ€Ρ‚Π°ΠΌ (ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ, ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½Ρ‹ настройками):
-Π’Ρ‹Π±Π΅Ρ€ΠΈΡ‚Π΅ сСрвСры ΠΈ диски, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π±ΡƒΠ΄ΡƒΡ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ для хранСния Π΄Π°Π½Π½Ρ‹Ρ…:
+* 22: сСрвис SSH;
+* 2135, 2136 - GRPC для ΠΊΠ»ΠΈΠ΅Π½Ρ‚-кластСрного взаимодСйствия;
+* 19001, 19002 - Interconnect для внутрикластСрного взаимодСйствия ΡƒΠ·Π»ΠΎΠ²;
+* 8765, 8766 - HTTP интСрфСйс {{ ydb-short-name }} Embedded UI.
-* Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ схСму отказоустойчивости `block-4-2` для развСртывания кластСра Π² ΠΎΠ΄Π½ΠΎΠΉ Π·ΠΎΠ½Π΅ доступности (AZ). Π§Ρ‚ΠΎΠ±Ρ‹ ΠΏΠ΅Ρ€Π΅ΠΆΠΈΠ²Π°Ρ‚ΡŒ ΠΎΡ‚ΠΊΠ°Π· 2 Π½ΠΎΠ΄ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ Π½Π΅ ΠΌΠ΅Π½Π΅Π΅ 8 Π½ΠΎΠ΄.
-* Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ схСму отказоустойчивости `mirror-3-dc` для развСртывания кластСра Π² Ρ‚Ρ€Π΅Ρ… Π·ΠΎΠ½Π°Ρ… доступности (AZ). Π§Ρ‚ΠΎΠ±Ρ‹ ΠΏΠ΅Ρ€Π΅ΠΆΠΈΠ²Π°Ρ‚ΡŒ ΠΎΡ‚ΠΊΠ°Π· 1 AZ ΠΈ 1 Π½ΠΎΠ΄Ρ‹ Π² Π΄Ρ€ΡƒΠ³ΠΎΠΌ AZ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ Π½Π΅ ΠΌΠ΅Π½Π΅Π΅ 9 Π½ΠΎΠ΄. ΠšΠΎΠ»ΠΈΡ‡Π΅ΡΡ‚Π²ΠΎ Π½ΠΎΠ΄ Π² ΠΊΠ°ΠΆΠ΄ΠΎΠΉ AZ Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±Ρ‹Ρ‚ΡŒ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²Ρ‹ΠΌ.
+Π£Π±Π΅Π΄ΠΈΡ‚Π΅ΡΡŒ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ систСмныС часы Π½Π° всСх сСрвСрах Π² составС кластСра синхронизированы с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ инструмСнтов `ntpd` ΠΈΠ»ΠΈ `chrony`. Π–Π΅Π»Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π΅Π΄ΠΈΠ½Ρ‹ΠΉ источник Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ для всСх сСрвСров кластСра, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΡ‚ΡŒ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²ΡƒΡŽ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΡƒ сСкунд ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ†ΠΈΠΈ (leap seconds).
-ЗапускайтС ΠΊΠ°ΠΆΠ΄ΡƒΡŽ ΡΡ‚Π°Ρ‚ΠΈΡ‡Π΅ΡΠΊΡƒΡŽ Π½ΠΎΠ΄Ρƒ Π½Π° ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎΠΌ сСрвСрС.
+Если примСняСмый Π½Π° сСрвСрах кластСра Ρ‚ΠΈΠΏ Linux ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ `syslogd` для логирования, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π½Π°ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ Ρ€ΠΎΡ‚Π°Ρ†ΠΈΡŽ Ρ„Π°ΠΉΠ»ΠΎΠ² Π»ΠΎΠ³Π° с использованиСм инструмСнта `logrotate` ΠΈΠ»ΠΈ Π΅Π³ΠΎ Π°Π½Π°Π»ΠΎΠ³ΠΎΠ². БСрвисы {{ ydb-short-name }} ΠΌΠΎΠ³ΡƒΡ‚ Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ объСм систСмных Π»ΠΎΠ³ΠΎΠ², Π² особСнности ΠΏΡ€ΠΈ ΠΏΠΎΠ²Ρ‹ΡˆΠ΅Π½ΠΈΠΈ уровня логирования для диагностичСских Ρ†Π΅Π»Π΅ΠΉ, поэтому Π²Π°ΠΆΠ½ΠΎ Π²ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ Ρ€ΠΎΡ‚Π°Ρ†ΠΈΡŽ Ρ„Π°ΠΉΠ»ΠΎΠ² систСмного Π»ΠΎΠ³Π° для ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ ситуаций пСрСполнСния Ρ„Π°ΠΉΠ»ΠΎΠ²ΠΎΠΉ систСмы `/var`.
-ΠŸΠΎΠ΄Ρ€ΠΎΠ±Π½Π΅Π΅ трСбования ΠΊ ΠΎΠ±ΠΎΡ€ΡƒΠ΄ΠΎΠ²Π°Π½ΠΈΡŽ описаны Π² Ρ€Π°Π·Π΄Π΅Π»Π΅ [{#T}](../../cluster/system-requirements.md).
+Π’Ρ‹Π±Π΅Ρ€ΠΈΡ‚Π΅ сСрвСры ΠΈ диски, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π±ΡƒΠ΄ΡƒΡ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ для хранСния Π΄Π°Π½Π½Ρ‹Ρ…:
-## Π‘ΠΎΠ·Π΄Π°ΠΉΡ‚Π΅ систСмного ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ ΠΈ Π³Ρ€ΡƒΠΏΠΏΡƒ, ΠΎΡ‚ ΠΈΠΌΠ΅Π½ΠΈ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ {{ ydb-short-name }} {#create-user}
+* Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ схСму отказоустойчивости `block-4-2` для развСртывания кластСра Π² ΠΎΠ΄Π½ΠΎΠΉ Π·ΠΎΠ½Π΅ доступности (AZ). Π§Ρ‚ΠΎΠ±Ρ‹ ΠΏΠ΅Ρ€Π΅ΠΆΠΈΠ²Π°Ρ‚ΡŒ ΠΎΡ‚ΠΊΠ°Π· 2 сСрвСров, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ Π½Π΅ ΠΌΠ΅Π½Π΅Π΅ 8 сСрвСров.
+* Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ схСму отказоустойчивости `mirror-3-dc` для развСртывания кластСра Π² Ρ‚Ρ€Π΅Ρ… Π·ΠΎΠ½Π°Ρ… доступности (AZ). Π§Ρ‚ΠΎΠ±Ρ‹ ΠΏΠ΅Ρ€Π΅ΠΆΠΈΠ²Π°Ρ‚ΡŒ ΠΎΡ‚ΠΊΠ°Π· 1 AZ ΠΈ 1 сСрвСра Π² Π΄Ρ€ΡƒΠ³ΠΎΠΉ AZ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ Π½Π΅ ΠΌΠ΅Π½Π΅Π΅ 9 сСрвСров. ΠšΠΎΠ»ΠΈΡ‡Π΅ΡΡ‚Π²ΠΎ задСйствованных сСрвСров Π² ΠΊΠ°ΠΆΠ΄ΠΎΠΉ AZ Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±Ρ‹Ρ‚ΡŒ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²Ρ‹ΠΌ.
-На ΠΊΠ°ΠΆΠ΄ΠΎΠΌ сСрвСрС, Π³Π΄Π΅ Π±ΡƒΠ΄Π΅Ρ‚ Π·Π°ΠΏΡƒΡ‰Π΅Π½ {{ ydb-short-name }} Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚Π΅:
+{% note info %}
-```bash
-sudo groupadd ydb
-sudo useradd ydb -g ydb
-```
+ЗапускайтС ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ статичСский ΡƒΠ·Π΅Π» (ΡƒΠ·Π΅Π» хранСния Π΄Π°Π½Π½Ρ‹Ρ…) Π½Π° ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎΠΌ сСрвСрС. Π’ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ совмСщСниС статичСских ΠΈ динамичСских ΡƒΠ·Π»ΠΎΠ² Π½Π° ΠΎΠ΄Π½ΠΎΠΌ сСрвСрС, Π° Ρ‚Π°ΠΊΠΆΠ΅ Ρ€Π°Π·ΠΌΠ΅Ρ‰Π΅Π½ΠΈΠ΅ Π½Π° ΠΎΠ΄Π½ΠΎΠΌ сСрвСрС Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… динамичСских ΡƒΠ·Π»ΠΎΠ² ΠΏΡ€ΠΈ Π½Π°Π»ΠΈΡ‡ΠΈΠΈ достаточных Π²Ρ‹Ρ‡ΠΈΡΠ»ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… рСсурсов.
-Для Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ сСрвис {{ ydb-short-name }} ΠΈΠΌΠ΅Π» доступ ΠΊ Π±Π»ΠΎΡ‡Π½Ρ‹ΠΌ дискам для Ρ€Π°Π±ΠΎΡ‚Ρ‹, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ, ΠΏΠΎΠ΄ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ Π±ΡƒΠ΄Π΅Ρ‚ Π·Π°ΠΏΡƒΡ‰Π΅Π½ процСсс, Π² Π³Ρ€ΡƒΠΏΠΏΡƒ `disk`:
+{% endnote %}
-```bash
-sudo usermod -aG disk ydb
-```
+ΠŸΠΎΠ΄Ρ€ΠΎΠ±Π½Π΅Π΅ трСбования ΠΊ ΠΎΠ±ΠΎΡ€ΡƒΠ΄ΠΎΠ²Π°Π½ΠΈΡŽ описаны Π² Ρ€Π°Π·Π΄Π΅Π»Π΅ [{#T}](../../cluster/system-requirements.md).
-## ΠŸΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²ΡŒΡ‚Π΅ ΠΈ ΠΎΡ‚Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΡ€ΡƒΠΉΡ‚Π΅ диски Π½Π° ΠΊΠ°ΠΆΠ΄ΠΎΠΌ сСрвСрС {#prepare-disks}
+### ΠŸΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²ΠΊΠ° ΠΊΠ»ΡŽΡ‡Π΅ΠΉ ΠΈ сСртификатов TLS {#tls-certificates}
-{% note warning %}
+Π—Π°Ρ‰ΠΈΡ‚Π° Ρ‚Ρ€Π°Ρ„ΠΈΠΊΠ° ΠΈ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° подлинности сСрвСрных ΡƒΠ·Π»ΠΎΠ² {{ ydb-short-name }} осущСствляСтся с использованиСм ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»Π° TLS. ΠŸΠ΅Ρ€Π΅Π΄ установкой кластСра Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΡΠΏΠ»Π°Π½ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ состав сСрвСров, ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒΡΡ со схСмой имСнования ΡƒΠ·Π»ΠΎΠ² ΠΈ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹ΠΌΠΈ ΠΈΠΌΠ΅Π½Π°ΠΌΠΈ, ΠΈ ΠΏΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²ΠΈΡ‚ΡŒ ΠΊΠ»ΡŽΡ‡ΠΈ ΠΈ сСртификаты TLS.
-ΠœΡ‹ Π½Π΅ Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡƒΠ΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ для хранСния Π΄Π°Π½Π½Ρ‹Ρ… диски, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ Π΄Ρ€ΡƒΠ³ΠΈΠΌΠΈ процСссами (Π² Ρ‚ΠΎΠΌ числС ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½ΠΎΠΉ систСмой).
+Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅ ΠΈΠ»ΠΈ ΡΠ³Π΅Π½Π΅Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π½ΠΎΠ²Ρ‹Π΅ сСртификаты. Π‘Π»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ Ρ„Π°ΠΉΠ»Ρ‹ ΠΊΠ»ΡŽΡ‡Π΅ΠΉ ΠΈ сСртификатов TLS Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Ρ‚ΡŒ ΠΏΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²Π»Π΅Π½Ρ‹ Π² Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π΅ PEM:
+* `ca.crt` - сСртификат Ρ†Π΅Π½Ρ‚Ρ€Π° рСгистрации (Certification Authority, CA), ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ подписаны ΠΎΡΡ‚Π°Π»ΡŒΠ½Ρ‹Π΅ сСртификаты TLS (ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²Ρ‹Π΅ Ρ„Π°ΠΉΠ»Ρ‹ Π½Π° всСх ΡƒΠ·Π»Π°Ρ… кластСра);
+* `node.key` - сСкрСтныС ΠΊΠ»ΡŽΡ‡ΠΈ TLS для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΈΠ· ΡƒΠ·Π»ΠΎΠ² кластСра (свой ΠΊΠ»ΡŽΡ‡ Π½Π° ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ сСрвСр кластСра);
+* `node.crt` - сСртификаты TLS для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΈΠ· ΡƒΠ·Π»ΠΎΠ² кластСра (ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΉ ΠΊΠ»ΡŽΡ‡Ρƒ сСртификат);
+* `web.pem` - конкатСнация сСкрСтного ΠΊΠ»ΡŽΡ‡Π° ΡƒΠ·Π»Π°, сСртификата ΡƒΠ·Π»Π° ΠΈ сСртификата Ρ†Π΅Π½Ρ‚Ρ€Π° рСгистрации для Ρ€Π°Π±ΠΎΡ‚Ρ‹ HTTP интСрфСйса ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³Π° (свой Ρ„Π°ΠΉΠ» Π½Π° ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ сСрвСр кластСра).
-{% endnote %}
+НСобходимыС ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ формирования сСртификатов ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡŽΡ‚ΡΡ ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠΎΠΉ ΠΎΡ€Π³Π°Π½ΠΈΠ·Π°Ρ†ΠΈΠΈ. ΠžΠ±Ρ‹Ρ‡Π½ΠΎ сСртификаты ΠΈ ΠΊΠ»ΡŽΡ‡ΠΈ для {{ ydb-short-name }} Ρ„ΠΎΡ€ΠΌΠΈΡ€ΡƒΡŽΡ‚ΡΡ со ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌΠΈ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°ΠΌΠΈ:
+* ΠΊΠ»ΡŽΡ‡ΠΈ RSA длиною 2048 ΠΈΠ»ΠΈ 4096 Π±ΠΈΡ‚;
+* Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ подписи сСртификатов SHA-256 с ΡˆΠΈΡ„Ρ€ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ RSA;
+* срок дСйствия сСртификатов ΡƒΠ·Π»ΠΎΠ² Π½Π΅ ΠΌΠ΅Π½Π΅Π΅ 1 Π³ΠΎΠ΄Π°;
+* срок дСйствия сСртификата Ρ†Π΅Π½Ρ‚Ρ€Π° рСгистрации Π½Π΅ ΠΌΠ΅Π½Π΅Π΅ 3 Π»Π΅Ρ‚.
-{% include [_includes/storage-device-requirements.md](../../_includes/storage-device-requirements.md) %}
+НСобходимо, Ρ‡Ρ‚ΠΎΠ±Ρ‹ сСртификат Ρ†Π΅Π½Ρ‚Ρ€Π° рСгистрации Π±Ρ‹Π» ΠΏΠΎΠΌΠ΅Ρ‡Π΅Π½ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ: Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ установлСн ΠΏΡ€ΠΈΠ·Π½Π°ΠΊ CA, Π° Ρ‚Π°ΠΊΠΆΠ΅ Π²ΠΊΠ»ΡŽΡ‡Π΅Π½Ρ‹ Π²ΠΈΠ΄Ρ‹ использования "Digital Signature, Non Repudiation, Key Encipherment, Certificate Sign".
-1. Π‘ΠΎΠ·Π΄Π°ΠΉΡ‚Π΅ Ρ€Π°Π·Π΄Π΅Π» Π½Π° Π²Ρ‹Π±Ρ€Π°Π½Π½ΠΎΠΌ дискС:
+Для сСртификатов ΡƒΠ·Π»ΠΎΠ² Π²Π°ΠΆΠ½ΠΎ соотвСтствиС фактичСского ΠΈΠΌΠ΅Π½ΠΈ хоста (ΠΈΠ»ΠΈ ΠΈΠΌΡ‘Π½ хостов) значСниям, ΡƒΠΊΠ°Π·Π°Π½Π½Ρ‹ΠΌ Π² ΠΏΠΎΠ»Π΅ "Subject Alternative Name". Для сСртификатов Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Ρ‚ΡŒ Π²ΠΊΠ»ΡŽΡ‡Π΅Π½Ρ‹ Π²ΠΈΠ΄Ρ‹ использования "Digital Signature, Key Encipherment" ΠΈ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½Π½Ρ‹Π΅ Π²ΠΈΠ΄Ρ‹ использования "TLS Web Server Authentication, TLS Web Client Authentication". НСобходимо, Ρ‡Ρ‚ΠΎΠ±Ρ‹ сСртификаты ΡƒΠ·Π»ΠΎΠ² ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π»ΠΈ ΠΊΠ°ΠΊ ΡΠ΅Ρ€Π²Π΅Ρ€Π½ΡƒΡŽ, Ρ‚Π°ΠΊ ΠΈ ΠΊΠ»ΠΈΠ΅Π½Ρ‚ΡΠΊΡƒΡŽ Π°ΡƒΡ‚Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΡŽ (опция `extendedKeyUsage = serverAuth,clientAuth` Π² настройках OpenSSL).
- {% note alert %}
+Для ΠΏΠ°ΠΊΠ΅Ρ‚Π½ΠΎΠΉ Π³Π΅Π½Π΅Ρ€Π°Ρ†ΠΈΠΈ ΠΈΠ»ΠΈ обновлСния сСртификатов кластСра {{ 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}
- {% endnote %}
+На ΠΊΠ°ΠΆΠ΄ΠΎΠΌ сСрвСрС, Π³Π΄Π΅ Π±ΡƒΠ΄Π΅Ρ‚ Π·Π°ΠΏΡƒΡ‰Π΅Π½ {{ ydb-short-name }}, Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚Π΅:
- ```bash
- sudo parted /dev/nvme0n1 mklabel gpt -s
- sudo parted -a optimal /dev/nvme0n1 mkpart primary 0% 100%
- sudo parted /dev/nvme0n1 name 1 ydb_disk_ssd_01
- sudo partx --u /dev/nvme0n1
- ```
+```bash
+sudo groupadd ydb
+sudo useradd ydb -g ydb
+```
+
+Для Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ сСрвис {{ ydb-short-name }} ΠΈΠΌΠ΅Π» доступ ΠΊ Π±Π»ΠΎΡ‡Π½Ρ‹ΠΌ дискам для Ρ€Π°Π±ΠΎΡ‚Ρ‹, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ, ΠΏΠΎΠ΄ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ Π±ΡƒΠ΄ΡƒΡ‚ Π·Π°ΠΏΡƒΡ‰Π΅Π½Ρ‹ процСссы {{ ydb-short-name }}, Π² Π³Ρ€ΡƒΠΏΠΏΡƒ `disk`:
- ПослС выполнСния Π² систСмС появится диск с Π»Π΅ΠΉΠ±Π»ΠΎΠΌ `/dev/disk/by-partlabel/ydb_disk_ssd_01`.
+```bash
+sudo usermod -aG disk ydb
+```
- Если Π²Ρ‹ ΠΏΠ»Π°Π½ΠΈΡ€ΡƒΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π±ΠΎΠ»Π΅Π΅ ΠΎΠ΄Π½ΠΎΠ³ΠΎ диска Π½Π° ΠΊΠ°ΠΆΠ΄ΠΎΠΌ сСрвСрС, ΡƒΠΊΠ°ΠΆΠΈΡ‚Π΅ для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ свой ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΉ Π»Π΅ΠΉΠ±Π» вмСсто `ydb_disk_ssd_01`. Π­Ρ‚ΠΈ диски Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π±ΡƒΠ΄Π΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π² ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΎΠ½Π½Ρ‹Ρ… Ρ„Π°ΠΉΠ»Π°Ρ… Π΄Π°Π»Π΅Π΅.
+## УстановитС ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ΅ обСспСчСниС {{ ydb-short-name }} Π½Π° ΠΊΠ°ΠΆΠ΄ΠΎΠΌ сСрвСрС {#install-binaries}
1. Π‘ΠΊΠ°Ρ‡Π°ΠΉΡ‚Π΅ ΠΈ распакуйтС Π°Ρ€Ρ…ΠΈΠ² с исполняСмым Ρ„Π°ΠΉΠ»ΠΎΠΌ `ydbd` ΠΈ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹ΠΌΠΈ для Ρ€Π°Π±ΠΎΡ‚Ρ‹ {{ ydb-short-name }} Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ°ΠΌΠΈ:
@@ -74,11 +80,10 @@ sudo usermod -aG disk ydb
curl -L https://binaries.ydb.tech/ydbd-stable-linux-amd64.tar.gz | tar -xz --strip-component=1 -C ydbd-stable-linux-amd64
```
-1. Π‘ΠΎΠ·Π΄Π°ΠΉΡ‚Π΅ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΠΈ для запуска:
+1. Π‘ΠΎΠ·Π΄Π°ΠΉΡ‚Π΅ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΠΈ для размСщСния ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ обСспСчСния {{ ydb-short-name }}:
```bash
sudo mkdir -p /opt/ydb /opt/ydb/cfg
- sudo chown -R ydb:ydb /opt/ydb
```
1. Π‘ΠΊΠΎΠΏΠΈΡ€ΡƒΠΉΡ‚Π΅ исполняСмый Ρ„Π°ΠΉΠ» ΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ Π² ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΠΈ:
@@ -88,203 +93,104 @@ sudo usermod -aG disk ydb
sudo cp -iR ydbd-stable-linux-amd64/lib /opt/ydb/
```
-1. ΠžΡ‚Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΡ€ΡƒΠΉΡ‚Π΅ диск встроСнной ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ:
+1. УстановитС Π²Π»Π°Π΄Π΅Π»ΡŒΡ†Π° Ρ„Π°ΠΉΠ»ΠΎΠ² ΠΈ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ΠΎΠ²:
```bash
- sudo LD_LIBRARY_PATH=/opt/ydb/lib /opt/ydb/bin/ydbd admin bs disk obliterate /dev/disk/by-partlabel/ydb_disk_ssd_01
+ sudo chown -R root:bin /opt/ydb
```
- ΠŸΡ€ΠΎΠ΄Π΅Π»Π°ΠΉΡ‚Π΅ Π΄Π°Π½Π½ΡƒΡŽ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΡŽ для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ диска, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π±ΡƒΠ΄Π΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ для хранСния Π΄Π°Π½Π½Ρ‹Ρ….
-
-## ΠŸΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²ΡŒΡ‚Π΅ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΎΠ½Π½Ρ‹Π΅ Ρ„Π°ΠΉΠ»Ρ‹ {#config}
-
-{% list tabs %}
-
-- НСзащищСнный Ρ€Π΅ΠΆΠΈΠΌ
-
- Π’ Π½Π΅Π·Π°Ρ‰ΠΈΡ‰Π΅Π½Π½ΠΎΠΌ Ρ€Π΅ΠΆΠΈΠΌΠ΅ Ρ‚Ρ€Π°Ρ„ΠΈΠΊ ΠΌΠ΅ΠΆΠ΄Ρƒ Π½ΠΎΠ΄Π°ΠΌΠΈ кластСра, Π° Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠ΅ΠΆΠ΄Ρƒ ΠΊΠ»ΠΈΠ΅Π½Ρ‚ΠΎΠΌ ΠΈ кластСром ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ Π½Π΅ΡˆΠΈΡ„Ρ€ΠΎΠ²Π°Π½Π½ΠΎΠ΅ соСдинСниС. Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ Π΄Π°Π½Π½Ρ‹ΠΉ Ρ€Π΅ΠΆΠΈΠΌ для тСстовых Π·Π°Π΄Π°Ρ‡.
-
- {% include [prepare-configs.md](_includes/prepare-configs.md) %}
-
-- Π—Π°Ρ‰ΠΈΡ‰Π΅Π½Π½Ρ‹ΠΉ Ρ€Π΅ΠΆΠΈΠΌ
-
- Π’ Π·Π°Ρ‰ΠΈΡ‰Π΅Π½Π½ΠΎΠΌ Ρ€Π΅ΠΆΠΈΠΌΠ΅ Ρ‚Ρ€Π°Ρ„ΠΈΠΊ ΠΌΠ΅ΠΆΠ΄Ρƒ Π½ΠΎΠ΄Π°ΠΌΠΈ кластСра, Π° Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠ΅ΠΆΠ΄Ρƒ ΠΊΠ»ΠΈΠ΅Π½Ρ‚ΠΎΠΌ ΠΈ кластСром ΡˆΠΈΡ„Ρ€ΡƒΠ΅Ρ‚ΡΡ ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»ΠΎΠΌ TLS.
-
- {% note info %}
-
- Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅ TLS сСртификаты. Π’Π°ΠΆΠ½ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ сСртификаты ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π»ΠΈ ΠΊΠ°ΠΊ ΡΠ΅Ρ€Π²Π΅Ρ€Π½ΡƒΡŽ, Ρ‚Π°ΠΊ ΠΈ ΠΊΠ»ΠΈΠ΅Π½Ρ‚ΡΠΊΡƒΡŽ Π°ΡƒΡ‚Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΡŽ (`extendedKeyUsage = serverAuth,clientAuth`)
-
- {% endnote %}
-
- 1. Π‘ΠΎΠ·Π΄Π°ΠΉΡ‚Π΅ ΠΊΠ»ΡŽΡ‡ ΠΈ сСртификат для Ρ†Π΅Π½Ρ‚Ρ€Π° сСртификации (CA):
-
- 1. Π‘ΠΎΠ·Π΄Π°ΠΉΡ‚Π΅ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΠΈ `secure`, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ Π±ΡƒΠ΄Π΅Ρ‚ Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒΡΡ ΠΊΠ»ΡŽΡ‡ CA, ΠΈ `certs` для сСртификатов ΠΈ ΠΊΠ»ΡŽΡ‡Π΅ΠΉ Π½ΠΎΠ΄:
-
- ```bash
- mkdir secure
- mkdir certs
- ```
-
- 1. Π‘ΠΎΠ·Π΄Π°ΠΉΡ‚Π΅ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΎΠ½Π½Ρ‹ΠΉ Ρ„Π°ΠΉΠ» `ca.cnf` со ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ содСрТимым:
-
- ```text
- [ ca ]
- default_ca = CA_default
-
- [ CA_default ]
- default_days = 365
- database = index.txt
- serial = serial.txt
- default_md = sha256
- copy_extensions = copy
- unique_subject = no
-
- [ req ]
- prompt=no
- distinguished_name = distinguished_name
- x509_extensions = extensions
-
- [ distinguished_name ]
- organizationName = YDB
- commonName = YDB CA
-
- [ extensions ]
- keyUsage = critical,digitalSignature,nonRepudiation,keyEncipherment,keyCertSign
- basicConstraints = critical,CA:true,pathlen:1
-
- [ signing_policy ]
- organizationName = supplied
- commonName = optional
-
- [ signing_node_req ]
- keyUsage = critical,digitalSignature,keyEncipherment
- extendedKeyUsage = serverAuth,clientAuth
-
- # Used to sign client certificates.
- [ signing_client_req ]
- keyUsage = critical,digitalSignature,keyEncipherment
- extendedKeyUsage = clientAuth
- ```
-
- 1. Π‘ΠΎΠ·Π΄Π°ΠΉΡ‚Π΅ CA ΠΊΠ»ΡŽΡ‡:
-
- ```bash
- openssl genrsa -out secure/ca.key 2048
- ```
-
- Π‘ΠΎΡ…Ρ€Π°Π½ΠΈΡ‚Π΅ этот ΠΊΠ»ΡŽΡ‡ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎ, ΠΎΠ½ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌ для выписывания сСртификатов. ΠŸΡ€ΠΈ Π΅Π³ΠΎ ΡƒΡ‚Π΅Ρ€Π΅ Π²Π°ΠΌ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΠ΅Ρ€Π΅Π²Ρ‹ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ всС сСртификаты.
-
- 1. Π‘ΠΎΠ·Π΄Π°ΠΉΡ‚Π΅ частный Certificate Authority (CA) сСртификат:
-
- ```bash
- openssl req -new -x509 -config ca.cnf -key secure/ca.key -out certs/ca.crt -days 1830 -batch
- ```
-
- 1. Π‘ΠΎΠ·Π΄Π°ΠΉΡ‚Π΅ Ρ‚Π΅ΠΊΡΡ‚ΠΎΠ²ΡƒΡŽ Π±Π°Π·Ρƒ Π΄Π°Π½Π½Ρ‹Ρ… ΠΈ Ρ„Π°ΠΉΠ» индСкса сСртификатов OpenSSL:
-
- ```bash
- touch index.txt
- echo 01 >serial.txt
- ```
-
- 1. Π‘ΠΎΠ·Π΄Π°ΠΉΡ‚Π΅ ΠΊΠ»ΡŽΡ‡ΠΈ ΠΈ сСртификаты для Π½ΠΎΠ΄ кластСра:
-
- 1. Π‘ΠΎΠ·Π΄Π°ΠΉΡ‚Π΅ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΎΠ½Π½Ρ‹ΠΉ Ρ„Π°ΠΉΠ» `node.cnf` со ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ содСрТимым:
-
- ```text
- # OpenSSL node configuration file
- [ req ]
- prompt = no
- distinguished_name = distinguished_name
- req_extensions = extensions
-
- [ distinguished_name ]
- organizationName = YDB
-
- [ extensions ]
- subjectAltName = DNS:<node>.<domain>
- ```
+## ΠŸΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²ΡŒΡ‚Π΅ ΠΈ ΠΎΡ‚Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΡ€ΡƒΠΉΡ‚Π΅ диски Π½Π° ΠΊΠ°ΠΆΠ΄ΠΎΠΌ сСрвСрС {#prepare-disks}
- 1. Π‘ΠΎΠ·Π΄Π°ΠΉΡ‚Π΅ ΠΊΠ»ΡŽΡ‡ сСртификата:
+{% include [_includes/storage-device-requirements.md](../../_includes/storage-device-requirements.md) %}
- ```bash
- openssl genrsa -out certs/node.key 2048
- ```
+1. Π‘ΠΎΠ·Π΄Π°ΠΉΡ‚Π΅ Ρ€Π°Π·Π΄Π΅Π»Ρ‹ Π½Π° Π²Ρ‹Π±Ρ€Π°Π½Π½Ρ‹Ρ… дисках:
- 1. Π‘ΠΎΠ·Π΄Π°ΠΉΡ‚Π΅ Certificate Signing Request (CSR):
+ {% note alert %}
- ```bash
- openssl req -new -sha256 -config node.cnf -key certs/node.key -out node.csr -batch
- ```
+ Π‘Π»Π΅Π΄ΡƒΡŽΡ‰Π°Ρ опСрация ΡƒΠ΄Π°Π»ΠΈΡ‚ всС Ρ€Π°Π·Π΄Π΅Π»Ρ‹ Π½Π° ΡƒΠΊΠ°Π·Π°Π½Π½ΠΎΠΌ дискС! Π£Π±Π΅Π΄ΠΈΡ‚Π΅ΡΡŒ, Ρ‡Ρ‚ΠΎ Π²Ρ‹ ΡƒΠΊΠ°Π·Π°Π»ΠΈ диск, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ Π½Π΅Ρ‚ Π΄Ρ€ΡƒΠ³ΠΈΡ… Π΄Π°Π½Π½Ρ‹Ρ…!
- 1. Π‘ΠΎΠ·Π΄Π°ΠΉΡ‚Π΅ сСртификат Π½ΠΎΠ΄Ρ‹:
+ {% endnote %}
- ```bash
- openssl ca -config ca.cnf -keyfile secure/ca.key -cert certs/ca.crt -policy signing_policy \
- -extensions signing_node_req -out certs/node.crt -outdir certs/ -in node.csr -batch
- ```
+ ```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`.
- 1. Π‘ΠΎΠ·Π΄Π°ΠΉΡ‚Π΅ Π½Π° ΠΊΠ°ΠΆΠ΄ΠΎΠΉ Π½ΠΎΠ΄Π΅ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΡ€ΠΈΠΈ для сСртификатов:
+ Если Π²Ρ‹ ΠΏΠ»Π°Π½ΠΈΡ€ΡƒΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π±ΠΎΠ»Π΅Π΅ ΠΎΠ΄Π½ΠΎΠ³ΠΎ диска Π½Π° ΠΊΠ°ΠΆΠ΄ΠΎΠΌ сСрвСрС, ΡƒΠΊΠ°ΠΆΠΈΡ‚Π΅ для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ свою ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½ΡƒΡŽ ΠΌΠ΅Ρ‚ΠΊΡƒ вмСсто `ydb_disk_ssd_01`. ΠœΠ΅Ρ‚ΠΊΠΈ дисков Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Ρ‚ΡŒ ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹ Π² Ρ€Π°ΠΌΠΊΠ°Ρ… ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ сСрвСра, ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ Π² ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΎΠ½Π½Ρ‹Ρ… Ρ„Π°ΠΉΠ»Π°Ρ…, ΠΊΠ°ΠΊ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ Π² ΠΏΠΎΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΡ… инструкциях.
- ```bash
- sudo mkdir /opt/ydb/certs
- sudo chown -R ydb:ydb /opt/ydb/certs
- sudo chmod 0750 /opt/ydb/certs
- ```
+ Для упрощСния ΠΏΠΎΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΉ настройки ΡƒΠ΄ΠΎΠ±Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²Ρ‹Π΅ ΠΌΠ΅Ρ‚ΠΊΠΈ дисков Π½Π° сСрвСрах кластСра, ΠΈΠΌΠ΅ΡŽΡ‰ΠΈΡ… ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ‡Π½ΡƒΡŽ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΡŽ дисков.
- 1. Π‘ΠΊΠΎΠΏΠΈΡ€ΡƒΠΉΡ‚Π΅ сСртификаты ΠΈ ΠΊΠ»ΡŽΡ‡ΠΈ Π½ΠΎΠ΄Ρ‹ Π² ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ инсталляции:
+2. ΠžΡ‚Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΡ€ΡƒΠΉΡ‚Π΅ диск встроСнной Π² исполняСмый Ρ„Π°ΠΉΠ» `ydbd` ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ:
- ```bash
- sudo -u ydb cp certs/ca.crt certs/node.crt certs/node.key /opt/ydb/certs/
- ```
+ ```bash
+ sudo LD_LIBRARY_PATH=/opt/ydb/lib /opt/ydb/bin/ydbd admin bs disk obliterate /dev/disk/by-partlabel/ydb_disk_ssd_01
+ ```
- 1. {% include [prepare-configs.md](_includes/prepare-configs.md) %}
+ ΠŸΡ€ΠΎΠ΄Π΅Π»Π°ΠΉΡ‚Π΅ Π΄Π°Π½Π½ΡƒΡŽ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΡŽ для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ диска, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π±ΡƒΠ΄Π΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ для хранСния Π΄Π°Π½Π½Ρ‹Ρ… {{ ydb-short-name }}.
- 1. Π’ΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅ Ρ€Π΅ΠΆΠΈΠΌ ΡˆΠΈΡ„Ρ€ΠΎΠ²Π°Π½ΠΈΡ Ρ‚Ρ€Π°Ρ„ΠΈΠΊΠ° Π² ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΎΠ½Π½ΠΎΠΌ Ρ„Π°ΠΉΠ»Π΅ {{ ydb-short-name }}.
+## ΠŸΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²ΡŒΡ‚Π΅ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΎΠ½Π½Ρ‹Π΅ Ρ„Π°ΠΉΠ»Ρ‹ {#config}
- Π’ сСкциях `interconnect_config` ΠΈ `grpc_config` ΡƒΠΊΠ°ΠΆΠΈΡ‚Π΅ ΠΏΡƒΡ‚ΡŒ Π΄ΠΎ Ρ„Π°ΠΉΠ»ΠΎΠ² сСртификата, ΠΊΠ»ΡŽΡ‡Π° ΠΈ CA сСртификата:
+{% include [prepare-configs.md](_includes/prepare-configs.md) %}
+
+ΠŸΡ€ΠΈ использовании Ρ€Π΅ΠΆΠΈΠΌΠ° ΡˆΠΈΡ„Ρ€ΠΎΠ²Π°Π½ΠΈΡ Ρ‚Ρ€Π°Ρ„ΠΈΠΊΠ° ΡƒΠ±Π΅Π΄ΠΈΡ‚Π΅ΡΡŒ Π² Π½Π°Π»ΠΈΡ‡ΠΈΠΈ Π² ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΎΠ½Π½ΠΎΠΌ Ρ„Π°ΠΉΠ»Π΅ {{ ydb-short-name }} установлСнных ΠΏΡƒΡ‚Π΅ΠΉ ΠΊ Ρ„Π°ΠΉΠ»Π°ΠΌ ΠΊΠ»ΡŽΡ‡Π΅ΠΉ ΠΈ сСртификатов Π² сСкциях `interconnect_config` ΠΈ `grpc_config`:
+
+```json
+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
+```
- ```json
- 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"
+Π‘ΠΎΡ…Ρ€Π°Π½ΠΈΡ‚Π΅ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΎΠ½Π½Ρ‹ΠΉ Ρ„Π°ΠΉΠ» {{ ydb-short-name }} ΠΏΠΎΠ΄ ΠΈΠΌΠ΅Π½Π΅ΠΌ `/opt/ydb/cfg/config.yaml` Π½Π° ΠΊΠ°ΠΆΠ΄ΠΎΠΌ сСрвСрС кластСра.
- grpc_config:
- cert: "/opt/ydb/certs/node.crt"
- key: "/opt/ydb/certs/node.key"
- ca: "/opt/ydb/certs/ca.crt"
- ```
+Π‘ΠΎΠ»Π΅Π΅ подробная информация ΠΏΠΎ созданию Ρ„Π°ΠΉΠ»Π° ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π° Π² ΡΡ‚Π°Ρ‚ΡŒΠ΅ [ΠšΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΡ кластСра](../configuration/config.md).
-{% endlist %}
+## Π‘ΠΊΠΎΠΏΠΈΡ€ΡƒΠΉΡ‚Π΅ ΠΊΠ»ΡŽΡ‡ΠΈ ΠΈ сСртификаты TLS Π½Π° ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ сСрвСр {#tls-copy-cert}
-Π‘ΠΎΡ…Ρ€Π°Π½ΠΈΡ‚Π΅ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΎΠ½Π½Ρ‹ΠΉ Ρ„Π°ΠΉΠ» {{ ydb-short-name }} ΠΏΠΎΠ΄ ΠΈΠΌΠ΅Π½Π΅ΠΌ `/opt/ydb/cfg/config.yaml` Π½Π° ΠΊΠ°ΠΆΠ΄ΠΎΠΌ ΡƒΠ·Π»Π΅ кластСра.
+ΠŸΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²Π»Π΅Π½Π½Ρ‹Π΅ ΠΊΠ»ΡŽΡ‡ΠΈ ΠΈ сСртификаты TLS Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΡΠΊΠΎΠΏΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π² Π·Π°Ρ‰ΠΈΡ‰Π΅Π½Π½Ρ‹ΠΉ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ Π½Π° ΠΊΠ°ΠΆΠ΄ΠΎΠΌ ΠΈΠ· ΡƒΠ·Π»ΠΎΠ² кластСра {{ ydb-short-name }}. НиТС ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ ΠΊΠΎΠΌΠ°Π½Π΄ для создания Π·Π°Ρ‰ΠΈΡ‰Π΅Π½Π½ΠΎΠ³ΠΎ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π° ΠΈ копирования Ρ„Π°ΠΉΠ»ΠΎΠ² с ΠΊΠ»ΡŽΡ‡Π°ΠΌΠΈ ΠΈ сСртификатами.
-Π‘ΠΎΠ»Π΅Π΅ подробная информация ΠΏΠΎ созданию ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π° Π² ΡΡ‚Π°Ρ‚ΡŒΠ΅ [ΠšΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΡ кластСра](../configuration/config.md).
+```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}
+## ЗапуститС статичСскиС ΡƒΠ·Π»Ρ‹ {#start-storage}
{% list tabs %}
- Π’Ρ€ΡƒΡ‡Π½ΡƒΡŽ
- ЗапуститС Π½Π° ΠΊΠ°ΠΆΠ΄ΠΎΠΉ Π½ΠΎΠ΄Π΅ {{ ydb-short-name }} storage:
+ ЗапуститС сСрвис хранСния Π΄Π°Π½Π½Ρ‹Ρ… {{ 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 \
- --grpc-port 2135 --ic-port 19001 --mon-port 8765 --node static
+ /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
- Π‘ΠΎΠ·Π΄Π°ΠΉΡ‚Π΅ Π½Π° ΠΊΠ°ΠΆΠ΄ΠΎΠΉ Π½ΠΎΠ΄Π΅ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΎΠ½Π½Ρ‹ΠΉ Ρ„Π°ΠΉΠ» `/etc/systemd/system/ydbd-storage.service` со ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ содСрТимым:
+ Π‘ΠΎΠ·Π΄Π°ΠΉΡ‚Π΅ Π½Π° ΠΊΠ°ΠΆΠ΄ΠΎΠΌ сСрвСрС, Π³Π΄Π΅ Π±ΡƒΠ΄Π΅Ρ‚ Ρ€Π°Π·ΠΌΠ΅Ρ‰Π΅Π½ статичСский ΡƒΠ·Π΅Π» кластСра, ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΎΠ½Π½Ρ‹ΠΉ Ρ„Π°ΠΉΠ» systemd `/etc/systemd/system/ydbd-storage.service` ΠΏΠΎ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΌΡƒ Π½ΠΈΠΆΠ΅ ΠΎΠ±Ρ€Π°Π·Ρ†Ρƒ. ΠžΠ±Ρ€Π°Π·Π΅Ρ† Ρ„Π°ΠΉΠ»Π° Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ½ΠΎ [ΡΠΊΠ°Ρ‡Π°Ρ‚ΡŒ ΠΈΠ· рСпозитория](https://github.com/ydb-platform/ydb/blob/main/ydb/deploy/systemd_services/ydbd-storage.service).
```text
[Unit]
@@ -305,7 +211,10 @@ sudo usermod -aG disk ydb
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 --grpc-port 2135 --ic-port 19001 --mon-port 8765 --node static
+ 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
@@ -314,7 +223,7 @@ sudo usermod -aG disk ydb
WantedBy=multi-user.target
```
- ЗапуститС Π½Π° ΠΊΠ°ΠΆΠ΄ΠΎΠΉ Π½ΠΎΠ΄Π΅ {{ ydb-short-name }} storage:
+ ЗапуститС сСрвис Π½Π° ΠΊΠ°ΠΆΠ΄ΠΎΠΌ статичСском ΡƒΠ·Π»Π΅ {{ ydb-short-name }}:
```bash
sudo systemctl start ydbd-storage
@@ -324,21 +233,13 @@ sudo usermod -aG disk ydb
## Π˜Π½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΡƒΠΉΡ‚Π΅ кластСр {#initialize-cluster}
-ДСйствия ΠΏΠΎ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ кластСра зависят ΠΎΡ‚ Ρ‚ΠΎΠ³ΠΎ, Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ Π»ΠΈ Π² ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΎΠ½Π½ΠΎΠΌ Ρ„Π°ΠΉΠ»Π΅ {{ ydb-short-name }} Ρ€Π΅ΠΆΠΈΠΌ Π°ΡƒΡ‚Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ.
-
-{% list tabs %}
-
-- АутСнтификация Π²Ρ‹ΠΊΠ»ΡŽΡ‡Π΅Π½Π°
+ΠžΠΏΠ΅Ρ€Π°Ρ†ΠΈΡ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ кластСра осущСствляСт настройку Π½Π°Π±ΠΎΡ€Π° статичСских ΡƒΠ·Π»ΠΎΠ², пСрСчислСнных Π² ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΎΠ½Π½ΠΎΠΌ Ρ„Π°ΠΉΠ»Π΅ кластСра, для хранСния Π΄Π°Π½Π½Ρ‹Ρ… {{ ydb-short-name }}.
- На ΠΎΠ΄Π½ΠΎΠΉ ΠΈΠ· Π½ΠΎΠ΄ кластСра Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚Π΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹:
+Для ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ кластСра потрСбуСтся Ρ„Π°ΠΉΠ» сСртификата Ρ†Π΅Π½Ρ‚Ρ€Π° рСгистрации `ca.crt`, ΠΏΡƒΡ‚ΡŒ ΠΊ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌΡƒ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ ΡƒΠΊΠ°Π·Π°Π½ ΠΏΡ€ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΡ… ΠΊΠΎΠΌΠ°Π½Π΄. ΠŸΠ΅Ρ€Π΅Π΄ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ΠΌ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΡ… ΠΊΠΎΠΌΠ°Π½Π΄ скопируйтС Ρ„Π°ΠΉΠ» `ca.crt` Π½Π° сСрвСр, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ эти ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ Π±ΡƒΠ΄ΡƒΡ‚ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒΡΡ.
- ```bash
- export LD_LIBRARY_PATH=/opt/ydb/lib
- /opt/ydb/bin/ydbd admin blobstorage config init --yaml-file /opt/ydb/cfg/config.yaml
- echo $?
- ```
+ΠŸΠΎΡ€ΡΠ΄ΠΎΠΊ дСйствий ΠΏΠΎ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ кластСра зависят ΠΎΡ‚ Ρ‚ΠΎΠ³ΠΎ, Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ Π»ΠΈ Π² ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΎΠ½Π½ΠΎΠΌ Ρ„Π°ΠΉΠ»Π΅ {{ ydb-short-name }} Ρ€Π΅ΠΆΠΈΠΌ Π°ΡƒΡ‚Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ.
- Код Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ Π½ΡƒΠ»Π΅Π²Ρ‹ΠΌ.
+{% list tabs %}
- АутСнтификация Π²ΠΊΠ»ΡŽΡ‡Π΅Π½Π°
@@ -347,75 +248,106 @@ sudo usermod -aG disk ydb
ΠŸΡ€ΠΈ ΠΏΠ΅Ρ€Π²ΠΎΠ½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎΠΉ установкС кластСра Π² Π½Ρ‘ΠΌ сущСствуСт СдинствСнная учётная запись `root` с пустым ΠΏΠ°Ρ€ΠΎΠ»Π΅ΠΌ, поэтому ΠΊΠΎΠΌΠ°Π½Π΄Π° получСния Ρ‚ΠΎΠΊΠ΅Π½Π° выглядит ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ:
```bash
- ydb -e grpc://<node1.ydb.tech>:2135 -d /Root \
- --user root --no-password auth get-token --force >token-file
+ ydb -e grpcs://<node1.ydb.tech>:2135 -d /Root --ca-file ca.crt \
+ --user root --no-password auth get-token --force >token-file
```
- Π’ качСствС сСрвСра для ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ (ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ `-e` ΠΈΠ»ΠΈ `--endpoint`) ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΡƒΠΊΠ°Π·Π°Π½ любой ΠΈΠ· сСрвСров кластСра.
+ Π’ качСствС сСрвСра для ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ (ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ `-e` ΠΈΠ»ΠΈ `--endpoint`) ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΡƒΠΊΠ°Π·Π°Π½ любой ΠΈΠ· сСрвСров хранСния Π² составС кластСра.
- Если Π±Ρ‹Π»Π° Π²ΠΊΠ»ΡŽΡ‡Π΅Π½Π° Π·Π°Ρ‰ΠΈΡ‚Π° Ρ‚Ρ€Π°Ρ„ΠΈΠΊΠ° с использованиСм TLS, Ρ‚ΠΎ вмСсто ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»Π° `grpc` Π² ΠΊΠΎΠΌΠ°Π½Π΄Π΅ Π²Ρ‹ΡˆΠ΅ слСдуСт ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π΅Π³ΠΎ Π·Π°Ρ‰ΠΈΡ‰Π΅Π½Π½Ρ‹ΠΉ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ `grpcs`, ΠΈ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ ΠΏΡƒΡ‚ΡŒ ΠΊ Ρ„Π°ΠΉΠ»Ρƒ с сСртификатом CA Π² ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π΅ `--ca-file`. НапримСр:
+ ΠŸΡ€ΠΈ ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎΠΌ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ ΡƒΠΊΠ°Π·Π°Π½Π½ΠΎΠΉ Π²Ρ‹ΡˆΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ Π°ΡƒΡ‚Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΎΠ½Π½Ρ‹ΠΉ Ρ‚ΠΎΠΊΠ΅Π½ Π±ΡƒΠ΄Π΅Ρ‚ записан Π² Ρ„Π°ΠΉΠ» `token-file`. Π€Π°ΠΉΠ» Ρ‚ΠΎΠΊΠ΅Π½Π° Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΡΠΊΠΎΠΏΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π½Π° ΠΎΠ΄ΠΈΠ½ ΠΈΠ· сСрвСров хранСния Π² составС кластСра, Π° Π·Π°Ρ‚Π΅ΠΌ Π½Π° Π²Ρ‹Π±Ρ€Π°Π½Π½ΠΎΠΌ сСрвСрС Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹:
```bash
- ydb -e grpcs://<node1.ydb.tech>:2135 -d /Root --ca-file /opt/ydb/certs/ca.crt \
- --user root --no-password auth get-token --force >token-file
+ 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 $?
```
- ΠŸΡ€ΠΈ ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎΠΌ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ ΡƒΠΊΠ°Π·Π°Π½Π½ΠΎΠΉ Π²Ρ‹ΡˆΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ Π°ΡƒΡ‚Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΎΠ½Π½Ρ‹ΠΉ Ρ‚ΠΎΠΊΠ΅Π½ Π±ΡƒΠ΄Π΅Ρ‚ записан Π² Ρ„Π°ΠΉΠ» `token-file`. Π­Ρ‚ΠΎΡ‚ Ρ„Π°ΠΉΠ» Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π±ΡƒΠ΄Π΅Ρ‚ ΡΠΊΠΎΠΏΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π½Π° Π½ΠΎΠ΄Ρƒ кластСра, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ Π² дальнСйшСм Π²Ρ‹ ΡΠΎΠ±ΠΈΡ€Π°Π΅Ρ‚Π΅ΡΡŒ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ кластСра ΠΈ создания Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ…. Π”Π°Π»Π΅Π΅ Π½Π° этой Π½ΠΎΠ΄Π΅ кластСра Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚Π΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹:
+- АутСнтификация Π²Ρ‹ΠΊΠ»ΡŽΡ‡Π΅Π½Π°
+
+ На ΠΎΠ΄Π½ΠΎΠΌ ΠΈΠ· сСрвСров хранСния Π² составС кластСра Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚Π΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹:
```bash
export LD_LIBRARY_PATH=/opt/ydb/lib
- /opt/ydb/bin/ydbd -f token-file admin blobstorage config init --yaml-file /opt/ydb/cfg/config.yaml
+ /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}
-Для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с Ρ‚Π°Π±Π»ΠΈΡ†Π°ΠΌΠΈ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ ΠΊΠ°ΠΊ ΠΌΠΈΠ½ΠΈΠΌΡƒΠΌ ΠΎΠ΄Π½Ρƒ Π±Π°Π·Ρƒ Π΄Π°Π½Π½Ρ‹Ρ… ΠΈ ΠΏΠΎΠ΄Π½ΡΡ‚ΡŒ процСсс, ΠΎΠ±ΡΠ»ΡƒΠΆΠΈΠ²Π°ΡŽΡ‰ΠΈΠΉ эту Π±Π°Π·Ρƒ Π΄Π°Π½Π½Ρ‹Ρ… (Π΄ΠΈΠ½Π°ΠΌΠΈΡ‡Π΅ΡΠΊΡƒΡŽ Π½ΠΎΠ΄Ρƒ):
+Для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с Ρ‚Π°Π±Π»ΠΈΡ†Π°ΠΌΠΈ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ ΠΊΠ°ΠΊ ΠΌΠΈΠ½ΠΈΠΌΡƒΠΌ ΠΎΠ΄Π½Ρƒ Π±Π°Π·Ρƒ Π΄Π°Π½Π½Ρ‹Ρ… ΠΈ Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ процСсс ΠΈΠ»ΠΈ процСссы, ΠΎΠ±ΡΠ»ΡƒΠΆΠΈΠ²Π°ΡŽΡ‰ΠΈΠ΅ эту Π±Π°Π·Ρƒ Π΄Π°Π½Π½Ρ‹Ρ… (динамичСскиС ΡƒΠ·Π»Ρ‹).
-```bash
-LD_LIBRARY_PATH=/opt/ydb/lib /opt/ydb/bin/ydbd admin database /Root/testdb create ssd:1
-```
+Для выполнСния административной ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ создания Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ… потрСбуСтся Ρ„Π°ΠΉΠ» сСртификата Ρ†Π΅Π½Ρ‚Ρ€Π° рСгистрации `ca.crt`, Π°Π½Π°Π»ΠΎΠ³ΠΈΡ‡Π½ΠΎ описанному Π²Ρ‹ΡˆΠ΅ порядку выполнСния дСйствий ΠΏΠΎ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ кластСра.
-Если Π² кластСрС Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ Ρ€Π΅ΠΆΠΈΠΌ Π°ΡƒΡ‚Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ, Ρ‚ΠΎ Π² ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ создания Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ… Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‚ΡŒ Π°ΡƒΡ‚Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΎΠ½Π½Ρ‹ΠΉ Ρ‚ΠΎΠΊΠ΅Π½. ΠŸΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π° получСния Ρ‚ΠΎΠΊΠ΅Π½Π° описана Π² Ρ€Π°Π·Π΄Π΅Π»Π΅ ΠΏΠΎ [ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ кластСра](#initialize-cluster).
+ΠŸΡ€ΠΈ создании Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ… устанавливаСтся ΠΏΠ΅Ρ€Π²ΠΎΠ½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎΠ΅ количСство ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Ρ… Π³Ρ€ΡƒΠΏΠΏ хранСния, ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡŽΡ‰Π΅Π΅ Π΄ΠΎΡΡ‚ΡƒΠΏΠ½ΡƒΡŽ ΠΏΡ€ΠΎΠΏΡƒΡΠΊΠ½ΡƒΡŽ ΡΠΏΠΎΡΠΎΠ±Π½ΠΎΡΡ‚ΡŒ Π²Π²ΠΎΠ΄Π°-Π²Ρ‹Π²ΠΎΠ΄Π° ΠΈ ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡŒΠ½ΡƒΡŽ Π΅ΠΌΠΊΠΎΡΡ‚ΡŒ хранСния. ΠšΠΎΠ»ΠΈΡ‡Π΅ΡΡ‚Π²ΠΎ Π³Ρ€ΡƒΠΏΠΏ хранСния ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΏΡ€ΠΈ нСобходимости ΡƒΠ²Π΅Π»ΠΈΡ‡Π΅Π½ΠΎ послС создания Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ….
-Π’Π°Ρ€ΠΈΠ°Π½Ρ‚ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ создания Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ… с ΡƒΠΊΠ°Π·Π°Π½ΠΈΠ΅ΠΌ Ρ„Π°ΠΉΠ»Π° Ρ‚ΠΎΠΊΠ΅Π½Π°:
+ΠŸΠΎΡ€ΡΠ΄ΠΎΠΊ дСйствий ΠΏΠΎ созданию Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ… зависит ΠΎΡ‚ Ρ‚ΠΎΠ³ΠΎ, Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ Π»ΠΈ Π² ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΎΠ½Π½ΠΎΠΌ Ρ„Π°ΠΉΠ»Π΅ {{ ydb-short-name }} Ρ€Π΅ΠΆΠΈΠΌ Π°ΡƒΡ‚Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ.
-```bash
-LD_LIBRARY_PATH=/opt/ydb/lib /opt/ydb/bin/ydbd -f token-file admin database /Root/testdb create ssd:1
-```
+{% list tabs %}
+
+- АутСнтификация Π²ΠΊΠ»ΡŽΡ‡Π΅Π½Π°
+
+ НСобходимо ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ Π°ΡƒΡ‚Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΎΠ½Π½Ρ‹ΠΉ Ρ‚ΠΎΠΊΠ΅Π½. ΠœΠΎΠΆΠ΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ Ρ„Π°ΠΉΠ» с Ρ‚ΠΎΠΊΠ΅Π½ΠΎΠΌ Π°ΡƒΡ‚Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ, ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π½Ρ‹ΠΉ ΠΏΡ€ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ [ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ кластСра](#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` Ρ„Π°ΠΉΠ»Π° ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ.
+* `ssd:1` - имя ΠΏΡƒΠ»Π° хранСния ΠΈ количСство выдСляСмых Π³Ρ€ΡƒΠΏΠΏ хранСния. Имя ΠΏΡƒΠ»Π° ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚ Ρ‚ΠΈΠΏ устройств хранСния Π΄Π°Π½Π½Ρ‹Ρ… ΠΈ Π΄ΠΎΠ»ΠΆΠ½ΠΎ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ настройкС `storage_pool_types`.`kind` Π²Π½ΡƒΡ‚Ρ€ΠΈ элСмСнта `domains_config`.`domain` Ρ„Π°ΠΉΠ»Π° ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ.
-## ЗапуститС Π΄ΠΈΠ½Π°ΠΌΠΈΡ‡Π΅ΡΠΊΡƒΡŽ Π½ΠΎΠ΄Ρƒ Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ… {#start-dynnode}
+## ЗапуститС динамичСскиС ΡƒΠ·Π»Ρ‹ {#start-dynnode}
{% list tabs %}
- Π’Ρ€ΡƒΡ‡Π½ΡƒΡŽ
- ЗапуститС Π΄ΠΈΠ½Π°ΠΌΠΈΡ‡Π΅ΡΠΊΡƒΡŽ Π½ΠΎΠ΄Ρƒ {{ ydb-short-name }} для Π±Π°Π·Ρ‹ /Root/testdb:
+ ЗапуститС динамичСский ΡƒΠ·Π΅Π» {{ ydb-short-name }} для Π±Π°Π·Ρ‹ `/Root/testdb`:
```bash
sudo su - ydb
cd /opt/ydb
export LD_LIBRARY_PATH=/opt/ydb/lib
- /opt/ydb/bin/ydbd server --grpc-port 2136 --ic-port 19002 --mon-port 8766 --yaml-config /opt/ydb/cfg/config.yaml \
- --tenant /Root/testdb --node-broker <node1.ydb.tech>:2135 --node-broker <node2.ydb.tech>:2135 --node-broker <node3.ydb.tech>:2135
+ /opt/ydb/bin/ydbd server --grpcs-port 2136 --ic-port 19002 \
+ --mon-port 8766 --mon-cert /opt/ydb/certs/web.pem --ca /opt/ydb/certs/ca.crt \
+ --yaml-config /opt/ydb/cfg/config.yaml --tenant /Root/testdb \
+ --node-broker grpcs://<ydb1>:2135 \
+ --node-broker grpcs://<ydb2>:2135 \
+ --node-broker grpcs://<ydb3>:2135
```
- Π“Π΄Π΅ `<nodeN.ydb.tech>` - FQDN сСрвСров, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Π·Π°ΠΏΡƒΡ‰Π΅Π½Ρ‹ статичСскиС Π½ΠΎΠ΄Ρ‹.
-
- ЗапуститС Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ Π΄ΠΈΠ½Π½ΠΎΠ΄Ρ‹ Π½Π° Π΄Ρ€ΡƒΠ³ΠΈΡ… сСрвСрах для обСспСчСния доступности Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ….
+ Π’ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ Π²Ρ‹ΡˆΠ΅ `<ydbN>` - FQDN Ρ‚Ρ€Π΅Ρ… Π»ΡŽΠ±Ρ‹Ρ… сСрвСров, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Π·Π°ΠΏΡƒΡ‰Π΅Π½Ρ‹ статичСскиС ΡƒΠ·Π»Ρ‹ кластСра.
- Б использованиСм systemd
- 1. Π‘ΠΎΠ·Π΄Π°ΠΉΡ‚Π΅ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΎΠ½Π½Ρ‹ΠΉ Ρ„Π°ΠΉΠ» `/etc/systemd/system/ydbd-testdb.service` со ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ содСрТимым:
+ Π‘ΠΎΠ·Π΄Π°ΠΉΡ‚Π΅ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΎΠ½Π½Ρ‹ΠΉ Ρ„Π°ΠΉΠ» systemd `/etc/systemd/system/ydbd-testdb.service` ΠΏΠΎ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΌΡƒ Π½ΠΈΠΆΠ΅ ΠΎΠ±Ρ€Π°Π·Ρ†Ρƒ. ΠžΠ±Ρ€Π°Π·Π΅Ρ† Ρ„Π°ΠΉΠ»Π° Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ½ΠΎ [ΡΠΊΠ°Ρ‡Π°Ρ‚ΡŒ ΠΈΠ· рСпозитория](https://github.com/ydb-platform/ydb/blob/main/ydb/deploy/systemd_services/ydbd-testdb.service).
```text
[Unit]
@@ -436,7 +368,12 @@ LD_LIBRARY_PATH=/opt/ydb/lib /opt/ydb/bin/ydbd -f token-file admin database /Roo
SyslogFacility=daemon
SyslogLevel=err
Environment=LD_LIBRARY_PATH=/opt/ydb/lib
- ExecStart=/opt/ydb/bin/ydbd server --grpc-port 2136 --ic-port 19002 --mon-port 8766 --yaml-config /opt/ydb/cfg/config.yaml --tenant /Root/testdb --node-broker <node1.ydb.tech>:2135 --node-broker <node2.ydb.tech>:2135 --node-broker <node3.ydb.tech>:2135
+ ExecStart=/opt/ydb/bin/ydbd server --grpcs-port 2136 --ic-port 19002 \
+ --mon-port 8766 --mon-cert /opt/ydb/certs/web.pem --ca /opt/ydb/certs/ca.crt \
+ --yaml-config /opt/ydb/cfg/config.yaml --tenant /Root/testdb \
+ --node-broker grpcs://<ydb1>:2135 \
+ --node-broker grpcs://<ydb2>:2135 \
+ --node-broker grpcs://<ydb3>:2135
LimitNOFILE=65536
LimitCORE=0
LimitMEMLOCK=32212254720
@@ -445,18 +382,18 @@ LD_LIBRARY_PATH=/opt/ydb/lib /opt/ydb/bin/ydbd -f token-file admin database /Roo
WantedBy=multi-user.target
```
- Π“Π΄Π΅ `<nodeN.ydb.tech>` - FQDN сСрвСров, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Π·Π°ΠΏΡƒΡ‰Π΅Π½Ρ‹ статичСскиС Π½ΠΎΠ΄Ρ‹.
+ Π’ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ Ρ„Π°ΠΉΠ»Π° Π²Ρ‹ΡˆΠ΅ `<ydbN>` - FQDN Ρ‚Ρ€Π΅Ρ… Π»ΡŽΠ±Ρ‹Ρ… сСрвСров, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Π·Π°ΠΏΡƒΡ‰Π΅Π½Ρ‹ статичСскиС ΡƒΠ·Π»Ρ‹ кластСра.
- 1. ЗапуститС Π΄ΠΈΠ½Π°ΠΌΠΈΡ‡Π΅ΡΠΊΡƒΡŽ Π½ΠΎΠ΄Ρƒ {{ ydb-short-name }} для Π±Π°Π·Ρ‹ /Root/testdb:
+ ЗапуститС динамичСский ΡƒΠ·Π΅Π» {{ ydb-short-name }} для Π±Π°Π·Ρ‹ `/Root/testdb`:
```bash
sudo systemctl start ydbd-testdb
```
- 1. ЗапуститС Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ Π΄ΠΈΠ½Π½ΠΎΠ΄Ρ‹ Π½Π° Π΄Ρ€ΡƒΠ³ΠΈΡ… сСрвСрах для обСспСчСния доступности Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ….
-
{% endlist %}
+ЗапуститС Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ динамичСскиС ΡƒΠ·Π»Ρ‹ Π½Π° Π΄Ρ€ΡƒΠ³ΠΈΡ… сСрвСрах для ΠΌΠ°ΡΡˆΡ‚Π°Π±ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡ ΠΈ обСспСчСния отказоустойчивости Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ….
+
## ΠŸΠ΅Ρ€Π²ΠΎΠ½Π°Ρ‡Π°Π»ΡŒΠ½Π°Ρ настройка ΡƒΡ‡Π΅Ρ‚Π½Ρ‹Ρ… записСй {#security-setup}
Если Π² Ρ„Π°ΠΉΠ»Π΅ настроСк кластСра Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ Ρ€Π΅ΠΆΠΈΠΌ Π°ΡƒΡ‚Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ, Ρ‚ΠΎ ΠΏΠ΅Ρ€Π΅Π΄ Π½Π°Ρ‡Π°Π»ΠΎΠΌ Ρ€Π°Π±ΠΎΡ‚Ρ‹ с кластСром {{ ydb-short-name }} Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ ΠΏΠ΅Ρ€Π²ΠΎΠ½Π°Ρ‡Π°Π»ΡŒΠ½ΡƒΡŽ настройку ΡƒΡ‡Π΅Ρ‚Π½Ρ‹Ρ… записСй.
@@ -470,7 +407,7 @@ LD_LIBRARY_PATH=/opt/ydb/lib /opt/ydb/bin/ydbd -f token-file admin database /Roo
1. Π’Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚Π΅ установку пароля ΡƒΡ‡Π΅Ρ‚Π½ΠΎΠΉ записи `root`:
```bash
- ydb -e grpc://<node.ydb.tech>:2136 -d /Root/testdb --user root --no-password \
+ ydb --ca-file ca.crt -e grpcs://<node.ydb.tech>:2136 -d /Root/testdb --user root --no-password \
yql -s 'ALTER USER root PASSWORD "passw0rd"'
```
@@ -479,23 +416,21 @@ LD_LIBRARY_PATH=/opt/ydb/lib /opt/ydb/bin/ydbd -f token-file admin database /Roo
1. Π‘ΠΎΠ·Π΄Π°ΠΉΡ‚Π΅ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ ΡƒΡ‡Π΅Ρ‚Π½Ρ‹Π΅ записи:
```bash
- ydb -e grpc://<node.ydb.tech>:2136 -d /Root/testdb --user root \
+ ydb --ca-file ca.crt -e grpcs://<node.ydb.tech>:2136 -d /Root/testdb --user root \
yql -s 'CREATE USER user1 PASSWORD "passw0rd"'
```
1. УстановитС ΠΏΡ€Π°Π²Π° ΡƒΡ‡Π΅Ρ‚Π½Ρ‹Ρ… записСй, Π²ΠΊΠ»ΡŽΡ‡ΠΈΠ² ΠΈΡ… Π²ΠΎ встроСнныС Π³Ρ€ΡƒΠΏΠΏΡ‹:
```bash
- ydb -e grpc://<node.ydb.tech>:2136 -d /Root/testdb --user root \
+ ydb --ca-file ca.crt -e grpcs://<node.ydb.tech>:2136 -d /Root/testdb --user root \
yql -s 'ALTER GROUP `ADMINS` ADD USER user1'
```
-Π’ пСрСчислСнных Π²Ρ‹ΡˆΠ΅ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°Ρ… ΠΊΠΎΠΌΠ°Π½Π΄ `<node.ydb.tech>` - FQDN сСрвСра, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ Π·Π°ΠΏΡƒΡ‰Π΅Π½Π° динамичСская Π½ΠΎΠ΄Π°, ΠΎΠ±ΡΠ»ΡƒΠΆΠΈΠ²Π°ΡŽΡ‰Π°Ρ Π±Π°Π·Ρƒ `/Root/testdb`.
+Π’ пСрСчислСнных Π²Ρ‹ΡˆΠ΅ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°Ρ… ΠΊΠΎΠΌΠ°Π½Π΄ `<node.ydb.tech>` - FQDN сСрвСра, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ Π·Π°ΠΏΡƒΡ‰Π΅Π½ любой динамичСский ΡƒΠ·Π΅Π», ΠΎΠ±ΡΠ»ΡƒΠΆΠΈΠ²Π°ΡŽΡ‰ΠΈΠΉ Π±Π°Π·Ρƒ `/Root/testdb`.
ΠŸΡ€ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ ΠΊΠΎΠΌΠ°Π½Π΄ создания ΡƒΡ‡Π΅Ρ‚Π½Ρ‹Ρ… записСй ΠΈ присвоСния Π³Ρ€ΡƒΠΏΠΏ ΠΊΠ»ΠΈΠ΅Π½Ρ‚ {{ ydb-short-name }} CLI Π±ΡƒΠ΄Π΅Ρ‚ Π·Π°ΠΏΡ€Π°ΡˆΠΈΠ²Π°Ρ‚ΡŒ Π²Π²ΠΎΠ΄ пароля ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ `root`. Π˜Π·Π±Π΅ΠΆΠ°Ρ‚ΡŒ ΠΌΠ½ΠΎΠ³ΠΎΠΊΡ€Π°Ρ‚Π½ΠΎΠ³ΠΎ Π²Π²ΠΎΠ΄Π° пароля ΠΌΠΎΠΆΠ½ΠΎ, создав ΠΏΡ€ΠΎΡ„ΠΈΠ»ΡŒ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ, ΠΊΠ°ΠΊ описано Π² [Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ {{ ydb-short-name }} CLI](../../reference/ydb-cli/profile/index.md).
-Если Π² кластСрС Π±Ρ‹Π»Π° Π²ΠΊΠ»ΡŽΡ‡Π΅Π½Π° Π·Π°Ρ‰ΠΈΡ‚Π° Ρ‚Ρ€Π°Ρ„ΠΈΠΊΠ° с использованиСм TLS, Ρ‚ΠΎ вмСсто ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»Π° `grpc` Π² ΠΊΠΎΠΌΠ°Π½Π΄Π΅ Π²Ρ‹ΡˆΠ΅ слСдуСт ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π΅Π³ΠΎ Π·Π°Ρ‰ΠΈΡ‰Π΅Π½Π½Ρ‹ΠΉ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ `grpcs`, ΠΈ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ ΠΏΡƒΡ‚ΡŒ ΠΊ Ρ„Π°ΠΉΠ»Ρƒ с сСртификатом CA Π² ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π΅ `--ca-file` (Π»ΠΈΠ±ΠΎ ΡΠΎΡ…Ρ€Π°Π½ΠΈΡ‚ΡŒ Π² ΠΏΡ€ΠΎΡ„ΠΈΠ»Π΅ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ).
-
## ΠŸΡ€ΠΎΡ‚Π΅ΡΡ‚ΠΈΡ€ΡƒΠΉΡ‚Π΅ Ρ€Π°Π±ΠΎΡ‚Ρƒ с созданной Π±Π°Π·ΠΎΠΉ {#try-first-db}
1. УстановитС {{ ydb-short-name }} CLI, ΠΊΠ°ΠΊ описано Π² [Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ](../../reference/ydb-cli/install.md).
@@ -503,15 +438,64 @@ LD_LIBRARY_PATH=/opt/ydb/lib /opt/ydb/bin/ydbd -f token-file admin database /Roo
1. Π‘ΠΎΠ·Π΄Π°ΠΉΡ‚Π΅ Ρ‚Π΅ΡΡ‚ΠΎΠ²ΡƒΡŽ Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ `test_table`:
```bash
- ydb -e grpc://<node.ydb.tech>:2136 -d /Root/testdb scripting yql \
- --script 'CREATE TABLE `testdir/test_table` (id Uint64, title Utf8, PRIMARY KEY (id));'
+ ydb --ca-file ca.crt -e grpcs://<node.ydb.tech>:2136 -d /Root/testdb --user root \
+ yql -s 'CREATE TABLE `testdir/test_table` (id Uint64, title Utf8, PRIMARY KEY (id));'
```
- Π“Π΄Π΅ `<node.ydb.tech>` - FQDN сСрвСра, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ Π·Π°ΠΏΡƒΡ‰Π΅Π½Π° динамичСская Π½ΠΎΠ΄Π°, ΠΎΠ±ΡΠ»ΡƒΠΆΠΈΠ²Π°ΡŽΡ‰Π°Ρ Π±Π°Π·Ρƒ `/Root/testdb`.
+ Π“Π΄Π΅ `<node.ydb.tech>` - FQDN сСрвСра, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ Π·Π°ΠΏΡƒΡ‰Π΅Π½ динамичСский ΡƒΠ·Π΅Π», ΠΎΠ±ΡΠ»ΡƒΠΆΠΈΠ²Π°ΡŽΡ‰ΠΈΠΉ Π±Π°Π·Ρƒ `/Root/testdb`.
- Π£ΠΊΠ°Π·Π°Π½Π½ΡƒΡŽ Π²Ρ‹ΡˆΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π±ΡƒΠ΄Π΅Ρ‚ ΡΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ, Ссли Π² кластСрС Π²ΠΊΠ»ΡŽΡ‡Π΅Π½Π° Π·Π°Ρ‰ΠΈΡ‚Π° Ρ‚Ρ€Π°Ρ„ΠΈΠΊΠ° с использованиСм TLS ΠΈΠ»ΠΈ Π°ΠΊΡ‚ΠΈΠ²ΠΈΡ€ΠΎΠ²Π°Π½ Ρ€Π΅ΠΆΠΈΠΌ Π°ΡƒΡ‚Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ. ΠŸΡ€ΠΈΠΌΠ΅Ρ€:
+## ΠŸΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° доступа ΠΊΠΎ встроСнному web-интСрфСйсу
- ```bash
- ydb -e grpcs://<node.ydb.tech>:2136 -d /Root/testdb --ca-file ydb-ca.crt --user root scripting yql \
- --script 'CREATE TABLE `testdir/test_table` (id Uint64, title Utf8, PRIMARY KEY (id));'
- ```
+Для ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ доступа ΠΊΠΎ встроСнному web-интСрфСйсу {{ ydb-short-name }} достаточно ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΡŒ Π² Web-Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Π΅ страницу с адрСсом `https://<node.ydb.tech>:8765`, Π³Π΄Π΅ `<node.ydb.tech>` - FQDN сСрвСра, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ Π·Π°ΠΏΡƒΡ‰Π΅Π½ любой статичСский ΡƒΠ·Π΅Π» {{ ydb-short-name }}.
+
+Π’ Web-Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Π΅ Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±Ρ‹Ρ‚ΡŒ настроСно Π΄ΠΎΠ²Π΅Ρ€ΠΈΠ΅ Π² ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΠΈ Ρ†Π΅Π½Ρ‚Ρ€Π° рСгистрации, Π²Ρ‹ΠΏΡƒΡΡ‚ΠΈΠ²ΡˆΠ΅Π³ΠΎ сСртификаты для кластСра {{ ydb-short-name }}, Π² ΠΏΡ€ΠΎΡ‚ΠΈΠ²Π½ΠΎΠΌ случаС Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΎ ΠΏΡ€Π΅Π΄ΡƒΠΏΡ€Π΅ΠΆΠ΄Π΅Π½ΠΈΠ΅ ΠΎΠ± использовании Π½Π΅Π΄ΠΎΠ²Π΅Ρ€Π΅Π½Π½ΠΎΠ³ΠΎ сСртификата.
+
+Если Π² кластСрС Π²ΠΊΠ»ΡŽΡ‡Π΅Π½Π° аутСнтификация, Π² Web-Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Π΅ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΎΡ‚ΠΎΠ±Ρ€Π°Π·ΠΈΡ‚ΡŒΡΡ запрос Π»ΠΎΠ³ΠΈΠ½Π° ΠΈ пароля. ПослС Π²Π²ΠΎΠ΄Π° Π²Π΅Ρ€Π½Ρ‹Ρ… Π΄Π°Π½Π½Ρ‹Ρ… Π°ΡƒΡ‚Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ Π΄ΠΎΠ»ΠΆΠ½Π° ΠΎΡ‚ΠΎΠ±Ρ€Π°Π·ΠΈΡ‚ΡŒΡΡ Π½Π°Ρ‡Π°Π»ΡŒΠ½Π°Ρ страница встроСнного web-интСрфСйса. ОписаниС доступных Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ ΠΈ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΎΠ³ΠΎ интСрфСйса ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½ΠΎ Π² Ρ€Π°Π·Π΄Π΅Π»Π΅ [{#T}](../../maintenance/embedded_monitoring/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, ΠΈ Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ аутСнтификация.