Posts tagged: Bash

Pejabat Pengkomputeran Grid menggunakan persekitaran Maya - Part 4

Oleh , Jumaat 4 Disember 2009 11:59

Pengenalan

Saya bekerja di sebuah syarikat di mana kita menjalankan banyak kerja kelompok pemprosesan berjuta-juta rekod data setiap hari dan saya telah memikirkan tentang semua mesin yang duduk di sekitar setiap hari dan setiap melakukan apa-apa untuk beberapa jam baru-baru ini. Bukankah lebih baik jika kita boleh menggunakan mesin tersebut untuk mengukuhkan kuasa pemprosesan sistem kami? Dalam set rencana-rencana ini, saya akan melihat manfaat yang berpotensi menggajikan pejabat grid yang menggunakan persekitaran virtualised.

Dalam 3 bahagian kita menciptakan mesin pemprosesan maya kami dan menubuhkan tingkap mesin untuk menjadi pekerja yang terbiar masa.

Menjalankan code terbaru

Tidak dapat dielakkan selepas mencipta logik perniagaan pekerja anda akan berubah, pepijat akan didapati, kod lebih cepat lebih cekap akan dihasilkan itu meninggalkan pekerja anda duduk di sekitar memproses data menggunakan kod berbau lama . Bagaimana pula dapat kita memastikan bahawa kita selalu menggunakan versi yang terbaru dan terhebat skrip pemprosesan kami?

Terdapat beberapa cara yang sangat mudah mudah yang boleh kita lakukan ini, muslihat, bagaimanapun, adalah untuk mengurangkan kuasa pemprosesan dan trafik rangkaian dalam mencapai matlamat ini. Mari kita bermula dengan penyelesaian yang paling mudah dan meningkatkan secara perlahan-lahan sepanjang beberapa lelaran.

Kaedah pertama akan hanya menyambung kepada pelayan kawalan tugas kami (melalui samba, FTP, atau yang serupa) dan tarik ke bawah versi terbaru kod. Tidak begitu cekap, tetapi ia akan melakukan pekerjaan. Mari kita memperbaiki bahawa agak, bagaimana pula mewujudkan skrip rsync dan menggunakan bahawa setiap kali, bukan? Alternatif bagaimana meletakkan skrip pemprosesan terbaru kami ke subversif melihat kod mulanya dan kemudian hanya mengemaskini kod kami setiap melarikan ( svn update )?

Akhirnya kita boleh berakhir dengan skrip Bash (dipanggil oleh cron setiap 10 minit) yang kelihatan seperti mudah kerana ini:

  #! / Bin / sh
 jika ps ax | grep-v grep | grep php > / dev / null
 kemudian
     echo "Kerja sedang memprosesnya, keluar"
 lain
     echo "Kerja tidak berjalan, bermula sekarang"
     cd / path / to / bekerja / salinan
     svn update
     php yourJobProcessingScript.php
 Wayar 

Sekarang kita boleh yakin bahawa dengan jangka setiap kita pasti menjalankan code terbaru. Kami memastikan ini dengan mengemas kini pangkalan kod kami setiap kali dan setiap kita melaksanakan jangka dan mengurangkan trafik rangkaian dengan hanya memindahkan perbezaan fail di seluruh rangkaian kami.

Dalam persediaan demonstrasi saya, saya berjaya melakukannya seperti di atas. Subversif telah dipasang pada pelayan pemprosesan tugas saya dan saya hanya menarik code terbaru dari cawangan 'pekerja' menggunakan 'svn update'. Saya juga menambah tag nombor versi untuk skrip pemprosesan saya yang telah kembali ke pangkalan data sebagai sebahagian pulangan keputusan. Dengan cara ini saya dapat melihat bahawa kod saya sedang dikemaskini setiap kali saya disalin batang saya ke dalam iaitu cawangan pekerja yang saya pasti menjalankan pemprosesan skrip terkini.

Menggunakan data terkini

Jika pemprosesan kerja anda menggunakan sumber data, maka pada satu masa nanti ini akan dikemas kini terlalu. Melainkan anda menyeru sumber data anda atas dasar yang sangat jarang berlaku, anda akan membanjiri rangkaian anda dengan trafik dengan seberapa segera sebagai pekerja anda mula berlari membawa semua terhenti. Untuk penyelesaian saya, saya memutuskan bahawa saya ingin untuk menggerakkan sumber data saya main dengan VMS saya.

Pegang anda kuda di sana! Bagaimana jika sumber data saya adalah BESAR? Baik ini benar-benar adalah satu kes berapa banyak data yang kita bercakap? Ia boleh menjadi lebih berkesan kos untuk memasang tambahan cakera keras yang lebih besar ke dalam setiap mesin daripada membeli pelayan pemprosesan tambahan. Ini adalah persoalan bajet dan perniagaan untuk memutuskan. Ia mungkin bahawa sumber data anda adalah begitu besar sehingga hanya unfeasible untuk memastikan bahawa jumlah data dalam mesin pekerja anda. Dalam hal yang demikian apakah yang akan anda lakukan? Juga kita boleh melihat memanggil pelayan data tempatan, tetapi ini mungkin menyebabkan isu-isu dengan rangkaian. Dalam kes ini, sistem grid seperti ini boleh menjadi tidak realistik untuk termasuk dalam persekitaran pejabat anda. Ia juga mungkin yang anda boleh melihat ke dalam strategi alternatif, contohnya hanya memanggil pekerja anda 20:00-06:00 setiap malam dan / atau pendikitan permintaan sumber data.

Bergerak atas membolehkan berkata jumlah sumber data kami untuk 100GB data. Baik ya yang agak sedikit data untuk bergerak di seluruh rangkaian pada kemas kini. Bagaimana kita akan memastikan bahawa kita mempunyai salinan terbaru data dalam kes ini? Rsync adalah satu kemungkinan, tetapi secara peribadi saya berfikir dengan menjalankan sumber data terkini anda pada pelayan pemprosesan kerja anda dan menetapkan ini sebagai induk dalam replikasi (dengan log nice bin panjang) mungkin menjadi cara untuk pergi:

replikasi Dengan setiap pekerja anda sebagai hamba kepada pelayan kawalan update pekerjaan kepada sumber data anda akan dinikmati oleh segenap lapisan baik untuk pekerja anda tanpa peningkatan besar dalam aktiviti rangkaian (yang melainkan anda melakukan kemas kini data yang besar dan semua pekerja anda menendang dalam sekali gus). Ini mempunyai kelebihan lebih rsync yang anda tidak akan mendapat jeda lama sebelum setiap kerja; sebagai kemas kini pangkalan data mysql daemon pada pekerja anda akan sentiasa mengemaskini data manakala pemprosesan berterusan.

Ini adalah bagaimana saya menetapkan pelayan demonstrasi saya. Untuk menubuhkan replikasi saya mengikuti panduan di laman mySQL ( tetapan sehingga replikasi ) dan dalam masa 20 minit, saya mempunyai pekerja awal daripada saya mengulangi dataset kawalan kerja pelayan. Bagi setiap pekerja tambahan tetapan replikasi dan proses bekerja setiap kali apabila VM tersebut telah disalin.

Ringkasan

Dalam seksyen ini rencana kita telah melihat bagaimana mudah dan tidak menyakitkan ia adalah untuk menyimpan kod pemprosesan anda sehingga kini oleh using rsync atau subverion (SVN) untuk melakukan kerja dan mengurangkan trafik rangkaian pada time. yang sama Kami juga membincangkan bagaimana untuk menyimpan maklumat sumber data anda up-to-dengan membenarkan ia untuk dinikmati oleh segenap lapisan kepada setiap pekerja anda. Oleh itu, kita kawasan memastikan bahawa kita menjaga dengan logik perniagaan dan maklumat dalam sistem grid pejabat kami. Jelas akan ada alternatif yang tidak terkira banyaknya untuk melaksanakan tugas-tugas ini, tetapi di sini adalah dua contoh mudah untuk menunjukkan betapa mudahnya penyelesaian diperolehi.

Masa yang akan datang

Di bahagian akhir siri ini, yang dinamakan Bahagian 5 , kami akan membincangkan menggerakkan sistem ini untuk Saya akan meringkaskan apa yang telah dipelajari dan apa yang saya berjaya untuk mencipta.

Pejabat Pengkomputeran Grid menggunakan persekitaran Maya - Bahagian 5

Oleh , Jumaat 4 Disember 2009 11:03

Pengenalan

Saya bekerja di sebuah syarikat di mana kita menjalankan banyak kerja kelompok pemprosesan berjuta-juta rekod data setiap hari dan saya telah memikirkan tentang semua mesin yang duduk di sekitar setiap hari dan setiap melakukan apa-apa untuk beberapa jam baru-baru ini. Bukankah lebih baik jika kita boleh menggunakan mesin tersebut untuk mengukuhkan kuasa pemprosesan sistem kami? Dalam set rencana-rencana ini, saya akan melihat manfaat yang berpotensi menggajikan pejabat grid yang menggunakan persekitaran virtualised.

Dalam Bahagian 4, kita melihat menggunakan alat-alat untuk memastikan bahawa kita sedang menjalankan versi terbaru dari sumber-sumber kod dan data supaya mendapat keputusan sentiasa-to-date dengan maklumat perniagaan yang terkini dan logik.

Pra-Deployment

Sebelum menggerakkan sistem grid anda jika ada satu perkara yang anda lakukan dan satu perkara sahaja ia penanda aras sistem semasa anda! Tidak kira apa yang anda beritahu rakan-rakan tentang berapa banyak kerja tambahan sistem anda akan lakukan melainkan anda mempunyai nombor ke belakang ini sehingga jaminan anda adalah apa-apa. Jadi,

  • berapa banyak rekod anda boleh memproses kini? Sehari? Sejam?
  • Berapa lama ia biasanya mengambil masa untuk pulih pekerjaan?
  • Berapa banyak lebih banyak kapasiti yang anda ada?

Ada juga soalan-soalan tambahan:

  • Jika pelayan pemprosesan anda (atau satu pelayan pemprosesan anda) terbenam bagaimana ini akan memberi kesan kepada keupayaan anda, anda akan lumpuh?
  • Apa kelebihan yang anda berharap / menjangka untuk mendapatkan daripada sistem grid?
  • Adakah mesin pejabat anda mampu menjalankan kerja-kerja?
  • Adakah anda (atau anda kerja boleh ditukar) untuk wrok dalam gaya ini berjalan?

Titik utama yang terakhir adalah untuk mengambil masa anda atas apa-apa perubahan besar seperti ini. Mengemaskini kod pemprosesan anda untuk bekerja menggunakan metodologi baru, penanda aras sekali lagi. Kemungkinan menubuhkan pelayan pemprosesan untuk menjalankan mesin maya, selepas semua pelayan pemprosesan anda hanya akan menjadi pekerja lain (hanya satu yang sangat kuat secara relatif). Biarkan proses baru untuk menyelesaikan.

Kerahan

Cadangan saya akan pop ke dalam hujung minggu pejabat melaksanakan semua pemasangan dan persediaan. Adakah ini sebelum bercuti dua minggu dan meninggalkan begitu miskin yang lain bab untuk menangani kesan ... mungkin tidak ...

Kerahan untuk sistem seperti ini perlu menjadi perlahan. Walaupun ia agak mudah untuk menubuhkan sistem ini akan menjejaskan keseluruhan infrastruktur pejabat anda (digital). Pertama, melancarkan beberapa mesin pada satu-satu masa, memantau trafik rangkaian, bagaimana tuan rumah pekerja melakukan atas dasar sehari-hari. Anda mungkin perlu mengubah konfigurasi tugas anda sebagai tindak balas kepada penemuan anda.

Sekali sistem telah diselesaikan dengan mesin beberapa (katakanlah 10% daripada semua mesin pejabat, iaitu 5) menyimpan memantau trafik rangkaian dan mesin tuan rumah performance. penanda aras Seterusnya lagi, kini anda perlu memproses 33% lebih banyak peluang pekerjaan daripada tanda aras pertama anda. Semak ini adalah demikian, atau bahawa anda sekurang-kurangnya dalam Ballpark ini. Jika tidak, menyiasat apa yang sedang berlaku sebelum berpindah. Mengulangi kitaran ini sehingga anda gembira telah semua mesin pejabat berjalan tanpa membunuh prestasi mesin individu atau pengisaran rangkaian anda untuk terhenti.

Pada setiap masa terus penandaarasan, walaupun selepas semua pergerakan dibuat. Semak cara update kod baru mempengaruhi kelajuan sistem anda, periksa semua pekerja melaporkan dan pemprosesan pekerjaan. Perlahan-lahan (amat perlahan) kenaikan konfigurasi kerja anda untuk mendapatkan yang terbaik dari pekerja dan rangkaian anda.

Berhenti!

Bagaimana jika anda mahu untuk menghentikan pekerja anda daripada berjalan pada masa tertentu? Mereka semua di luar sana berjalan, penjanaan semula, dan cuba yang terbaik untuk memproses data seperti serangga lapar. Jawapannya mungkin kelihatan jelas tetapi bernilai yang menambah hanya dalam kes terlepas pandang yang. Mengedit skrip pemprosesan anda hanya dengan keluar (0) atau mati () atau beberapa kenyataan lain untuk membunuh tugas pemprosesan anda. Satu sebab penting mengapa kita sentiasa cuba untuk mengemaskini skrip pemprosesan terkini sebelum jangka apa-apa!

Sistem demonstrasi

Dalam usaha untuk menulis ini set artikel pendek saya mencipta grid yang sangat kecil untuk menunjukkan teknologi dan metodologi. Saya membaca banyak artikel, tutorial, dan menggunakan pelbagai alat untuk persediaan dan memantau apa yang berlaku. Tidak sekali-telah saya padam dan tepu seluruh pejabat dengan lalu lintas dan juga telah saya mempunyai akses kepada kakitangan PC biasa untuk melihat bagaimana prestasi tuan rumah telah terjejas.

Sistem demonstrasi saya adalah sangat merendah diri sekali. Saya menggunakan desktop tetap saya yang ditubuhkan sebagai pelayan kawalan kerja. Mengenai perkara ini, saya telah memasang mySQL server dipasang ditubuhkan sebagai induk dalam replikasi, PHP , Â dan SVN yang dihubungkan melalui apache (untuk akses melalui VM pekerja).

Saya kemudian mencipta mesin CentOS pekerja pada VirtualBox pada 6 tahun XP komputer riba tingkap. Saya setup dijadualkan tugas-tugas sebagaimana yang dinyatakan selepas menyalin VM ke atas mesin dan biarkan ia pergi.

Mesin maya telah ditubuhkan dengan PHP, perbuatan subversif, dan mySQL. Saya memeriksa sebuah cawangan yang dinamakan 'pekerja' dari repository pelayan saya kawalan kerja dan memastikan ia boleh dikemaskini menggunakan 'svn update'. Seterusnya saya setup mySQL sebagai hamba dan memeriksa bahawa data telah mereplikakan dari mySQL pada pelayan kawalan kerja VM pekerja. Setelah semua ini, saya setup skrip Bash dan tugas cron.

Skrip pemprosesan saya pada dasarnya telah di sepanjang garis ini (barangan sangat mudah):

  • Baca dalam bidang nama
  • Dikira bilangan nama-nama yang sama dalam jadual dari sumber data yang diadakan pada VM
  • Dikira bilangan nama-nama seperti nama di atas tetapi membelah oleh ruang (iaitu nama kecil, pertengahan, nama keluarga)
  • Berulang-ulang proses ini 1,000 kali

Setiap kerja mengambil masa kira-kira 20 minit untuk berjalan. Pada satu ketika saya membuka beberapa salinan VM pekerja pada laptop tingkap dan melihat pekerjaan diperiksa oleh setiap alamat IP pekerja. Pada titik ini, saya juga mengesahkan bahawa replikasi secara automatik semula.

Meninggalkan komputer riba untuk menganggur menyebabkan seorang pekerja mula untuk memproses kerja dari pelayan kawalan kerja. Apabila meneruskan penggunaan komputer riba, terdapat sedikit kelewatan kira-kira 30-60 saat, ini adalah jumlah yang saksama masa dan kakitangan perlu dibuat sedar bahawa mesin mereka boleh berhenti seketika untuk seketika apabila pulang ke mesin. Baru mesin mungkin tidak mempunyai jeda yang panjang ini. Manfaat daripada jumlah pemprosesan yang dilakukan oleh mesin tersebut sepanjang tempoh terbiar akan lebih yang melebihi kakitangan perlu menunggu satu tempoh yang singkat (katakan 1 minit) untuk tiba di mesin mereka pagi (saya sering menunggu lebih lama bahawa ini untuk Defender Windows kini mengambil tempat) dengan syarat mereka sedar tentang perkara ini (masa yang berguna untuk merebut kopi pagi!).

Secara keseluruhan saya merasa yakin bahawa saya telah menunjukkan teknologi yang boleh digunakan untuk mewujudkan sistem seperti itu. Saya telah menunjukkan bahawa sistem ini berfungsi pada skala (sangat) kecil dan dengan lagi eksperimen dapat dipertingkatkan menggunakan sumber mesin pejabat. Jika saya tidak dapat berbuat demikian, saya akan menjadi sangat berminat untuk mengetahui / melihat apabila orang lain tidak.

Kesimpulan / Penilaian

Langkah yang jelas seterusnya adalah untuk mendapatkan contoh dunia sebenar dan mula untuk menggerakkan satu sistem seperti ini dalam persekitaran pejabat dan lihat apa yang berlaku. Meminta perniagaan untuk melakukan ini tanpa syarikat jejak panas membakar untuk membuktikan teknologi dan keberkesanan mungkin agak sukar. Grid / pengkomputeran teragih adalah sangat popular adalah beberapa bulatan dan mempunyai beberapa aplikasi besar (BIONC, Halkum @ Home, Melipat @ Home, dll). Saya tidak, bagaimanapun, cari skala yang lebih kecil dan sistem yang mudah seperti ini dalam pencarian saya yang boleh dilaksanakan dalam persekitaran pejabat.

Saya telah mencipta satu sistem yang pada asasnya bebas menggunakan sumber perisian kebanyakannya terbuka dan alatan yang disediakan di hampir mana-mana pejabat. Teknologi yang pada asasnya menunjukkan dan menunjukkan untuk melaksanakan dan bekerja seperti yang diharapkan. Semoga saya mempunyai menunjukkan bahawa dengan kerja-kerja yang tidak banyak dan dengan persediaan yang sangat mudah, anda dapat digunakan oleh sistem pengkomputeran grid pejabat yang berkuasa, murah, Â dan berskala pada masa yang sama.

Apabila sistem dan berlari terdapat hampir tiada akhir kepada jumlah penyesuaian dan penambahbaikan yang anda boleh membuat. Untuk statistik contoh / penandaarasan boleh ditambah dengan mudah menunjukkan sistem bernilai setiap hari. Mesin baru boleh ditambah dengan cepat dan mudah seperti dan apabila mereka tiba dengan peningkatan kepada perkakasan sedia ada mengukuhkan kuasa pemprosesan anda.

Saya berharap anda seronok membaca siri artikel ini dan yang memberikan makanan untuk pemikiran pada menjalankan sistem grid pejabat. Penyelesaian yang dibentangkan di sini tidak semestinya bekerja dalam semua keadaan tetapi perlu disesuaikan untuk membolehkan anda untuk mendapatkan pemprosesan data anda dilakukan dengan menggunakan penyelesaian anda sendiri.

Sila berasa bebas untuk menghantar saya untuk sebarang komen, pembetulan atau penambahbaikan dan saya akan melakukan yang terbaik untuk menyimpan artikel ini dikemas kini untuk menyamai.













Tema Panorama oleh Themocracy

8 pelawat online sekarang
6 tetamu, 2 bots, 0 ahli
Max pelawat hari ini: 11 pada 03:40 am UTC
Bulan ini: 26 di 2012/4/4 10:27 pm UTC
Tahun ini: 69 pada 27-02-2012 09:56 am UTC
Semua masa: 130 pada 28-03-2011 10:40 pm UTC