प्रौद्योगिकी साझेदारी

[k8s संस्थापन redis] उच्चप्रदर्शनं उच्चउपलब्धतां च प्राप्तुं redis इत्यस्य k8s संस्थापनस्य स्वतन्त्रसंस्करणम्

2024-07-11

한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina

आमुख

अयं लेखः k8s वातावरणे [pseudo] stand-alone mode redis instance इत्यस्य निर्माणे आधारितः भविष्यति । यतः साझा भण्डारणस्य IO कार्यक्षमता तुल्यकालिकरूपेण न्यूनं भवति, साझा भण्डारणस्य उपयोगः आँकडा बैकअप कृते भवति, तथा च redis आँकडा hostpath रूपेण संगृहीतः भवति एतत् redis इत्यस्य io कार्यक्षमतां सुधारयितुम् अयं लेखः व्याख्यास्यति यत् Container serves इत्यस्य द्वयोः उपयोगः कथं भवति एकं स्वतन्त्रं अत्यन्तं उपलब्धं च रेडिस् कार्यान्वितुं रेडिसस्य स्वामी-दासरूपम् ।

1. परिस्थितयः पर्यावरणविवरणं च : १.

K8s संस्करण k8s-1.29.4, वातावरणं दूरसञ्चारसङ्गणककक्षे निर्मितम् अस्ति, यत्र कुलम् षट् नोड् सन्ति । अत्र NAS साझाभण्डारणं अस्ति, यत् Alibaba Cloud NAS इत्यस्य उपयोगं करोति तथा च 500Mb इत्यस्य समर्पिता रेखा बैण्डविड्थ् इत्यनेन सह समर्पितां रेखां उपयुज्यते ।

2. आवश्यकताविवरणम् : १.

  • एकं redis उदाहरणं निर्मायताम्: एकान्ते अथवा स्वामी-दासः।
  • उच्चा उपलब्धता: यदि k8s नोड् मृतः अपि, उपयोगः दीर्घकालं यावत् प्रभावितः न भविष्यति ।
  • उच्चप्रदर्शनम् : उच्च iO आवश्यकं भवति साझा भण्डारणं अथवा ceph वितरितं भण्डारणं भवति, तथा च iO पठनं लेखनं च महतीं छूटं प्राप्स्यति।
  • दत्तांशसुरक्षा : स्विच् भवितुं अनन्तरं दत्तांशः यथासम्भवं पूर्णः भवितुमर्हति
  • सरलं स्थापना, सुलभं प्रबन्धनं, अनुरक्षणं च

3. कार्यान्वयनसिद्धान्ताः निर्देशाः च

1. master-slave mode इत्यस्मिन् redis इत्यस्य सेटअपं कुर्वन्तु master redis इत्यस्य data reading and writing local SSD disk इत्यत्र पतति, slave redis इत्यस्य data इत्येतत् external shared nas storage इत्यत्र पतति ।
2. ततः statefulset विन्यासं रचयन्तु, द्वौ कन्टेनर्, एकं कंटेनरं मुख्य redis रूपेण स्थापयित्वा, hostpath इत्यत्र माउण्ट् कृत्वा, host name इत्यनेन सह directory रचयन्तु, rdb सञ्चिकां च संग्रहयन्तु अन्यः पात्रः दास redis इत्यस्य रूपेण कार्यं करोति, तथा च nas मार्गः होस्ट्-नाम्ना सह निर्देशिकां निर्मातुं rdb सञ्चिकां संग्रहीतुं च माउण्ट् भवति ।
3. redis तः data persistence parameter save समायोजयन्तु तथा च data download समयं लघु पैरामीटर् मध्ये समायोजयन्तु येन सुनिश्चितं भवति यत् अद्यतनं data rdb सञ्चिकायां यथाशीघ्रं संगृहीतं भवति।
4. प्रत्येकं pod scheduled अथवा restarted भवति तदा nas मध्ये संगृहीतं rdb सञ्चिकां hostpath मध्ये प्रतिलिख्य redis आरभत ।

नोटः- एतत् कृतं यत् मुख्य-रेडिस्-इत्यस्य व्यावसायिकदत्तांशस्य उच्च-प्रदर्शन-प्रक्रियाकरणं प्राप्तुं शक्यते, तथा च दास-रेडिस्-दत्तांशस्य स्थायित्वस्य उत्तरदायी भवति: 1. यदा मास्टर-पठन-लेखन-दत्तांशस्य IO अत्यधिकं भवति , the slave redis mounts nas इति दत्तांशस्य डाउनलोड् समयः अधिकः भविष्यति ।

4. विस्तृतपदार्थाः

4.1.configmap विन्याससञ्चिकां रचयन्तु

विन्यासे त्रीणि सञ्चिकाः सन्ति: master redis विन्याससञ्चिका, slave redis विन्याससञ्चिका, तथा च एकः सरलः स्क्रिप्ट् यः निष्पादनभूमिकायाः ​​आधारेण भिन्नानि कार्याणि करोति विशिष्टविन्यासः निम्नलिखितरूपेण अस्ति ।
redis-master:conf मुख्या redis विन्याससञ्चिका अस्ति स्मृतिः 256M, विन्यासपोर्ट् 6379, विन्यासगुप्तशब्दः redis#123, भण्डारणमार्गः च /data/redis इति ।
redis.conf: redis विन्याससञ्चिकातः, स्मृतिं 256M मध्ये विन्यस्य, पोर्ट् 6380 मध्ये विन्यस्य, गुप्तशब्दं विन्यस्य: redis#123, भण्डारणमार्गः /data/redis-2 अस्ति, तथा च तः समन्वयनीयं दत्तांशं विन्यस्यताम् port 6379, and adjust the storage time to यदि 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