2024-07-11
한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina
Эта статья будет основана на создании экземпляра Redis в [псевдо] автономном режиме в среде k8s. Поскольку производительность ввода-вывода общего хранилища относительно низкая, общее хранилище используется для резервного копирования данных, а данные Redis хранятся в виде пути к хосту. Это помогает повысить производительность ввода-вывода Redis. В этой статье объясняется, как использовать два контейнера. форма Redis «главный-подчиненный» для реализации автономного Redis с высокой доступностью.
K8s версии k8s-1.29.4, среда построена в телекоммуникационном компьютерном зале, всего шесть узлов. Каждый узел имеет несистемный SSD-диск, подключенный к пути /data/. Существует общее хранилище NAS, которое использует Alibaba Cloud NAS и используется по выделенной линии с пропускной способностью выделенной линии 500 МБ.
1. Настройте redis в режиме master-slave. Чтение и запись данных master-redis приходится на локальный SSD-диск, а данные подчиненного redis — на внешнее общее хранилище nas.
2. Затем создайте конфигурацию набора состояний, поместите два контейнера, один контейнер в качестве основного Redis, смонтируйте его в путь к хосту, создайте каталог с именем хоста и сохраните файл rdb. Другой контейнер служит подчиненным Redis, а путь nas монтируется для создания каталога с именем хоста и хранения файла rdb.
3. Настройте параметр сохранения данных из Redis и настройте время загрузки данных на меньший параметр, чтобы гарантировать, что обновленные данные будут сохранены в файле rdb как можно скорее.
4. Каждый раз, когда модуль планируется или перезапускается, копируйте файл rdb, хранящийся в nas, в путь к хосту и запускайте Redis.
Примечание. Это сделано для того, чтобы главный Redis мог обеспечить высокопроизводительную обработку бизнес-данных, а подчиненный Redis отвечает за сохранение данных. Могут возникнуть следующие проблемы: 1. Слишком большой объем операций ввода-вывода для чтения и записи данных на главном компьютере. ведомый redis монтирует nas. Время загрузки данных будет больше.
Конфигурация содержит три файла: главный файл конфигурации Redis, подчиненный файл конфигурации Redis и простой скрипт, который выполняет различные операции в зависимости от роли выполнения. Конкретная конфигурация выглядит следующим образом:
redis-master:conf — это основной файл конфигурации Redis. Память настроена на 256 МБ, порт конфигурации — 6379, пароль конфигурации — redis#123, а путь к хранилищу — /data/redis.
redis.conf: в файле конфигурации redis настройте память на 256 МБ, настройте порт на 6380, настройте пароль: redis#123, путь к хранилищу — /data/redis-2 и настройте данные для синхронизации из порт 6379 и установите время хранения. Если в течение 60 секунд произойдет 10 изменений данных, сохранение будет выполнено.
run.sh: Основная функция — определить роль и создать каталог на основе имени хоста, а затем мягко подключиться к каталогу хранения. Этот шаг в основном предназначен для хранения данных Redis каждой службы в собственном каталоге. При создании нового Redis это не приведет к конфликтам каталогов на узле.
apiVersion: v1
kind: ConfigMap
metadata:
name: defaultapp-redis-standalone-config
namespace: default
labels:
appname: default-app
app: defaultapp-redis-standalone-config
data:
redis-master.conf: |
port 6379
maxmemory 256mb
requirepass redis#123
dir /data/redis
redis.conf: |
port 6380
maxmemory 256mb
requirepass redis#123
save 3600 1 300 5 60 10
dir /data/redis-2
replicaof 127.0.0.1 6379
masterauth redis#123
run.sh: |
#!/bin/sh
role=$1
hname=$(hostname)
if [ $role == "master" ];then
echo "run redis master"
ls /etc/redis/ -l
[ -d /home/redis/$hname ] || mkdir -p /home/redis/$hname
[ -d /data ] || mkdir /data
ln -s /home/redis/$hname /data/redis
if [ -f /home/redis-2/$hname/dump.rdb ];then
cp -vf /home/redis-2/$hname/dump.rdb /data/redis/
else
echo "[info] no bak dump.rdb"
fi
redis-server /etc/redis/redis-master.conf
else
echo "run redis slave"
ls /etc/redis/ -l
[ -d /home/redis-2/$hname ] || mkdir -p /home/redis-2/$hname
[ -d /data ] || mkdir /data
ln -s /home/redis-2/$hname /data/redis-2
redis-server /etc/redis/redis.conf
fi