Kategoria: Linux

Urząd Grid Computing przy Wirtualne środowisko - część 4

W Steven Lloyd Watkin , piątek 04 grudzień 2009 23:59

Wprowadzenie

Pracuję w firmie, w której prowadzimy wiele miejsc pracy, przetwarzania wsadowego milionów rekordów danych każdego dnia i myślałam ostatnio o komputerach, które siedzą każdy dzień nic nie robi przez kilka godzin. Czy nie byłoby dobrze, gdybyśmy mogli korzystać z tych maszyn wzmacnia moc naszego systemu? W tym zbiorze artykułów mam zamiar sprawdzić potencjalne korzyści z zatrudniania biura sieci za pomocą środowiskach wirtualnych.

W części 3 stworzyliśmy maszynę wirtualną przetwarzania i skonfigurować system Windows maszyn na bezczynność wymiarze czasu pracy.

Uruchamianie najnowszych

Niewątpliwie po utworzeniu firmy pracowników logika się zmieni, zostaną znalezione błędy, szybszy bardziej efektywnego kodu będą produkowane w ten sposób pozostawiając swoich pracowników siedzieli wokół przetwarzania danych przy użyciu kodu stary śmierdzący . Jak więc mamy pewność, że zawsze jesteśmy z wykorzystaniem najnowszych i najlepszych wersji naszego przetwarzania skryptów?

Istnieje kilka prostych sposobów, bardzo łatwo możemy to zrobić, podstęp, jednak jest ograniczenie przetwarzania danych i ruchu sieciowego w realizacji tego celu. Zacznijmy od najprostszych rozwiązań i poprawy powoli w ciągu kilku powtórzeń.

Pierwszym sposobem jest po prostu skontaktować się z naszym serwerem kontroli pracy (poprzez samba, FTP lub podobnych) i ciągnąć w dół najnowszej wersji kodu. Nie bardzo wydajny, ale to nie praca. Pozwala poprawić, że się trochę, jak na temat tworzenia skryptów i korzystania z rsync że za każdym razem zamiast? Ewentualnie co o wprowadzenie naszych najnowszych przetwarzania skryptu w subversion sprawdzanie kodu na początku, a potem po prostu aktualizacji naszego kodu w każdej serii ( svn update )?

W końcu możemy skończyć z skrypt (przez cron co 10 minut), która wygląda tak proste, jak ten:

  #! / Bin / sh
 jeśli ps ax | grep-v | grep php > / dev / null
 następnie
     echo "Praca jest przetwarzanie, zjazd"
 więcej
     echo "Praca nie jest uruchomiony, już teraz"
     cd / ścieżka / do / pracy / kopiowania
     svn update
     yourJobProcessingScript.php php
 fi 

Teraz możemy być pewni, że z każdego biegu jesteśmy zdecydowanie zainstalowany najnowszy kod. Mamy zapewnienie tego poprzez aktualizację bazy kod za każdym razem wykonujemy biegać i ograniczenie ruchu w sieci tylko przez przeniesienie pliku różnic w naszej sieci.

W mojej instalacji demonstracyjnych, zrobiłem dokładnie tak jak powyżej. Subversion został zainstalowany na moim serwerze realizacja zadań i po prostu ściągnął najnowszych od "pracownika" oddział przy użyciu 'svn update'. Dodałem też tag numer wersji do przetwarzania skryptu, który został zwrócony do bazy danych jako część przychodów z wyników. W ten sposób mogę zobaczyć, że mój kod był aktualizowany za każdym razem kopiowane moim pniu w branży, tj. pracownika, że ​​jestem zdecydowanie z najnowszej skrypt przetwarzania.

Korzystając z najnowszych danych

Jeśli realizacja zadań sprawia, że ​​wykorzystanie źródeł danych potem w pewnym momencie te będą aktualizowane zbyt. Jeśli dzwonisz do źródeł danych na podstawie bardzo rzadko będziesz zalewają sieć ruchu, jak tylko swoich pracowników zaczną wniesienia wszystko na postoju. Dla mojego rozwiązania postanowiłem, że chcę przenieść źródeł danych w obrębie z moim maszyn wirtualnych.

Hold jesteś tam konie! Co zrobić, jeśli źródła danych są ogromne? Cóż, to naprawdę jest to w przypadku danych, ile mówimy? Może to być bardziej opłacalne zainstalować dodatkowy dysk twardy na większy każdym komputerze niż na zakup dodatkowego serwera przetwarzania. Jest to kwestia budżetu i jest do działalności na decyzję. To być może, że źródła danych są tak duże, że jej po prostu niemożliwe do utrzymania, że ilość danych w maszynach pracownika. W takim przypadku co byś zrobił? Cóż możemy spojrzeć na powołanie lokalnego serwera danych, ale może to powodować problemy z siecią. W tym przypadku system sieci, takich jak ten może stać się realne, to w środowisku biurowym. Może to być również, że można spojrzeć na alternatywne strategie działa, na przykład tylko dzwoniąc do pracowników między godzina dwudziesta każdej nocy a 6 rano i / lub źródła danych wniosków przepustnicy.

Przechodząc powiedzmy, że nasze źródła danych do kwoty 100 GB danych. No tak to trochę danych do poruszania się po sieci aktualizacji. Jak możemy zapewnić, że mamy najnowsze kopię danych w tym przypadku? Rsync jest możliwe, ale osobiście uważam, uruchamiając źródłem najnowszych danych na serwerze realizacja zadań i skonfigurować w tym mistrzem w replikacji (z ładnym log długo bin) może być droga:

replikacji Przez ustawienie każdego z pracowników się jako niewolnik do aktualizacji kontroli pracy serwera do źródeł danych dotarły ładnie do pracowników bez ogromny wzrost aktywności sieciowej (to jest chyba wykonać duże uaktualnienie danych i wszystkich pracowników w kick na raz). Ten ma przewagę nad rsync tym, że nie dostanie długa przerwa przed każdą pracę, jak aktualizacje bazy danych, mysql demona na pracownika będzie stale aktualizować swoje dane a przetwarzanie jest kontynuowane.

W ten sposób mogę skonfigurować serwer demonstracji. Aby skonfigurować replikację I po instrukcji na stronie mySQL ( Konfigurowanie replikacji ) oraz w ciągu 20 minut miałem Inital pracownik replikacji kontrola pracy serwerów zbioru danych. Dla każdego dodatkowego pracownika ustawienia replikacji i procesu pracy za każdym razem kiedy VM został skopiowany.

Podsumowanie

W tej części artykułu przyjrzeliśmy jak łatwo i bezboleśnie to, aby utrzymać kod przetwarzania na bieżąco przez using rsync lub subverion (SVN) do pracy i zmniejszenia ruchu w sieci w tym samym time. Dyskutowaliśmy również o tym, jak zachować źródła danych informacji up-to-date, gdyż ze dotarły do ​​każdego z pracowników. W ten sposób obszar zapewnienie, że my mamy się z logiką biznesową i informacji w systemie sieci biurowych. Nie będzie oczywiście liczne alternatywy dla wykonywania tych zadań, ale tu były dwa proste przykłady, aby pokazać, jak łatwo rozwiązanie jest do zdobycia.

Następny raz

W końcowej części tej serii, o wdzięcznej nazwie Część 5 omówimy wdrażania tego systemu. Będę podsumować, czego się nauczyliśmy i co udało mi się stworzyć.

Urząd Grid Computing przy Wirtualne środowiska - Część 3

W Steven Lloyd Watkin , piątek 04 grudzień 2009 23:37

Wprowadzenie

Pracuję w firmie, w której prowadzimy wiele miejsc pracy, przetwarzania wsadowego milionów rekordów danych każdego dnia i myślałam ostatnio o komputerach, które siedzą każdy dzień nic nie robi przez kilka godzin. Czy nie byłoby dobrze, gdybyśmy mogli korzystać z tych maszyn wzmacnia moc naszego systemu? W tym zbiorze artykułów mam zamiar sprawdzić potencjalne korzyści z zatrudniania biura sieci za pomocą środowiskach wirtualnych.

W części 2 przyjrzeliśmy się pracy serwer będzie działał, a jak praca powinna być skonfigurowana w celu osiągnięcia największą ilość przetwarzania przy jednoczesnym zapewnieniu, że każde zadanie jest przetwarzane bez wątpienia.

Przygotowanie pracowników - lub serwera LIMP

Kolejnym krokiem w procesie jest utworzenie wirtualnej pracowników. Do tego mam zamiar używać instalacji CentOS pomocą VirtualBox. Mam zamiar zainstalować MySQL i PHP na serwerze, znany również jako Limp (NUX Li, m ySQL, P HP) Servera (może zrobiłem, że nazwa góry).

  • Instalacja VirtualBox na komputerze windows (zgodnie link)
  • Pobierz i zainstaluj CentOS (aktualna wersja 5.3) w utworzonych maszyn wirtualnych

Nie ma sensu mnie będzie to tam prawdopodobnie 1.000 tutoriali tam (ok, jest jeden: Tworzenie i Managing CentOS maszynę wirtualną w VirtualBox ). Ważne, aby pamiętać, przypuszczam, że jest to, że zadzwonił do mojego wirtualnego GridMachine maszyny.

Jeśli chodzi o moje wybory klienta do wirtualizacji systemów operacyjnych i go nie ma istotnych powodów, duży wybór dla każdego. VirtualBox jest coś, czego używać na moim domowym komputerze i jest obsługiwany przez trzy najważniejsze systemy operacyjne. Wybrałem CentOS jako dobry OS stabilny i używam go na własnym serwerze WWW. Jestem wielkim zwolennikiem odpowiednie narzędzia do pracy (choć jestem stosowania "użytkowania najszybszy i najłatwiejszy dla Ciebie" mentalności tutaj), więc jeśli system operacyjny X działa kod szybsze i bardziej efektywne wykorzystanie, że zamiast:)

Ważne jest upewnić się, że VM używa DHCP, w przeciwnym razie dla każdej nowej maszyny wirtualnej musiałyby być skonfigurowany oddzielnie, która jest coś, czego nie want.By wykorzystaniem DHCP nie musimy konfigurować ustawienia sieci indywidualnie do maszyn pracownika, DHCP strony obecnie IP dla Ciebie. Dlatego można skopiować maszyny wirtualnej o biurze nie martwiąc się o ustawienia każdego z nich up (zwiększa skalowalność i zmniejsza administracji pracownika).

Proces należy dążyć do osiągnięcia byłoby uzyskać nowy fizyczny komputer, zainstalować VirtualBox, a następnie prawie uruchomienie wirtualnego obrazu bez wielu innych. To może być mądry, aby ustawić wszystkich pracowników w innej podsieci, tak aby można przynajmniej zobaczyć, jak wiele komputerów z systemem. Musisz także skonfigurować komputery w długoterminową dzierżawę lub nieograniczonej dzierżawy DHCP.

Jak uruchomić Praca na pracownika

Jest to interesujący obszar i jest kilka ważnych metod przetwarzania miejsc pracy na pracownika. Tu po prostu omówić dwie najbardziej oczywiste:

  • Nieustannie działa skrypt: Skrypt, jest to skrypt lub skrypt PHP jest wykonywana raz na pracownika i działa w ramach nieskończoną pętlę. Mam promocje tej metody jako jednego wypadku scenariusza i potencjalnie swoich pracowników przestanie działać bez jakiejś interwencji.
  • Cron w oparciu wykonywania skryptu: co X minut demona cron rozpoczyna wezwanie do skryptu, aby rzeczy się dzieje. Bez pewnej kontroli może prowadzić do wielu, wielu kopii skryptu pracownik pracuje.

Moja decyzja była iść z cron, który rozpoczyna się skrypt co 10 minutes. My skrypt wykonuje następujące zadania:

  1. Pobierz listę procesów i grep to dla "php". Jeśli nie znaleziono następnie kontynuować.
  2. Call kod pracy, w moim przypadku byłoby to coś w oparciu PHP
  3. Pracownik kończy skrypt run
  4. Gotowy do ponownie na następne wywołanie odpowiednich

Mój skrypt wygląda tak:

  #! / Bin / sh
 jeśli ps ax | grep-v |> php grep / dev / null
 następnie
     echo "Praca jest przetwarzanie, zjazd"
 więcej
     echo "Praca nie jest uruchomiony, już teraz"
     yourJobProcessingScript.php php
 fi 

Uwaga: echo są prawie całkowicie pozbawione sensu, ale może pomóc kolejna osoba, która przychodzi, aby spróbować ich edycji.

To kończy ustawić pracownika maszynie wirtualnej, szybkie, proste i łatwe do kopiowania do każdego elementu sprzętu, który jest odbierany. "Inteligencji" systemu sieci naprawdę nie jest w wizualizowane OS, jej wszystko zrobić z kodem stworzony do pracy procesu konfiguracji pracy, i do zapewnienia, że ​​praca przebiega w stosownych przypadkach (np. gdy komputer jest bezczynny ).

Konfigurowanie systemu Windows do zainicjowania pracowników

Pierwszym zadaniem jest wypracowanie polecenia konieczne do uruchomienia maszyny wirtualnej z windows linii poleceń. Jeśli zainstalowałeś VirtualBox w domyślnej lokalizacji i masz nazwie firmy GridMachine pracownik to polecenie musi doładować pracownik jest:

  "C: \ Program Files \ Sun \ VirtualBox \ VBoxManage.exe" GridMachine startvm 

Jednak, aby uruchomić skrypt w "głowy" państwa musimy użyć:

  "C: \ Program Files \ Sun \ VirtualBox \ VBoxHeadless.exe" startvm GridMachine-- VRDP = off 

Spowoduje to uruchomienie maszyny wirtualnej bez GUI i pozostawić do zapisywania stanu wdziękiem. Drugi argument wyłącza RDP więc nie jest to sprzeczne z okna RDP, lub przekazać wiadomość o nasłuchuje na porcie 3389. Nazwę maszyny wirtualnej jest wielkość liter!

Następnie musimy ustawić okien do inauguracją naszej VM pracownikiem, gdy maszyna pozostawała w bezruchu. Aby to zrobić (w systemie Windows XP) musisz go Start -> Wszystkie Programy -> Akcesoria -> Narzędzia systemowe -> Zaplanowane zadania jak poniżej:

zaplanowanych zadań

Następnie kliknij na "Dodaj zaplanowane zadanie", a następnie przejdź do dodać własny program. Przejdź do skryptu VBoxManage i kliknij OK. Harmonogram zadań dla każdej z opcji (my to zmienić w ciągu minuty) i kontynuować. Po pominięciem następnego ekranu Windows zapyta Cię, który chcesz uruchomić to zadanie, polecam albo "Administrator" lub tworzenia nowego uprzywilejowanego użytkownika. Pamiętaj, że nie chcemy ingerować w standardowe konto personelu na komputerze w dowolnym momencie. Kliknij przycisk Dalej i sprawdzić pokaż zaawansowane opcje do tego zadania.

Do końca biegu tekstowym dodać nasz "GridMachine startvm 'string i zapewnia, że działał tylko gdy jest zalogowany na stronie odznacz. Odwiedź obok Harmonogram zadań i harmonogram zmian spadek w dół do opcji "stanie bezczynności", wybierz czas chcesz, aby komputer był bezczynny przed przejściem do następnej karty.

Na koniec usuń zaznaczenie opcji, która stanowi Zatrzymaj zadanie, jeśli nie został uruchomiony kwota X czasu, ale należy zaznaczyć opcję Zatrzymaj zadanie, gdy urządzenie nie jest bezczynny.

harmonogram

To wszystko to dla przyjmującego okna konfiguracji!

Podsumowanie

W tej części musimy stworzyć maszynę wirtualną do akt pracownika, jak również sposób, w jaki nazywamy i wykonywać skrypty przetwarzanie zadania (dla siebie skrypt PHP). Stąd przyjrzymy się, jak skonfigurować nasze kopie systemu Windows do uruchomienia maszyny wirtualnej w trybie bez głowy, gdy komputer będzie bezczynny, i zapisać swój stan, gdy użytkownik powraca do korzystania z urządzenia. Mam nadzieję, że w tym momencie widzisz, jak łatwo jest stworzenie takiego systemu, a są swędzenie, aby uzyskać pewne eksperymenty samemu!

Następny raz

W części 4 zajmiemy się korzystać z narzędzi w celu zapewnienia, że korzystasz z najnowszej wersji kodu i źródeł danych, tak aby uzyskane wyniki są zawsze na bieżąco z najnowszymi informacjami i logiki biznesowej.

Urząd Grid Computing przy Wirtualne środowiska - Część 1

W Steven Lloyd Watkin , piątek 04 grudzień 2009 23:23

Wprowadzenie

Pracuję w firmie, w której prowadzimy wiele miejsc pracy, przetwarzania wsadowego milionów rekordów danych każdego dnia i myślałam ostatnio o komputerach, które siedzą każdy dzień nic nie robi przez kilka godzin. Czy nie byłoby dobrze, gdybyśmy mogli korzystać z tych maszyn wzmacnia moc naszego systemu? W tym zbiorze artykułów mam zamiar sprawdzić potencjalne korzyści z zatrudniania biura sieci za pomocą środowiskach wirtualnych.

W PHP programista mam zamiar używać narzędzi, które mogę używać każdego dnia a mianowicie, Linux, MySQL , PHP, VirtualBox i Subversion (SVN). Jednak mam nadzieję, że ta książka będzie dostosować się do innych języków i technologii tak dobrze.

I zapewnia rozwiązanie będzie bardzo luźno oparty na rodzaj obróbki będziemy musieli osiągnąć to jednak nie może być prawda przez cały artykuł, jak będę coś zmienić dla uproszczenia, lub do tworzenia bardziej interesujących scenariuszy użycia.

Te środowiskach wirtualnych będzie działał na Windows maszyn od tego, co większość biur uruchomić. Przetwarzanie, że maszyny biurowe zrobić nie powinno kolidować z pracowników przy użyciu tych maszyn, nie powinny wymagać konserwacji na maszynie, i łatwo można rozmieścić na nowe maszyny w miarę ich udostępniania. Ponadto, nowe maszyny wirtualne nie powinno wymagać dodatkowej konfiguracji, ponieważ znacznie zmniejsza skalowalność i łatwość, z jaką systemu sieci może zostać przedłużony.

Dlaczego Wdrażanie Grid Computing Office?

Po pierwsze możesz pomyśleć, dlaczego nie korzystać z zasobów, takich jak "cloud computing" Amazon EC2 platformy ? No powodów może być kilka, na przykład:

  • Nie będzie powierzyć niektóre dane do środowiska cloud computing
  • Nie można umieścić pewne dane do środowiska cloud computing z powodów prawnych (np. dane opuszczania kraju), co może z przyczyn prawnych, np. rekordy NHS.
  • Chcesz, aby utrzymać jednostek przetwórczych w pobliżu i mieć pełną kontrolę nad sprzętem za
  • Nie masz funduszy projektu do uruchomienia wystąpień chmura
  • Twoje biuro nie ma połączenia z internetem, a tym samym nie można skorzystać z zasobów chmura
  • Nie lubisz deszcz, chmury sugerują, deszcz, dlatego też trzymać się z dala

Jestem pewien, że lista może być kontynuowany, ale myślę, że wystarczy na teraz.

Zalety Grid Computing Office

No, ale to trochę matematyki (w prawdziwym stylu i fizyka pozwala poczynić pewne założenia, zamiatanie). Wyobraź sobie, że duży silny serwer z systemem przetwarzania 100 miejsc pracy dziennie. W biurze masz 50 maszyn, które są bezczynne przez 16 godzin dziennie, każdy z tych maszyn jest 10% tak potężny jak najprościej, przetwarzanie sever. (Wszystkie wyniki tutaj są zaokrąglane do niedoceniania wzrost wydajności).

Tak więc, 1 maszyna * 10% * moc 2 / 3 czasu = 0,067 tj. 1 przetwarzania pulpitu w czasie bezczynności może przetworzyć 6 pełnych etatów na dzień.

Jeśli teraz to się skalę trwa 15 komputerów do procesu bezczynności jak wiele miejsc pracy dziennie jako serwer główny przetwarzanie nie.

Tak więc w naszym udawać, że urząd 50 maszyn możemy zwiększyć moc przetwarzania od 1 do 4 serwer pełny serwery przetwarzania lub możemy być przetwarzania 400 miejsc pracy dziennie zamiast 100.

Zauważ, bez inwestycji w nowy sprzęt Twoja firma ma tylko zwiększył swoją zdolność przetwarzania wsadowego 4 razy! Potencjalnie masz zamiar zwiększyć swoje zużycie energii, ale z większości środowisk biurowych byłem do maszyn ogół pozostawia na noc, tak, więc można zobaczyć to jako zielone inicjatywy.

Inne zalety również oznaczać, że inwestycje w nowe (lub aktualizacji) przetwarzania serwerów może zostać opóźnione w przypadku maszyn biurowych są wystarczające i że jak poprawić moc swojej maszyny biurowe biuro firmy siatki automatycznie staje się potężniejsza.

Technologie

Co jest potrzebne? (Lub bardziej poprawnie, co nie używam):

  • Maszyny biurowe oczekiwania (w moim przypadku części okna starego laptopa z XP)
  • VirtualBox (lub innego oprogramowania klienckiego wirtualizacji)
  • Maszyny wirtualnej z PHP, MySQL running prowadzenie wyciąć OS, dzwonię te moje serwery Limp:)
  • Praca uruchomić
  • Serwer pracy (może być inna maszyna wirtualna gdzieś)

Typowy Praca

Rodzajów pracy, że system ten jest przeznaczony do uruchamiania jest następująca:

  • System odbiera dane w postaci listy, na których musimy mecz i zwróci wyniki
  • Dopasowanie polega na sprawdzeniu / wyszukiwanie kilka (dość statyczny) źródeł danych
  • Wyniki ze źródeł danych może wymagać dodatkowej weryfikacji, łączenia, sprawdzenie dodatkowych źródeł danych w odpowiedzi na wyniki
  • Dane wrócił z rekordy pasujące, w pełni zweryfikowanych i przetworzonych
  • Każdy rekord w pracy jest niezależny od pozostałych

Więc w zasadzie patrzymy na uruchamianie zadań, które wymagają wielu wyszukiwania bazy danych, a niektóre pożerające liczby, dość typowy scenariusz w środowisku biznesowym.

Grid rozwiązania są nie tylko korzystne dla przetwarzania zadania tego typu. Zasadniczo, każdy proces, który może być podzielony na niezależne jednostki mogą być prowadzone równolegle. Zobacz ten wikipedia przykładów i więcej informacji: Grid Computing , ale kilka znanych przykładów Seti @ Home i BIONC . Istnieją ramy dla prowadzenia sieci komputerowych, a te są również warto przeanalizować.

Co osiągniemy?

Pod koniec tych artykułów mam nadzieję, pokazać, że wdrażanie sieci biura nie musi być bardzo kosztowna i czasochłonna. Mam zamiar omówić:

  • Konfigurowanie systemu kontroli pracy, konfiguracja pracy
  • Tworzenie właściwego przetwarzania wirtualnej maszyny
  • Jak skonfigurować system na komputerze z systemem Windows
  • Zapewnienie korzystania z najnowszych i danych
  • Wdrożenie i benchmarkingu
  • Patrząc w przyszłość

Będę budynku (ok zbudowany, to napisałem to) wniosek przykład sprawdzenie pojęć na lokalnym komputerze w systemie Windows XP i moje "GridMachine" maszyny wirtualnej. Serwer kontroli pracy będzie moim głównym maszyny, która działa Fedora 11 .

To jest w żaden sposób nie ma na celu zademonstrowanie w pełni funkcjonalny solidny system, jego myśli bardziej demonstracji i dyskusji pokazano, że te rzeczy można osiągnąć w stosunkowo krótkim czasie i niewielkim kosztem. Prosimy o przysyłanie wszelkich uwag, poprawki lub ulepszenia i ja staram się utrzymać ten artykuł aktualizacji do meczu.

Następny raz

W części 2 Zacznę od spojrzenia na system kontroli pracy, i sprawdzić, w jaki miejsc pracy powinny być skonfigurowane w celu osiągnięcia największą ilość przetwarzania przy jednoczesnym zapewnieniu, że każde zadanie jest przetwarzane bez wątpienia.

Urząd Grid Computing przy Wirtualne środowiska - Część 2

W Steven Lloyd Watkin , piątek 04 grudzień 2009 23:23

Wprowadzenie

Pracuję w firmie, w której prowadzimy wiele miejsc pracy, przetwarzania wsadowego milionów rekordów danych każdego dnia i myślałam ostatnio o komputerach, które siedzą każdy dzień nic nie robi przez kilka godzin. Czy nie byłoby dobrze, gdybyśmy mogli korzystać z tych maszyn wzmacnia moc naszego systemu? W tym zbiorze artykułów mam zamiar sprawdzić potencjalne korzyści z zatrudniania biura sieci za pomocą środowiskach wirtualnych.

W części 1 dałem przegląd systemu i technologii, których będę używał, jak również omówione niektóre z potencjalnych powodów, dla których chcesz utworzyć sieci biurowych.

Job Control

Jeśli masz zamiar zostać uruchomiony pracy wtedy będziemy potrzebować jakiś sposób nimi zarządzać. System kontroli pracy (na serwerze pracy) musi być naprawdę dobrze przemyślane zanim nawet próby uruchomienia sieci biurowych. Więc po pierwsze, jakie są zadania dla systemu kontroli pracy:

  • Rozdaj pracy na wniosek pracowników
  • Powiedz pracowników, jaki typ zadań wykonywanych
  • Track jobs
  • Ensure that jobs are only run once
  • Provide job data to workers, or at least tell them where to get it

The system also needs to be extensible, a solution that works for now in a single case may be extended to run several types of jobs as the business sees the worth in a grid solution. For example, jobs may gain priorities, more than one job type may exist (ie several code bases), eventually you may even run several different worker machines that are optimised for each type of job (although that does move away from the 'generic worker' idea). Always try to think about the future when developing systems, a short term vision can lead to longer term frustration and increased development time.

Job Server

We're going to need somewhere to control our jobs from, this should be the only system in your grid that has a fixed resource locator, be that an IP address, host name, URL (using internal DNS), etc. This is because the workers need to know where to look for jobs, workers need to find the job control system (not the job control system find the workers).

The job server itself doesn't really have a complicated task (in a basic system anyhow), it needs to store a list of jobs, hand out jobs, receive results, and subsequently store them for later retrieval. How these parts (such as 'hand out jobs') are defined can be very basic. Later on we can extend the system to include an administration interface to add, edit, delete, suspend jobs but this is beyond this exercise.

There is no reason whatsoever then that your job server could not be a virtual machine running within your main processing server provided it doesn't drain too many resources from it. The job server however does need high availability, if it goes down on a Friday evening you're going to lose a whole weekend of processing, potentially costing you a couple of weeks worth of processing time (when compared to your main processing server alone). You may want to consider putting your job server on a load balanced environment for high availability.

Basic Setup

The basic setup for our job server will consist of what I'm calling one of my LiMP servers (that is Li nux, m ySql, P HP). The code running on the workers will actually work out what jobs it can run by interacting with with job control system databases. Later on we could create a web service and actually hand out jobs rather than having the workers do the hard work themselves, but for now we'll continue using the KISS principle (Keep it Simple, Stupid!).

So, lets create three mySQL tables to deal with jobs. These will be `jobs`, `jobRecords`, and `jobResults`.

jobs table Here I'm using SQL Buddy a great little alternative to phpMyAdmin just because its easier to install on centOS (for others see: 10 Great alternatives to phpMyAdmin )

This table consists of 5 simple fields,

  • id: Uniquely identify the job
  • name: Could be a client reference, or any number of other identifiers
  • Status: You need to know where the job is at, eg
    • 0: Not started
    • 1: Picked up
    • 2: Completed
  • started_by: Who's started doing the job? This isn't entirely required but is a nice to have. I'd suggest tracking workers by their IP address on your network
  • started_at: When did the worker start the job? By tracking jobs that have not completed within X amount of time we know we need to pick up the job once again and start processing by another worker. Workers could stop processing/go offline for any number of reasons, power failure, crash, network loss, etc.

It is easy how this table could be extended with a few additional fields to allow for statistics tracking, a finish time column to see how long the job took, a counter to see how many workers picked up the job (obviously this needs to tend to 1), job priority, the list can go on and on. In more complex job scenarios it would be possible to specify how much memory the worker would need access to (and therefore only use suitable workers), or even what type of worker would be required.

Lets add a few example jobs:

example jobs

The next table again is quite simple to understand, these are our job records. They are linked to the main jobs table by a column `jobs_id`. The make up of this table very much depends on the data that you need to supply to your workers, lets make a very simple example where we have four columns:

  • id: ID of the record
  • name: Person's name
  • address: Person's address
  • jobs_id: The job ID that this record is linked to

The third and final table consists of a results table, it has much the same make up as our records table, and with the addition of some columns could be part of the records table:

  • job_record_id: Link the result to the job table
  • result: The result data

…and that's all you need for job control! (albeit at a very basic level) In my case I'm pointed to another table where my data to process was located, but this could just as easily been a file, parameters to run simulation code, you name it.

Selecting a job

Jak stwierdzono wcześniej, pracowników zrobimy zarządzania zadaniami dla nas teraz, więc wszyscy musimy naprawdę jest znaleźć pracę, która wymaga przetwarzania i uzyskać informacje. Jak to zrobić? Dobrze wybrać nasze kryteria wyboru pracy i szukać pracy w SQL zrobiłem następujące brzmienie:

  1. Podjęcie jakichkolwiek zadań, które nie są oznaczone jako kompletne, ale z naszych pracowników i ich reset (__ME__ zastąpić identyfikator, najłatwiej byłoby adres IP):
      UPDATE `pracy` SET `status` = 0 WHERE `status` = 1 i "started_by` = __ME__; 
  2. Korzystanie z naszych kryteriów wyboru pracy, wyboru pracy i powiedzieć, że ten system kontroli pracownik ma do czynienia z tym:
      UPDATE `pracy` SET `status` = 1, "started_by` = __ME__, `started_at` = NOW () WHERE `status` = 0 lub
     (`Status` = 1 I `started_at`> DATE_SUB (NOW (), przedział X HOUR)) ORDER BY `id` ASC; 

    Chwytając miejsc pracy, które nie zwróciło wyników w kwocie X czasu mamy pewność, że wszystkie zadania są uruchamiane w razie awarii lub pracownik będzie AWOL.

  3. Następnie pobieramy po szczegóły pracy rekordy siebie:
      SELECT * FROM `pracy` WHERE `started_by` = __ME__ LIMIT 1;
     SELECT * FROM `job_records` WHERE `id` = __JOBID__; 

Po zakończeniu pracy możemy wstawić nasze dane i zaznaczyć wynik pracy za kompletną. Pamiętaj, jak praca może zawiesić / wznowić w każdej chwili umożliwić pewną stabilność w skrypcie. Możliwe, że zadanie zawiesza w połowie aktualizacji systemu kontroli pracy, więc sprawdzenie liczby rekordów w pracy i liczbę wyników zapisana w systemie kontroli pracy byłoby mądre posunięcie.

Ponadto, choć ten pokazuje, jak miejsca pracy mogą być wybierane i zarządzane z SQL-ramkę zapytania należy być naprawdę abstrahując od Ciebie pracy tak, że jeśli zdecydujesz się przejść na korzystanie z usług internetowych, system plików, XML , lub inny szereg systemów nie wpłynie kod powyżej.

Konfiguracja pracy

Kolejny aspekt, należy rozważyć, jest wielkości zadania i konfiguracji. Grając w konfiguracji pracy możemy strike doskonałą równowagę między szybkością, procesu replikacji i niezawodności. Weź parę szeĹ> ciu przypadkĂłw scenariuszy:

  1. Praca trwa od 1 dzień każdego uruchomić: Oznacza to, że pracownicy potrzebują 15 dni na proces każdej pracy (pamiętaj 10% mocy dla 2/3rds czasu). Oczywiście nie jest to mądry konfiguracji, rozmiar pracy jest zbyt duży! Zajmie to co najmniej dwukrotność czasu, aby dostać pracę przetwarzane należy wstępnego pracownik go AWOL (czas, aby podnieść, że nie zwróciło w wyniku przerobu plus czas). W idealnym można mieć co najmniej jeden pełny praca łatwo usuwane przez koniec każdego długi okres bezczynności, w ten sposób można zachować miejsca pracy i ponad dolną, w najgorszym przypadku pracy zajmie dwa dni, aby proces ten powinien najpierw przejść brakuje.
  2. Praca trwa od 1 minuty do uruchomienia: Oznacza to, że pracownicy biorą około 15 minut do uruchomienia każdej pracy. O ile może początkowo wydawać idealną, można uzyskać dodatkowe przetwarzanie w czasie pracy na lunch, przerwy kawowe, spotkania itp. scenariusz ten obciąża innych obszarów systemu i wprowadza swoje własne problemy. Przykładowo, po pierwsze konfiguracji stosunek czasu przetwarzania zamierza iść w prawo w dół, tracąc tym samym skuteczność systemu. Twoja sieć będzie stale streaming informacji o pracy dla różnych pracowników frustrujące pracowników, którzy są dong ich codziennej pracy. Jesteś także zamiar umieścić więcej obciążenie serwera przetwarzanie zadań, ponieważ musi rozdać wiele, wiele małych kawałków pracy na bieżąco. Wreszcie, w tej sytuacji, jeśli serwer praca idzie w dół masz zamiar stworzyć ogromne zaległości w pracy, podczas gdy większe nieukończonego zadania może dalszego przetwarzania w błogiej nieświadomości, że serwer praca była w trudnej sytuacji.

W rzeczywistości nie będzie nikogo, idealne konfiguracji konfiguracji sieci, wiele zależy od dostępnych środków, rodzaj pracy, wymagane turnaround czasu pracy, możliwość pracy w sieci, i tak dalej. Jednak kilka wskazówek, to:

  • Rozmiar pracy tak, że każdy pracownik może przejść przez co najmniej 3-4 nowych miejsc pracy w ciągu 15 godzin (najdłuższy czas bezczynności prawdopodobnie)
  • Zagraj z wielkości zadania, tak aby czas instalacji staje się dość nieznaczny w porównaniu do przetwarzania czasu (biorąc pod uwagę punkt powyżej).
  • Jeśli zadanie nie zakończy się w podwójnej ilości czasu (może mniej) można się spodziewać jej zakończenie założyć, że tego nie ma AWOL i rozpoczęcie jego przetwarzania go innym pracownikiem. Oznacza to, być może trzeba będzie czekać nawet do trzech razy ich normalnej pracy na jej zakończenie (ewentualnie dłużej, jeśli kolejne zadania nie). Możesz skrócić ten czas, ale należy uważać, aby nie zmniejszyć to zbyt wiele jak można rozpocząć powielania zadań przetwarzania na bieżąco.
  • Praca powinna być niezależna poza wymagania jak najwięcej. Serwer pracy, na przykład, skontaktujemy się tylko na początku i na końcu każdego zadania.
  • Nie nasycenia sieci, będzie to miało dwa negatywne skutki, Twój dzień znajdzie pracowników za pośrednictwem sieci frustrujące i mogą występować problemy z połączeniami limit czasu problem, że będzie tylko gorzej jak skalowanie sieci.
  • Zapewnienie miejsc pracy można uruchomić na swoich pracowników. Jeśli zatrudnienie zbyt dużej pamięci lub miejsca na dysku intensywnej pracy zacznie przerywać i jedyne co można zauważyć, jest spadek liczby miejsc pracy przetwarzane bez rzeczywistego powodu.

Przesyłanie Wyniki pracy

Przy składaniu wyniki pracy ważne jest, aby sprawdzić, czy wyniki nie zostały przedstawione przez innego pracownika, zwłaszcza jeśli obecny pracownik został uśpiony na jakiś czas.

Kiedy wyniki podane zapewnienia, że ​​liczba wyników odpowiada liczbie rekordów w pracy.

Jak stwierdzono wcześniej, i nie można przecenić, budować odporność na uszkodzenia wyszukiwania miejsc pracy i przekazywania wyników. Pracownicy mogą (i najprawdopodobniej) przejść do trybu wstrzymania na najbardziej uciążliwe razy i musi to być coś dla siebie. Także po raz kolejny abstrahując od Twojego zgłoszenia wyników pomoże zaspokoić przyszłe zmiany w systemie kontroli pracy łatwiej sobie poradzić.

Podsumowanie

W tym section patrzyliśmy co serwer kontroli pracy musi to zrobić i jak się bardzo prosty system konfiguracji. Rozmawialiśmy jak odzyskać pracę z systemu kontroli i jak najlepiej skonfigurować zadania, aby jak najlepiej naszym systemu sieci biurowych. Aby zakończyć, ust lub dwóch od złożenia wyniki z powrotem do serwera kontroli pracy został przedstawiony.

  • Serwer kontroli pracy zarządza miejsc pracy i zapewnia, że ​​wszystkie jednostki pracy są zakończone
  • W abstrakcji pracy select / przekazywania wyników możemy zmienić technologię na serwer kontroli bez większych problemów
  • Konfigurowanie pracy w celu zapewnienia, że ​​są one uruchomić szybko i sprawnie bez zbytniego nacisku na infrastrukturę, a nie powielając zadań przetwarzania na bieżąco.
  • Upewnij się, że budowanie odporności na uszkodzenia i checking błąd na swoje procedury, pracowników może zawiesić i wznowić i najbardziej uciążliwe razy. Pamiętaj, aby sprawdzić, czy wyniki zostały już przedstawione przez innego pracownika.

Następny raz

W części 3 stworzymy naszej wirtualnej obrabiarki i skonfigurować nasze komputery z Windowsem na bezczynność wymiarze czasu pracy.

Urząd Grid Computing przy Wirtualne środowisko - część 5

W Steven Lloyd Watkin , piątek 04 grudzień 2009 23:03

Wprowadzenie

I work in a company where we run many batch jobs processing millions of records of data each day and I've been thinking recently about all the machines that sit around each and every day doing nothing for several hours. Wouldn't it be good if we could use those machines to bolster the processing power of our systems? In this set of articles I'm going to look at the potential benefits of employing an office grid using virtualised environments.

In Part 4 we looked at using tools to ensure that we're running the latest version of the code and data sources so that obtained results are always up-to-date with the latest business information and logic.

Pre-Deployment

Before deploying your grid system if there's one thing you do and one thing alone it's benchmark your current system ! No matter what you tell colleagues about how much extra work your system is going to do unless you have numbers to back this up your guarantees are nothing. Tak więc,

  • how many records can you process currently? Per Day? Per Hour?
  • How long does it typically take to turn around a job?
  • How much more capacity do you have?

There's also additional questions:

  • If your processing server (or one of your processing servers) goes down how will this affect your capabilities, will you be crippled?
  • What advantages do you hope/expect to get from a grid system?
  • Are your office machines capable of running the jobs?
  • Are your (or can you jobs be converted) to wrok in this style of running?

The last major point is to take your time on any major change like this. Update your processing code to work using the new methodology, benchmark again. Possibly set up your processing server to run a virtual machine, after all your processing server will just be another worker (just a very powerful one relatively). Allow the new process to settle.

Deployment

My suggestion would be to pop into the office one weekend perform all the installations and setup. Do this just before a fortnight's holiday and leave so other poor chap to deal with the consequences… maybe not…

Deployment for a system like this needs to be slow. Despite it being relatively simple to set up this system will affect your entire office infrastructure (well the digital one). Firstly, roll out to a couple of machines at a time, monitor network traffic, how the worker hosts perform on a day-to-day basis. You may need to alter your job configuration in response to your findings.

Once the system has settled with a few machines (lets say 10% of all office machines, ie 5) keep monitoring network traffic and host machine performance. Next benchmark again, you should now be processing 33% more jobs than your first benchmarks. Check this is so, or that you're at least in this ballpark. If not, investigate what is going on before moving on. Repeat this cycle until you happily have all office machines running without killing individual machine performance or grinding your network to a standstill.

At all times keep benchmarking, even after all deployments are made. Check how new code updates affect speed of your system, check all workers are reporting in and processing jobs. Slowly (very slowly) increment your job configuration to get the best from your workers and network.

Stop!

What if you want to stop your workers from running at some time? They are all out there running, regenerating, and trying their best to process data like hungry insects. The answer may seem obvious but its worth adding just in case its overlooked. Simply edit your processing script with an exit(0) or die() or some other statement to kill your processing job. An important reason why we always try to update to the latest processing script before any run!

Demonstration System

In order to write this set of short articles I created a very small grid to demonstrate the technologies and methodologies. I read lots of articles, tutorials, and used various tools to setup and monitor what was going on. By no means have I gone out and saturated a whole office with traffic and nor have I had access to a regular staff members PC to see how host performance was affected.

My demonstration system was very humble indeed. I used my regular desktop set up as a job control server. On this I had installed mySQL server installed set up as a master in replication, PHP , and SVN linked through apache (for access via worker VM).

I then created a centOS worker machine on VirtualBox on a 6 year old windows XP laptop. I setup scheduled tasks as specified after copying the VM onto the machine and let it go.

The virtual machine was set up with PHP, subversion, and mySQL. I checked out a branch named 'worker' from my job control servers repository and made sure it could be updated using 'svn update'. Next I setup mySQL as a slave and checked that data was replicating from mySQL on the job control server down to the worker VM. After all this I setup the bash script and the cron job.

My processing script basically went along the lines of this (very simple stuff):

  • Read in the name field
  • Counted the number of similar names in a table from the data source held on the VM
  • Counted the number of names as above but splitting the name by spaces (ie forename, middle, surname)
  • Repeated this process 1,000 times

Each job took approximately 20 minutes to run. At one point I opened several copies of the worker VM on the windows laptop and watched the jobs be checked off by each of the worker IP addresses. At this point I also confirmed that replication automatically restarted.

Leaving the laptop to idle resulted in a worker starting to process jobs from the job control server. When resuming laptop usage there was a delay of about 30-60 seconds, this is a fair amount of time and staff would need to be made aware that their machine may pause for a short while when returning to the machine. Newer machines may not have a pause of this long. The benefit of the amount of processing performed by these machines during idle periods would more that outweigh staff members having to wait a short period (say 1 minute) on arriving at their machines of a morning (I frequently wait longer that this for a Windows Defender update to take place) provided they were made aware of this (useful time to grab a morning coffee!).

Overall I feel confident that I have demonstrated the technologies that could be used to create such a system. I have shown that such a system does work on a (very) small scale and with some more experimenting could be scaled up utilise the resources of an office's machines. If I don't get to the point of doing this I would be very interested to know/see when someone else does.

Conclusions / Evaluation

Kolejnym oczywistym krokiem byłoby rzeczywiście dostać Rzeczywistym przykładem i zacząć wdrażać system taki jak ten w środowisku biurowym i zobaczyć co się dzieje. Zadawanie firmy do zaangażowania się w to bez śladu firmy płonący udowodnić technologii i skuteczności może być trochę trudne. Grid / rozproszone jest bardzo popularny jest pewnych kręgach i ma kilka dużych aplikacji (BIONC, SETI @ Home, Folding @ Home, itp.). Nie jednak znaleźć mniejszą skalę i prosty system podobny do tego w swoich poszukiwaniach, jakie można podjąć w ramach biura.

I stworzył zasadzie wolnego systemu używając głównie oprogramowania open source i narzędzi dostępnych w niemal każdym biurze. Technologii były w zasadzie wykazać i pokazać, do wykonania i działa jak powinno. Mam nadzieję, że mam pokazać, że z nie dużo pracy i bardzo prostą konfigurację można wdrożyć grid computing Office System, który jest mocny, tani, A i skalowalne w tym samym czasie.

Gdy system jest gotowy do pracy praktycznie nie ma końca do kwoty dostosowania i poprawy można zrobić. Dla celów statystyki np. / benchmarking może być łatwo dodana pokazano warte takiego systemu na co dzień. Nowe maszyny mogą być dodawane szybko i łatwo, jak i kiedy przyjechać na celu uatrakcyjnienie istniejącego sprzętu wzmocnienia swoją moc.

Mam nadzieję, że cieszył się czytanie tej serii artykułów i dał ci do myślenia na temat prowadzenia systemu sieci biurowych. Rozwiązanie tutaj zaprezentowane może nie działać w każdej sytuacji, ale powinny być dostosowane do pozwala uzyskać przetwarzanie danych odbywa się za pomocą własnego rozwiązania.

Prosimy o przysyłanie wszelkich uwag, poprawki lub ulepszenia i ja staram się utrzymać ten artykuł aktualizacji do meczu.

[notice] child pid XXXX exit signal Segmentation fault (11)

By Steven Lloyd Watkin , Sunday 11th October 2009 6:09 pm

If you've recently upgraded PHP or Apache you maybe coming up against the issue of your webserver returning blank pages, and throwing error messages into your logs with no idea why, here's one possible way to fix it…

Miałem ten problem kilka razy, ostatnio po aktualizacji Apache i PHP na maszynie wirtualnej. The first time I noticed the error I simply reverted to a backup of my VM but the second time I realised I'd have to look into the issue.

The first time I noticed the issue some of my web pages were being served as blank files while the others worked absolutely fine. After some investigation I noted that apache was writing out to /var/log/http/error_log with the following message repeatidly:

[notice] child pid XXXX exit signal Segmentation fault (11)

There's not allot to go by on-line, and most of the pages about it trail off to nothing. That said, I narrowed down the issue to PHP crashing when trying to unneeded dynamic libraries.

Patrząc na moje php.ini (/ etc / php.ini) I wykomentowane wszystkich bibliotek dynamicznych załadowany planowanie komentując je w miarę potrzeb. The two I had to take out where pdo.so and mysql .so .

Once these were removed all my web pages were being served fine, just as before the PHP/Apache update.

Wireless on Acer 5002 WLMi on Linux (Fedora 11)

By Steven Lloyd Watkin , Saturday 11th July 2009 9:48 pm

As I've spent another few hours today without internet access I thought I'd better get this written down so that next time I mess my laptop up the information is easy to fix.

Basically to get wireless drivers working for an Acer 5002 WLMi you'll need to use b43-fwcutter. Instructions can be found here: Linux Wireless B43 .

Easy once the information is located.













Panorama tematu przez Themocracy

6 visitors online now
4 guests, 2 bots, 0 members
Max visitors today: 16 at 12:39 am UTC
W tym miesiącu: 26 z 05.7.2011 00:35 UTC
W tym roku: 130 w 28-03-2011 22:40 UTC
Cały czas: 130 w 28-03-2011 22:40 UTC