Funkcjonalności warstw architektury referencyjnej Big Data
Przeczytaj blog, aby w najprostszy sposób poznać różne warstwy w architekturze Big Data i ich funkcjonalności.
Continuous Integration to praktyka programistyczna DevOps, która pozwala programistom często łączyć zmodyfikowany kod z udostępnianym repozytorium wiele razy dziennie. Po każdym scaleniu wykonywane są automatyczne kompilacje i testy w celu wykrycia problemów w kodzie. Umożliwia programistom szybkie znajdowanie i usuwanie błędów w celu poprawy jakości oprogramowania i zapewnienia ciągłego dostarczania oprogramowania. Przełączanie się z Concourse jest bardzo łatwe, ponieważ zachowuje całą konfigurację w plikach deklaratywnych, które można sprawdzić w kontroli wersji. Zapewnia również interfejs użytkownika sieci Web, który wyświetla interaktywnie informacje o kompilacji.
Pamiętaj, aby zastąpić wszystkie wystąpienia 192.0.2.1
i ci.example.com
rzeczywistą adres Vultr publiczny IP i rzeczywistą nazwą domeny.
Zaktualizuj system podstawowy, korzystając z przewodnika Jak zaktualizować system Ubuntu 16.04 . Po zaktualizowaniu systemu przejdź do instalacji PostgreSQL.
PostgreSQL to obiektowy system relacyjnych baz danych. Concourse przechowuje dane potoku w bazie danych PostgreSQL. Dodaj repozytorium PostgreSQL.
echo "deb http://apt.postgresql.org/pub/repos/apt/ xenial-pgdg main" | sudo tee /etc/apt/sources.list.d/pgdg.list
wget --quiet -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc | sudo apt-key add -
sudo apt update
Zainstaluj serwer bazy danych PostgreSQL.
sudo apt -y install postgresql
Uruchom serwer PostgreSQL i włącz go automatycznie podczas uruchamiania.
sudo systemctl start postgresql
sudo systemctl enable postgresql
Zmień hasło dla domyślnego użytkownika PostgreSQL.
sudo passwd postgres
Zaloguj się jako użytkownik PostgreSQL:
sudo su - postgres
Utwórz nowego użytkownika PostgreSQL dla Concourse CI.
createuser concourse
Uwaga : Do uwierzytelnienia bazy danych można użyć domyślnego użytkownika PostgreSQL, ale zaleca się użycie dedykowanego użytkownika do uwierzytelnienia bazy danych Concourse w konfiguracji produkcyjnej.
PostgreSQL zapewnia powłokę do uruchamiania zapytań w bazie danych. Przejdź do powłoki PostgreSQL.
psql
Ustaw hasło dla nowo utworzonego użytkownika bazy danych Concourse.
ALTER USER concourse WITH ENCRYPTED password 'DBPassword';
Ważne : Zamień DBPassword
na silne hasło. Zanotuj hasło, które będzie wymagane w dalszej części samouczka.
Utwórz nową bazę danych dla Concourse.
CREATE DATABASE concourse OWNER concourse;
Wyjdź z psql
muszli.
\q
Przełącz się na użytkownika sudo od bieżącego postgres
użytkownika.
exit
Pobierz najnowszą wersję pliku wykonywalnego Concourse i zapisz ją, /usr/bin
aby można ją było wykonać bezpośrednio. Najnowszą wersję plików binarnych Concourse i Fly można znaleźć na stronie pobierania Concourse . Nowe wydania są bardzo częste. Zamień poniższy link na nowy link do najnowszej wersji.
sudo wget https://github.com/concourse/concourse/releases/download/v3.10.0/concourse_linux_amd64 -O /usr/bin/concourse
Podobnie pobierz najnowszą wersję pliku wykonywalnego fly i zapisz ją /usr/bin
.
sudo wget https://github.com/concourse/concourse/releases/download/v3.10.0/fly_linux_amd64 -O /usr/bin/fly
Fly to interfejs wiersza poleceń używany do łączenia się z interfejsem API ATC Concourse CI. Fly jest dostępny dla wielu platform, takich jak Linux, Windows i MacOS.
Przypisz uprawnienie do pobierania concourse
i fly
plików binarnych.
sudo chmod +x /usr/bin/concourse /usr/bin/fly
Sprawdź, czy Concourse i Fly działają poprawnie, sprawdzając ich wersję.
concourse -version
fly -version
Pary kluczy RSA umożliwiają szyfrowanie komunikacji między komponentami Concourse.
Aby Concourse działał, muszą zostać wygenerowane co najmniej trzy pary kluczy. Aby zaszyfrować dane sesji, wygeneruj session_signing_key
. Ten klucz będzie również używany przez TSA do podpisywania żądań kierowanych do ATC. Aby zabezpieczyć serwer SSA TSA, wygeneruj tsa_host_key
. Na koniec wygeneruj worker_key
dla każdego pracownika.
Utwórz nowy katalog do przechowywania kluczy i konfiguracji związanych z Concourse CI.
sudo mkdir /opt/concourse
Wygeneruj wymagane klucze.
sudo ssh-keygen -t rsa -q -N '' -f /opt/concourse/session_signing_key
sudo ssh-keygen -t rsa -q -N '' -f /opt/concourse/tsa_host_key
sudo ssh-keygen -t rsa -q -N '' -f /opt/concourse/worker_key
Autoryzuj klucz publiczny pracowników, kopiując jego zawartość do authorized_worker_keys
pliku.
sudo cp /opt/concourse/worker_key.pub /opt/concourse/authorized_worker_keys
Concourse zapewnia dwa oddzielne komponenty, które należy uruchomić: sieć i pracownika. Uruchom sieć Concourse.
sudo concourse web \
--basic-auth-username admin \
--basic-auth-password StrongPass \
--session-signing-key /opt/concourse/session_signing_key \
--tsa-host-key /opt/concourse/tsa_host_key \
--tsa-authorized-keys /opt/concourse/authorized_worker_keys \
--postgres-user=concourse \
--postgres-password=DBPassword \
--postgres-database=concourse \
--external-url http://192.0.2.1:8080
W basic-auth
razie potrzeby zmień nazwę użytkownika i hasło . Upewnij się, że ścieżka do plików kluczy jest poprawna i upewnij się, że podana jest poprawna wartość nazwy użytkownika i hasła w konfiguracji bazy danych PostgreSQL.
Uwaga : ATC nasłuchuje na domyślnym porcie, 8080
a TSA nasłuchuje na porcie 2222
. Jeśli uwierzytelnianie nie jest wymagane, przekaż tę --no-really-i-dont-want-any-auth
opcję po usunięciu podstawowych opcji uwierzytelniania.
Po uruchomieniu serwera WWW wyświetlone zostaną następujące dane wyjściowe.
{"timestamp":"1503657859.661247969","source":"tsa","message":"tsa.listening","log_level":1,"data":{}}
{"timestamp":"1503657859.666907549","source":"atc","message":"atc.listening","log_level":1,"data":{"debug":"127.0.0.1:8079","http":"0.0.0.0:8080"}}
Na razie zatrzymaj serwer, ponieważ jeszcze kilka rzeczy musi zostać skonfigurowanych.
Uruchom Robotnika Concourse CI.
sudo concourse worker \
--work-dir /opt/concourse/worker \
--tsa-host 127.0.0.1 \
--tsa-public-key /opt/concourse/tsa_host_key.pub \
--tsa-worker-private-key /opt/concourse/worker_key
Powyższe polecenie zakłada, że TSA działa na localhost i nasłuchuje na domyślnym porcie 2222
.
Chociaż sieć i proces roboczy Concourse można łatwo uruchomić za pomocą powyższych poleceń, zaleca się używanie Systemd do zarządzania serwerem.
Użycie usługi Systemd do zarządzania aplikacją zapewnia automatyczne uruchamianie aplikacji w przypadku awarii i podczas rozruchu. Serwer Concourse nie pobiera danych z żadnego pliku konfiguracyjnego, ale może uzyskać dostęp do danych ze zmiennych środowiskowych. Zamiast ustawiać globalne zmienne środowiskowe, utwórz nowy plik do przechowywania zmiennych środowiskowych, a następnie przekaż zmienne do Concourse CI za pomocą usługi Systemd.
Utwórz nowy plik środowiska dla strony Concourse.
sudo nano /opt/concourse/web.env
Wypełnij plik.
CONCOURSE_SESSION_SIGNING_KEY=/opt/concourse/session_signing_key
CONCOURSE_TSA_HOST_KEY=/opt/concourse/tsa_host_key
CONCOURSE_TSA_AUTHORIZED_KEYS=/opt/concourse/authorized_worker_keys
CONCOURSE_POSTGRES_USER=concourse
CONCOURSE_POSTGRES_PASSWORD=DBPassword
CONCOURSE_POSTGRES_DATABASE=concourse
CONCOURSE_BASIC_AUTH_USERNAME=admin
CONCOURSE_BASIC_AUTH_PASSWORD=StrongPass
CONCOURSE_EXTERNAL_URL=http://192.0.2.1:8080
W BASIC_AUTH
razie potrzeby zmień nazwę użytkownika i hasło . Upewnij się, że ścieżka do plików kluczy jest poprawna i upewnij się, że podana jest poprawna wartość nazwy użytkownika i hasła w konfiguracji bazy danych PostgreSQL.
Podobnie utwórz plik środowiska dla pracownika.
sudo nano /opt/concourse/worker.env
Wypełnij plik.
CONCOURSE_WORK_DIR=/opt/concourse/worker
CONCOURSE_TSA_WORKER_PRIVATE_KEY=/opt/concourse/worker_key
CONCOURSE_TSA_PUBLIC_KEY=/opt/concourse/tsa_host_key.pub
CONCOURSE_TSA_HOST=127.0.0.1
Ponieważ pliki środowiskowe zawierają nazwy użytkowników i hasła, zmień jego uprawnienia, aby inni użytkownicy nie mogli uzyskać do nich dostępu.
sudo chmod 600 /opt/concourse/*.env
Teraz utwórz nowego użytkownika dla Concourse, aby uruchomić środowisko sieciowe. Zapewni to działanie serwera WWW w izolowanym środowisku.
sudo useradd concourse
Przekaż własność użytkownika concourse nad katalogiem pliku CI Concourse.
sudo chown -R concourse:concourse /opt/concourse
Utwórz nowy plik usługi systemowej dla usługi internetowej Concourse.
sudo nano /etc/systemd/system/concourse-web.service
Wypełnij plik.
[Unit]
Description=Concourse CI web server
[Service]
Type=simple
User=concourse
Group=concourse
Restart=on-failure
EnvironmentFile=/opt/concourse/web.env
ExecStart=/usr/bin/concourse web
StandardOutput=syslog
StandardError=syslog
SyslogIdentifier=concourse_web
[Install]
WantedBy=multi-user.target
Zapisz i zamknij plik. Utwórz nowy plik usługi dla usługi pracownika Concourse.
sudo nano /etc/systemd/system/concourse-worker.service
Wypełnij plik.
[Unit]
Description=Concourse CI worker process
[Service]
Type=simple
Restart=on-failure
EnvironmentFile=/opt/concourse/worker.env
ExecStart=/usr/bin/concourse worker
StandardOutput=syslog
StandardError=syslog
SyslogIdentifier=concourse_worker
[Install]
WantedBy=multi-user.target
Serwis internetowy i roboczy można teraz uruchomić bezpośrednio.
sudo systemctl start concourse-web concourse-worker
Aby umożliwić procesowi roboczemu i procesowi internetowemu automatyczne uruchamianie się podczas uruchamiania, uruchom następujące czynności.
sudo systemctl enable concourse-worker concourse-web
Aby sprawdzić status usług, uruchom następujące polecenie.
sudo systemctl status concourse-worker concourse-web
Jeśli usługa nie została uruchomiona lub jest w FAILED
stanie, usuń pamięć podręczną z /tmp
katalogu.
sudo rm -rf /tmp/*
Uruchom ponownie usługi.
sudo systemctl restart concourse-worker concourse-web
Zauważ, że tym razem usługi zostały uruchomione poprawnie. Dane wyjściowe po zweryfikowaniu statusu usług będą podobne do poniższych.
[user@vultr ~]$ sudo systemctl status concourse-worker concourse-web
● concourse-worker.service - Concourse CI worker process
Loaded: loaded (/etc/systemd/system/concourse-worker.service; enabled; vendor preset: disabled)
Active: active (running) since Sat 2017-08-26 07:27:37 UTC; 55s ago
Main PID: 3037 (concourse)
CGroup: /system.slice/concourse-worker.service
└─3037 /usr/bin/concourse worker
Aug 26 07:27:42 vultr.guest concourse_worker[3037]: {"timestamp":"1503732462.934722900","source":"tsa","message":"t...""}}
Aug 26 07:27:42 vultr.guest concourse_worker[3037]: {"timestamp":"1503732462.941227913","source":"guardian","messag...0"}}
...
● concourse-web.service - Concourse CI web server
Loaded: loaded (/etc/systemd/system/concourse-web.service; enabled; vendor preset: disabled)
Active: active (running) since Sat 2017-08-26 07:27:37 UTC; 55s ago
Main PID: 3036 (concourse)
CGroup: /system.slice/concourse-web.service
└─3036 /usr/bin/concourse web
Aug 26 07:27:57 vultr.guest concourse_web[3036]: {"timestamp":"1503732477.925554752","source":"tsa","message":"tsa...ve"}}
Aug 26 07:28:02 vultr.guest concourse_web[3036]: {"timestamp":"1503732482.925430775","source":"tsa","message":"tsa...ve"}}
...
Hint: Some lines were ellipsized, use -l to show in full.
Po uruchomieniu serwera można uzyskać dostęp do interfejsu internetowego Concourse CI, przechodząc do http://192.0.2.1:8080
dowolnej przeglądarki. Zaloguj się przy użyciu nazwy użytkownika i hasła podanych w pliku środowiska.
Aby połączyć się z serwerem za pomocą Fly, uruchom następujące polecenie.
fly -t my-ci login -c http://192.0.2.1:8080
Powyższe polecenie służy do początkowego logowania do serwera. -t
służy do podania nazwy docelowej. zastąp my-ci
dowolną żądaną nazwą docelową. Powyższe polecenie zaloguje się do domyślnego zespołu main
. Poprosi o nazwę użytkownika i hasło podane w pliku środowiska.
Dane wyjściowe będą wyglądać następująco.
[user@vultr ~]$ fly -t my-ci login -c http://192.0.2.1:8080
logging in to team 'main'
username: admin
password:
target saved
Docelowy login zostanie zapisany na jeden dzień. Po tym wygasa.
Aby natychmiast się wylogować.
fly -t my-ci logout
Fly może być używany do logowania się na serwerze poza siecią, ale tylko wtedy, gdy serwer ma publiczny adres IP i jest dostępny z zewnątrz sieci. Pliki binarne dla systemu Windows lub MacOS można pobrać z witryny pobierania lub z internetowego interfejsu użytkownika serwera.
Loginy i inne informacje przesyłane przez internetowy interfejs użytkownika do serwera Concourse nie są zabezpieczone. Połączenie nie jest szyfrowane. Odwrotny serwer proxy Nginx można skonfigurować za pomocą bezpłatnego SSL Let's Encrypt.
Zainstaluj Nginx.
sudo apt -y install nginx
Uruchom Nginx i włącz automatyczne uruchamianie podczas uruchamiania.
sudo systemctl start nginx
sudo systemctl enable nginx
Dodaj repozytorium Certbot.
sudo add-apt-repository --yes ppa:certbot/certbot
sudo apt-get update
Zainstaluj Certbot, czyli aplikację kliencką Let's Encrypt CA.
sudo apt -y install certbot
Uwaga : Aby uzyskać certyfikaty z Let's Encrypt CA, domena, dla której mają być generowane certyfikaty, musi być skierowana w stronę serwera. Jeśli nie, dokonaj niezbędnych zmian w rekordach DNS domeny i poczekaj na propagację DNS przed ponownym żądaniem certyfikatu. Certbot sprawdza urząd domeny przed podaniem certyfikatów.
Wygeneruj certyfikaty SSL.
sudo certbot certonly --webroot -w /var/www/html -d ci.example.com
Wygenerowane certyfikaty prawdopodobnie będą przechowywane w /etc/letsencrypt/live/ci.example.com/
katalogu. Certyfikat SSL będzie przechowywany jako, fullchain.pem
a klucz prywatny będzie przechowywany jako privkey.pem
.
Ważność certyfikatów Let's Encrypt wygasa za 90 dni, dlatego zaleca się automatyczne odnawianie certyfikatów za pomocą cronjobs. Cron to usługa systemowa służąca do wykonywania zadań okresowych.
Otwórz plik zadania cron.
sudo crontab -e
Dodaj następujący wiersz na końcu pliku.
30 5 * * * /usr/bin/certbot renew --quiet
Powyższa praca crona będzie wykonywana codziennie o 5:30. Jeśli certyfikat wygasa, zostanie automatycznie odnowiony.
Utwórz nowy wirtualny host.
sudo nano /etc/nginx/sites-available/concourse
Wypełnij plik.
server {
listen 80;
server_name ci.example.com;
return 301 https://$host$request_uri;
}
server {
listen 443;
server_name ci.example.com;
ssl_certificate /etc/letsencrypt/live/ci.example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/ci.example.com/privkey.pem;
ssl on;
ssl_session_cache builtin:1000 shared:SSL:10m;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers HIGH:!aNULL:!eNULL:!EXPORT:!CAMELLIA:!DES:!MD5:!PSK:!RC4;
ssl_prefer_server_ciphers on;
access_log /var/log/nginx/concourse.access.log;
location / {
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_pass http://localhost:8080;
proxy_read_timeout 90;
proxy_redirect http://localhost:8080 https://ci.example.com;
}
}
Uwaga : Zamień ci.example.com
na rzeczywistą domenę.
Aktywuj plik konfiguracyjny.
sudo ln -s /etc/nginx/sites-available/concourse /etc/nginx/sites-enabled/concourse
Edytuj plik środowiska utworzony dla sieci concourse.
sudo nano /opt/concourse/web.env
Zmień wartość, CONCOURSE_EXTERNAL_URL
a także dodaj jeszcze dwa wiersze na końcu pliku.
CONCOURSE_EXTERNAL_URL=https://ci.example.com
CONCOURSE_BIND_IP=127.0.0.1
CONCOURSE_BIND_PORT=8080
Zapisz plik i uruchom ponownie Concourse Web, Worker i Nginx.
sudo systemctl restart concourse-worker concourse-web nginx
Wszystkie dane wysyłane do i z przeglądarki są teraz zabezpieczone szyfrowaniem SSL.
Przeczytaj blog, aby w najprostszy sposób poznać różne warstwy w architekturze Big Data i ich funkcjonalności.
Chcesz zobaczyć rewolucyjne wynalazki Google i jak te wynalazki zmieniły życie każdego człowieka dzisiaj? Następnie czytaj na blogu, aby zobaczyć wynalazki Google.
13 komercyjnych narzędzi do ekstrakcji danych z Big Data
Whatsapp w końcu uruchomił aplikację Desktop dla użytkowników komputerów Mac i Windows. Teraz możesz łatwo uzyskać dostęp do Whatsapp z systemu Windows lub Mac. Dostępne dla Windows 8+ i Mac OS 10.9+
Energia jądrowa jest zawsze pogardzana, nigdy jej nie szanujemy z powodu przeszłych wydarzeń, ale nie zawsze jest zła. Przeczytaj post, aby dowiedzieć się więcej na ten temat.
Koncepcja autonomicznych samochodów, które wyjadą na drogi za pomocą sztucznej inteligencji, to marzenie, które mamy już od jakiegoś czasu. Ale pomimo kilku obietnic nigdzie ich nie widać. Przeczytaj ten blog, aby dowiedzieć się więcej…
Wzrasta liczba ataków ransomware, ale czy sztuczna inteligencja może pomóc w radzeniu sobie z najnowszym wirusem komputerowym? Czy AI jest odpowiedzią? Przeczytaj tutaj, wiedz, że sztuczna inteligencja jest zmorą lub zgubą
Sztuczna inteligencja nie jest dla ludzi nową nazwą. Ponieważ sztuczna inteligencja jest włączona do każdego strumienia, jednym z nich jest opracowywanie narzędzi zwiększających ludzką wydajność i dokładność. Skorzystaj z tych niesamowitych narzędzi uczenia maszynowego i uprość swoje codzienne zadania.
Zawsze potrzebujemy Big Data Analytics do efektywnego zarządzania danymi. W tym artykule omówiliśmy kilka technik analizy Big Data. Sprawdź ten artykuł.
Czy jesteś również ofiarą ataków DDOS i nie masz pewności co do metod zapobiegania? Przeczytaj ten artykuł, aby rozwiązać swoje pytania.