Еуропадағы Redis үшін бұлт сервері: ЕО ішінде төмен кешігумен баптау
Redis - базаңыздың алдында тұратын, оқу трафигін өзіне алатын және жауап беру уақытын миллисекундтан микросекундқа дейін төмендететін жадтағы деректер қоймасы. Егер қосымшаңыз еуропалық пайдаланушыларға қызмет көрсетсе, Redis-ті ЕО бұлт серверінде іске қосу - өнімділік таңдауы ғана емес: ол сеанс деректерін, пайдаланушы токендерін және кештелген дербес мәліметті GDPR талап ететіндей ЕО юрисдикциясында ұстайды.
Бұл нұсқаулық Redis-ке жақсы жұмыс істеу үшін не қажет, ЕО бұлт серверін қалай есептеу керек және іс жүзінде кешігудің қандай цифрларын күту керегін баяндайды.
Деректердің ЕО ішінде сақталуы Redis үшін неге маңызды
Redis әдетте сеанс токендерін, пайдаланушы баптауларын және кештелген API жауаптарын сақтайды - бұның бәрі GDPR бойынша дербес деректер болып саналуы мүмкін. Redis-ті ЕО компаниясындағы ЕО серверінде орналастыру осы деректердің АҚШ юрисдикциясынан ешқашан өтпейтініне кепілдік береді және қосымша беру тетіктерінің қажеттілігін алып тастайды.
Кеш үшін кешігу де аса маңызды. Прагадағы немесе Франкфурттегі Redis данасы сол дата-орталықтағы қосымша серверіне 0,1-0,5 мс айналым уақытын қосады. АҚШ өңіріндегі сол Redis 80-100 мс қосады, ал бұл еуропалық пайдаланушылар үшін кештеудің пайдасын толық жоққа шығаруға жетеді.
Redis үшін серверге қойылатын ең аз талаптар
Redis толығымен жадта жұмыс істейді, сондықтан RAM - негізгі ресурс. CPU мен диск сақталу және ығыстыру үшін ғана маңызды:
- Шағын (сеанс кеші, деректер жиыны 10 ГБ-тан аз) - 2 vCPU, 16 ГБ RAM, 50 ГБ NVMe SSD
- Орташа (бет немесе нысан кеші, деректер жиыны 10-50 ГБ) - 4 vCPU, 64 ГБ RAM, 100 ГБ NVMe SSD
- Ірі (негізгі қойма немесе масштабтағы pub/sub) - 8 vCPU, 128 ГБ RAM, 200 ГБ NVMe SSD
Әрқашан күтілетін деректер жиынының өлшемінен кемінде 20-25% көп RAM бөліңіз. Redis-ке репликация буферлеріне, клиент қосылымдарына және AOF қайта жазуындағы процесс тармақтарына қор керек. Жад пайдалануы 90% және одан жоғары болып жұмыс істеу агрессивті ығыстыруды іске қосып, өнімділікті құлатады.
Ұсынылатын DCXV конфигурациясы
DCXV бұлт серверлері жылдам AOF және RDB суреттеріне арналған NVMe қорымен, жад көлемі үлкен конфигурациялар ұсынады. DCXV-де Redis үшін практикалық продакшен сызбасы:
- 4 vCPU, 64 ГБ RAM, 100 ГБ NVMe - трафигі орташа SaaS қосымшасына продакшен кеші
- 8 vCPU, 128 ГБ RAM, 200 ГБ NVMe - өткізу қабілеті жоғары сеанс қоймасы немесе негізгі деректер құрылымдары
Барлық дана Tier III бойынша сертификатталған ЕО инфрақұрылымында жұмыс істейді. Қосымшаңыз мен Redis серверлерінің арасындағы жеке желі трафикті публичный интернеттен тыс ұстайды және айналым уақытын 0,5 мс-тен төмен қалдырады.
Жадқа қойылатын талаптарды талқылап, конфигурация бойынша ұсыныс алу үшін sales@dcxv.com адресіне жазыңыз.
Жылдам орнатуға арналған командалар
# Ubuntu 22.04-ке Redis 7 орнату
sudo apt update && sudo apt install -y redis-server
# Қызметті іске қосу және қосулы қалдыру
sudo systemctl start redis-server
sudo systemctl enable redis-server
# Жұмыс істеп тұрғанын тексеру
redis-cli ping
# Күтілетін шығыс: PONG
# 64 ГБ RAM серверіне redis.conf-тың негізгі параметрлері
# /etc/redis/redis.conf файлын түзетіңіз
# Тек жеке адреске байлау (Redis-ті публичный интернетке ешқашан ашпаңыз)
bind 127.0.0.1 10.0.0.5
# Жад шектеуі қолжетімді RAM-ның 80%
maxmemory 51gb
# Ығыстыру саясаты - сценарий бойынша таңдаңыз:
# allkeys-lru = кеш сценарийі (кез келген кілтті LRU бойынша ығыстыру)
# volatile-lru = сеанс қоймасы (тек TTL-і бар кілттерді ығыстыру)
maxmemory-policy allkeys-lru
# Сақталу - 100 және одан көп кілт өзгерсе, әр 5 минутта RDB суреті
save 300 100
# Сенімділікке AOF (таза кешке no, теңгерімге everysec)
appendonly yes
appendfsync everysec
# Transparent Huge Pages ескертуін өшіру (ОЖ деңгейінде де қойыңыз)
# /etc/rc.local файлына қосыңыз: echo never > /sys/kernel/mm/transparent_hugepage/enabled
sudo systemctl restart redis-server
# Пароль талап ету (продакшенде бұны әрқашан жасаңыз)
# redis.conf файлына қосыңыз:
# requirepass yourStrongPassword123
# Аутентификацияны тексеру
redis-cli -a yourStrongPassword123 ping
# TTL-мен кілт қою (сеанс мысалы)
redis-cli -a yourStrongPassword123 SET session:user:42 '{"uid":42,"role":"admin"}' EX 3600
# Жад пайдалануын тексеру
redis-cli -a yourStrongPassword123 INFO memory | grep used_memory_human
# Автоматты ауысуға Redis Sentinel баптау (3 түйіндік сызба)
# 3 DCXV серверінің бәріне орнатып, содан кейін /etc/redis/sentinel.conf жасаңыз:
port 26379
sentinel monitor mymaster 10.0.0.5 6379 2
sentinel auth-pass mymaster yourStrongPassword123
sentinel down-after-milliseconds mymaster 5000
sentinel failover-timeout mymaster 60000
sentinel parallel-syncs mymaster 1
# Sentinel-ді іске қосу
redis-sentinel /etc/redis/sentinel.conf --daemonize yes
Қандай сақталу режимін таңдау керек
Бұл шынымен өзіңіз қабылдайтын Redis шешімі, және ол дұрыс жауабы бір параметр емес, сенімділікті өткізу қабілетіне айырбастау:
| Режим | Іркілістен нені сақтап қалады | Жазу құны | Қашан таңдау керек |
|---|---|---|---|
| Сақталусыз | Ештеңені | Жоқ | Базадан қайта жинай алатын таза кеш |
| RDB суреттері | Соңғы суретке дейінгі бәрін | Әр сақтауда тармақтану шапшаңы | Жылы қайта жіберу маңызды, минуттарды жоғалту - маңызды емес |
| AOF, everysec | Соңғы секундтан басқа бәрін | 10-15% | Сеанстар, себеттер, пайдаланушы жоғалғанын байқайтын бәрі |
| AOF, always | Әр жазуды | 50% және одан көп | Дерлік ешқашан - оның орнына деректер базасын алыңыз |
| RDB пен AOF бірге | Соңғы секундтан басқа бәрін, және жылдам қайта жіберіледі | 10-15% | Кеш емес, негізгі қойма |
Кестенің сіз үшін айта алмайтын бір нәрсесі: AOF қайта жазуы процесті тармақтайды, ал тармаққа жад керек. RAM-ның 20-25%-ін деректермен толтырмай бос қалдырудың шынайы себебі осы.
Күтілетін өнімділік көрсеткіштері
Redis 7 және жұмыс жиыны жадта тұрған 4 vCPU / 64 ГБ RAM данасында:
- GET өткізу қабілеті (құбырсыз) - секундына 150 000-200 000 операция
- SET өткізу қабілеті (құбырсыз) - секундына 120 000-160 000 операция
- Құбырмен GET (128 команда) - секундына 800 000-1 200 000 операция
- P99 кешігуі (GET, құбырсыз) - 0,5 мс-тен аз
- P99 кешігуі (GET, сол дата-орталықта) - 0,2 мс-тен аз
Бұл цифрлар деректер жиыны жадқа сыяды және maxmemory бұзылмайды деп болжайды. everysec-пен AOF жазу өткізу қабілетін сақталусыз жұмысқа қарағанда 10-15% төмендетеді - продакшен жүктемелерінің көпшілігі үшін қолайлы айырбас.
Бұл осы кластағы жабдыққа күтілетін шамалар, өз зертханамыздағы өлшемдер емес. Оларды есептеудің бастау нүктесі деп санап, өз жүктемеңізді өлшеңіз: нақты цифрлар провайдерден гөрі сіздің деректеріңізге, сұраныстарыңызға және баптауыңызға әлдеқайда күштірек байланысты.
Түйін
ЕО бұлт серверіндегі Redis миллисекундтан аз кешігуі бар кеш береді және сонымен бірге сеанс және дербес деректерді ЕО юрисдикциясында ұстайды. Баптаудағы аса маңызды шешімдер - maxmemory-ді RAM-ның 80% етіп қою, сценарийіңізге келетін ығыстыру саясатын таңдау және тек жеке адреске байлану. DCXV бұлт серверлері Redis-ке керек жад көлемі үлкен және кешігуі төмен инфрақұрылымды GDPR сақталған ЕО дата-орталығында береді.
