متن خبر

نحوه استقرار Apache Airflow در Vultr با استفاده از Anaconda

نحوه استقرار Apache Airflow در Vultr با استفاده از Anaconda

شناسهٔ خبر: 471902 -




در این مقاله قصد داریم یک برنامه Airflow را در محیط Conda مستقر کنیم و برنامه را با استفاده از Nginx ایمن کنیم و گواهی SSL را از Let's Encrypt درخواست کنیم.

جریان هوا ابزار محبوبی است که می‌توانیم از آن برای تعریف، زمان‌بندی و نظارت بر گردش‌های کاری پیچیده خود استفاده کنیم. ما می‌توانیم گراف‌های غیر چرخشی مستقیم (DAG) ایجاد کنیم تا وظایف را در سرتاسر پلت‌فرم‌های کاری خود به‌طور خودکار انجام دهیم، و به‌عنوان منبع باز، Airflow جامعه‌ای برای ارائه پشتیبانی و بهبود مستمر دارد.

این یک مقاله حمایت شده توسط Vultr است. Vultr بزرگترین پلت فرم محاسبات ابری خصوصی در جهان است. Vultr که مورد علاقه توسعه دهندگان است، با راه حل های Cloud Compute، Cloud GPU، Bare Metal و Cloud Storage انعطاف پذیر، مقیاس پذیر، به بیش از 1.5 میلیون مشتری در 185 کشور خدمات رسانی کرده است. درباره Vultr بیشتر بدانید.

استقرار سرور در Vultr

بیایید با استقرار یک سرور Vultr با برنامه Anaconda marketplace شروع کنیم.

    ثبت نام کنید و وارد پورتال مشتریان Vultr شوید.

    به صفحه محصولات بروید.

    از منوی کناری گزینه Compute را انتخاب کنید.

    روی Deploy Server کلیک کنید.

    Cloud Compute را به عنوان نوع سرور انتخاب کنید.

    یک مکان را انتخاب کنید.

    Anaconda را در بین برنامه های کاربردی بازار انتخاب کنید.

    انتخاب اپلیکیشن Vultr Anaconda marketplace

    یک طرح را انتخاب کنید.

    در بخش « آپشن های اضافی» هر ویژگی دیگری را انتخاب کنید.

    روی دکمه Deploy Now کلیک کنید.

    دکمه استقرار سرور Vultr

ایجاد یک پایگاه داده مدیریت شده Vultr

پس از استقرار سرور Vultr، در مرحله بعدی پایگاه داده PostgreSQL مدیریت شده توسط Vultr را مستقر خواهیم کرد. ما همچنین دو پایگاه داده جدید را در نمونه پایگاه داده خود ایجاد خواهیم کرد که برای ارتباط با برنامه Airflow در آینده در وبلاگ استفاده می شود.

    پورتال مشتری Vultr را باز کنید.

    روی گروه منوی محصولات کلیک کنید و به پایگاه داده بروید تا یک پایگاه داده مدیریت شده PostgreSQL ایجاد کنید.

    دکمه منوی محصولات پایگاه داده Vultr

    روی Add Managed Databases کلیک کنید.

    PostgreSQL را با آخرین نسخه به عنوان موتور پایگاه داده انتخاب کنید.

    Vultr انتخاب PostgreSQL <a href= را مدیریت کرد" loading="lazy">

    پیکربندی سرور و مکان سرور را انتخاب کنید.

    یک برچسب برای خدمات بنویسید.

    پایگاه داده مدیریت شده دکمه برچسب

    روی Deploy Now کلیک کنید.

    دکمه استقرار پایگاه داده مدیریت شده Vultr

    پس از استقرار پایگاه داده، Users & Databases را انتخاب کنید.

    کاربران پایگاه داده و بخش پایگاه داده مدیریت شده Vultr

    روی گفت ن پایگاه داده جدید کلیک کنید.

    یک نام وارد کنید، روی گفت ن پایگاه داده کلیک کنید و نام آن را airflow-pgsql بگذارید.

    مراحل 9 و 10 را تکرار کنید تا پایگاه داده دیگری را در همان پایگاه داده مدیریت شده اضافه کنید و نام آن را airflow-celery بگذارید.

شروع کار با Conda و Airflow

اکنون که یک نمونه PostgreSQL با مدیریت Vultr ایجاد کرده ایم، از سرور Vultr برای ایجاد یک محیط Conda و نصب وابستگی های مورد نیاز استفاده می کنیم.

    نسخه Conda را تحلیل کنید:

     $ conda --ver

    یک محیط کوندا ایجاد کنید:

     $ conda create -n airflow python = 3.8

    محیط را فعال کنید:

     $ conda activate airflow

    سرور Redis را نصب کنید:

     ( airflow ) $ apt install -y redis-server

    سرور Redis را فعال کنید:

     ( airflow ) $ sudo systemctl enable redis-server

    تحلیل وضعیت:

     ( airflow ) $ sudo systemctl status redis-server

    بررسی وضعیت سرور Redis

    مدیر بسته پایتون را نصب کنید:

     ( airflow ) $ conda install pip

    وابستگی های مورد نیاز را نصب کنید:

     ( airflow ) $ pip install psycopg2-binary virtualenv redis

    Airflow را در محیط Conda نصب کنید:

     ( airflow ) $ pip install "apache-airflow[celery]==2.8.1" --constraint "https://raw.githubusercontent.com/apache/airflow/constraints-2.8.1/constraints-3.8.txt"

اتصال جریان هوا با پایگاه داده مدیریت شده Vultr

پس از آماده سازی محیط، اکنون اجازه دهید برنامه Airflow خود را با دو پایگاه داده ای که قبلاً در نمونه پایگاه داده خود ایجاد کرده بودیم، متصل کنیم و تغییرات لازم را در پیکربندی Airflow اعمال کنیم تا برنامه ما برای تولید آماده شود.

    تنظیم متغیر محیط برای اتصال پایگاه داده:

     ( airflow ) $ export AIRFLOW__DATABASE__SQL_ALCHEMY_CONN = "postgresql://user:password@hostname:port/db_name"

    اطمینان حاصل کنید که با انتخاب پایگاه داده airflow-pgsql مقادیر واقعی user ، password ، hostname و port در قسمت جزئیات اتصال جایگزین کنید. db_name با airflow-pgsql جایگزین کنید.

    انتخاب اعتبار پایگاه داده airflow-pgsql

    پایگاه داده ابرداده را راه اندازی کنید.

    ما باید یک پایگاه داده ابرداده را برای Airflow راه اندازی کنیم تا جداول و طرحواره های لازم را ایجاد کنیم که اطلاعاتی مانند DAG و اطلاعات مربوط به گردش کار ما را ذخیره می کند:

     ( airflow ) $ airflow db init

    فایل پیکربندی جریان هوا را باز کنید:

     ( airflow ) $ sudo nano ~/airflow/airflow.cfg

    به پایین اسکرول کنید و executor را تغییر دهید:

     executor = CeleryExecutor

    پایگاه داده PostgreSQL مدیریت شده توسط Vultr را پیوند دهید و مقدار sql_alchemy_conn را تغییر دهید:

     sql_alchemy_conn = "postgresql://user:password@hostname:port/db_name"

    اطمینان حاصل کنید که با انتخاب پایگاه داده airflow-pgsql مقادیر واقعی user ، password ، hostname و پورت را در قسمت جزئیات اتصال جایگزین کنید. db_name با airflow-pgsql جایگزین کنید.

    به پایین پیمایش کنید و پورت‌های گزارش کارگر و تریگر را تغییر دهید:

     worker_log_server_port = 8794 trigger_log_server_port = 8795

    broker_url را تغییر دهید:

     broker_url = redis://localhost:6379/0

    # را حذف کرده و result_backend را تغییر دهید:

     result_backend = db+postgresql://user:password@hostname:port/db_name

    اطمینان حاصل کنید که با انتخاب پایگاه داده airflow-celery مقادیر واقعی را در قسمت جزئیات اتصال، user ، password ، hostname و port جایگزین کنید. db_name با airflow-celery جایگزین کنید.

    انتخاب اعتبار پایگاه داده airflow-cellery

    فایل را ذخیره کرده و از آن خارج شوید.

    یک کاربر جریان هوا ایجاد کنید:

     ( airflow ) $ airflow users create \ n --username admin \ n --firstname Peter \ n --lastname Parker \ n --role Admin \ n --email spiderman@superhero.org

    اطمینان حاصل کنید که تمام مقادیر متغیر را با مقادیر واقعی جایگزین کنید.

    هنگامی که از شما خواسته شد رمز عبور را برای کاربر در هنگام دسترسی به داشبورد تنظیم کنید، وارد کنید.

شبح سازی برنامه جریان هوا

حالا بیایید اپلیکیشن Airflow خود را به گونه‌ای دیمونیزه کنیم که در پس‌زمینه اجرا شود و حتی زمانی که ترمینال را می‌بندیم و از سیستم خارج می‌شویم، به طور مستقل به کار خود ادامه دهد.

این مراحل همچنین به ما کمک می کند تا یک سرویس دائمی برای وب سرور، زمانبندی و کارگران کرفس Airflow ایجاد کنیم.

    مشاهده مسیر airflow :

     ( airflow ) $ which airflow

    مسیر را کپی کرده و در کلیپ بورد قرار دهید.

    یک فایل سرویس وب سرور Airflow ایجاد کنید:

     ( airflow ) $ sudo nano /etc/systemd/system/airflow-webserver.service

    تنظیمات سرویس را در فایل قرار دهید.

    airflow webserver مسئول ارائه یک رابط کاربری مبتنی بر وب است که به ما امکان تعامل و مدیریت گردش کار را می دهد. این پیکربندی ها یک سرویس در حال اجرا در پس زمینه برای وب سرور Airflow ما ایجاد می کند:

     [ Unit ] Description = "Airflow Webserver" After = network.target [ Service ] User = example_user Group = example_user ExecStart = /home/example_user/.local/bin/airflow webserver [ Install ] WantedBy = multi-user.target

    مطمئن شوید که User و Group با جزئیات واقعی حساب کاربری sudo غیر روت خود جایگزین کنید و مسیر ExecStart را با مسیر جریان هوای واقعی از جمله باینری اجرایی که قبلاً در کلیپ بورد کپی کردیم جایگزین کنید.

    ذخیره کنید و فایل را ببندید.

    سرویس airflow-webserver را فعال کنید تا وب سرور به طور خودکار در طول فرآیند بوت سیستم راه اندازی شود:

     ( airflow ) $ systemctl enable airflow-webserver

    سرویس را شروع کنید:

     ( airflow ) $ sudo systemctl start airflow-webserver

    اطمینان حاصل کنید که سرویس راه اندازی و اجرا می شود:

     ( airflow ) $ sudo systemctl status airflow-webserver

    خروجی ما باید مانند تصویر زیر ظاهر شود.

    بررسی وضعیت سرویس جریان هوا-وب سرور

    یک فایل سرویس Airflow Celery ایجاد کنید:

     ( airflow ) $ sudo nano /etc/systemd/system/airflow-celery.service

    تنظیمات سرویس را در فایل قرار دهید.

    airflow celery worker یک کارگر کرفس را راه اندازی می کند. Celery یک صف وظیفه توزیع شده است که به ما امکان می دهد وظایف را بین چندین کارگر توزیع و اجرا کنیم. کارگران برای دریافت و اجرای وظایف به سرور Redis ما متصل می شوند:

     [ Unit ] Description = "Airflow Celery" After = network.target [ Service ] User = example_user Group = example_user ExecStart = /home/example_user/.local/bin/airflow celery worker [ Install ] WantedBy = multi-user.target

    مطمئن شوید که User و Group با جزئیات واقعی حساب کاربری sudo غیر روت خود جایگزین کرده اید و مسیر ExecStart با مسیر جریان هوای واقعی از جمله باینری اجرایی که قبلاً در کلیپ بورد کپی کردیم جایگزین کنید.

    ذخیره کنید و فایل را ببندید.

    سرویس airflow-celery را فعال کنید:

     ( airflow ) $ sudo systemctl enable airflow-celery

    سرویس را شروع کنید:

     ( airflow ) $ sudo systemctl start airflow-celery

    اطمینان حاصل کنید که سرویس راه اندازی و اجرا می شود:

     ( airflow ) $ sudo systemctl status airflow-celery

    یک فایل سرویس زمانبندی جریان هوا ایجاد کنید:

     ( airflow ) $ sudo nano /etc/systemd/system/airflow-scheduler.service

    تنظیمات سرویس را در فایل قرار دهید.

    airflow scheduler مسئول برنامه ریزی و راه اندازی DAG ها و وظایف تعریف شده در آنها است. همچنین وضعیت DAG ها و وظایف را به صورت دوره ای تحلیل می کند:

     [ Unit ] Description = "Airflow Scheduler" After = network.target [ Service ] User = example_user Group = example_user ExecStart = /home/example_user/.local/bin/airflow scheduler [ Install ] WantedBy = multi-user.target

    مطمئن شوید که User و Group با جزئیات واقعی حساب کاربری sudo غیر روت خود جایگزین کرده اید و مسیر ExecStart با مسیر جریان هوای واقعی از جمله باینری اجرایی که قبلاً در کلیپ بورد کپی کردیم جایگزین کنید.

    ذخیره کنید و فایل را ببندید.

    سرویس airflow-scheduler فعال کنید:

     ( airflow ) $ sudo systemctl enable airflow-scheduler

    سرویس را شروع کنید:

     ( airflow ) $ sudo systemctl start airflow-scheduler

    اطمینان حاصل کنید که سرویس راه اندازی و اجرا می شود:

     ( airflow ) $ sudo systemctl status airflow-scheduler

    خروجی ما باید مانند تصویر زیر ظاهر شود.

    بررسی وضعیت سرویس زمانبندی جریان هوا

راه اندازی Nginx به عنوان یک پروکسی معکوس

ما سرویس‌های دائمی را برای برنامه Airflow ایجاد کرده‌ایم، پس اکنون Nginx را به‌عنوان یک پروکسی معکوس راه‌اندازی می‌کنیم تا امنیت و مقیاس‌پذیری برنامه‌مان را با پیروی از مراحل ذکر شده در زیر افزایش دهیم.

    وارد پورتال مشتریان Vultr شوید.

    به صفحه محصولات بروید.

    از منوی کناری، کشویی Network را باز کرده و DNS را انتخاب کنید.

    روی دکمه Add Domain در مرکز کلیک کنید.

    برای گفت ن نام دامنه خود با انتخاب آدرس IP سرور خود، مراحل راه اندازی را دنبال کنید.

    نام هاست زیر را به عنوان سرورهای نام اصلی و ثانویه دامنه خود با ثبت کننده دامنه خود تنظیم کنید:

    ns1.vultr.com

    ns2.vultr.com

    Nginx را نصب کنید:

     ( airflow ) $ apt install nginx

    اطمینان حاصل کنید که آیا سرور Nginx فعال است یا خیر:

     ( airflow ) $ sudo systemctl status nginx

    یک فایل پیکربندی میزبان مجازی Nginx در دایرکتوری sites-available ایجاد کنید:

     ( airflow ) $ sudo nano /etc/nginx/sites-available/airflow.conf

    تنظیمات را به فایل اضافه کنید.

    این پیکربندی ها ترافیک برنامه ما را از دامنه واقعی به سرور پشتیبان در http://127.0.0.1:8080 با استفاده از یک پروکسی هدایت می کند:

     server { listen 80 ; listen [ :: ] :80 ; server_name airflow.example.com ; location / { proxy_pass http://127.0.0.1:8080 ; } }

    مطمئن شوید که airflow.example.com با دامنه واقعی که در داشبورد Vultr اضافه کرده ایم جایگزین کنید.

    ذخیره کنید و فایل را ببندید.

    برای فعال کردن فایل پیکربندی، فایل پیکربندی را به دایرکتوری sites-enabled پیوند دهید:

     ( airflow ) $ sudo ln -s /etc/nginx/sites-available/airflow.conf /etc/nginx/sites-enabled/

    حتماً تنظیمات را برای خطاها تحلیل کنید:

     ( airflow ) $ sudo nginx -t

    خروجی ما باید مانند تصویر زیر ظاهر شود.

    بررسی پیکربندی nginx

    برای اعمال تغییرات، Nginx را مجددا راه اندازی کنید:

     ( airflow ) $ sudo systemctl reload nginx

    اجازه دادن پورت HTTP 80 از طریق فایروال برای تمام اتصالات ورودی:

     ( airflow ) $ sudo ufw allow 80 /tcp

    اجازه دادن پورت HTTPS 443 از طریق فایروال برای همه اتصالات ورودی:

     ( airflow ) $ sudo ufw allow 443 /tcp

    قوانین فایروال را دوباره بارگیری کنید تا تغییرات ذخیره شود:

     ( airflow ) $ sudo ufw reload

اعمال اجازه دهید گواهینامه های SSL را در برنامه جریان هوا رمزگذاری کنیم

آخرین مرحله این است که یک گواهینامه Let's Encrypt SSL را در برنامه Airflow خود اعمال کنیم تا امنیت بسیار بیشتری داشته باشد و برنامه ما را از حملات ناخواسته نجات دهد.

    با استفاده از Snap، کلاینت Certbot Let's Encrypt را نصب کنید:

     ( airflow ) $ snap install --classic certbot

    یک گواهی SSL جدید برای دامنه ما دریافت کنید:

     ( airflow ) $ certbot --nginx -d airflow.example.com

    مطمئن شوید که airflow.example.com را با نام دامنه واقعی ما جایگزین کنید.
    و هنگامی که از شما خواسته شد یک آدرس ایمیل وارد کنید و Y را فشار دهید تا شرایط Let's Encrypt را بپذیرید.

    تست کنید که گواهی SSL پس از انقضا به طور خودکار تمدید می شود.

    تمدید خودکار اطمینان حاصل می کند که گواهینامه های SSL ما به روز هستند و خطر انقضای گواهی را کاهش می دهد و امنیت برنامه ما را حفظ می کند:

     ( airflow ) $ certbot renew --dry-run

    از یک مرورگر وب برای باز کردن برنامه Airflow ما استفاده کنید: https://airflow.example.com .

    وقتی از شما خواسته شد، نام کاربری و رمز عبوری که قبلا ایجاد کردیم را وارد کنید.

    ورود <a href= به داشبورد جریان هوا" loading="lazy">

    با دسترسی به داشبورد، تمام DAG هایی که به طور پیش فرض ارائه شده اند قابل مشاهده خواهند بود.

    داشبورد جریان هوا

نتیجه

در این مقاله نحوه ایجاد محیط های Conda، استقرار یک برنامه Airflow آماده تولید و بهبود عملکرد و امنیت یک برنامه را نشان دادیم.

خبرکاو

ارسال نظر

دیدگاه‌ها بسته شده‌اند.


تبليغات ايهنا تبليغات ايهنا

تمامی حقوق مادی و معنوی این سایت متعلق به خبرکاو است و استفاده از مطالب با ذکر منبع بلامانع است