התקנת אפליקציית Looker

בדף הזה מוסבר איך להתקין את אפליקציית Looker בפריסה באירוח בצד הלקוח.

האירוח של אפליקציית Looker לא תלוי במיקום הנתונים שלכם. הנתונים תמיד נשארים במסד הנתונים ולא מועתקים למופע Looker.

מפרטי הפריסה

אם אתם מתכוונים להפעיל את Looker ברשת שלא מתחברת לאינטרנט, יכול להיות שתצטרכו להגדיר שרת proxy כדי לתקשר עם שרת הרישיונות של Looker, או להשתמש בשירותי אינטרנט ללא שרתים שמבצעים רק קריאות אינטרנט, כמו BigQuery.

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

  • מעבד (CPU) במהירות 1.2 GHz. מומלץ להשתמש במעבד עם שתי ליבות או יותר.
  • זיכרון RAM פנוי בנפח 8GB.
  • שטח פנוי בכונן בנפח 10GB.
  • ‫2GB של נפח קובץ החלפה.
  • Linux. אנחנו משתמשים ב-Ubuntu Linux (מהדורות LTS) לאירוח פנימי של Looker, ואנחנו ממליצים על כך ללקוחות שאין להם העדפה ל-Linux. עם זאת, אנחנו תומכים ב-Looker בגרסאות של כל הפצות ה-Linux העיקריות לארגונים, כולל RedHat,‏ CentOS ו-Amazon Linux. ‫Looker נתמך רק בגרסאות Linux עם ערכות הוראות x64.
  • ‫Java OpenJDK 11.0.12+ או HotSpot 1.8 update 161+. ‏ Looker משתמש ב-OpenJDK (גרסה 11) כדי לשפר את הביצועים ואת השימוש בזיכרון. ‫Looker ממליץ להשתמש ב-JDK במקום ב-JRE כדי ליהנות מהיתרונות של הכלים הנוספים לפתרון בעיות. בנוסף, מומלץ לעבור לעדכוני Java חדשים כשהם מתפרסמים. בשלב הזה אין תמיכה בגרסאות אחרות של Java,‏ Oracle JDK ו-OpenJDK.

  • במערכת צריכים להיות libssl ו-libcrypt.so.

  • הגדרות אזוריות וקידוד תווים: כדי לוודא ש-Looker מעבד ומציג נכון תווים בינלאומיים בכל חלקי האפליקציה, צריך להגדיר את סביבת השרת לשימוש בהגדרות אזוריות של UTF-8. הפונקציה הזו חיונית לטיפול בנתונים שמכילים מערכות תווים מרובות בייטים, כמו אלה שמשמשות ביפנית, בסינית ובעוד הרבה שפות אחרות. מומלץ להגדיר את משתני הסביבה הבאים במחשב או בקונטיינר שבו פועלת אפליקציית Looker:

    export LANG=en_US.UTF-8 
    export LC_ALL=en_US.UTF-8
    

    אפשר להוסיף את הפקודות האלה לפרופיל של מעטפת הפקודות (לדוגמה, ~/.bashrc, ~/.profile) או לקובצי התצורה של הסביבה לצורך הפריסה. אם לא מגדירים לוקאל UTF-8, עלולות להיות בעיות בקידוד התווים, שבהן תווים מיוחדים עשויים להופיע כסימני שאלה, תיבות או סמלים שגויים אחרים בממשק המשתמש של Looker, בהורדות ובתשובות של ה-API.

  • צריך לאפשר תנועה נכנסת למכונה של Looker דרך יציאת TCP‏ 9999.

  • אם המשתמשים צריכים גישה ל-API, צריך לאפשר תעבורה נכנסת למופע Looker דרך יציאת TCP‏ 19999.

  • אם Looker מתחבר ל-AWS Redshift מרשת פרטית של AWS VPC, צריך להגדיר את ה-MTU ל-1500. מידע נוסף על ההגדרה הזו זמין בקטע הגדרת ה-MTU של מופע במאמר הזה של Amazon Web Services. אם Looker מזהה שהגדרת ה-MTU גדולה מ-1,500 במהלך בדיקת חיבור למסד נתונים, הוא מציג את השגיאה הבאה:

    MTU of network interface eth0 is too large (> 1500).
    If Looker instance and Redshift cluster are within the same VPC,
    this warning can be ignored.
    
  • ההגדרות הבאות של TCP keepalive. כדי שההגדרות יישמרו גם אחרי הפעלה מחדש, צריך להגדיר אותן בקובץ /etc/sysctl.conf או בקובץ בספרייה /etc/sysctl.d:

    net.ipv4.tcp_keepalive_time=200
    net.ipv4.tcp_keepalive_intvl=200
    net.ipv4.tcp_keepalive_probes=5
    
  • משתמש בשם looker בקבוצה בשם looker כדי להריץ את אפליקציית Looker.

  • ‫ulimit למשתמש looker של 4096 ומעלה. כדי לעשות את זה, מוסיפים את השורות הבאות לקובץ /etc/security/limits.conf:

    looker     soft     nofile     4096
    looker     hard     nofile     4096
    
  • סנכרון הזמן באמצעות NTP או פרוטוקול מקביל.

  • אסור לטעון את התיקייה /tmp עם האפשרות noexec.

  • looker אסור להרכיב את ספריית הבית על נפח NFS.

  • מומלץ להגדיר את אזור הזמן של השרת ל-UTC, אבל זו לא חובה.

  • נדרשת גרסה Git 2.39.1 ואילך ל-Looker 23.6 ואילך.

  • למרות שאין חובה להשתמש ב-Netcat, הוא יכול לעזור בפתרון בעיות בקישוריות לרשת. כדי להתקין את Netcat בשרת מבוסס Ubuntu, למשל, הפקודה הנפוצה היא:

    sudo apt-get install netcat
    
  • אם צריך, אפשר להגדיר שרת proxy לטיפול בבקשות HTTP(S) ש-Looker צריך לשלוח ל-core ב-localhost. כדי לתקשר עם שרת ה-proxy המקומי של Looker, צריך להוסיף כמה ארגומנטים מיוחדים ב-lookerstart.cfg: מוסיפים http.nonProxyHosts=localhost כדי לאפשר גישה ל-localhost של Looker בלי לעבור דרך ה-proxy.

כדי למנוע בעיות בתחזוקה וניגודי משאבים, לא מומלץ להשתמש בשרת Looker לאירוח אפליקציות אחרות.

הפעלה של ntpd או chronyd

‫NTP הוא ראשי תיבות של Network Time Protocol (פרוטוקול זמן רשת). היא מאפשרת לשעון המערכת של המארח לשמור תמיד על השעה הנכונה, וזה נחוץ כדי ש-Looker יפעל בצורה תקינה. לא נדרש שימוש בתוכנה מסוימת לסנכרון הזמן ב-Looker, כל עוד השעות נשארות מסונכרנות. לא צריך להפעיל שרת NTP, אלא רק את לקוח ה-NTP. אפשר להשתמש ב-chronyd במקום ב-NTP.

לקבלת מידע על הפעלת ntpd או chronyd, אפשר לעיין בתיעוד של ספק מערכת ההפעלה.

יצירת מפתח הצפנה

‫Looker משתמש בהצפנה מסוג AES-256 Galois/Counter Mode (GCM) כדי להצפין מידע אישי רגיש שמאוחסן באופן פנימי, כולל:

  • גיבויים של מסד הנתונים הפנימי של Looker
  • פרטי חיבור למסד נתונים ולשירות
  • פרטי אימות משתמש
  • ערכים של מאפייני משתמש
  • נתוני לקוחות שנשמרים במטמון או מוכנים למשלוח

כדי לקבל רשימה מפורטת של הנתונים שמוצפנים ב-Looker, אפשר לפתוח בקשת תמיכה.

הנתונים מוצפנים באמצעות מפתח נתונים ייחודי, והם כוללים מעטפת הצפנה חתומה עם מספר גרסה כדי להבטיח אימות. במצב הזה נדרש שימוש במפתח מאסטר חיצוני של הלקוח (CMK). המפתח CMK משמש לגזירה, להצפנה ולפענוח של המפתח להצפנת מפתחות הצפנה (KEK), שבתורו משמש לגזירה, להצפנה ולפענוח של מפתחות נתונים.

ההצפנה משמשת רק למסד הנתונים הפנימי ולמטמון של Looker. ההצפנה ב-Looker לא משפיעה על מסדי נתונים של לקוחות בשום צורה. בנוסף, רק נתונים סטטיים (נתונים שמאוחסנים בדיסק) מוצפנים באופן הזה.

התקנות באירוח בצד הלקוח יכולות להשתמש בחשבונות AWS KMS משלהן או במערכות ניהול מפתחות מותאמות אישית משלהן. כל מפתחות הנתונים ומפתח ה-KEK מוצפנים ומשמשים באופן פנימי בהתקנת Looker באירוח בצד הלקוח. אם אתם לא משתמשים ב-AWS KMS, חשוב לשמור את ה-CMK החיצוני במקום בטוח וקבוע. אם תאבדו את ה-CMK אחרי שהצפנתם את מסד הנתונים הפנימי, יכול להיות שהמופע שלכם יאבד.

אם אתם משתמשים ב-AWS KMS

אם אתם משתמשים ב-AWS KMS, אתם יכולים ליצור CMK באמצעות AWS Management Console או API.

אחרי שיוצרים את ה-CMK, מומלץ ב-Looker ליצור תפקיד IAM חדש שייחודי ל-CMK ולצרף אותו למופע Looker.

הנה דוגמה לתפקיד IAM שמכיל את ההרשאות המינימליות שנדרשות למפתח ה-CMK:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "VisualEditor0",
            "Effect": "Allow",
            "Action": "kms:GenerateRandom",
            "Resource": "*"
        },
        {
            "Sid": "VisualEditor1",
            "Effect": "Allow",
            "Action": [
                "kms:Decrypt",
                "kms:Encrypt",
                "kms:Generate*",
            ],
            "Resource": "arn:aws:kms:*:*:key/*"
        }
    ]
}

אחרי שיוצרים את מפתח ה-CMK ואת תפקיד ה-IAM החדש, מגדירים את משתנה הסביבה AWS_REGION לאזור AWS ואת משתנה הסביבה LKR_AWS_CMK לכינוי של מפתח ה-CMK:

export AWS_REGION=<AWS_region>
export LKR_AWS_CMK=alias/<CMK_alias>

אופציונלי: אפשר גם להגדיר את משתנה הסביבה LKR_AWS_CMK_EC כדי להגדיר הקשר הצפנה מותאם אישית ב-AWS. אם לא מגדירים את משתנה הסביבה הזה, Looker ישתמש בהקשר ההצפנה שמוגדר כברירת מחדל, המחרוזת Looker_Encryption_Context.

export LKR_AWS_CMK_EC=<My_Encryption_Context>

אם אתם לא משתמשים ב-AWS KMS

אם אתם לא משתמשים ב-AWS KMS, צריך ליצור CMK בפורמט Base64, באורך 32 בייט. אפשר לאחסן את ה-CMK במשתנה סביבתי או בקובץ:

  • כדי ליצור את ה-CMK ולאחסן אותו במשתנה סביבה, אפשר להשתמש בפקודה הבאה:

    openssl rand -base64 32
    

    אחרי שיוצרים את ה-CMK, מעתיקים אותו ומשתמשים בפקודה הבאה כדי לאחסן את ה-CMK במשתנה הסביבה LKR_MASTER_KEY_ENV (כאשר <CMK_value> הוא ה-CMK שיצרתם באמצעות הפקודה הקודמת):

    export LKR_MASTER_KEY_ENV=<CMK_value>
    
  • כדי ליצור את ה-CMK ולאחסן אותו בקובץ, אפשר להשתמש בפקודה הבאה (כאשר <path_to_key_file> הוא הנתיב ושם הקובץ לאחסון ה-CMK):

    openssl rand -base64 32 > <path_to_key_file>
    

    אחרי שיוצרים את קובץ ה-CMK, מגדירים את הרשאות קובץ המפתח לקריאה בלבד של המשתמש הנוכחי:

    chmod 0400 <path_to_key_file>
    

אחרי שיוצרים CMK, חשוב לאחסן אותו במקום בטוח וקבוע לפני שממשיכים. אם תאבדו את ה-CMK אחרי שהצפנתם את מסד הנתונים הפנימי, יכול להיות שהמופע שלכם יאבד.

אחרי שיוצרים ושומרים את ה-CMK, מגדירים את משתנה הסביבה LKR_MASTER_KEY_ENV:

  • אם אתם מאחסנים את ה-CMK במשתנה סביבה, מגדירים את משתנה הסביבה LKR_MASTER_KEY_ENV לערך של ה-CMK:

    export LKR_MASTER_KEY_ENV=<CMK_value>
    
  • אם אתם מאחסנים את ה-CMK בקובץ, מגדירים את משתנה הסביבה LKR_MASTER_KEY_FILE לנתיב של קובץ ה-CMK:

    export LKR_MASTER_KEY_FILE=<path_to_key_file>
    

אחרי שיוצרים CMK, חשוב לאחסן אותו במקום בטוח וקבוע לפני שממשיכים. אם תאבדו את ה-CMK אחרי שהצפנתם את מסד הנתונים הפנימי, יכול להיות שהמופע שלכם יאבד.

התקנת אפליקציית Looker

  1. יצירת קבוצה looker.

    sudo groupadd looker
    
  2. ליצור משתמש looker ואת ספריית הבית שלו.

    sudo useradd -m  -g looker  looker
    
  3. עוברים למשתמש looker. לא מפעילים את Looker כמשתמש root.

    sudo su - looker
    
  4. יוצרים ספריית משנה looker בספריית הבית.

    mkdir ~/looker
    
  5. עוברים לספריית המשנה looker.

    cd ~/looker
    
  6. מוודאים שאתם נמצאים בספרייה הנכונה.

    pwd
    

    אם ספריות המשתמשים שלכם נמצאות ב-/home, הפלט של הפקודה הזו צריך להיות /home/looker/looker.

  7. מורידים את קובצי ה-JAR של Looker באמצעות אחת מהשיטות שמופיעות בדף התיעוד בנושא הורדת קובצי ה-JAR של Looker. חשוב לוודא ששני קובצי ה-JAR הם מאותה גרסה. שימוש בגרסאות שונות של קובצי ה-JAR של הליבה והתלות עלול לגרום לחוסר יציבות בהתקנה של Looker.

  8. מורידים את סקריפט לטעינה בזמן ההפעלה העדכני ממאגר הקוד הפתוח של Looker ב-GitHub. אם רוצים שהסקריפט יפעל בהפעלת המערכת, אפשר להוריד את הסקריפט looker_init ולהשתמש באפשרויות הסקריפט systemd ו-init.

  9. מעבירים את סקריפט לטעינה בזמן ההפעלה (בשם looker) ואת קובצי ה-JAR של Looker (בשמות looker-x.x.x.jar ו-looker-dependencies-x.x.x.jar, כאשר x.x.x הוא מספר הגרסה) לספרייה החדשה ~/looker.

  10. שינוי השם של looker-x.x.x.jar ל-looker.jar ושל looker-dependencies-x.x.x.jar ל-looker-dependencies.jar.

  11. סקריפט ההפעלה קובע באופן אוטומטי כמה זיכרון Java להקצות ל-Looker. אם רוצים לשנות את הערך הזה באופן ידני, אפשר לקרוא מידע נוסף במאמר בנושא הגדרות מומלצות של זיכרון Java.

  12. הופכים את סקריפט לטעינה בזמן ההפעלה של Looker לסקריפט שניתן להרצה (מגדירים את ההרשאות ל-0750).

    chmod 0750 looker
    
  13. מתחילים את התהליך של Looker מהמעטפת בתור המשתמש looker.

    ./looker start
    
  14. כדי לקבל עזרה לגבי דגלים להפעלה, משתמשים בפקודה:

    java -jar looker.jar --help
    

    לחלופין, כדי לקבל עזרה בפקודת ההפעלה, משתמשים בפקודה:

    java -jar looker.jar help
    
  15. פותחים דפדפן בכתובת https://hostname:9999, כאשר hostname הוא שם ה-DNS של המארח שבו פועל Looker.

    צריך להשתמש ב-https בכתובת ה-URL, וכך תיצור אזהרת אבטחה שצריך לעקוף. האזהרה הזו תמשיך להופיע עד שאישור SSL תקף יותקן בשרת.

  16. מזינים את מפתח הרישיון שקיבלתם מהאנליסט שלכם ב-Looker.

  17. מזינים שם, כתובת אימייל וסיסמה כדי ליצור את החשבון הראשון.

יצירת רשומת DNS

מוסיפים רשומת DNS looker.[yourdomain].com לשרת. השלב הזה הוא אופציונלי, אבל מומלץ.

פריסה אוטומטית של Looker

אפשר לפרוס את Looker באמצעות כלי לניהול הגדרות כמו Ansible או Chef. דוגמה לתפקיד Ansible לפריסה אוטומטית זמינה בדף התיעוד בנושא כלים לניהול הגדרות.

כוונון של Hypervisor

‫Looker פועל כמכונה וירטואלית של Java. אם מכונת Looker שלכם היא מכונת אורחת ב-VMware, יכול להיות שתצטרכו לבצע כוונון של הביצועים. אפשר לעיין במדריך לשיטות מומלצות ל-Java של VMware.

בפלטפורמות וירטואליזציה אחרות, יכול להיות ששיפור הביצועים יתאפשר אם תשריינו את הזיכרון של המארח של Looker מההיפר-ויז'ור. אי אפשר לשלוט בזה ב-Amazon EC2, אבל אצל ספקים אחרים כדאי לעיין במסמכי התיעוד שלהם כדי לקבל מידע נוסף.

הגדרה של מסד נתונים אופציונלי של MySQL בקצה העורפי

כברירת מחדל, Looker משתמש במסד נתונים של HyperSQL בזיכרון כדי לאחסן את ההגדרות, המשתמשים ונתונים אחרים. אפשר להשתמש במסד נתונים חיצוני של MySQL כדי לאחסן את המידע הפנימי של Looker. מידע על הגדרה ושיפור של מסד נתונים של MySQL backend זמין בדף התיעוד העברה ל-MySQL.

השלבים הבאים

אחרי שמתקינים את Looker, אפשר להגדיר את אפשרויות ההפעלה של Looker.