2024-07-11
한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina
Artikel ini akan didasarkan pada pembuatan instance redis mode mandiri [semu] di lingkungan k8s. Karena kinerja IO penyimpanan bersama relatif rendah, penyimpanan bersama digunakan untuk cadangan data, dan data redis disimpan dalam bentuk jalur host. Hal ini membantu meningkatkan kinerja io redis bentuk redis master-slave untuk mengimplementasikan redis yang berdiri sendiri dan sangat tersedia.
K8s versi k8s-1.29.4, lingkungan dibangun di ruang komputer telekomunikasi, dengan total enam node. Setiap node memiliki disk SSD non-sistem yang dipasang ke jalur /data/. Ada penyimpanan bersama NAS, yang menggunakan Alibaba Cloud NAS dan menggunakan jalur khusus dengan bandwidth jalur khusus 500Mb.
1. Atur redis dalam mode master-slave. Pembacaan dan penulisan data master redis ada di disk SSD lokal, dan data redis budak ada di penyimpanan nas eksternal bersama.
2. Kemudian buat konfigurasi statefulset, tempatkan dua container, satu container sebagai redis utama, mount ke hostpath, buat direktori dengan nama host, dan simpan file rdb. Wadah lain berfungsi sebagai redis budak, dan jalur nas dipasang untuk membuat direktori dengan nama host dan menyimpan file rdb.
3. Sesuaikan penyimpanan parameter persistensi data dari redis dan sesuaikan waktu pengunduhan data ke parameter yang lebih kecil untuk memastikan bahwa data yang diperbarui disimpan dalam file rdb sesegera mungkin.
4. Setiap kali pod dijadwalkan atau dimulai ulang, salin file rdb yang disimpan di nas ke jalur host dan mulai redis.
Catatan: Hal ini dilakukan untuk memungkinkan redis master mencapai pemrosesan data bisnis berkinerja tinggi, dan redis budak bertanggung jawab atas persistensi data. Mungkin ada masalah berikut: 1. Ketika IO data baca dan tulis master terlalu tinggi , redis slave dipasang nas. Waktu pengunduhan data akan lebih lama.
Konfigurasi berisi tiga file: file konfigurasi master redis, file konfigurasi redis budak, dan skrip sederhana yang melakukan operasi berbeda berdasarkan peran eksekusi.
redis-master:conf adalah file konfigurasi redis utama. Memori dikonfigurasikan ke 256M, port konfigurasinya adalah 6379, kata sandi konfigurasinya adalah redis#123, dan jalur penyimpanannya adalah /data/redis.
redis.conf: Dari file konfigurasi redis, konfigurasikan memori ke 256M, konfigurasikan port ke 6380, konfigurasikan kata sandi: redis#123, jalur penyimpanan adalah /data/redis-2, dan konfigurasikan data yang akan disinkronkan dari port 6379, dan sesuaikan waktu penyimpanan menjadi Jika ada 10 perubahan data dalam waktu 60 detik, penyimpanan akan dilakukan.
run.sh: Fungsi utamanya adalah untuk menentukan peran dan membuat direktori berdasarkan nama host, lalu menyambungkan secara lembut ke direktori penyimpanan. Langkah ini terutama untuk menyimpan data redis setiap layanan di direktorinya sendiri. Saat membuat redis baru, tidak akan menyebabkan konflik direktori pada node.
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