2024-07-11
한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina
k8s क्लस्टरमध्ये स्टेटफुल् सेवानां निर्माणं तुल्यकालिकरूपेण कष्टप्रदम् अस्ति संग्रहण। अयं लेखः विद्यमानवातावरणस्य आधारेण redis समूहस्य निर्माणार्थं तथा च redis सेवायाः उच्च-उपलब्धतां प्राप्तुं आँकडा-स्थायित्वं उच्च-उपलब्धतां च प्राप्तुं होस्ट्-मार्ग-सम्बद्धतायाः भारित-बहुप्रतियाः उपयोगं करिष्यति
K8s संस्करणं k8s-1.29.4, वातावरणं दूरसञ्चारसङ्गणककक्षे निर्मितं भवति, यत्र षट् कार्यकर्ता नोड् सन्ति used.वर्तमानसमये redis-operator मूलतः साझाभण्डारणस्य उपयोगं करोति ।
नोट्: अस्मिन् समाधानेन निर्मिताः redis केवलं k8s क्लस्टरस्य अन्तः एव उपयोक्तुं शक्यन्ते, तथा च LoadBlancer अथवा NodePort इत्यस्य माध्यमेन क्लस्टरस्य बहिः उपयोगाय प्रदातुं न शक्यन्ते, यतः Sentinel मध्ये निर्वाचितस्य मुख्यस्य redis इत्यस्य IP pod इत्यस्य IP भवति यदा a स्विचः भवति, तत् निर्धारयितुं न शक्यते यत् मुख्यं redis कः अस्ति।
नोड नाम | भूमिका | नामपत्र |
---|---|---|
k8s-कार्यकर्ता-120-81 | निमन्त्रकः | भण्डारण-चयनकर्ता=नोड-एक-मास्टर |
k8s-कार्यकर्ता-120-82 | निमन्त्रकः | भण्डारण-चयनकर्ता=नोड-ख-मास्टर |
k8s-कार्यकर्ता-120-83 | निमन्त्रकः | भण्डारण-चयनकर्ता=नोड-ग-मास्टर |
k8s-कार्यकर्ता-120-84 | सज्जी करोतु | भण्डारण-चयनकर्ता=नोड-एक-स्ल्वे |
k8s-कार्यकर्ता-120-85 | सज्जी करोतु | भण्डारण-चयनकर्ता=नोड-एक-स्ल्वे |
k8s-कार्यकर्ता-120-86 | सज्जी करोतु | भण्डारण-चयनकर्ता=नोड-एक-स्ल्वे |
नोट्: अत्र भूमिकाविभागः निर्दिशति: यतः redis इत्यस्य एकः मास्टरः द्वौ च स्लेवौ स्तः, प्रत्येकं redis pod त्रयः मास्टर नोड् इत्यत्र पतति यदा मास्टर नोड् विफलः भवति उदाहरणार्थं: नाम defaultapp- The अस्ति redis-a-0 इत्यस्य pod पूर्वनिर्धारितरूपेण storage-selector=node-a-master इति लेबलयुक्ते नोड् इत्यत्र पतति यदा नोड् विफलः भवति तदा storage-selector=node-a-slve इति लेबलयुक्ते नोड् इत्यस्य भारस्य आधारेण तस्य मेलनं भविष्यति . नोडस्य उपरि ।
विन्यासे चत्वारि सञ्चिकाः सन्ति तथा च वितरणविवरणं यथा भवति ।
sentinel.conf: Sentinel विन्याससञ्चिका पूर्वनिर्धारितरूपेण, प्रथमः statefulset मुख्य redis इत्यस्य रूपेण उपयुज्यते, तथा च विन्यासः: resolve-hostnames होस्ट्-नामानि समर्थयति ।
redis-master.conf: मुख्यं redis विन्याससञ्चिका, स्मृतिः 256M, विन्यासपोर्ट् 6379, विन्यासगुप्तशब्दः redis#123, भण्डारणमार्गः च /data/redis इति
redis.conf: redis विन्याससञ्चिकातः, स्मृतिं 256M मध्ये विन्यस्य, पोर्ट् 6380 मध्ये विन्यस्य, गुप्तशब्दं विन्यस्य: redis#123, भण्डारणमार्गः /data/redis-2 अस्ति, तथा च तः समन्वयनीयं दत्तांशं विन्यस्यताम् मुख्य रेडिस।
run.sh: मुख्यं कार्यं भिन्नानि विन्याससञ्चिकाः चालयितुं भूमिकां निर्धारयितुं, होस्ट्-नाम्ना आधारेण निर्देशिकां निर्मातुं, ततः भण्डारणनिर्देशिकायाः सह मृदुतया सम्बद्धं कर्तुं च अस्ति । इदं सोपानं मुख्यतया प्रत्येकस्य सेवायाः redis दत्तांशं स्वकीयनिर्देशिकायां संग्रहीतुं भवति नूतनं redis रचयति समये नोड् इत्यत्र निर्देशिकाविग्रहं न जनयिष्यति ।
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