From 1e18b2cbd3a7a59c325f4f8407680e7a25e9b967 Mon Sep 17 00:00:00 2001 From: Denozordec Date: Wed, 11 Mar 2026 14:47:38 +0700 Subject: [PATCH] Update SYNC_SETUP.md to include `gt2.ivx.su` as an additional replica for `config.toml` synchronization, enhancing the setup instructions for multiple read-only replicas. --- SYNC_SETUP.md | 42 +++++++++++++++++++++++++++++++++++++----- 1 file changed, 37 insertions(+), 5 deletions(-) diff --git a/SYNC_SETUP.md b/SYNC_SETUP.md index 30b5d1b..38cef66 100644 --- a/SYNC_SETUP.md +++ b/SYNC_SETUP.md @@ -1,10 +1,10 @@ -# Синхронизация `config.toml` между `mtg.ivx.su` и `gt1.ivx.su` +# Синхронизация `config.toml` между `mtg.ivx.su`, `gt1.ivx.su` и `gt2.ivx.su` Целевая схема: - **A (primary, запись):** `mtg.ivx.su` -- **B (replica, только чтение):** `gt1.ivx.su` +- **B (replica, только чтение):** `gt1.ivx.su`, `gt2.ivx.su` -Изменения вносятся только на A (через API/бот), затем автоматически синхронизируются на B. +Изменения вносятся только на A (через API/бот), затем автоматически синхронизируются на оба B. ## 1) Подготовка `telemt-data` на обоих серверах @@ -58,7 +58,7 @@ enabled = true read_only = false ``` -### B (`gt1.ivx.su`) +### B (`gt1.ivx.su`, `gt2.ivx.su`) ```toml [server.api] @@ -73,7 +73,9 @@ read_only = true ```bash ssh-keygen -t ed25519 -N "" -f ~/.ssh/telemt_sync ssh-copy-id -i ~/.ssh/telemt_sync.pub root@gt1.ivx.su +ssh-copy-id -i ~/.ssh/telemt_sync.pub root@gt2.ivx.su ssh -i ~/.ssh/telemt_sync root@gt1.ivx.su "echo ok" +ssh -i ~/.ssh/telemt_sync root@gt2.ivx.su "echo ok" ``` ## 5) Установка `lsyncd` на A (`mtg.ivx.su`) @@ -92,6 +94,7 @@ settings { nodaemon = false, } +-- B1: gt1.ivx.su sync { default.rsyncssh, source = "/opt/telemt-plus/telemt-data/", @@ -110,6 +113,26 @@ sync { } } } + +-- B2: gt2.ivx.su +sync { + default.rsyncssh, + source = "/opt/telemt-plus/telemt-data/", + host = "root@gt2.ivx.su", + targetdir = "/opt/telemt-plus/telemt-data/", + delay = 1, + exclude = { "cache/" }, + rsync = { + archive = true, + compress = true, + _extra = { + "--delete", + "--chown=999:999", + "--chmod=Du=rwx,Dg=rx,Do=,Fu=rw,Fg=r,Fo=", + "-e", "ssh -i /root/.ssh/telemt_sync -o StrictHostKeyChecking=accept-new" + } + } +} ``` ## 6) Первичная синхронизация (один раз) @@ -117,12 +140,21 @@ sync { На `mtg.ivx.su`: ```bash +# B1: gt1.ivx.su rsync -az --delete \ --chown=999:999 \ --chmod=Du=rwx,Dg=rx,Do=,Fu=rw,Fg=r,Fo= \ -e "ssh -i /root/.ssh/telemt_sync -o StrictHostKeyChecking=accept-new" \ /opt/telemt-plus/telemt-data/ \ root@gt1.ivx.su:/opt/telemt-plus/telemt-data/ + +# B2: gt2.ivx.su +rsync -az --delete \ + --chown=999:999 \ + --chmod=Du=rwx,Dg=rx,Do=,Fu=rw,Fg=r,Fo= \ + -e "ssh -i /root/.ssh/telemt_sync -o StrictHostKeyChecking=accept-new" \ + /opt/telemt-plus/telemt-data/ \ + root@gt2.ivx.su:/opt/telemt-plus/telemt-data/ ``` ## 7) Запуск `lsyncd` @@ -163,4 +195,4 @@ curl -s http://127.0.0.1:9091/v1/health - Мутации (`POST/PATCH/DELETE`) делать только на A (`mtg.ivx.su`). - Бота направлять на API A. -- B (`gt1.ivx.su`) держать как реплику только для чтения. +- B (`gt1.ivx.su`, `gt2.ivx.su`) держать как реплики только для чтения.