Kategori: Linux

Pejabat Grid Computing menggunakan persekitaran Virtual - Bahagian 4

Dengan Watkin Lloyd Steven , 4 Disember 2009 23:59 Jumaat

Pengantar

Saya bekerja di sebuah syarikat di mana kita menjalankan banyak kerja batch processing berjuta-juta nota data setiap hari dan saya sudah berfikir baru-baru ini tentang semua mesin yang duduk-duduk masing-masing dan setiap hari melakukan apa-apa selama beberapa jam. Bukankah lebih baik jika kita boleh menggunakan mesin-mesin untuk meningkatkan kekuatan pemprosesan sistem kita? Dalam Seri artikel ini saya akan melihat potensi manfaat menggaji pejabat grid menggunakan persekitaran virtualised.

Di bahagian 3 kita buat mesin pengolah virtual kami dan menetapkan mesin windows menjadi pekerja waktu idle.

Menjalankan kod terbaru

Tak pelak setelah membuat logik perniagaan anda pekerja akan berubah, bug yang akan dijumpai, lebih efisien kod yang lebih cepat akan dihasilkan sehingga membuat pekerja anda duduk di sekitar pemprosesan data menggunakan kod bau tua . Lalu bagaimana kita memastikan bahawa kami selalu menggunakan versi terbaru dan terbaik dari pemprosesan script kita?

Ada beberapa cara sederhana yang sangat mudah kita boleh melakukan hal ini, trik, bagaimanapun, adalah untuk mengurangkan kekuatan pemprosesan dan lalu lintas rangkaian dalam mencapai ini. Mari kita mulai dengan yang paling sederhana penyelesaian dan memperbaikinya perlahan-lahan selama beberapa iterasi.

Kaedah yang pertama adalah hanya disambungkan ke pelayan kawalan kami pekerjaan (melalui samba, FTP, atau semacam itu) dan tarik ke bawah versi terbaru kod. Tidak sangat cekap, tetapi akan melakukan pekerjaan. Mari memperbaiki yang agak, bagaimana mencipta sebuah script rsync dan menggunakan bahawa setiap kali saja? Atau apa tentang menempatkan script terkini pemprosesan kami menjadi subversi menyemak kod pada awalnya dan kemudian hanya mengemas kini kod kita pada setiap run ( update svn )?

Pada akhirnya kita bisa berakhir dengan script bash (disebut oleh cron setiap 10 minit) yang tampak sederhana seperti ini:

  #! / Bin / sh
 jika ps ax | grep-v grep | grep php > / dev / null
 kemudian
     echo "Ayub saat ini pemprosesan, keluar"
 lain
     echo "Ayub tidak berjalan, mulai sekarang"
     cd / path / ke / kerja / copy
     svn update
     php yourJobProcessingScript.php
 fi 

Sekarang kita boleh yakin bahawa dengan menjalankan setiap kami sungguh-sungguh menjalankan kod terbaru. Kami memastikan hal ini dengan mengemas kini pangkalan kod kita masing-masing dan setiap kali kita melakukan lari dan mengurangkan lalu lintas rangkaian dengan hanya memindahkan fail perbezaan di seluruh jaringan kami.

Dalam tatarajah demonstrasi saya, saya melakukan persis seperti di atas. Subversion dipasang di pelayan pemprosesan saya kerja dan saya hanya menarik kod terbaru dari cabang 'pekerja' menggunakan 'svn update'. Saya juga menambah tag nombor versi untuk memproses naskah saya yang dikembalikan ke database sebagai sebahagian daripada mengembalikan hasil. Dengan cara ini aku dapat melihat bahawa kod saya sedang dikemaskini setiap kali saya disalin Bagasi saya ke cabang, iaitu pekerja bahawa saya benar-benar menjalankan skrip pemprosesan terkini.

Menggunakan data terkini

Jika proses kerja anda memanfaatkan sumber data kemudian di beberapa titik ini akan dikemaskini. Kecuali anda menelefon sumber data anda pada dasar yang sangat jarang berlaku anda akan membanjiri jaringan dengan lalu lintas akan selepas pekerja anda mula berjalan membawa segala sesuatu untuk berhenti. Untuk penyelesaian saya, saya memutuskan bahawa saya ingin memindahkan sumber data saya sekitar dengan VM saya.

Tahan kau kuda di sana! Bagaimana jika sumber data saya BESAR? Nah ini benar-benar adalah kes berapa banyak data yang kita bicarakan? Ini mungkin kos yang lebih efektif untuk memasang sebuah hard drive tambahan yang lebih besar ke mesin masing-masing daripada membeli pelayan pemprosesan tambahan. Ini adalah masalah anggaran dan terserah perniagaan untuk memutuskan. Ini mungkin bahawa sumber data anda yang begitu besar yang tidak layak yang hanya untuk menjaga jumlah data pada mesin pekerja anda. Dalam hal itu apa yang akan anda lakukan? Yah kita boleh melihat memanggil pelayan data tempatan, tetapi ini boleh menyebabkan masalah dengan rangkaian. Dalam hal ini suatu sistem grid seperti ini dapat menjadi tidak realistik untuk memasukkan dalam persekitaran pejabat anda. Ini mungkin juga bahawa anda boleh melihat ke dalam strategi berjalan alternatif, misalnya hanya memanggil pekerja anda 08:00-6:00 setiap malam dan / atau data Throttling permintaan sumber.

Bergerak pada katakanlah data kami jumlah sumber untuk 100GB data. Nah ya itu cukup sedikit data untuk bergerak di sekitar rangkaian pada kemas kini. Bagaimana kita memastikan bahawa kita mempunyai salinan terbaru dari data dalam kes ini? Rsync kemungkinan, tapi secara peribadi saya fikir dengan menjalankan sumber data terkini anda pada pelayan pemprosesan anda kerja dan tetapan ini sebagai master dalam replikasi (dengan log bin yang bagus panjang) mungkin cara untuk pergi:

replikasi Dengan menetapkan setiap pekerja anda sebagai budak kemas kini pekerjaan kawalan pelayan untuk sumber data anda akan menitis ke bawah baik untuk pekerja anda tanpa peningkatan yang sangat besar dalam aktiviti rangkaian (iaitu kecuali jika anda melakukan update data besar dan seluruh pekerja anda menendang sekaligus). Ini mempunyai keunggulan dibandingkan rsync kerana anda tidak akan mendapatkan jeda lama sebelum setiap pekerjaan, seperti update database, mysql daemon pada pekerja anda akan terus mengemas kini data buat sementara waktu pemprosesan terus.

Ini adalah bagaimana cara mengkonfigurasikan pelayan demonstrasi saya. Untuk menetapkan replikasi saya mengikuti panduan di laman mySQL ( Menyediakan replikasi ) dan dalam 20 minit aku pekerja inital saya mereplikasi kawalan pekerjaan dataset pelayan. Untuk setiap pekerja tambahan tatacara replikasi dan proses bekerja setiap kali ketika VM itu disalin.

Review

Dalam bahagian dari artikel yang kita telah melihat bagaimana mudah dan tanpa rasa sakit itu adalah untuk menjaga kod pemprosesan anda up to date dengan rsync using atau subverion (SVN) untuk melakukan pekerjaan dan mengurangkan lalu lintas jaringan di time. sama Kami juga membincangkan bagaimana untuk menyimpan maklumat data sumber anda up-to-date dengan membolehkan untuk menitis ke bawah untuk masing-masing pekerja anda. Jadi kita daerah memastikan bahawa kita tetap dengan logik perniagaan dan maklumat dalam sistem grid pejabat kami. Tidak jelas akan alternatif yang tak terhitung jumlahnya akan melakukan tugas-tugas ini, tapi di sini ada dua contoh sederhana untuk menunjukkan betapa mudahnya penyelesaian akan datang dengan.

Lain kali

Pada bahagian akhir siri ini, aptly bernama Bahagian 5 , kita akan membicarakan menyebarkan sistem ini. Aku akan meringkaskan apa yang telah dipelajari dan apa yang saya berjaya mencipta.

Pejabat Grid Computing menggunakan persekitaran Virtual - Bahagian 3

Dengan Watkin Lloyd Steven , 4 Disember 2009 23:37 Jumaat

Pengantar

Saya bekerja di sebuah syarikat di mana kita menjalankan banyak kerja batch processing berjuta-juta nota data setiap hari dan saya sudah berfikir baru-baru ini tentang semua mesin yang duduk-duduk masing-masing dan setiap hari melakukan apa-apa selama beberapa jam. Bukankah lebih baik jika kita boleh menggunakan mesin-mesin untuk meningkatkan kekuatan pemprosesan sistem kita? Dalam Seri artikel ini saya akan melihat potensi manfaat menggaji pejabat grid menggunakan persekitaran virtualised.

Pada bahagian 2 kita melihat pekerjaan pelayan akan berjalan, dan bagaimana pekerjaan harus dikonfigurasikan untuk mencapai jumlah terbesar sementara proses memastikan bahawa setiap pekerjaan diproses tanpa gagal.

Menyediakan pekerja anda - atau pelayan Limp

Langkah seterusnya dalam proses ini adalah untuk menetapkan pekerja virtual anda. Untuk ini saya akan menggunakan pemasangan CentOS menggunakan VirtualBox. Aku akan memasang mySQL dan PHP pada pelayan, juga dikenali sebagai pincang (Li Nux, m ySQL, L HP) servera (saya mungkin telah membuat nama itu atas).

  • Pasang VirtualBox pada mesin windows anda (ikuti link)
  • Download dan install CentOS (versi 5.3) di dalam mesin virtual yang dibuat

Tidak ada gunanya saya terus ini ada kemungkinan 's / d 1,000 tutorial besar di luar sana (ok, ini satu: Membuat dan Managing mesin virtual CentOS bawah virtualbox ). Mata penting untuk diperhatikan saya kira adalah bahawa saya disebut GridMachine mesin virtual saya.

Sejauh pilihan saya pelanggan virtualisasi dan sistem operasi pergi ke sana ada alasan kuat besar bagi masing-masing pilihan. VirtualBox adalah sesuatu yang saya gunakan di komputer rumah saya dan disokong oleh tiga sistem operasi utama. Saya memilih CentOS sebagai OS nya stabil baik dan saya gunakan di pelayan web sendiri. Saya sangat percaya pada alat yang tepat untuk pekerjaan (walaupun aku menerapkan 'menggunakan terpantas dan termudah untuk anda' mentaliti di sini), jadi jika sistem operasi X menjalankan kod anda lebih cepat dan lebih efisien menggunakannya sebagai gantinya:)

Yang penting pastikan bahawa VM anda menggunakan DHCP, dinyatakan untuk setiap mesin virtual baru akan harus dikonfigurasikan secara berasingan yang merupakan sesuatu yang kita tidak want.By menggunakan DHCP kita tidak perlu menyediakan tatacara rangkaian secara individu untuk mesin pekerja, DHCP akan tangan keluar IP untuk anda. Oleh itu, anda boleh menyalin mesin virtual anda tentang kantor tanpa bimbang tentang tatacara masing-masing Facebook (ini meningkatkan skalabilitas dan mengurangkan pentadbiran pekerja).

Proses anda harus berusaha untuk mencapai adalah untuk mendapatkan sebuah mesin fizikal baru, pasang VirtualBox, dan kemudian cukup banyak menyebarkan gambar virtual tanpa banyak lagi. Mungkin bijaksana untuk setup semua pekerja anda pada subnet yang berbeza sehingga anda sekurang-kurangnya dapat melihat berapa banyak mesin berjalan. Anda juga harus menyiapkan mesin anda pada sewa panjang atau DHCP sewa terhad.

Bagaimana menjalankan Jobs pada pekerja

Ini adalah kawasan yang menarik dan ada beberapa kaedah yang sah untuk pekerjaan pemprosesan pada pekerja. Di sini saya hanya akan membahas dua yang paling jelas:

  • Menerus menjalankan skrip: script A, baik itu shell script, atau script PHP dieksekusi sekali pada pekerja dan berjalan sebagai sebahagian dari sebuah loop tak terbatas. Saya sudah diskaun kaedah ini sebagai salah satu kemalangan naskah dan berpotensi pekerja anda akan berhenti berjalan tanpa semacam campur tangan.
  • Cron eksekusi script mengikut: Setiap minit X cron daemon kicks off panggilan kepada skrip anda untuk mendapatkan hal yang terjadi. Tanpa menyemak beberapa perkara ini boleh menyebabkan banyak salinan banyak script pekerja anda berjalan.

Keputusan saya adalah pergi dengan cron yang kicks off shell script setiap 10 minutes. shell script saya melakukan kegiatan sebagai berikut:

  1. Dapatkan senarai proses dan grep ini untuk 'php'. Jika tidak dijumpai, maka teruskan.
  2. Kod panggilan pekerjaan anda, dalam kes saya ini akan menjadi sesuatu yang berasaskan PHP
  3. Pekerja script selesai menjalankan syarikat
  4. Siap untuk pergi lagi pada panggilan yang sesuai seterusnya

bash script saya terlihat seperti berikut:

  #! / Bin / sh
 jika ps ax | grep-v grep |> grep php / dev / null
 kemudian
     echo "Ayub saat ini pemprosesan, keluar"
 lain
     echo "Ayub tidak berjalan, mulai sekarang"
     php yourJobProcessingScript.php
 fi 

Nota: echo adalah hampir sama sekali tidak ada gunanya, tetapi boleh membantu orang seterusnya yang datang untuk mencuba dan mengeditnya.

Yang menyimpulkan set up dari pekerja mesin virtual, cepat, sederhana, dan mudah untuk copy ke mana-mana bahagian hardware baru yang diterima. 'Kepintaran' The sistem grid benar-benar tidak di OS divisualisasikan, yang semua dilakukan dengan kod dibuat untuk pekerjaan proses, tatarajah pekerjaan, dan dalam memastikan bahawa pekerjaan berjalan saat yang tepat (iaitu ketika tuan rumah itu idle ).

Menyediakan Windows untuk Menginisialisasinya Pekerja

Tugas pertama adalah untuk bekerja di luar arahan yang diperlukan untuk menjalankan mesin virtual dari baris arahan windows. Jika anda telah memasang VirtualBox di lokasi lalai dan anda sudah bernama GridMachine pekerja anda maka perintah yang diperlukan untuk memuatkan pekerja anda adalah:

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

Namun untuk menjalankan skrip dalam keadaan 'tanpa kepala' kita perlu menggunakan:

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

Ini akan memulakan mesin virtual tanpa GUI dan membolehkan untuk menyelamatkan negara dengan anggun. Hujah kedua mematikan RDP sehingga tidak bertentangan dengan windows RDP, atau memberikan mesej tentang mendengar pada port 3389. Nama mesin virtual adalah kes sensitif!

Kemudian, kita akan perlu untuk menetapkan tetingkap Facebook untuk memulakan VM pekerja kita sekali mesin sudah idle. Untuk melakukan hal ini (pada Windows XP) anda perlu pergi Start -> All Programs - Accessories -> System Tools -> Jadual Tugas sebagai berikut:

jadual tugas

Selanjutnya klik pada 'Tambah Scheduled Task' diikuti dengan menelusuri menambah program tersuai. Arahkan ke script VBoxManage anda dan klik ok. Jadual tugas anda untuk salah satu pilihan (kita akan perubahan ini dalam satu minit) dan teruskan. Setelah melewati tetingkap berikutnya akan meminta anda yang anda ingin menjalankan tugas ini, saya cadangkan baik 'Administrator' atau membuat pengguna istimewa baru. Ingat kita tidak mahu mengganggu akaun kakitangan standard pada mesin pada titik apapun. Klik pilihan acara berikutnya dan periksa lanjutan untuk tugas ini.

Untuk akhir textbox menjalankan menambah string 'startvm GridMachine' kami dan memastikan bahawa hanya berjalan ketika login dibiarkan unticked. Lawati tugas jadual seterusnya dan menukar jadual drop ke pilihan 'saat menganggur', memilih jumlah masa yang anda ingin mesin untuk idle sebelum pindah ke tab berikutnya.

Akhirnya untick opsyen yang menyatakan menghentikan tugas jika telah menjalankan X jumlah masa, tapi jangan tandakan pilihan untuk menghentikan tugas jika enjin tidak lagi menganggur.

jadual

Itu saja dan untuk host setup windows!

Review

Pada bahagian ini, kami telah menetapkan suatu mesin virtual untuk bertindak sebagai seorang pekerja, serta cara yang kita sebut dan melaksanakan tugas kita skrip pemprosesan (untuk diriku sendiri script PHP). Dari sini kita melihat cara membuat salinan kita tetingkap untuk memulakan mesin virtual dalam mod tanpa kepala ketika komputer menjadi siap sedia, dan simpan negaranya ketika pengguna kembali penggunaan mesin. Semoga pada saat ini anda melihat betapa sederhananya adalah untuk menetapkan sistem tersebut dan gatal untuk mendapatkan beberapa percubaan pergi sendiri!

Lain kali

Di Bahagian 4 kita akan melihat menggunakan alat-alat untuk memastikan bahawa anda menjalankan versi terbaru dan kod sumber data sehingga hasil yang diperolehi selalu up-to-date dengan maklumat perniagaan terbaru dan logik.

Pejabat Grid Computing menggunakan persekitaran Virtual - Bahagian 1

Dengan Watkin Lloyd Steven , 4 Disember 2009 23:23 Jumaat

Pengantar

Saya bekerja di sebuah syarikat di mana kita menjalankan banyak kerja batch processing berjuta-juta nota data setiap hari dan saya sudah berfikir baru-baru ini tentang semua mesin yang duduk-duduk masing-masing dan setiap hari melakukan apa-apa selama beberapa jam. Bukankah lebih baik jika kita boleh menggunakan mesin-mesin untuk meningkatkan kekuatan pemprosesan sistem kita? Dalam Seri artikel ini saya akan melihat potensi manfaat menggaji pejabat grid menggunakan persekitaran virtualised.

Sebagai seorang PHP developer saya akan menggunakan tools yang saya gunakan setiap hari iaitu, Linux, mySQL , PHP, VirtualBox dan subversi (SVN). Namun saya berharap panduan ini akan menyesuaikan diri dengan bahasa lain dan teknologi baik begitu.

Solusi yang saya berikan akan sangat longgar didasarkan pada jenis pemprosesan kami perlukan untuk mencapai namun hal ini tidak mungkin benar melalui semua artikel yang saya akan mengubah sesuatu untuk kesederhanaan, atau untuk menghasilkan senario penggunaan lebih menarik.

Virtualised persekitaran ini akan berjalan di mesin windows kerana ini adalah apa yang sebahagian besar pejabat dijalankan. Pemprosesan bahawa mesin pejabat tidak boleh mengganggu dengan kakitangan menggunakan mesin-mesin, seharusnya tidak memerlukan rawatan di mesin, dan mudah deployable untuk mesin baru saat tersedia. Selain itu, mesin virtual yang baru seharusnya tidak memerlukan konfigurasi tambahan kerana hal ini sangat mengurangkan skalabilitas dan kemudahan di mana sistem grid boleh diperbaharui.

Mengapa Menyebarkan sebuah Grid Computing Pejabat?

Pertama anda mungkin berfikir, mengapa tidak hanya menggunakan sumber daya komputasi awan seperti Amazon EC2 platform ? Yah bisa beberapa alasan, misalnya:

  • Anda tidak akan mempercayakan data tertentu untuk sebuah persekitaran pengkomputeran awan
  • Anda tidak boleh meletakkan data tertentu kepada sebuah persekitaran pengkomputeran awan untuk alasan undang-undang (misalnya data meninggalkan negara), berpotensi kerana alasan undang-undang, misalnya catatan NHS.
  • Anda ingin menyimpan unit pemprosesan anda berhampiran dan mempunyai kawalan penuh atas hardware terlalu
  • Anda tidak mempunyai dana projek untuk menjalankan contoh awan
  • pejabat anda tidak mempunyai sambungan ke internet dan kerana itu yang tidak mungkin untuk menggunakan sumber daya awan
  • Anda tidak seperti hujan, awan menyarankan hujan, kerana itu anda tetap cukup jauh

Aku yakin senarai itu boleh terus, tapi saya berfikir bahawa cukup untuk saat ini.

Keuntungan dari Grid Computing Pejabat

Yah, mari kita melakukan beberapa matematik (dan dalam gaya fizik benar membolehkan membuat beberapa andaian sweeping). Bayangkan anda mempunyai pelayan pemprosesan besar berdaging menjalankan 100 pekerjaan pada hari. Di pejabat anda, anda mempunyai 50 mesin yang idle 16 jam sehari, masing-masing mesin adalah 10% sekuat pemprosesan berdaging anda memutuskan. (Semua hasil di sini adalah bulat untuk meningkatkan prestasi meremehkan).

Jadi, 1 mesin * 10% * power 2 / 3 waktu = 0,067 iaitu 1 pemprosesan desktop di waktu idle dapat memproses 6 pekerjaan penuh pada hari.

Jika anda sekarang skala ini Facebook diperlukan 15 desktop siap sedia untuk proses sebagai banyak pekerjaan pada hari sebagai pelayan pemprosesan utama anda tidak.

Jadi di kantor pura-pura kita 50 mesin kita boleh meningkatkan kekuatan pemprosesan kami dari 1 server sampai dengan 4 pelayan pemprosesan penuh, atau kita boleh memproses 400 pekerjaan pada hari bukan 100.

Perhatikan, kerana tidak ada pelaburan peranti keras baru syarikat anda baru saja meningkatkan kapasiti pemprosesan batch 4 kali! Anda akan berpotensi untuk meningkatkan penggunaan kekuatan anda tetapi dari lingkungan kantor paling saya pernah ke mesin umumnya tertinggal dalam semalam, jadi anda boleh melihat ini sebagai sebuah inisiatif hijau.

Keuntungan lain juga bermakna bahawa pelaburan baru (atau dikemaskini) pelayan pemprosesan boleh ditunda jika mesin pejabat anda sudah cukup dan bahawa anda meningkatkan kekuatan mesin pejabat anda grid pejabat anda menjadi lebih kuat secara automatik.

Technologies

Apa yang anda perlukan? (Atau lebih tepatnya apa yang saya gunakan):

  • Idle Mesin pejabat (dalam kes saya laptop windows XP lama cadang)
  • VirtualBox (atau software pelanggan virtualisasi)
  • Sebuah mesin virtual dengan PHP, mySQL running menjalankan ditebang OS, aku memanggil Limp ini saya pelayan:)
  • Pekerjaan untuk menjalankan
  • Ayub pelayan (boleh mesin virtual lain di suatu tempat)

Khas Pekerjaan

Jenis-jenis pekerjaan yang sistem ini direka untuk menjalankan adalah sebagai berikut:

  • Sistem menerima senarai data atas mana kita harus mencocokkan dan mengembalikan hasil
  • Pencocokan melibatkan pemeriksaan / mencari beberapa (cukup statik) sumber data
  • Hasil dari sumber data mungkin memerlukan pengesahan lebih lanjut, penggabungan, menyemak sumber data tambahan dalam menanggapi hasil
  • Data kembali dengan nota yang sesuai, sepenuhnya diaktifkan dan diproses
  • Setiap nota dalam pekerjaan adalah bebas daripada sisanya

Jadi pada dasarnya kita cari dalam menjalankan pekerjaan yang memerlukan campuran carian database dan beberapa nombor-nombor, sebuah senario yang cukup khas dalam persekitaran perniagaan.

Grid penyelesaian tidak hanya menguntungkan untuk memproses kerja jenis ini. Pada dasarnya, setiap proses yang boleh dibahagikan menjadi unit yang bebas dapat dijalankan secara selari. Lihat wikipedia ini untuk contoh dan maklumat lebih lanjut: Grid Computing , namun beberapa contoh terkenal adalah Seti @ Home dan BIONC . Ada rangka kerja untuk menjalankan pengkomputeran grid, dan ini layak melihat ke dalam.

Apa yang akan kita capai?

Pada akhir rencana ini saya berharap dapat menunjukkan bahawa pengerahan grid pejabat tidak perlu mahal atau sangat memakan masa. Aku akan membahas:

  • Menyediakan sistem kawalan kerja, tatarajah pekerjaan
  • Membuat mesin virtual yang sesuai pemprosesan
  • Cara setup sistem pada enjin windows
  • Memastikan anda menggunakan kod terbaru dan data
  • Deployment dan benchmarking
  • Ke depan

Aku akan membina (ok yang saya bangun, lalu menulis ini) contoh aplikasi untuk menguji konsep-konsep pada mesin tempatan dengan menggunakan windows XP dan mesin virtual 'GridMachine' saya. Server saya kawalan kerja akan menjadi mesin utama saya yang menjalankan Fedora 11 .

Ini sama sekali tidak bertujuan untuk menunjukkan sistem yang handal bekerja sepenuhnya, yang berarti lebih dari demonstrasi dan membincangkan menunjukkan bahawa hal-hal ini dapat dicapai dalam ruangan yang cukup singkat dan kos yang murah. Sila hantar komen, pembetulan, atau pembaikan dan saya akan melakukan yang terbaik untuk menjaga artikel ini dikemaskini untuk mencocokkan.

Lain kali

Pada bahagian 2 Aku akan bermula dengan melihat pada sistem kawalan kerja, dan melihat bagaimana pekerjaan harus dikonfigurasikan untuk mencapai jumlah terbesar sementara proses memastikan bahawa setiap pekerjaan diproses tanpa gagal.

Pejabat Grid Computing menggunakan persekitaran Virtual - Bahagian 2

Dengan Watkin Lloyd Steven , 4 Disember 2009 23:23 Jumaat

Pengantar

Saya bekerja di sebuah syarikat di mana kita menjalankan banyak kerja batch processing berjuta-juta nota data setiap hari dan saya sudah berfikir baru-baru ini tentang semua mesin yang duduk-duduk masing-masing dan setiap hari melakukan apa-apa selama beberapa jam. Bukankah lebih baik jika kita boleh menggunakan mesin-mesin untuk meningkatkan kekuatan pemprosesan sistem kita? Dalam Seri artikel ini saya akan melihat potensi manfaat menggaji pejabat grid menggunakan persekitaran virtualised.

Dalam Bahagian 1 saya memberi gambaran dari sistem dan teknologi saya akan menggunakan juga dibahas beberapa kemungkinan alasan mengapa anda ingin membuat grid pejabat.

Job Control

Jika anda akan menjalankan kerja maka anda akan memerlukan beberapa cara untuk menetapkan mereka. sistem kawalan pekerjaan yang anda (di server pekerjaan anda) harus benar-benar difikirkan dengan baik bahkan sebelum cuba untuk menjalankan sebuah rangkaian pejabat. Jadi pertama, apa tugas untuk sistem kawalan pekerjaan:

  • Berkongsi pekerjaan atas permintaan dari pekerja
  • Beritahu pekerja apa jenis pekerjaan untuk menjalankan
  • Track pekerjaan
  • Pastikan bahawa pekerjaan hanya berjalan sekali
  • Menyediakan data pekerjaan untuk para pekerja, atau sekurang-kurangnya memberitahu mereka di mana mendapatkannya

Sistem ini juga perlu diperluas, penyelesaian yang bekerja untuk saat ini dalam satu kes boleh diperbaharui untuk menjalankan beberapa jenis pekerjaan sebagai perniagaan melihat berharga dalam larutan grid. Contohnya, pekerjaan boleh mendapatkan keutamaan, lebih daripada satu jenis pekerjaan mungkin ada (iaitu kod pangkalan beberapa), akhirnya anda bahkan dapat menjalankan mesin beberapa pekerja yang berbeza yang dioptimalkan untuk setiap jenis pekerjaan (walaupun yang bergerak menjauh dari 'pekerja generik 'idea). Selalu cuba untuk berfikir tentang masa depan ketika sistem berkembang, visi jangka pendek boleh menyebabkan kekecewaan jangka panjang dan masa pembangunan meningkat.

Ayub Server

Kita akan memerlukan tempat untuk mengendalikan kerja kita dari, ini harus menjadi sistem hanya dalam grid anda yang mengandungi resource locator tetap, adalah bahawa alamat IP, nama host, URL (menggunakan DNS dalaman), dll Ini adalah kerana pekerja perlu tahu di mana untuk mencari pekerjaan, pekerja perlu mencari sistem kerja kawalan (bukan sistem kawalan pekerjaan mencari pekerja).

Server pekerjaan itu sendiri tidak benar-benar memiliki tugas yang rumit (dalam bagaimanapun sistem asas), perlu untuk menyimpan senarai pekerjaan, pekerjaan tangan keluar, menerima keputusan, dan kemudian menyimpannya untuk turun nanti. Bagaimana bahagian-bahagian ('tangan dari pekerjaan' seperti) yang ditetapkan boleh sangat asas. Kemudian kita dapat memperluaskan sistem untuk menyertakan sebuah antara muka pentadbiran untuk menambah, mengedit, memadam, menunda pekerjaan tapi ini di luar latihan ini.

Tidak ada alasan apapun maka pekerjaan bahawa pelayan anda tidak boleh menjadi mesin virtual yang berjalan dalam pelayan pemprosesan utama anda asalkan tidak terlalu banyak menguras sumber daya dari itu. Server pekerjaan tetapi tidak mengetahui sama ada keperluan yang tinggi, jika turun pada Jumaat malam anda akan kehilangan semua akhir pekan pemprosesan, berpotensi bayaran anda beberapa minggu bernilai masa proses (jika dibandingkan dengan pelayan utama pemprosesan anda sendiri) . Anda mungkin ingin mempertimbangkan untuk menempatkan pelayan pekerjaan anda di persekitaran yang seimbang beban untuk ketersediaan tinggi.

Basic Setup

Tatarajah asas untuk pelayan pekerjaan kami akan terdiri dari apa yang saya menelefon salah satu daripada Limp server saya (iaitu Li Nux, ySql m, L HP). Kod berjalan pada pekerja Thea benar-benar akan bekerja apa kerja boleh berjalan dengan berinteraksi dengan dengan database pekerjaan sistem kawalan. Kemudian kita boleh membuat web service dan benar-benar tangan keluar pekerjaan daripada memiliki pekerja melakukan kerja keras sendiri, tetapi untuk sekarang kita akan terus menggunakan prinsip KISS (Keep it Simple, Stupid!).

Jadi, mari membuat tiga mySQL jadual untuk menangani pekerjaan. Ini akan menjadi `pekerjaan`, `jobRecords`, dan `jobResults`.

pekerjaan jadual Disini Saya menggunakan SQL Buddy alternatif yang sedikit besar untuk phpMyAdmin hanya kerana lebih mudah untuk dipasang pada CentOS (untuk orang lain lihat: 10 alternatif Besar ke phpMyAdmin )

Jadual ini terdiri daripada 5 bidang yang sederhana,

  • id: Uniknya mengenalpasti pekerjaan
  • Nama: Boleh jadi rujukan pelanggan, atau jumlah pengenal lain
  • Status: anda perlu tahu di mana pekerjaan itu pada, misalnya
    • 0: Belum bermula
    • 1: Dijemput
    • 2: Selesai
  • started_by: Siapa yang mula melakukan kerja? Hal ini tidak sepenuhnya diperlukan tetapi adalah baik untuk memiliki. Saya cadangkan pelacakan pekerja dengan alamat IP pada rangkaian anda
  • started_at: Bila pekerja memulakan kerja? Dengan pengesanan pekerjaan yang belum selesai dalam waktu X jumlah masa kita tahu kita perlu mengambil pekerjaan sekali lagi dan mula memproses oleh pekerja-pekerja lain. Pekerja boleh menghentikan pemprosesan / offline untuk sejumlah alasan, listrik mati, kemalangan, kehilangan rangkaian, dll

Sangat mudah bagaimana jadual ini boleh diperbaharui dengan beberapa medan tambahan untuk membolehkan anda statistik pelacakan, medan waktu selesai untuk melihat berapa lama pekerjaan itu mengambil, sebuah counter untuk melihat berapa ramai pekerja mengambil pekerjaan itu (jelas ini perlu cenderung 1), keutamaan kerja, senarai boleh terus dan terus. Dalam senario pekerjaan yang lebih kompleks akan mungkin untuk menentukan berapa banyak memori pekerja akan memerlukan akses kepada (dan kerana itu hanya menggunakan pekerja sesuai), atau bahkan jenis pekerja akan diperlukan.

Mari menambah pekerjaan beberapa contoh:

contoh kerja

Jadual berikutnya lagi adalah cukup sederhana untuk memahami, ini adalah catatan pekerjaan kita. Mereka berkaitan dengan jadual kerja utama dengan sebuah medan `jobs_id`. Yang membuat jadual ini sangat bergantung pada data yang anda perlukan untuk membekalkan para pekerja anda, membolehkan membuat contoh yang sangat sederhana di mana kita mempunyai empat medan:

  • id: ID dari nota
  • Nama: Nama Orang
  • Alamat: alamat Person
  • jobs_id: MY pekerjaan yang catatan ini berkaitan dengan

Jadual ketiga dan terakhir terdiri daripada jadual keputusan, itu telah sama make up sebagaimana jadual catatan kami, dan dengan penambahan beberapa medan boleh menjadi sebahagian daripada jadual nota:

  • job_record_id: Link hasilnya ke meja kerja
  • Keputusan: Data keputusan

... Dan itu semua anda perlukan untuk kawalan kerja! (Walaupun pada tahap yang sangat asas) Dalam kes saya, saya menunjuk ke meja tempat data saya untuk memproses berada, tapi ini bisa saja menjadi jumlah gambar, parameter untuk menjalankan kod simulasi, apa saja.

Memilih pekerjaan

Sebagaimana dinyatakan sebelum ini, para pekerja akan melakukan pengurusan tugas kita untuk kita untuk saat ini, sehingga semua kita harus benar-benar lakukan adalah mencari pekerjaan yang memerlukan pemprosesan dan mendapatkan maklumat. Bagaimana kita melakukan ini? Nah tugas kami memilih kriteria seleksi dan mencari pekerjaan, di SQL saya melakukan hal berikut:

  1. Mengambil pekerjaan yang tidak ditandakan sebagai lengkap tapi dari pekerja kami dan semula mereka (__ME__ gantikan dengan sebuah identifier, termudah akan alamat IP):
      UPDATE `pekerjaan` SET `status` = 0 WHERE `status` = 1 DAN `started_by` = __ME__; 
  2. Menggunakan tugas kita kriteria seleksi, pilih pekerjaan dan kepada sistem kawalan yang pekerja ini berurusan dengan itu:
      UPDATE `pekerjaan` SET `status` = 1, `started_by` = __ME__, `started_at` = NOW () WHERE `status` = 0 OR
     (`Status` = 1 DAN `started_at`> DATE_SUB (NOW (), interval X JAM)) ORDER BY `id` ASC; 

    Dengan menyambar pekerjaan yang belum kembali hasil sebanyak X waktu kami memastikan bahawa semua kerja yang berjalan jika seorang pekerja menabrak atau pergi AWOL.

  3. Selanjutnya turun butiran pekerjaan diikuti dengan nota sendiri:
      SELECT * FROM `pekerjaan` WHERE `started_by` = __ME__ LIMIT 1;
     SELECT * FROM `job_records` WHERE `id` = __JOBID__; 

Setelah menyelesaikan pekerjaan kami memasukkan kami hasil nota dan menandakan tugas sebagai selesai. Ingat sebagai kerja boleh menangguhkan / resume pada bila-bila saja membolehkan untuk beberapa kekokohan dalam naskah anda. Mungkin bahawa tugas menghentikan setengah jalan melalui mengemas kini sistem kawalan kerja, sehingga memeriksa jumlah record dalam pekerjaan dan jumlah hasil disimpan kembali kepada sistem kawalan kerja akan menjadi langkah yang bijak.

Selain itu, sementara ini menunjukkan bagaimana kerja boleh dipilih dan ditapis daripada frame-query SQL anda benar-benar harus mencabut kawalan kerja anda sehingga jika anda memutuskan untuk beralih menggunakan perkhidmatan web, yang didasarkan sistem fail, XML , atau yang lain sejumlah sistem itu tidak akan menjejaskan kod di atasnya.

Job Tatarajah

Aspek seterusnya yang perlu dipertimbangkan adalah pekerjaan saiz dan konfigurasi. Dengan bermain dengan tatarajah pekerjaan kita boleh menyerang keseimbangan yang sangat baik antara kelajuan, proses replikasi, dan kehandalan. Ambil beberapa ofa senario:

  1. Pekerjaan mengambil 1 setiap hari untuk menjalankan: Ini bermakna bahawa para pekerja anda butuh 15 hari untuk memproses setiap pekerjaan (ingat 10% dari kekuatan untuk 2/3rds dari masa). Ini jelas bukan tatarajah bijak, saiz pekerjaan anda terlalu besar! Itu akan mengambil sekurang-kurangnya dua kali masa untuk mendapatkan pekerjaan harus diproses pekerja awal pergi AWOL (masa untuk mengambil bahawa hal itu tidak kembali hasil ditambah masa pemprosesan semula). Dalam ideal anda akan memiliki minimal satu pekerjaan penuh lebih mudah dibersihkan pada akhir setiap tempoh idle lama, bahawa cara anda menjaga pekerjaan berdetak lebih dan pada kes terburuk pekerjaan akan mengambil dua hari untuk memproses harus yang pertama hilang.
  2. Pekerjaan mengambil 1 minit untuk menjalankan: Ini bermakna bahawa para pekerja anda memakan masa kira-kira 15 minit untuk menjalankan setiap pekerjaan. Sementara ini pada asalnya mungkin kelihatan ideal, anda mendapatkan pemprosesan pekerjaan tambahan selama waktu makan siang, istirahat kopi, pertemuan, dll senario ini membuat kerosakan pada kawasan lain dari sistem anda dan memperkenalkan masalah sendiri. Sebagai contoh, pertama setup anda / pemprosesan nisbah masa akan pergi ke kanan bawah, sehingga kehilangan kecekapan sistem. rangkaian anda akan terus-menerus streaming maklumat kerja dengan pelbagai pekerja kakitangan frustasi yang dong hari mereka untuk bekerja sehari. Anda juga akan menambah beban lebih pada server pemprosesan pekerjaan anda karena harus mengeluarkan banyak dan banyak potongan-potongan kecil pekerjaan secara teratur. Terkini, dalam situasi ini jika pelayan pekerjaan anda turun anda akan membuat log kembali besar dari pekerjaan yang belum selesai sementara pekerjaan yang lebih besar bisa dari pemprosesan lanjutan tidak menyedari bahawa pelayan kerja adalah mengalami kesulitan.

Pada kenyataannya tidak akan ada konfigurasi satu ideal untuk tatacara grid anda, banyak bergantung pada sumber daya yang tersedia, jenis pekerjaan, keperluan kerja masa turnaround, kemampuan rangkaian, dan sebagainya. Namun beberapa pedoman akan menjadi:

  • Saiz pekerjaan sehingga setiap pekerja bisa melalui sekurang-kurangnya 3-4 pekerjaan dalam jangka masa 15 jam (tempoh masa yang paling lama mungkin idle)
  • Bermain dengan saiz pekerjaan sehingga waktu setup menjadi cukup signifikan dibandingkan masa pemprosesan (mengingati titik di atas).
  • Jika pekerjaan tidak lengkap dalam dua kali ganda jumlah masa (mungkin kurang) anda harapkan untuk menyelesaikannya berasumsi bahawa AWOL yang hilang dan mula memproses dengan pekerja-pekerja lain. Ini bermakna anda mungkin perlu menunggu sehingga tiga kali panjang muzik pekerjaan sampai selesai (mungkin lebih lama jika pekerjaan seterusnya gagal). Anda mungkin mahu mengurangkan saat ini, tapi hati-hati tidak untuk mengurangkan terlalu banyak kerana anda mungkin mula menduplikasi tugas-tugas pemprosesan secara teratur.
  • Pekerjaan harus bebas daripada keperluan luar sebanyak mungkin. Server pekerjaan, misalnya, hanya perlu dihubungi pada awal dan akhir setiap pekerjaan.
  • Jangan jenuh rangkaian anda, ini akan mempunyai dua kesan negatif, kakitangan siang hari anda akan menemui menggunakan rangkaian frustasi dan masalah mungkin dialami dengan sambungan masa keluar masalah yang hanya akan bertambah buruk kerana anda skala grid anda.
  • Pastikan kerja boleh berjalan pada pekerja anda. Jika pekerjaan menjadi terlalu memori pekerjaan ruangan intensif atau intensif disk akan mula membatalkan dan satu-satunya adalah anda akan melihat penurunan jumlah pekerjaan yang telah diproses tanpa alasan mengapa.

Menyerahkan Keputusan Pekerjaan yang

Ketika menyerahkan hasil dari pekerjaan adalah penting untuk menyemak bahawa hasil belum diserahkan oleh pekerja-pekerja lain, terutama jika pekerja saat ini telah tidak aktif selama beberapa waktu.

Bila keputusan disampaikan memastikan bahawa jumlah hasil pertandingan jumlah record dalam pekerjaan.

Sebagaimana dinyatakan sebelum ini, dan tidak boleh lebih ditekankan, membina toleransi kesalahan ke dalam sistem turun dan penyerahan hasil pekerjaan. Para pekerja boleh (dan kemungkinan besar akan) masuk ke mod Suspend di paling nyaman kali dan ini harus dipenuhi. Juga sekali lagi pergi penghantaran abstrak keputusan anda akan membantu memenuhi untuk perubahan masa depan untuk sistem kawalan anda pekerjaan lebih mudah untuk menangani.

Review

Dalam section ini kita telah melihat apa pelayan kawalan kerja perlu dilakukan dan bagaimana untuk mendapatkan sistem yang sangat asas yang mengatur. Kita telah membincangkan bagaimana untuk mengambil pekerjaan dari sistem kawalan dan cara terbaik untuk menyediakan pekerjaan untuk mendapatkan yang paling kita sistem grid pejabat anda. Untuk menyelesaikan, satu atau dua perenggan di menghantar hasilnya kembali ke pelayan kawalan kerja adalah disajikan.

  • Sebuah pelayan kawalan kerja menguruskan pekerjaan dan memastikan bahawa semua unit kerja selesai
  • Dengan abstrak pekerjaan anda pilih / penyampaian hasil yang kita dapat mengubah teknologi dari pelayan kawalan tanpa masalah banyak
  • Tatarajah pekerjaan anda untuk memastikan bahawa mereka dijalankan dengan cepat dan cekap tanpa memberi tekanan terlalu banyak pada infrastruktur rangkaian anda, dan tanpa duplikasi tugas pemprosesan secara teratur.
  • Pastikan bahawa anda membina toleransi kesalahan dan checking kesalahan ke dalam rutin anda, pekerja boleh menunda dan melanjutkan dan yang paling nyaman kali. Ingat untuk memeriksa sama ada keputusan yang telah disampaikan oleh pekerja-pekerja lain.

Lain kali

Di bahagian 3 kita akan mencipta mesin virtual pemprosesan kami dan menetapkan tetingkap kami mesin menjadi idle-time.

Pejabat Grid Computing menggunakan persekitaran Virtual - Bahagian 5

Dengan Watkin Lloyd Steven , 4 Disember 2009 23:03 Jumaat

Pengantar

Saya bekerja di sebuah syarikat di mana kita menjalankan banyak kerja batch processing berjuta-juta nota data setiap hari dan saya sudah berfikir baru-baru ini tentang semua mesin yang duduk-duduk masing-masing dan setiap hari melakukan apa-apa selama beberapa jam. Bukankah lebih baik jika kita boleh menggunakan mesin-mesin untuk meningkatkan kekuatan pemprosesan sistem kita? Dalam Seri artikel ini saya akan melihat potensi manfaat menggaji pejabat grid menggunakan persekitaran virtualised.

Di Bahagian 4 kita melihat menggunakan alat untuk memastikan bahawa kami menjalankan versi terbaru dan kod sumber data sehingga hasil yang diperolehi selalu up-to-date dengan maklumat perniagaan terbaru dan logik.

Pre-Deployment

Sebelum menyebarkan sistem grid anda jika ada satu hal yang anda lakukan dan satu hal saja itu benchmark sistem anda saat ini! Tidak peduli apa yang anda katakan rakan tentang berapa banyak pekerjaan tambahan sistem anda akan lakukan apabila anda mempunyai beberapa nombor untuk menyokong hal ini menjamin anda apa-apa. Jadi,

  • berapa banyak nota yang boleh anda proses saat ini? Per Hari? Per Jam?
  • Berapa lama biasanya masa yang diperlukan untuk berbalik pekerjaan?
  • Berapa banyak lagi kapasiti yang anda miliki?

Ada juga soalan tambahan:

  • Jika pelayan memproses anda (atau salah satu pelayan pemprosesan anda) turun bagaimana ini akan mempengaruhi keupayaan anda, anda akan lumpuh?
  • Apa keuntungan yang anda inginkan / mengharapkan untuk mendapatkan dari suatu sistem grid?
  • Apakah mesin pejabat anda mampu menjalankan kerja?
  • Adakah anda (atau bisa anda pekerjaan ditukar) untuk bekerja dalam gaya berjalan?

Titik besar terakhir adalah untuk mengambil masa anda pada setiap perubahan besar seperti ini. Update kod pemprosesan anda untuk bekerja dengan menggunakan metodologi baru, patokan lagi. Mungkin proses menyiapkan pelayan anda untuk menjalankan mesin virtual, selepas semua proses pelayan anda hanya akan menjadi pekerja-pekerja lain (hanya satu yang sangat kuat relatif). Biarkan proses baru untuk menetap.

Penyebaran

Saran saya akan pop ke akhir pekan satu pejabat melakukan semua pemasangan dan setup. Lakukan ini sebelum dua minggu cuti dan cuti miskin laki-laki lain sehingga untuk berurusan dengan konsekuensi ... mungkin tidak ...

Penyebaran untuk sistem seperti ini harus lambat. Walaupun itu menjadi relatif sederhana untuk menetapkan sistem ini akan mempengaruhi seluruh pejabat anda infrastruktur (baik satu digital). Pertama, roll ke beberapa mesin sekaligus, memantau lalu lintas rangkaian, bagaimana host pekerja melakukan atas dasar sehari-hari. Anda mungkin perlu mengubah konfigurasi pekerjaan anda dalam menanggapi penemuan-penemuan anda.

Setelah sistem telah diselesaikan dengan beberapa mesin (katakanlah 10% dari semua mesin pejabat, iaitu 5) terus memantau lalu lintas rangkaian dan host mesin benchmark performance. Next lagi, anda sekarang perlu memproses kerja 33% lebih dari benchmark pertama anda. Semak ini begitu, atau bahawa anda sekurang-kurangnya dalam Ballpark ini. Jika tidak, menyelidiki apa yang terjadi sebelum pindah. Ulangi kitaran ini sehingga anda bahagia memiliki semua mesin pejabat berjalan tanpa membunuh prestasi mesin penggiling individu atau rangkaian anda untuk berhenti.

Pada setiap waktu terus perbandingan, bahkan selepas semua penyebaran dilakukan. Semak bagaimana kemas kini kod baru mempengaruhi kelajuan sistem anda, semak semua pekerja laporan dan pekerjaan pemprosesan. Perlahan (sangat lambat) kenaikan tatarajah pekerjaan anda untuk mendapatkan yang terbaik dari pekerja anda dan rangkaian.

Stop!

Bagaimana jika anda ingin menghentikan pekerja anda daripada berjalan pada beberapa waktu? Mereka semua ada berjalan, regenerasi, dan cuba yang terbaik untuk memproses data seperti serangga lapar. Jawapannya mungkin tampak jelas tapi nilainya menambah hanya dalam kes yang diabaikan. Cukup mengedit script pemprosesan anda dengan exit (0) atau mati () atau beberapa kenyataan lain untuk membunuh tugas pemprosesan anda. Sebuah alasan penting mengapa kita selalu cuba untuk update ke skrip pemprosesan terkini sebelum menjalankan!

Sistem Demonstrasi

Dalam rangka untuk menulis artikel ini set pendek saya membuat sebuah tempat yang sangat kecil untuk menunjukkan teknologi dan metodologi. Saya membaca banyak artikel, tutorial, dan digunakan pelbagai alat untuk setup dan memantau apa yang berlaku. Dengan tidak bermaksud aku pergi keluar dan jenuh pejabat keseluruhan dengan lalu lintas dan juga tidak pernah saya mempunyai akses ke PC ahli kakitangan biasa untuk melihat bagaimana prestasi host terjejas.

demonstrasi sistem saya sangat sederhana memang. Saya menggunakan desktop biasa saya set sebagai pelayan kawalan pekerjaan. Pada ini saya telah dipasang mySQL server dipasang ditetapkan sebagai master dalam replikasi, PHP , Â dan SVN dihubungkan melalui apache (anda akses melalui pekerja VM).

Saya kemudian membuat sebuah mesin pekerja CentOS pada VirtualBox pada laptop berusia 6 tahun windows XP. Aku setup dijadualkan tugas seperti yang ditetapkan selepas menyalin VM ke mesin dan membiarkannya pergi.

Mesin virtual ditubuhkan dengan PHP, subversi, dan mySQL. Aku menyemak cabang bernama 'pekerja' dari pelayan repositori kawalan pekerjaan saya dan membuat yakin itu dapat dikemaskini dengan menggunakan 'svn update'. Kemudian setup Aku mySQL sebagai budak dan memeriksa bahawa data replikasi dari mySQL di server kawalan kerja ke VM pekerja. Setelah semua ini saya setup script bash dan cron job.

pemprosesan script pada dasarnya saya pergi sepanjang garis ini (hal yang sangat sederhana):

  • Baca di bidang nama
  • Menghitung jumlah nama yang mirip dalam jadual dari sumber data yang diadakan pada VM
  • Menghitung jumlah nama-nama seperti di atas tapi membelah nama dengan ruang (nama kecil, iaitu tengah, nama keluarga)
  • Mengulangi proses ini 1,000 kali

Setiap pekerjaan masa sekitar 20 minit untuk menjalankan. Pada satu titik saya membuka beberapa salinan dari VM pekerja pada laptop jendela dan mengawasi pekerjaan diperiksa off oleh masing-masing alamat IP pekerja. Pada titik ini saya juga menegaskan replikasi yang secara automatik restart.

Meninggalkan laptop untuk idle menghasilkan pekerja mula proses kerja dari pelayan kawalan pekerjaan. Ketika meneruskan penggunaan laptop ada penangguhan daripada 30-60 saat, ini adalah cukup banyak masa dan kakitangan akan perlu dibuat sedar bahawa mesin mereka boleh menghentikan untuk sementara waktu ketika kembali ke mesin. mesin yang lebih baru mungkin tidak mempunyai jeda selama ini. Manfaat dari jumlah pemprosesan yang dilakukan oleh mesin-mesin selama tempoh idle akan lebih yang lebih besar daripada ahli kakitangan perlu menunggu jangka waktu yang singkat (katakanlah 1 minit) pada mesin mereka tiba di suatu pagi (aku sering menunggu lebih lama bahawa ini untuk Windows Defender update untuk mengambil tempat) asalkan mereka dibuat sedar kali ini (berguna untuk mengambil kopi pagi!).

Semuanya saya merasa yakin bahawa saya telah menunjukkan teknologi yang boleh digunakan untuk membuat sistem tersebut. Saya telah menunjukkan bahawa sistem seperti ini tidak bekerja pada skala (sangat) kecil dan lebih bereksperimen dengan beberapa boleh dipertingkatkan memanfaatkan sumber daya dari mesin-mesin pejabat itu. Jika saya tidak bisa sampai ke titik melakukan hal ini saya akan sangat tertarik untuk mengetahui / melihat bila orang lain tidak.

Kesimpulan / Evaluasi

Langkah pasti yang berikutnya adalah untuk benar-benar mendapatkan contoh dalam dunia nyata dan mula untuk menggelar sebuah sistem seperti ini dalam persekitaran pejabat dan melihat apa yang terjadi. Meminta perniagaan untuk melakukan ini tanpa sebuah syarikat jejak bernyala untuk membuktikan teknologi dan keberkesanan mungkin sedikit sukar. Grid / pengkomputeran teragih yang sangat popular adalah beberapa kalangan dan mempunyai beberapa aplikasi besar (BIONC, SETI @ Home, Folding @ Home, dll). Aku tidak, bagaimanapun, mencari skala yang lebih kecil dan sistem sederhana seperti ini dalam carian saya yang boleh dilancarkan dalam lingkungan kantor.

Saya mencipta sistem pada dasarnya tidak menggunakan perisian sumber terbuka dan sebahagian besar alat yang terdapat di hampir setiap pejabat. Teknologi pada dasarnya menunjukkan dan menunjukkan untuk melakukan dan bekerja seperti yang diharapkan. Mudah-mudahan saya telah menunjukkan bahawa dengan tidak bekerja banyak dan dengan setup yang sangat sederhana anda boleh menyebarkan sebuah sistem pengkomputeran grid pejabat yang sangat kuat, murah, "dan scalable semua pada masa yang sama.

Setelah sebuah sistem dan berjalan hampir tidak ada akhir untuk jumlah penyesuaian dan perbaikan Anda boleh membuat. Untuk statistik contoh / benchmarking dengan mudah dapat ditambah menunjukkan nilai dari sistem tersebut setiap hari. mesin baru boleh ditambah dengan cepat dan mudah dan ketika mereka tiba dengan upgrade ke hardware yang ada menguatkan daya proses anda.

Saya berharap anda menikmati membaca rangkaian artikel dan yang memberi anda makanan untuk berfikir untuk menjalankan sistem grid pejabat. Penyelesaian yang disajikan di sini tidak akan selalu bekerja dalam segala situasi tetapi harus disesuaikan untuk membolehkan anda untuk mendapatkan pemprosesan data dilakukan dengan menggunakan penyelesaian sendiri.

Sila hantar komen, pembetulan, atau pembaikan dan saya akan melakukan yang terbaik untuk menjaga artikel ini dikemaskini untuk mencocokkan.

[Notis] anak pid XXXX keluar isyarat Segmentasi kesalahan (11)

Dengan Watkin Lloyd Steven , Minggu 11 Oktober 2009 06:09

Jika anda baru saja upgrade PHP atau Apache anda mungkin datang terhadap masalah webserver anda kembali halaman kosong, dan membaling mesej ralat ke dalam log dengan tidak tahu mengapa, ini satu cara yang mungkin untuk memperbaikinya ...

Aku punya masalah ini beberapa kali baru-baru ini setelah meng-upgrade Apache atau PHP pada mesin virtual. Pertama kali saya melihat kesalahan saya hanya dikembalikan ke cadangan dari VM saya tapi kedua kalinya aku sedar aku harus melihat isu ini.

Pertama kali saya melihat isu beberapa laman web saya sedang berkhidmat sebagai fail kosong sementara yang lain bekerja dengan baik-baik saja. Setelah beberapa penyelidikan Saya mencatat apache yang menuliskan ke / var / log / http / error_log dengan mesej berikut repeatidly:

[Notis] anak pid XXXX keluar isyarat Segmentasi kesalahan (11)

Tak membahagikan untuk pergi dengan on-line, dan sebahagian besar laman tentang hal itu jejak ke apa-apa. Yang mengatakan, aku dipersempit masalah untuk PHP menerjang ketika cuba untuk pustaka dinamik yang tidak diperlukan.

Melihat php.ini saya (/ etc / php.ini) Saya komen semua pustaka dinamik dimuat merancang komen mereka kembali sebagai diperlukan. Kedua saya perlu mengambil dari mana pdo.so dan mysql . begitu.

Selepas ini telah dihapuskan semua laman web saya sedang dilayani baik-baik saja, sama seperti sebelum update / PHP Apache.

Wireless di Acer 5002 WLMi di Linux (Fedora 11)

Dengan Watkin Lloyd Steven , Sabtu 11 Julai 2009 09:48

Saat aku telah menghabiskan beberapa jam lagi hari ini tanpa akses internet saya pikir lebih baik aku mendapatkan ini ditulis sehingga kali aku meranapkan laptop saya up maklumat yang mudah untuk memperbaikinya.

Pada dasarnya untuk mendapatkan driver wayarles bekerja pada Acer 5002 WLMi anda akan perlu menggunakan B43-fwcutter. Arahan boleh didapati di sini: Linux Wireless B43 .

Mudah sekali maklumat tersebut berada.













Panorama Tema oleh Themocracy

3 tetamu online sekarang
2 tetamu, 1 bot, 0 ahli
Max pengunjung hari ini: 16 jam 12:39 am UTC
Bulan ini: 26 jam 2011/07/05 00:35 UTC
Tahun ini: 130 pada 28-03-2011 10:40 UTC
Sepanjang masa: 130 pada 28-03-2011 10:40 UTC