2024-07-11
한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina
Tilallisten palveluiden rakentaminen k8s-klusterissa on suhteellisen hankalaa. Nykyinen tavanomainen lähestymistapa rediksen rakentamiseen on käyttää jaettua tallennustilaa, jotta voidaan saavuttaa pysyvä data varastointi. Tämä artikkeli käyttää painotettuja useita kopioita isäntäpolun affiniteetista uudelleendis-klusterin rakentamiseen olemassa olevan ympäristön ja erilaisten tarpeiden perusteella, jotta saavutetaan tietojen pysyvyys ja redis-palvelun korkea käytettävyys.
K8s-versio k8s-1.29.4, ympäristö on rakennettu tietoliikenteen tietokonehuoneeseen, jossa on kuusi työsolmua Käytössä ei ole operaattoria Tällä hetkellä redis-operaattori käyttää periaatteessa jaettua tallennustilaa.
Huomautus: Tämän ratkaisun rakentamaa redis:tä voidaan käyttää vain k8s-klusterissa, eikä sitä voida tarjota käytettäväksi klusterin ulkopuolella LoadBlancerin tai NodePortin kautta, koska Sentinelissä valitun pääredis:n IP on pod:n kun a kytkin tapahtuu, sitä ei voida määrittää, mikä on tärkein redis.
Solmun nimi | Rooli | Label |
---|---|---|
k8s-työntekijä-120-81 | isäntä | storage-selector=node-a-master |
k8s-työntekijä-120-82 | isäntä | storage-selector=node-b-master |
k8s-työntekijä-120-83 | isäntä | storage-selector=node-c-master |
k8s-työntekijä-120-84 | Valmistella | storage-selector=node-a-slve |
k8s-työntekijä-120-85 | Valmistella | storage-selector=node-a-slve |
k8s-työntekijä-120-86 | Valmistella | storage-selector=node-a-slve |
Huomautus: Roolijako tässä viittaa: Koska redisissä on yksi isäntä ja kaksi orjaa, kukin redis-podista kuuluu kolmeen pääsolmuun Pod of redis-a-0 kuuluu oletusarvoisesti solmuun, jonka nimi on storage-selector=node-a-master. .
Kokoonpano sisältää neljä tiedostoa ja jakelun kuvaus on seuraava:
sentinel.conf: Sentinel-asetustiedostoa käytetään oletusarvoisesti tärkeimpänä redis-tiedostona, ja konfiguraatio solve-hostnames tukee isäntänimiä.
redis-master.conf: Pää redis-määritystiedosto, muisti on määritetty 256M:ksi, konfigurointiportti on 6379, kokoonpanon salasana on redis#123 ja tallennuspolku on /data/redis.
redis.conf: Määritä redis-määritystiedostosta muistiksi 256M, määritä portiksi 6380, määritä salasana: redis#123, tallennuspolku on /data/redis-2 ja määritä tiedot synkronoitavaksi tärkein redis.
run.sh: Päätoiminto on määrittää rooli eri määritystiedostojen suorittamiselle, luoda hakemisto isäntänimen perusteella ja muodostaa sitten pehmeä yhteys tallennushakemistoon. Tämä vaihe on pääasiassa kunkin palvelun redis-tietojen tallentaminen omaan hakemistoonsa. Uutta redis-ohjelmaa luotaessa se ei aiheuta hakemistoristiriitoja solmuun.
apiVersion: v1
kind: ConfigMap
metadata:
name: defaultapp-redis-config
namespace: default-ns
labels:
appname: default-app
app: defaultapp-redis-config
data:
sentinel.conf: |
sentinel monitor mymaster defaultapp-redis-a-0.defaultapp-redis-a.default-ns.svc.cluster.local 6379 2
sentinel auth-pass mymaster redis#123
sentinel down-after-milliseconds mymaster 30000
sentinel parallel-syncs mymaster 1
sentinel failover-timeout mymaster 180000
SENTINEL resolve-hostnames yes
SENTINEL announce-hostnames yes
redis-master.conf: |
maxmemory 256mb
requirepass redis#123
save 3600 1 300 10 60 100
dir /data/redis
masterauth redis#123
redis.conf: |
maxmemory 256mb
requirepass redis#123
save 3600 1 300 10 60 100
dir /data/redis
replicaof defaultapp-redis-a-0.defaultapp-redis-a.default-ns.svc.cluster.local 6379
masterauth redis#123
run.sh: |
#!/bin/sh
role=$1
hname=$(hostname)
if [ $role == "master" ];then
echo "run redis master"
[ -d /home/redis/$hname ] || mkdir -p /home/redis/$hname
[ -d /data ] || mkdir /data
ln -s /home/redis/$hname /data/redis
redis-server /etc/redis/redis-master.conf
elif [ $role == "sentinel" ];then
echo "run redis sentinel"
mkdir -p /etc/redis
cp /home/redis/sentinel.conf /etc/redis/
redis-sentinel /etc/redis/sentinel.conf
else
echo "run redis slave"
[ -d /home/redis/$hname ] || mkdir -p /home/redis/$hname
[ -d /data ] || mkdir /data
ln -s /home/redis/$hname /data/redis
redis-server /etc/redis/redis.conf
fi