Šiame straipsnyje mes ketiname įdiegti „Airflow“ programą „Conda“ aplinkoje ir apsaugoti programą naudodami „Nginx“ ir paprašyti SSL sertifikato iš „Let's Encrypt“.
Oro srautas yra populiarus įrankis, kurį galime naudoti sudėtingoms darbo eigoms apibrėžti, planuoti ir stebėti. Galime sukurti nukreiptus aciklinius grafikus (DAG), kad galėtume automatizuoti užduotis visose darbo platformose, o būdama atvirojo kodo, „Airflow“ turi bendruomenę, kuri teikia paramą ir nuolat tobulėja.
Tai yra Vultr remiamas straipsnis. Vultr yra didžiausia pasaulyje privati debesų kompiuterijos platforma. Kūrėjų pamėgta „Vultr“ aptarnavo daugiau nei 1,5 mln. klientų 185 šalyse, naudodama lanksčius, keičiamo dydžio, pasaulinius „Cloud Compute“, „Cloud GPU“, „Bare Metal“ ir „Cloud Storage“ sprendimus. Išmokti daugiau apie Vultr.
Serverio diegimas Vultr
Pradėkime įdiegdami Vultr serverį su Anaconda prekyvietės programa.
Užsiregistruokite ir prisijunkite prie Vultr klientų portalas.
Eikite į puslapį Produktai.
Pasirinkite Apskaičiuokite iš šoninio meniu.
Spustelėkite Įdiegti serverį.
Pasirinkite Cloud Compute kaip serverio tipą.
Pasirinkti Vieta.
Pasirinkite Anakonda tarp prekyvietės programų.
Pasirinkti Planuoti.
Skiltyje „Papildomos funkcijos“ pasirinkite daugiau funkcijų.
Spustelėkite Įdiegti dabar mygtuką.
„Vultr“ valdomos duomenų bazės kūrimas
Įdiegę Vultr serverį, kitą kartą įdiegsime Vultr valdomą PostgreSQL duomenų bazę. Taip pat savo duomenų bazės egzemplioriuje sukursime dvi naujas duomenų bazes, kurios vėliau tinklaraštyje bus naudojamos susisiekimui su programa „Airflow“.
Atidaryk Vultr klientų portalas.
Spustelėkite Produktai meniu grupę ir eikite į Duomenų bazės sukurti PostgreSQL valdomą duomenų bazę.
Spustelėkite Pridėti valdomas duomenų bazes.
Pasirinkite PostgreSQL su naujausia versija kaip duomenų bazės variklis.
Pasirinkite Serverio konfigūracija ir Serverio vieta.
Rašyti a Etiketė už paslaugą.
Spustelėkite Įdiegti dabar.
Įdiegę duomenų bazę, pasirinkite Vartotojai ir duomenų bazės.
Spustelėkite Pridėti naują duomenų bazę.
Įveskite pavadinimą, spustelėkite Pridėti duomenų bazę ir įvardink
airflow-pgsql
.Pakartokite 9 ir 10 veiksmus, kad į tą pačią valdomą duomenų bazę įtrauktumėte kitą duomenų bazę ir suteiktumėte jai pavadinimą
airflow-celery
.
Darbo su „Conda“ ir „Airflow“ pradžia
Dabar, kai sukūrėme Vultr valdomą PostgreSQL egzempliorių, naudosime Vultr serverį Conda aplinkai sukurti ir reikiamoms priklausomybėms įdiegti.
Patikrinkite Conda versiją:
Sukurkite „Conda“ aplinką:
$ conda create -n airflow python=3.8
Suaktyvinkite aplinką:
Įdiekite Redis serverį:
(airflow) $ apt install -y redis-server
Įgalinkite „Redis“ serverį:
(airflow) $ sudo systemctl enable redis-server
Patikrinkite būseną:
(airflow) $ sudo systemctl status redis-server
Įdiekite Python paketų tvarkyklę:
(airflow) $ conda install pip
Įdiekite reikiamas priklausomybes:
(airflow) $ pip install psycopg2-binary virtualenv redis
Įdiekite Airflow Conda aplinkoje:
(airflow) $ pip install "apache-airflow[celery]==2.8.1" --constraint "https://raw.githubusercontent.com/apache/airflow/constraints-2.8.1/constraints-3.8.txt"
Oro srauto sujungimas su Vultr valdoma duomenų baze
Paruošę aplinką, dabar sujungkime savo Airflow programą su dviem duomenų bazėmis, kurias anksčiau sukūrėme savo duomenų bazės egzemplioriuje, ir atliksime reikiamus Airflow konfigūracijos pakeitimus, kad programa būtų paruošta gamybai.
Nustatykite duomenų bazės ryšio aplinkos kintamąjį:
(airflow) $ export AIRFLOW__DATABASE__SQL_ALCHEMY_CONN="postgresql://user:password@hostname:port/db_name"
Būtinai pakeiskite
user
,password
,hostname
irport
su faktinėmis reikšmėmis ryšio informacijos skyriuje, pasirinkdamiairflow-pgsql
duomenų bazėje. Pakeiskitedb_name
suairflow-pgsql
.Inicijuoti metaduomenų duomenų bazę.
Turime inicijuoti „Airflow“ metaduomenų duomenų bazę, kad sukurtume reikiamas lenteles ir schemą, kurioje būtų saugoma tokia informacija kaip DAG ir informacija, susijusi su mūsų darbo eigomis:
(airflow) $ airflow db init
Atidarykite oro srauto konfigūracijos failą:
(airflow) $ sudo nano ~/airflow/airflow.cfg
Slinkite žemyn ir pakeiskite
executor
:executor = CeleryExecutor
Susiekite Vultr valdomą PostgreSQL duomenų bazę ir pakeiskite reikšmę
sql_alchemy_conn
:sql_alchemy_conn = "postgresql://user:password@hostname:port/db_name"
Būtinai pakeiskite
user
,password
,hostname
ir prievadą su faktinėmis reikšmėmis ryšio informacijos skiltyje, pasirinkdamiairflow-pgsql
duomenų bazėje. Pakeiskitedb_name
suairflow-pgsql
.Slinkite žemyn ir pakeiskite darbuotojo ir suaktyvinimo žurnalo prievadus:
worker_log_server_port = 8794 trigger_log_server_port = 8795
Pakeisti
broker_url
:broker_url = redis://localhost:6379/0
Pasalinti
#
ir pakeistiresult_backend
:result_backend = db+postgresql://user:password@hostname:port/db_name
Būtinai pakeiskite
user
,password
,hostname
irport
su faktinėmis reikšmėmis ryšio informacijos skyriuje, pasirinkdamiairflow-celery
duomenų bazėje. Pakeiskitedb_name
suairflow-celery
.Išsaugokite ir išeikite iš failo.
Sukurkite „Airflow“ naudotoją:
(airflow) $ airflow users create \n --username admin \n --firstname Peter \n --lastname Parker \n --role Admin \n --email spiderman@superhero.org
Būtinai pakeiskite visas kintamųjų reikšmes tikrosiomis reikšmėmis.
Įveskite slaptažodį, kai būsite paraginti jį nustatyti vartotojui, kai pasiekiate prietaisų skydelį.
Oro srauto programos demonizavimas
Dabar demonizuokime savo „Airflow“ programą, kad ji veiktų fone ir toliau veiktų savarankiškai, net kai uždarome terminalą ir atsijungiame.
Šie veiksmai taip pat padės mums sukurti nuolatinę paslaugą „Airflow“ žiniatinklio serveriui, planuotojui ir salierų darbuotojams.
Peržiūrėkite
airflow
kelias:(airflow) $ which airflow
Nukopijuokite ir įklijuokite kelią į mainų sritį.
Sukurkite „Airflow“ žiniatinklio serverio paslaugos failą:
(airflow) $ sudo nano /etc/systemd/system/airflow-webserver.service
Įklijuokite paslaugos konfigūracijas į failą.
airflow webserver
yra atsakinga už žiniatinklio vartotojo sąsajos, kuri leis mums bendrauti ir valdyti darbo eigą, teikimą. Šios konfigūracijos sudarys fone veikiančią paslaugą mūsų „Airflow“ žiniatinklio serveriui:[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
Būtinai pakeiskite
User
irGroup
su faktine ne root sudo vartotojo paskyros informacija ir pakeiskiteExecStart
kelias su tikruoju oro srauto keliu, įskaitant vykdomąjį dvejetainį failą, kurį anksčiau nukopijavome į mainų sritį.Išsaugokite ir uždarykite failą.
Įgalinti
airflow-webserver
paslauga, kad žiniatinklio serveris automatiškai įsijungtų sistemos įkrovos proceso metu:(airflow) $ systemctl enable airflow-webserver
Pradėti paslaugą:
(airflow) $ sudo systemctl start airflow-webserver
Įsitikinkite, kad paslauga veikia ir veikia:
(airflow) $ sudo systemctl status airflow-webserver
Mūsų produkcija turėtų atrodyti taip, kaip parodyta žemiau.
Sukurkite „Airflow Celery“ paslaugos failą:
(airflow) $ sudo nano /etc/systemd/system/airflow-celery.service
Įklijuokite paslaugų konfigūracijas į failą.
airflow celery worker
pradeda Salierų darbuotoją. „Celery“ yra paskirstyta užduočių eilė, kuri leis mums paskirstyti ir vykdyti užduotis keliems darbuotojams. Darbuotojai prisijungia prie mūsų Redis serverio, kad gautų ir vykdytų užduotis:[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
Būtinai pakeiskite
User
irGroup
su faktine ne root sudo vartotojo paskyros informacija ir pakeiskiteExecStart
kelias su tikruoju oro srauto keliu, įskaitant vykdomąjį dvejetainį failą, kurį anksčiau nukopijavome į mainų sritį.Išsaugokite ir uždarykite failą.
Įgalinti
airflow-celery
paslauga:(airflow) $ sudo systemctl enable airflow-celery
Pradėti paslaugą:
(airflow) $ sudo systemctl start airflow-celery
Įsitikinkite, kad paslauga veikia ir veikia:
(airflow) $ sudo systemctl status airflow-celery
Sukurkite oro srauto planavimo paslaugos failą:
(airflow) $ sudo nano /etc/systemd/system/airflow-scheduler.service
Įklijuokite paslaugų konfigūracijas į failą.
airflow scheduler
yra atsakingas už DAG ir juose apibrėžtų užduočių planavimą ir paleidimą. Ji taip pat periodiškai tikrina DAG ir užduočių būseną:[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
Būtinai pakeiskite
User
irGroup
su faktine ne root sudo vartotojo paskyros informacija ir pakeiskiteExecStart
kelias su tikruoju oro srauto keliu, įskaitant vykdomąjį dvejetainį failą, kurį anksčiau nukopijavome į mainų sritį.Išsaugokite ir uždarykite failą.
Įgalinti
airflow-scheduler
paslauga:(airflow) $ sudo systemctl enable airflow-scheduler
Pradėti paslaugą:
(airflow) $ sudo systemctl start airflow-scheduler
Įsitikinkite, kad paslauga veikia ir veikia:
(airflow) $ sudo systemctl status airflow-scheduler
Mūsų produkcija turėtų atrodyti taip, kaip parodyta žemiau.
„Nginx“ kaip atvirkštinio tarpinio serverio nustatymas
Sukūrėme nuolatines „Airflow“ programai skirtas paslaugas, todėl dabar nustatysime Nginx kaip atvirkštinį tarpinį serverį, kad padidintume programos saugumą ir mastelį, atlikdami toliau nurodytus veiksmus.
Prisijunkite prie Vultr klientų portalas.
Eikite į Produktai puslapį.
Šoniniame meniu išplėskite Tinklas išskleidžiamajame meniu ir pasirinkite DNS.
Spustelėkite Pridėti domeną mygtuką centre.
Vykdykite sąrankos procedūrą, kad pridėtumėte domeno pavadinimą, pasirinkdami savo serverio IP adresą.
Su domeno registratoriumi nustatykite šiuos pagrindinio kompiuterio pavadinimus kaip pagrindinius ir antrinius domeno vardų serverius:
- ns1.vultr.com
- ns2.vultr.com
Įdiekite „Nginx“:
(airflow) $ apt install nginx
Būtinai patikrinkite, ar Nginx serveris veikia ir veikia:
(airflow) $ sudo systemctl status nginx
Sukurkite naują „Nginx“ virtualaus pagrindinio kompiuterio konfigūracijos failą
sites-available
katalogas:(airflow) $ sudo nano /etc/nginx/sites-available/airflow.conf
Pridėkite konfigūracijas prie failo.
Šios konfigūracijos nukreips srautą į mūsų programą iš tikrojo domeno į galinio serverio serverį adresu
http://127.0.0.1:8080
naudojant tarpinio serverio leidimą:server { listen 80; listen [::]:80; server_name airflow.example.com; location / { proxy_pass http://127.0.0.1:8080; } }
Būtinai pakeiskite
airflow.example.com
su tikru domenu, kurį įtraukėme į „Vultr“ prietaisų skydelį.Išsaugokite ir uždarykite failą.
Susiekite konfigūracijos failą su
sites-enabled
katalogą, kad suaktyvintumėte konfigūracijos failą:(airflow) $ sudo ln -s /etc/nginx/sites-available/airflow.conf /etc/nginx/sites-enabled/
Būtinai patikrinkite konfigūraciją, ar nėra klaidų:
(airflow) $ sudo nginx -t
Mūsų produkcija turėtų atrodyti taip, kaip parodyta žemiau.
Iš naujo paleiskite „Nginx“, kad pritaikytumėte pakeitimus:
(airflow) $ sudo systemctl reload nginx
Leisti HTTP prievadą
80
per ugniasienę visiems įeinantiems ryšiams:(airflow) $ sudo ufw allow 80/tcp
Leisti HTTPS prievadą
443
per ugniasienę visiems įeinantiems ryšiams:(airflow) $ sudo ufw allow 443/tcp
Iš naujo įkelkite ugniasienės taisykles, kad išsaugotumėte pakeitimus:
(airflow) $ sudo ufw reload
SSL sertifikatų taikymas „Airflow“ programai
Paskutinis žingsnis yra taikyti a Užšifruokime SSL sertifikatas mūsų Airflow programai, kad ji taptų daug saugesnė ir apsaugotų mūsų programą nuo nepageidaujamų atakų.
Naudodami „Snap“, įdiekite „Certbot Let's Encrypt“ klientą:
(airflow) $ snap install --classic certbot
Gaukite naują SSL sertifikatą mūsų domenui:
(airflow) $ certbot --nginx -d airflow.example.com
Būtinai pakeiskite
airflow.example.com
su mūsų tikruoju domeno pavadinimu.
Kai būsite paraginti, įveskite el. pašto adresą ir paspauskite Y sutikti su Užšifruokime sąlygomis.Patikrinkite, ar SSL sertifikatas automatiškai atnaujinamas pasibaigus jo galiojimo laikui.
Automatinis atnaujinimas užtikrina, kad mūsų SSL sertifikatai yra atnaujinami, sumažinama sertifikato galiojimo pabaigos rizika ir išlaikomas mūsų programos saugumas:
(airflow) $ certbot renew --dry-run
Naudodami žiniatinklio naršyklę atidarykite programą „Airflow“:
https://airflow.example.com
.Kai būsite paraginti, įveskite anksčiau sukurtą vartotojo vardą ir slaptažodį.
Pasiekus prietaisų skydelį, bus matomi visi pagal numatytuosius nustatymus pateikti DAG.
Išvada
Šiame straipsnyje mes parodėme, kaip sukurti „Conda“ aplinką, įdiegti gamybai paruoštą „Airflow“ programą ir pagerinti programos našumą bei saugumą.