From b30dc2ae02cfd30b78d87bfa27ff0432b55ea9a8 Mon Sep 17 00:00:00 2001 From: Pavel Pogodaev Date: Tue, 5 Nov 2024 14:26:32 +0300 Subject: [PATCH] [#48] Add S3 Lifecycler Signed-off-by: Pavel Pogodaev --- Dockerfile | 4 +++ Dockerfile.custom | 4 +++ Dockerfile.local | 2 ++ README.md | 2 ++ bin/init-aio.sh | 1 + s3-lifecycler/s3-lc-config.yaml | 61 +++++++++++++++++++++++++++++++++ 6 files changed, 74 insertions(+) create mode 100644 s3-lifecycler/s3-lc-config.yaml diff --git a/Dockerfile b/Dockerfile index a0b1a38..0a34b1b 100644 --- a/Dockerfile +++ b/Dockerfile @@ -5,6 +5,7 @@ ARG NEOGO_HUB_IMAGE=nspccdev/neo-go ARG FROSTFS_CORE_TAG=0.44.0-rc.7 ARG FROSTFS_HTTP_GATE_TAG=0.31.0-rc.4 ARG FROSTFS_S3_GATE_TAG=0.31.0-rc.4 +ARG FROSTFS_S3_LIFECYCLER_TAG=0.1.3 ARG NEOGO_TAG=0.106.0 FROM ${NEOGO_HUB_IMAGE}:${NEOGO_TAG} AS neo-go @@ -14,6 +15,7 @@ FROM ${FROSTFS_FORGEJO_IMAGE}-ir:${FROSTFS_CORE_TAG} AS frostfs-ir FROM ${FROSTFS_FORGEJO_IMAGE}-storage:${FROSTFS_CORE_TAG} AS frostfs-storage FROM ${FROSTFS_HUB_IMAGE}-s3-gw:${FROSTFS_S3_GATE_TAG} AS frostfs-s3-gw FROM ${FROSTFS_HUB_IMAGE}-http-gw:${FROSTFS_HTTP_GATE_TAG} AS frostfs-http-gw +FROM ${FROSTFS_HUB_IMAGE}-s3-lifecycler:${FROSTFS_S3_LIFECYCLER_TAG} AS frostfs-s3-lifecycler # Executable image FROM alpine AS frostfs-aio @@ -35,6 +37,7 @@ COPY --from=frostfs-storage /bin/frostfs-node /usr/bin/frostfs-node COPY --from=frostfs-s3-gw /bin/frostfs-s3-gw /usr/bin/frostfs-s3-gw COPY --from=frostfs-s3-gw /bin/frostfs-s3-authmate /usr/bin/frostfs-s3-authmate COPY --from=frostfs-http-gw /bin/frostfs-http-gw /usr/bin/frostfs-http-gw +COPY --from=frostfs-s3-lifecycler /bin/frostfs-s3-lifecycler /usr/bin/frostfs-s3-lifecycler COPY ./adm/frostfs-adm.yml /config/frostfs-adm.yml COPY ./ir/cli-cfg.yaml /config/cli-cfg-ir.yaml @@ -46,6 +49,7 @@ COPY ./morph/node-wallet.json /config/node-wallet.json COPY ./morph/node-config.yaml /config/node-config.yaml COPY ./http-gw/http-gw-config.yaml /config/http-gw-config.yaml COPY ./http-gw/http-gw-wallet.json /config/http-gw-wallet.json +COPY ./s3-lifecycler/s3-lc-config.yaml /config/s3-lc-config.yaml COPY ./s3-gw/rules.json /config/bearer-rules.json COPY ./s3-gw/regions.json /config/regions.json COPY ./s3-gw/s3-gw-config.yaml /config/s3-gw-config.yaml diff --git a/Dockerfile.custom b/Dockerfile.custom index 18768ed..a23f0e4 100644 --- a/Dockerfile.custom +++ b/Dockerfile.custom @@ -5,6 +5,7 @@ ARG NEOGO_HUB_IMAGE=nspccdev/neo-go ARG FROSTFS_CORE_TAG=0.44.0-rc.7 ARG FROSTFS_HTTP_GATE_TAG=0.31.0-rc.4 ARG FROSTFS_S3_GATE_TAG=0.31.0-rc.4 +ARG FROSTFS_S3_LIFECYCLER_TAG=0.1.3 ARG NEOGO_TAG=0.106.0 FROM ${NEOGO_HUB_IMAGE}:${NEOGO_TAG} AS neo-go @@ -13,6 +14,7 @@ FROM ${FROSTFS_FORGEJO_IMAGE}-cli:${FROSTFS_CORE_TAG} AS frostfs-cli FROM ${FROSTFS_FORGEJO_IMAGE}-ir:${FROSTFS_CORE_TAG} AS frostfs-ir FROM ${FROSTFS_FORGEJO_IMAGE}-storage:${FROSTFS_CORE_TAG} AS frostfs-storage FROM ${FROSTFS_HUB_IMAGE}-s3-gw:${FROSTFS_S3_GATE_TAG} AS frostfs-s3-gw +FROM ${FROSTFS_HUB_IMAGE}-s3-lifecycler:${FROSTFS_S3_LIFECYCLER_TAG} AS frostfs-s3-lifecycler FROM ${FROSTFS_HUB_IMAGE}-http-gw:${FROSTFS_HTTP_GATE_TAG} AS frostfs-http-gw # Executable image @@ -33,6 +35,7 @@ COPY --from=frostfs-cli /bin/frostfs-cli /usr/bin/frostfs-cli COPY --from=frostfs-ir /bin/frostfs-ir /usr/bin/frostfs-ir COPY --from=frostfs-storage /bin/frostfs-node /usr/bin/frostfs-node COPY --from=frostfs-s3-gw /bin/frostfs-s3-gw /usr/bin/frostfs-s3-gw +COPY --from=frostfs-s3-lifecycler /bin/frostfs-s3-lifecycler /usr/bin/frostfs-s3-lifecycler COPY --from=frostfs-s3-gw /bin/frostfs-s3-authmate /usr/bin/frostfs-s3-authmate COPY --from=frostfs-http-gw /bin/frostfs-http-gw /usr/bin/frostfs-http-gw @@ -51,6 +54,7 @@ COPY ./s3-gw/regions.json /config/regions.json COPY ./s3-gw/s3-gw-config.yaml /config/s3-gw-config.yaml COPY ./s3-gw/s3-gw-wallet.json /config/s3-gw-wallet.json COPY ./s3-gw/user-wallet.json /config/user-wallet.json +COPY ./s3-lifecycler/s3-lc-config.yaml /config/s3-lc-config.yaml COPY ./sn/cli-cfg.yaml /config/cli-cfg-sn.yaml COPY ./sn/wallet.json /config/wallet-sn.json COPY ./sn/config.yaml /config/config-sn.yaml diff --git a/Dockerfile.local b/Dockerfile.local index a463d30..ea6f969 100644 --- a/Dockerfile.local +++ b/Dockerfile.local @@ -19,6 +19,7 @@ COPY ./bin/frostfs-s3-gw /usr/bin/frostfs-s3-gw COPY ./bin/frostfs-s3-authmate /usr/bin/frostfs-s3-authmate COPY ./bin/frostfs-http-gw /usr/bin/frostfs-http-gw COPY ./bin/issue-creds.sh /usr/bin/issue-creds.sh +COPY ./bin/frostfs-s3-lifecycler /usr/bin/frostfs-s3-lifecycler COPY ./adm/frostfs-adm.yml /config/frostfs-adm.yml COPY ./ir/cli-cfg.yaml /config/cli-cfg-ir.yaml @@ -35,6 +36,7 @@ COPY ./s3-gw/regions.json /config/regions.json COPY ./s3-gw/s3-gw-config.yaml /config/s3-gw-config.yaml COPY ./s3-gw/s3-gw-wallet.json /config/s3-gw-wallet.json COPY ./s3-gw/user-wallet.json /config/user-wallet.json +COPY ./s3-lifecycler/s3-lc-config.yaml /config/s3-lc-config.yaml COPY ./sn/cli-cfg.yaml /config/cli-cfg-sn.yaml COPY ./sn/wallet.json /config/wallet-sn.json COPY ./sn/config.yaml /config/config-sn.yaml diff --git a/README.md b/README.md index 25be80c..4dd70ca 100644 --- a/README.md +++ b/README.md @@ -11,6 +11,7 @@ files for: - frostfs-s3-gw - frostfs-s3-authmate - frostfs-http-gw +- frostfs-s3-lifecycler Entrypoint script starts blockchain, inner ring, storage, s3, and http gateway services and configures it in the initial start. @@ -117,6 +118,7 @@ Put all the needed pre-built binaries to the `frostfs-aio/bin/`: - frostfs-s3-gw - frostfs-s3-authmate - frostfs-http-gw +- frostfs-s3-lifecycler Make sure they all have the `x` right for the execution enabled. Build frostfs-aio image using pre-built local binaries for all the services. diff --git a/bin/init-aio.sh b/bin/init-aio.sh index b9e66b2..6716bcf 100755 --- a/bin/init-aio.sh +++ b/bin/init-aio.sh @@ -66,6 +66,7 @@ runServices() { done /usr/bin/frostfs-s3-gw --config /config/s3-gw-config.yaml |& tee -a ${LOG_DIR}/frostfs-s3-gw & + /usr/bin/frostfs-s3-lifecycler --config /config/s3-lc-config.yaml |& tee -a ${LOG_DIR}/frostfs-s3-lifecycler & /usr/bin/frostfs-http-gw --config /config/http-gw-config.yaml |& tee -a ${LOG_DIR}/frostfs-http-gw & } diff --git a/s3-lifecycler/s3-lc-config.yaml b/s3-lifecycler/s3-lc-config.yaml new file mode 100644 index 0000000..94ff691 --- /dev/null +++ b/s3-lifecycler/s3-lc-config.yaml @@ -0,0 +1,61 @@ +# Wallet address, path to the wallet must be set as cli parameter or environment variable +wallet: + path: /wallets/wallet1.json # Path to wallet + address: NhCHDEtGgSph1v6PmjFC1gtzJWNKtNSadk # Account address. If omitted default one will be used. + passphrase: "" # Passphrase to decrypt wallet. If you're using a wallet without a password, place '' here. + +logger: + level: debug # Log level. + destination: stdout # Logging destination. + sampling: + enabled: false + initial: 100 + thereafter: 100 + interval: 1s + +morph: + rpc_endpoint: + - address: ws://localhost:30333/ws + priority: 1 + reconnect_clients_interval: 30s + dial_timeout: 5s + contract: + netmap: netmap.frostfs + frostfsid: frostfsid.frostfs + container: container.frostfs + +credential: + use: wallets + source: + wallets: + - path: /wallets/wallet1.json + address: NhCHDEtGgSph1v6PmjFC1gtzJWNKtNSadk + passphrase: "" + - path: /wallets/wallet2.json + address: NivQRezLwGP8xFPr87DD5XaYGUKK3BMsTa + passphrase: "" + - path: /wallets/wallet3.json + address: NR8qvrREk1eCeQJce9zBaDyPE3PHGZfT6t + passphrase: "" + - path: /config/user-wallet.json + address: NWeByJPgNC97F83hTUnSbnZSBKaFvk5HNw + passphrase: "" + + +lifecycle: + job_fetcher_buffer: 1000 + executor_pool_size: 100 + +frostfs: + stream_timeout: 10s + connect_timeout: 10s + healthcheck_timeout: 15s + rebalance_interval: 60s + pool_error_threshold: 100 + tree_pool_max_attempts: 4 + + peers: + 0: + address: localhost:8080 + priority: 1 + weight: 1