התחברות למכונת Redis

בדף הזה מוסבר איך להתחבר למופע Redis באמצעות Telnet ו-redis-cli. בנוסף, בדף הזה מוסבר איך להתחבר כשמשתמשים בתכונות כמו רפליקות לקריאה בלבד, AUTH והצפנה במעבר. בסיום, בדף הזה מופיעות הוראות להתחברות מסביבת Google Kubernetes Engine.

רשימה של Google Cloud סביבות שנתמכות ב-Memorystore for Redis זמינה במאמר בנושא סביבות נתמכות. בחלק מהסביבות ללא שרת (serverless) שנתמכות ב-Memorystore, נדרש מחבר של גישה ל-VPC ללא שרת. לפרטים נוספים, ראו דרישות למחבר של גישה ל-VPC ללא שרת.

התחברות למופע Redis ממכונה וירטואלית ב-Compute Engine באמצעות telnet

אתם יכולים להתחבר למכונה של Memorystore for Redis מכל מכונה וירטואלית של Compute Engine שמשתמשת ברשת המורשית של המכונה עם כתובת IP נתמכת מסוג RFC 1918.

  1. אם אין לכם מכונה וירטואלית ב-Compute Engine שמשתמשת באותה רשת מורשית כמו המכונה שלכם, אתם צריכים ליצור מכונה כזו ולהתחבר אליה באמצעות SSH. כדי לעשות זאת, פועלים לפי השלבים שמפורטים במאמר יצירת מכונה וירטואלית של Linux ב-Compute Engine.

  2. משתמשים ב-apt-get כדי להתקין את telnet:

    sudo apt-get install telnet
    
  3. מהטרמינל, מפעילים telnet לכתובת ה-IP של המכונה. מחליפים את VARIABLES בערכים המתאימים.

    telnet INSTANCE_IP_ADDRESS 6379
    

    אם אתם מצליחים להתחבר למופע, הפקודה מחזירה את התוצאה הבאה:

    Trying INSTANCE_IP_ADDRESS…
    Connected to INSTANCE_IP_ADDRESS
    
  4. בסשן telnet, מזינים כמה פקודות Redis:

    צריך להזין את הפרטים הבאים:

    PING
    

    תוצאה:

    PONG
    

    Enter

    SET HELLO WORLD
    

    תוצאה:

    +OK
    

    צריך להזין את הפרטים הבאים:

    GET HELLO
    

    תוצאה:

    $5
    WORLD
    

התחברות למכונה של Redis ממכונה וירטואלית של Compute Engine באמצעות redis-cli

אתם יכולים להתחבר למכונה של Redis מכל מכונה וירטואלית של Compute Engine שמשתמשת ברשת המורשית של המכונה של Redis עם כתובת IP נתמכת מסוג RFC 1918.

  1. אם אין לכם מכונת VM ב-Compute Engine שמשתמשת ברשת המורשית של מכונת Redis, אתם צריכים ליצור מכונה כזו ולהתחבר אליה לפי ההוראות במאמר יצירת מכונת VM ברשת משנה ספציפית.

  2. מתקינים את redis-cli במכונה הווירטואלית של Compute Engine באמצעות הרצת הפקודה הבאה מהטרמינל של Compute Engine SSH:

    sudo apt-get install redis-tools
    
  3. מריצים את הפקודה הבאה במסוף של Compute Engine, ומחליפים את variables בערכים המתאימים.

    redis-cli -h redis-instance-ip-address
    

    עכשיו אתם מחוברים למכונה של Redis באמצעות redis-cli.

  4. אחרי שמסיימים לבדוק את החיבור למופע Redis, מומלץ למחוק את המכונה הווירטואלית ב-Compute Engine ששימשה לחיבור למופע Redis. כך תוכלו להימנע מחיובים בחשבון לחיוב ב-Cloud.

התחברות למכונה של Redis שמשתמשת ב-AUTH

בקטע הזה מוסבר איך להתחבר למכונה של Redis שהתכונה AUTH מופעלת בה.

  1. אם עדיין אין לכם מכונת VM ב-Compute Engine שמשתמשת באותה רשת מורשית כמו מופע Redis, אתם יכולים ליצור מכונה כזו ולהתחבר אליה באמצעות המדריך להתחלה מהירה בנושא שימוש במכונת VM של Linux.

  2. מתקינים את redis-cli במכונה וירטואלית ב-Compute Engine על ידי הרצת הפקודה הבאה מטרמינל ה-SSH של Compute Engine:

    sudo apt-get install redis-tools
    
  3. משיגים את מחרוזת האימות של המכונה

  4. מריצים את הפקודה הבאה כדי להשתמש ב-redis-cli לאימות ולהתחברות למכונה, ומחליפים את variables בערכים המתאימים:

    redis-cli -h instance-ip-address -a auth-string
    

    או:

    redis-cli -h instance-ip-address
    AUTH auth-string
    
  5. מריצים את הפקודות SET ו-GET של Redis כדי לוודא שיצרתם חיבור מאומת למופע.

  6. אחרי שסיימתם לבדוק את החיבור למכונה של Redis, כדאי למחוק את המכונה הווירטואלית של Compute Engine שבה השתמשתם כדי להתחבר למכונה של Redis. כך תוכלו להימנע מצבירת חיובים בחשבון לחיוב ב-Cloud.

התחברות למכונת Redis באמצעות נקודת הקצה לקריאה

אם במכונה מופעלות רפליקות לקריאה בלבד, אתם יכולים להתחבר לנקודת הקצה לקריאה לפי ההוראות הבאות:

  1. אם עדיין אין לכם מכונה וירטואלית ב-Compute Engine שמשתמשת באותה רשת מורשית כמו מופע Redis, אתם יכולים ליצור מכונה וירטואלית כזו ולהתחבר אליה באמצעות המדריך להתחלה מהירה לשימוש במכונה וירטואלית של Linux.

  2. התקנת telnet באמצעות apt-get:

    sudo apt-get install telnet
    
  3. כדי למצוא את כתובת ה-IP של נקודת הקצה לקריאה של המכונה, צפו במידע על הרפליקה לקריאה בלבד של המכונה.

  4. מהטרמינל, מבצעים telnet לכתובת ה-IP של נקודת הקצה לקריאה של מכונת Redis, ומחליפים את variables בערכים המתאימים.

    telnet read-endpoint-ip 6379
    

    אם הפעולה הצליחה, הפקודה תחזיר את התוצאה הבאה:

    Trying read-endpoint-ip…
    Connected to read-endpoint-ip
    
  5. בסשן telnet, מזינים כמה פקודות Redis:

    צריך להזין את הפרטים הבאים:

    PING
    

    תוצאה:

    PONG
    

חיבור מאובטח למכונה של Redis באמצעות Stunnel ו-telnet

בקטע הזה מובאת דוגמה לאופן שבו אפשר להתחבר למופע Redis שבו מופעלת הצפנה במעבר באמצעות Stunnel. ‫Stunnel הוא שרת proxy שמוסיף פונקציונליות של הצפנת Transport Layer Security ‏ (TLS) ללקוחות ולשרתים בלי לשנות את הקוד שלהם. מידע נוסף מופיע במאמרי העזרה של Stunnel.

  1. אם אין לכם מכונה של Redis שמופעלת בה הצפנה במעבר, אתם צריכים ליצור אחת. מידע נוסף זמין במאמר בנושא יצירת מופע Redis עם הצפנה במעבר.

  2. אם אין לכם מכונה וירטואלית ב-Compute Engine שמשתמשת באותה רשת מורשית כמו מכונת Redis מהשלב הקודם, אתם צריכים ליצור מכונה כזו ולהתחבר אליה. מידע נוסף זמין במאמר יצירת מכונות וירטואלית של Linux ב-Compute Engine.

  3. כדי להתקין את הכלים הנדרשים לתהליך, מריצים את הפקודות הבאות:

    sudo apt-get install stunnel4
    
    sudo apt-get install telnet
    

    שאר השלבים בתהליך הזה מתרחשים במסוף ה-SSH של המכונה הווירטואלית ב-Compute Engine שיצרתם והתחברתם אליה, אלא אם צוין אחרת.

  4. מגדירים את המכונה הווירטואלית ב-Compute Engine לשימוש ב-Stunnel:

    1. כדי ליצור קובץ עבור רשות האישורים (CA), מריצים את הפקודה הבאה:

      sudo vim /tmp/server_ca.pem
      
    2. כדי לראות את רשויות האישורים של מכונת Redis, מריצים את הפקודה הבאה בטרמינל הרגיל שבו אתם משתמשים לניהול המשאבים ב- Google Cloud (לא הטרמינל של Compute Engine):

      gcloud redis instances describe INSTANCE_ID --region=REGION
      

      מחליפים את הפרטים הבאים:

      • ‫INSTANCE_ID: המזהה של מכונת Redis
      • ‫REGION: האזור שבו נמצאת המכונה

      יכולים להיות עד שלושה רשויות אישורים.

    3. מעתיקים את כל רשויות האישורים, כולל השורה -----BEGIN CERTIFICATE----- והשורה
      -----END CERTIFICATE-----, מדביקים את התוכן בקובץ server_ca.pem שיצרתם ושומרים אותו.

      חשוב לוודא שהטקסט של רשות האישורים מיושר לשמאל באופן מלא, ושאין רווחים לבנים מובילים באף שורה של רשות האישורים.

    4. מריצים את הפקודה הבאה כדי ליצור קובץ לפרטי ההגדרות של Stunnel:

      sudo vim /etc/stunnel/redis-client.conf
      
    5. מדביקים את הטקסט הבא בקובץ, ומחליפים את REDIS_INSTANCE_IP בכתובת ה-IP של המכונה:

      output=/tmp/stunnel.log
      CAfile=/tmp/server_ca.pem
      client=yes
      pid=/var/run/stunnel.pid
      verifyChain=yes
      sslVersion=TLSv1.2
      [redis]
      accept=127.0.0.1:6378
      connect=REDIS_INSTANCE_IP:6378
      
    6. מפעילים את Stunnel על ידי הרצת הפקודה הבאה:

      sudo stunnel /etc/stunnel/redis-client.conf
      
    7. מוודאים ש-Stunnel פועל:

      ps aux | grep stunnel
      
    8. מפעילים מחדש את Stunnel באמצעות הפקודה הבאה:

      sudo systemctl restart stunnel4
      

      כדי לוודא שההפעלה מחדש בוצעה בהצלחה, אפשר להשתמש בפקודה ps aux | grep stunnel לפני ואחרי ההפעלה מחדש של Stunnel. אם מזהה התהליך של Stunell שמוצג בפקודה ps aux | grep stunnel שונה, סימן שההפעלה מחדש של Stunell הצליחה.

  5. כדי להתחבר למכונה של Redis באמצעות telnet, מריצים את הפקודה הבאה:

    telnet localhost 6378
    
  6. בסשן telnet, בודקים את החיבור.

    1. אופציונלי: אם במכונה שלכם מופעל Redis AUTH, צריך לבצע אימות לפני בדיקת החיבור.

      מריצים את הפקודה הבאה:

      AUTH AUTH_STRING
      

      מחליפים את AUTH_STRING במחרוזת האימות של המכונה.

      תוצאה:

      OK
      

    מריצים את הפקודה הבאה:

    PING
    

    תוצאה:

    PONG
    
  7. אופציונלי: כחלופה ל-telnet, אפשר להתחבר באמצעות redis-cli דרך יציאת Stunnel המקומית ולהעביר את מחרוזת ה-AUTH.

    מריצים את הפקודה הבאה:

    redis-cli -h 127.0.0.1 -p 6378 -a AUTH_STRING
    

התחברות ממחשב מקומי באמצעות העברת יציאות

במהלך הפיתוח, יכול להיות שיהיה לכם נוח להתחבר למכונה של Redis מהמחשב המקומי. כדי לעשות את זה, צריך ליצור מכונה של Compute Engine שתשמש להעברה ליציאה אחרת במכונה של Redis.

  1. מריצים את הפקודה הבאה כדי ליצור מכונה של Compute Engine:

    gcloud compute instances create COMPUTE_VM_NAME --machine-type=f1-micro --zone=ZONE
    

    כאשר:

    • ‫COMPUTE_VM_NAME הוא השם שאתם מקצים למכונה הווירטואלית ב-Compute Engine.
    • ‫ZONE הוא האזור שבו רוצים להקצות את המכונה הווירטואלית.

    הפקודה הזו יוצרת מכונה וירטואלית ב-Compute Engine עם סוג המכונה f1-micro כדי לחסוך בעלויות. אפשר לבחור סוגי מכונות אחרים.

  2. פותחים טרמינל חדש במחשב המקומי.

  3. כדי ליצור מנהרת SSH שמעבירה את התנועה ליציאה אחרת דרך המכונה הווירטואלית של Compute Engine, מריצים את הפקודה הבאה:

    gcloud compute ssh COMPUTE_VM_NAME --zone=ZONE -- -N -L 6379:REDIS_INSTANCE_IP_ADDRESS:6379
    

    כאשר:

    • ‫COMPUTE_VM_NAME הוא השם של המכונה הווירטואלית ב-Compute Engine.
    • ‫ZONE הוא אותו אזור שבו נמצאת המכונה הווירטואלית של Compute Engine.
    • ‫REDIS_INSTANCE_IP_ADDRESS היא כתובת ה-IP של מכונת Redis.
  4. כדי לבדוק את החיבור, פותחים חלון טרמינל חדש ומריצים את הפקודה הבאה:

    redis-cli ping
    

    אם הכל פועל כמו שצריך, התוצאה צריכה להיות:

    PONG
    

    עכשיו אתם מחוברים למופע Redis, ואתם יכולים לשלוח פקודות למופע Redis באמצעות מנהרת ה-SSH הפתוחה הזו. אם עדיין לא התקנתם את redis-cli, תצטרכו להתקין אותו כדי להריץ את הפקודה הזו.

  5. מנהרת ה-SSH נשארת פתוחה כל עוד חלון הטרמינל עם החיבור למנהרת ה-SSH פועל.

התחברות למופע Redis מאשכול Google Kubernetes Engine

כדי לבדוק אם האשכול משתמש בכינוי IP, משתמשים ב-gcloud container clusters describe.

אפשר להתחבר למופע Redis מאשכולות Google Kubernetes Engine שמשתמשים באותה רשת מורשית כמו מופע Redis.

התחברות מ-Pod שמריץ מעטפת bash

  1. נכנסים לדף GKE במסוף Google Cloud .
    GKE
  2. לוחצים על אשכול GKE שממנו רוצים להתחבר. אם עדיין אין לכם אשכול, אתם צריכים ליצור אשכול עם כתובות IP חלופיות. במאמר יצירת אשכול המותאם ל-VPC מוסבר איך יוצרים אשכול עם כתובות IP חלופיות.
  3. לוחצים על הלחצן Connect (התחברות) משמאל לשם האשכול, ואז לוחצים על הלחצן Run in Cloud Shell (הפעלה ב-Cloud Shell) בחלון שמופיע.
  4. מגדירים גישה לשורת הפקודה kubectl על ידי הפעלת הפקודה הבאה:
    gcloud container clusters get-credentials CLUSTER_NAME --zone=CLUSTER_ZONE --project=PROJECT_ID
    • ‫CLUSTER_NAME הוא שם האשכול.
    • ‫CLUSTER_ZONE הוא האזור שבו נמצא האשכול. האזור חייב להיות גם האזור שבו נמצא המכונה של Redis.
    • ‫PROJECT_ID הוא הפרויקט שבו נמצאים האשכול והמכונות של Redis.
    אמורה להופיע הודעת האישור הבאה: kubeconfig generated for CLUSTER_NAME
  5. אם האשכול שלכם הוא גרסה 1.8 ואילך והאפשרות 'כינויי IP' מופעלת בו, אפשר לדלג על השלב הזה. אם גרסת האשכול היא 1.7 או גרסה ישנה יותר, או אם באשכול בגרסה 1.8 או גרסה חדשה יותר לא מופעלים כינויי IP, צריך לבצע את השלבים הבאים כדי לעקוף את הבעיה לפני שמנסים להתחבר למכונה: מידע נוסף על כתובות IP חלופיות, כולל איך ליצור אשכול כשההגדרה הזו מופעלת, זמין במאמר יצירת אשכול המותאם ל-VPC.
  6. כדי להתחבר למעטפת Bash, משתמשים בפקודה הבאה:
    kubectl run -i --tty busybox --image=busybox -- sh
  7. מפעילים את Telnet למכונה של Redis באמצעות כתובת המארח ומספר היציאה:
    telnet HOST-IP PORT
  8. מזינים פקודת Redis בסיסית כדי לאמת את החיבור:
    PING
    +PONG
  9. כדי לסגור את חיבור ה-Telnet, מקישים על Control+C (או על Command+C ב-Mac). כדי לצאת ממעטפת ה-bash בפוד, מקישים על Return. אם סיימתם ואתם לא צריכים יותר להתחבר ל-Redis, מריצים את הפקודה הבאה מהספרייה /k8s-custom-iptables/:
    ./uninstall.sh

התחברות למכונה של Redis מ-Pod של Google Kubernetes Engine

לפני שמתחילים, צריך אשכול GKE. אם עדיין אין לכם אשכול, צרו אשכול עם כתובות IP חלופיות מופעלות. הוראות ליצירת אשכול עם כינויי IP מופעלים מופיעות במאמר יצירת אשכול המותאם ל-VPC.

  1. בפינה הימנית העליונה של המסוף, לוחצים על הלחצן Activate Cloud Shell בשלב הזה מפעילים את Cloud Shell..
  2. מריצים את הפקודה הבאה כדי להגדיר גישה לשורת הפקודה של kubectl:
    gcloud container clusters get-credentials CLUSTER_NAME --zone CLUSTER_ZONE --project PROJECT_ID
    • ‫CLUSTER_NAME הוא שם האשכול.
    • ‫CLUSTER_ZONE הוא האזור שבו נמצא האשכול. האזור חייב להיות גם האזור שבו נמצא המכונה של Redis.
    • ‫PROJECT_ID הוא הפרויקט שבו נמצאים האשכול והמכונות של Redis.
    אמורה להופיע הודעת האישור הבאה: kubeconfig generated for CLUSTER_NAME
  3. אם האשכול שלכם הוא גרסה 1.8 ואילך והאפשרות 'כינויי IP' מופעלת בו, אפשר לדלג על השלב הזה. אם גרסת האשכול היא 1.7 או גרסה ישנה יותר, או אם באשכול בגרסה 1.8 או גרסה חדשה יותר לא מופעלים כינויי IP, צריך לבצע את השלבים הבאים כדי לעקוף את הבעיה לפני שמנסים להתחבר למכונה: מידע נוסף על כינויי IP, כולל איך ליצור אשכול כשההגדרה הזו מופעלת, זמין במאמר יצירת אשכול המותאם ל-VPC.
  4. משתמשים בפקודה הבאה כדי להפעיל Redis pod עם redis-cli:
    kubectl run -i --tty redisbox --image=redis:7.2 -- sh
  5. מריצים פקודת redis-cli, ומחליפים את HOST-IP בכתובת ה-IP של המארח של מכונת Redis:
    redis-cli -h HOST-IP info
  6. אם רוצים, מריצים פקודת בדיקת ביצועים של Redis, ומחליפים שוב את HOST-IP בכתובת ה-IP של המארח של מכונת Redis:
    redis-benchmark -c 100 -n 100000 -d 1024 -r 100000 -t PING,SET,GET,INCR,LPUSH,RPUSH,LPOP,RPOP,SADD,SPOP,MSET -h HOST-IP -q
  7. כדי לצאת מה-Pod של Redis, מזינים return. אם סיימתם ואתם לא צריכים יותר להתחבר ל-Redis, הריצו את הפקודה הבאה מהספרייה /k8s-custom-iptables/:
    ./uninstall.sh

המאמרים הבאים

התחברות למכונה של Redis באמצעות אפליקציה לדוגמה שפועלת ב: