Bài viết được gắn thẻ: bash

Văn phòng lưới máy tính sử dụng môi trường ảo - Phần 4

, thứ Sáu ngày 04 tháng 12 năm 2009 11:59

Giới thiệu

Tôi làm việc trong một công ty mà chúng tôi chạy nhiều công việc hàng loạt chế biến hàng triệu bản ghi dữ liệu mỗi ngày và tôi đã suy nghĩ gần đây về tất cả các máy ngồi xung quanh mỗi ngày và không làm gì trong vài giờ. Nó sẽ không tốt nếu chúng ta có thể sử dụng những máy móc để tăng cường sức mạnh xử lý của hệ thống của chúng tôi? Trong tập hợp các bài viết này, tôi sẽ xem xét các lợi ích tiềm năng của việc sử dụng một văn phòng lưới điện bằng cách sử dụng môi trường ảo hóa.

Trong phần 3, chúng tôi tạo ra máy chế biến ảo của chúng tôi và thiết lập cửa sổ máy để trở thành công nhân có thời gian nhàn rỗi.

Chạy mã mới nhất

Chắc chắn sau khi tạo nhân viên logic kinh doanh của bạn sẽ thay đổi, lỗi sẽ được tìm thấy, mã nhanh hơn hiệu quả hơn sẽ được sản xuất do đó để lại nhân viên của bạn ngồi xung quanh xử lý dữ liệu bằng cách sử dụng cũ đang có mùi . Làm thế nào sau đó chúng tôi đảm bảo rằng chúng tôi luôn sử dụng phiên bản mới nhất và lớn nhất của các kịch bản xử lý của chúng tôi?

Có một vài cách dễ dàng đơn giản, chúng ta có thể làm điều này, thủ đoạn này, tuy nhiên, là để giảm sức mạnh xử lý và mạng lưới giao thông trong việc đạt được điều này. Cho phép bắt đầu với các giải pháp đơn giản và cải thiện từ từ trong một vài lặp đi lặp lại.

Phương pháp đầu tiên là chỉ đơn giản là kết nối với máy chủ kiểm soát công việc của chúng tôi (qua samba, FTP, hoặc tương tự) và kéo xuống các phiên bản mới nhất của mã này. Không phải rất hiệu quả, nhưng nó sẽ làm công việc. Cho phép cải thiện phần nào, làm thế nào về việc tạo ra một kịch bản rsync và sử dụng mà mỗi lần thay vì? Ngoài ra những gì về việc đưa kịch bản xử lý mới nhất của chúng tôi vào lật đổ kiểm tra ra các mã ban đầu và sau đó chỉ cần cập nhật mã của chúng tôi trên mỗi run ( svn cập nhật )

Cuối cùng, chúng ta có thể kết thúc với một kịch bản bash (được gọi là định kỳ mỗi 10 phút) có vẻ đơn giản như sau:

  # / Bin / sh
 nếu ps ax | grep-v grep | grep php > / dev / null
 sau đó
     echo "công việc hiện đang được chế biến, xuất cảnh"
 khác
     echo "Công việc không chạy, bắt đầu ngay bây giờ"
     cd / path / to / / sao chép
     svn cập nhật
     php yourJobProcessingScript.php
 fi 

Bây giờ chúng ta có thể chắc chắn rằng với mỗi lần chạy, chúng tôi chắc chắn đang chạy mã mới nhất. Chúng tôi đảm bảo điều này bằng cách cập nhật cơ sở mã của chúng tôi thời gian và chúng tôi thực hiện một hoạt động và giảm lưu lượng mạng bằng cách chỉ chuyển sự khác biệt tập tin trên mạng của chúng tôi.

Trong thiết lập trình diễn của tôi, tôi đã làm chính xác như trên. Subversion được cài đặt trên máy chủ xử lý công việc của tôi và tôi chỉ đơn giản là kéo mã mới nhất từ ​​một chi nhánh của công nhân bằng cách sử dụng 'svn các bản cập nhật'. Tôi cũng đã thêm một thẻ số phiên bản để xử lý kịch bản của tôi được trả lại cho cơ sở dữ liệu như là một phần của sự trở lại kết quả. Bằng cách này tôi có thể thấy rằng mã của tôi đã được cập nhật mỗi khi tôi sao chép thân của tôi vào các nhân viên, tức là chi nhánh mà tôi chắc chắn chạy kịch bản xử lý mới nhất.

Sử dụng dữ liệu mới nhất

Nếu xử lý công việc của bạn làm cho việc sử dụng các nguồn dữ liệu sau đó tại một số điểm sẽ được cập nhật quá. Trừ khi bạn gọi các nguồn dữ liệu của bạn trên một cơ sở rất thường xuyên bạn sẽ làm tràn ngập hệ thống mạng của bạn với lưu lượng truy cập càng sớm như công nhân của bạn bắt đầu chạy tất cả mọi thứ bế tắc. Đối với giải pháp của tôi, tôi quyết định rằng tôi muốn để di chuyển các nguồn dữ liệu của tôi xung quanh với máy ảo của tôi.

Giữ bạn là con ngựa đó! Nguồn dữ liệu của tôi là gì HUGE? Vâng điều này thực sự là một trường hợp của bao nhiêu dữ liệu chúng ta đang nói? Nó có thể là tiết kiệm chi phí hiệu quả để cài đặt một ổ đĩa cứng bổ sung lớn hơn vào mỗi máy hơn là mua một máy chủ xử lý bổ sung. Đây là một câu hỏi của ngân sách và kinh doanh để quyết định. Nó có thể đó là nguồn dữ liệu của bạn là quá lớn nên không khả thi để giữ cho rằng số lượng dữ liệu trong các máy nhân viên của bạn. Trong trường hợp đó bạn sẽ làm gì? Vâng, chúng tôi có thể nhìn vào gọi một máy chủ dữ liệu địa phương, nhưng điều này có thể gây ra các vấn đề với mạng. Trong trường hợp này, một hệ thống lưới điện như thế này có thể trở thành không thực tế để bao gồm trong môi trường văn phòng của bạn. Nó cũng có thể là bạn có thể nhìn vào các chiến lược thay thế chạy, ví dụ như chỉ kêu gọi công nhân của bạn 20:00-06:00 mỗi đêm và / hoặc nguồn dữ liệu yêu cầu throttling.

Di chuyển trên cho phép nói rằng số lượng nguồn dữ liệu của chúng tôi đến 100GB dữ liệu. Cũng có khá một chút dữ liệu để di chuyển xung quanh mạng cập nhật. Làm thế nào chúng ta sẽ đảm bảo rằng chúng tôi có bản sao mới nhất của các dữ liệu trong trường hợp này? Rsync là một khả năng, nhưng cá nhân tôi nghĩ rằng bằng cách chạy nguồn dữ liệu mới nhất của bạn trên máy chủ xử lý công việc của bạn và thiết lập này lên như là một bậc thầy trong nhân rộng (với một bản ghi bin tốt đẹp lâu dài) có thể là cách để đi:

nhân rộng Bằng cách thiết lập mỗi công nhân của bạn như là một nô lệ các bản cập nhật máy chủ kiểm soát công việc để nguồn dữ liệu của bạn sẽ chảy xuống độc đáo cho người lao động của bạn mà không có một sự gia tăng rất lớn trong hoạt động mạng (có nghĩa là trừ khi bạn thực hiện một cập nhật dữ liệu rất lớn và tất cả các công nhân đá trong cùng một lúc). Điều này có lợi thế hơn rsync trong đó bạn sẽ không nhận được một lúc ngập ngừng trước khi mỗi công việc, như các bản cập nhật cơ sở dữ liệu, mysql daemon nhân viên của bạn sẽ liên tục cập nhật dữ liệu của nó khi xử lý vẫn tiếp tục.

Điều này là làm thế nào tôi thiết lập máy chủ trình diễn của tôi. Để thiết lập sao chép theo hướng dẫn trên trang web mySQL ( Thiết lập sao chép ) và trong vòng 20 phút tôi đã có nhân viên inital của tôi sao chép các tập dữ liệu máy chủ kiểm soát công việc. Đối với mỗi người lao động bổ sung các thiết lập sao chép và quá trình làm việc mỗi khi VM đã được sao chép.

Tóm tắt thông tin

Trong phần này của bài viết chúng tôi đã xem xét cách dễ dàng và không đau là để giữ cho mã xử lý của bạn cập nhật bằng cách using rsync hoặc subverion (SVN) để làm công việc và làm giảm lưu lượng mạng tại cùng một time. Chúng tôi cũng thảo luận làm thế nào để giữ cho nguồn thông tin dữ liệu của bạn up-to-date bằng cách cho phép nó chảy xuống cho mỗi công nhân của bạn. Vì vậy chúng tôi khu vực đảm bảo rằng chúng tôi tiếp tục với logic kinh doanh và thông tin trong hệ thống mạng lưới văn phòng của chúng tôi. Rõ ràng là sẽ có vô số lựa chọn thay thế để thực hiện các nhiệm vụ này, nhưng ở đây là hai ví dụ đơn giản để hiển thị một giải pháp dễ dàng để đi qua.

Tiếp theo thời gian

Trong phần cuối cùng của loạt bài này, aptly tên là Phần 5 , chúng tôi sẽ thảo luận về việc triển khai hệ thống này. Tôi sẽ tóm tắt những gì đã học được và những gì tôi quản lý để tạo ra.

Văn phòng lưới máy tính sử dụng môi trường ảo - Phần 5

, thứ Sáu ngày 04 tháng 12 năm 2009 11:03

Giới thiệu

Tôi làm việc trong một công ty mà chúng tôi chạy nhiều công việc hàng loạt chế biến hàng triệu bản ghi dữ liệu mỗi ngày và tôi đã suy nghĩ gần đây về tất cả các máy ngồi xung quanh mỗi ngày và không làm gì trong vài giờ. Nó sẽ không tốt nếu chúng ta có thể sử dụng những máy móc để tăng cường sức mạnh xử lý của hệ thống của chúng tôi? Trong tập hợp các bài viết này, tôi sẽ xem xét các lợi ích tiềm năng của việc sử dụng một văn phòng lưới điện bằng cách sử dụng môi trường ảo hóa.

Trong phần 4, chúng tôi đã sử dụng các công cụ để đảm bảo rằng chúng tôi đang chạy phiên bản mới nhất của các nguồn mã và dữ liệu để kết quả thu được là luôn luôn up-to-ngày với các thông tin kinh doanh mới nhất và logic.

Trước khi triển khai

Trước khi triển khai hệ thống mạng lưới của bạn nếu có một điều bạn làm và một điều một mình, nó là điểm chuẩn hệ thống hiện tại của bạn! Không có vấn đề gì bạn nói với đồng nghiệp về bao nhiêu thêm công việc hệ thống của bạn sẽ làm gì trừ khi bạn có con số để sao lưu này lên bảo lãnh của bạn là không có gì. Vì vậy,

  • có bao nhiêu hồ sơ bạn có thể xử lý hiện tại? Mỗi ngày? Mỗi giờ?
  • Làm thế nào lâu nó thường xoay quanh một công việc?
  • Nhiều hơn năng lực bạn có?

Ngoài ra còn có thêm câu hỏi:

  • Nếu máy chủ xử lý của bạn (hoặc một trong các máy chủ xử lý của bạn) đi xuống như thế nào điều này sẽ ảnh hưởng đến khả năng của bạn, bạn sẽ được làm tê liệt?
  • Lợi thế gì bạn hy vọng / mong đợi để có được từ một hệ thống lưới điện?
  • Máy văn phòng của bạn có khả năng chạy các công việc?
  • Được của bạn (hoặc bạn công việc có thể được chuyển đổi) để wrok trong phong cách của chạy?

Điểm quan trọng cuối cùng là mất thời gian của bạn trên bất kỳ sự thay đổi lớn như thế này. Cập nhật mã xử lý của bạn để làm việc bằng cách sử dụng phương pháp mới, điểm chuẩn một lần nữa. Có thể thiết lập máy chủ xử lý của bạn để chạy một máy ảo, sau khi tất cả các máy chủ xử lý của bạn sẽ chỉ là một công nhân (chỉ là một rất mạnh tương đối). Cho phép các quá trình mới để giải quyết.

Triển khai

Đề nghị của tôi sẽ được bật vào ngày cuối tuần một văn phòng thực hiện tất cả các cài đặt và thiết lập. Làm điều này trước khi một kỳ nghỉ hai tuần và để lại nên nghèo khác chap để đối phó với những hậu quả có thể không ...

Triển khai cho một hệ thống như thế này cần được làm chậm. Mặc dù nó là tương đối đơn giản để thiết lập hệ thống này sẽ ảnh hưởng đến toàn bộ cơ sở hạ tầng văn phòng của bạn (tốt kỹ thuật số). Thứ nhất, tung ra một vài máy tại một thời điểm, lưu lượng truy cập mạng lưới giám sát, làm thế nào các máy chủ công nhân thực hiện trên cơ sở ngày-to-ngày. Bạn có thể cần phải thay đổi cấu hình công việc của bạn đáp ứng những phát hiện của bạn.

Một khi hệ thống đã giải quyết với một vài máy (cho phép nói rằng 10% của tất cả các máy văn phòng, tức là 5) giữ cho mạng lưới giám sát lưu lượng truy cập và máy chủ performance. điểm chuẩn một lần nữa, bây giờ bạn nên được xử lý công việc nhiều hơn 33% so với các tiêu chuẩn đầu tiên của bạn. Kiểm tra xem đây là như vậy, hoặc là bạn sẽ ít nhất là trong sân chơi bóng chày này. Nếu không, điều tra những gì đang xảy ra trước khi chuyển. Lặp lại chu kỳ này cho đến khi bạn hạnh phúc có tất cả các máy văn phòng mà không giết chết hiệu suất máy tính cá nhân hoặc nghiền mạng của bạn bị treo.

Tại tất cả các lần giữ điểm chuẩn, ngay cả sau khi tất cả các triển khai được thực hiện. Kiểm tra xem làm thế nào cập nhật mã mới ảnh hưởng đến tốc độ hệ thống của bạn, hãy kiểm tra tất cả các công nhân được báo cáo và xử lý công việc. Chậm (rất chậm) tăng cấu hình công việc của bạn để có được tốt nhất từ ​​công nhân và mạng lưới của bạn.

Dừng lại!

Điều gì sẽ xảy ra nếu bạn muốn ngăn chặn công nhân của bạn chạy ở một thời gian? Họ là tất cả ra khỏi đó, tái sinh, và cố gắng hết sức mình để xử lý dữ liệu như côn trùng đói. Câu trả lời có vẻ hiển nhiên, nhưng giá trị của nó chỉ thêm trong trường hợp bị bỏ qua của nó. Đơn giản chỉ cần chỉnh sửa kịch bản xử lý của bạn với một lối ra (0) hoặc chết () hoặc một số báo cáo khác để giết chết công việc xử lý của bạn. Một lý do quan trọng lý do tại sao chúng tôi luôn luôn cố gắng cập nhật kịch bản xử lý mới nhất trước khi chạy bất kỳ!

Trình diễn hệ thống

Để viết này tập hợp các bài báo ngắn, tôi tạo ra một mạng lưới rất nhỏ để chứng minh các công nghệ và phương pháp. Tôi đọc rất nhiều bài báo, hướng dẫn, và sử dụng các công cụ khác nhau để thiết lập và theo dõi những gì đang diễn ra. Không có nghĩa là tôi đi ra ngoài và bão hòa một văn phòng hoàn toàn với giao thông và cũng không có tôi có quyền truy cập vào một PC thông thường nhân viên để xem làm thế nào hiệu suất máy chủ đã bị ảnh hưởng.

Hệ thống trình diễn của tôi là thực sự rất khiêm tốn. Tôi sử dụng máy tính để bàn thường xuyên của tôi như là một máy chủ điều khiển công việc. Trên này, tôi đã cài đặt máy chủ MySQL cài đặt thiết lập là một bậc thầy trong nhân rộng, PHP , Â và SVN liên kết thông qua apache (để truy cập thông qua máy ảo công nhân).

Sau đó tôi tạo một máy công nhân CentOS trên VirtualBox trên một máy tính xách tay 6 năm tuổi XP cửa sổ. Tôi thiết lập dự kiến ​​nhiệm vụ theo quy định sau khi sao chép máy ảo vào máy và để cho nó đi.

Các máy ảo được thiết lập với PHP, lật đổ, và mySQL. Tôi đã kiểm tra một chi nhánh có tên là 'công nhân' từ kho lưu trữ máy chủ kiểm soát công việc của tôi và chắc chắn rằng nó có thể được cập nhật bằng cách sử dụng 'svn các bản cập nhật'. Tiếp theo, tôi thiết lập mySQL như một nô lệ và kiểm tra dữ liệu đã được sao chép từ mySQL trên máy chủ kiểm soát công việc xuống máy ảo công nhân. Sau khi tất cả những điều này, tôi thiết lập các kịch bản bash và công việc cron.

Kịch bản xử lý của tôi về cơ bản đã đi dọc theo dòng này (rất đơn giản công cụ):

  • Đọc trong lĩnh vực tên
  • Tính số lượng tên tương tự trong một bảng từ các nguồn dữ liệu được tổ chức trên máy ảo
  • Tính số lượng các tên như tên bởi không gian ở trên, nhưng chia (tức là tên đầu tiên, giữa, họ)
  • Lặp đi lặp lại quá trình này 1.000 lần

Mỗi công việc mất khoảng 20 phút để chạy. Tại một điểm tôi mở ra nhiều bản sao của máy ảo công nhân trên máy tính xách tay các cửa sổ và theo dõi các công việc được kiểm tra bằng cách mỗi địa chỉ IP công nhân. Tại thời điểm này, tôi cũng xác nhận rằng bản sao tự động khởi động lại.

Để các máy tính xách tay nhàn rỗi kết quả trong một công nhân bắt đầu xử lý các việc làm từ các máy chủ điều khiển công việc. Khi trở lại sử dụng máy tính xách tay có một sự chậm trễ khoảng 30-60 giây, đây là một số tiền hợp lý của thời gian và nhân viên sẽ cần phải được thực hiện nhận thức được rằng máy tính của họ có thể tạm dừng một thời gian ngắn khi quay trở lại máy. Máy mới hơn có thể không có một tạm dừng này dài. Lợi ích của số lượng chế biến thực hiện bởi các máy này trong thời gian nhàn rỗi sẽ nhiều hơn nhân viên phải chờ đợi một thời gian ngắn (1 phút) đến máy của họ một buổi sáng (tôi thường xuyên chờ đợi lâu hơn cho Windows Defender cập nhật diễn ra) cung cấp đã được thực hiện nhận thức được điều này (thời gian hữu ích để lấy một cà phê buổi sáng).

Nói chung tôi cảm thấy tự tin rằng mình đã chứng minh các công nghệ có thể được sử dụng để tạo ra một hệ thống như vậy. Tôi đã chỉ ra rằng một hệ thống như vậy không làm việc trên một quy mô nhỏ (rất) và với một số thử nghiệm có thể được thu nhỏ sử dụng các nguồn tài nguyên của máy của một văn phòng. Nếu tôi không nhận được điểm để làm điều này tôi sẽ rất quan tâm để biết / thấy khi một người nào khác không.

Kết luận / Đánh giá

Rõ ràng bước tiếp theo sẽ là thực sự có được một ví dụ thế giới thực và bắt đầu triển khai một hệ thống như thế này trong một môi trường văn phòng và xem những gì sẽ xảy ra. Yêu cầu một doanh nghiệp cam kết này mà không cần một công ty đường mòn rực để chứng minh công nghệ và hiệu quả có thể là một chút khó khăn. Grid / phân phối máy tính là rất phổ biến là một số vòng tròn và có một số ứng dụng lớn (BIONC, SETI @ Home, Folding @ Home, vv). Tôi không, tuy nhiên, tìm một quy mô nhỏ hơn và hệ thống đơn giản như thế này trong các tìm kiếm có thể được triển khai trong một môi trường văn phòng.

Tôi tạo ra một hệ thống về cơ bản miễn phí bằng cách sử dụng phần mềm mã nguồn chủ yếu là mở và các công cụ có sẵn trong hầu hết các văn phòng. Các công nghệ về cơ bản đã được chứng minh và cho thấy để thực hiện và làm việc như mong đợi. Hy vọng rằng tôi có thấy rằng công việc không nhiều và với một thiết lập rất đơn giản, bạn có thể triển khai một hệ thống văn phòng điện toán lưới là mạnh mẽ, giá rẻ, Â và khả năng mở rộng tất cả cùng một lúc.

Khi một hệ thống và chạy trên đó gần như là không có kết thúc với số tiền tùy biến và cải tiến bạn có thể thực hiện. Đối với ví dụ số liệu thống kê điểm chuẩn / có thể dễ dàng được thêm vào hiển thị giá trị của hệ thống như vậy mỗi ngày. Máy mới có thể được thêm vào một cách nhanh chóng và dễ dàng như khi họ đến với các nâng cấp phần cứng hiện củng cố sức mạnh xử lý của bạn.

Tôi hy vọng bạn đã rất thích đọc loạt bài này và cho bạn thực phẩm cho các tư tưởng về một hệ thống mạng lưới văn phòng. Các giải pháp trình bày ở đây sẽ không nhất thiết phải làm việc trong mọi tình huống nhưng phải được thích nghi để cho phép bạn để có được xử lý dữ liệu của bạn thực hiện bằng cách sử dụng giải pháp của riêng bạn.

Xin vui lòng gửi cho tôi bất kỳ ý kiến, chỉnh sửa, hoặc cải tiến và tôi sẽ làm hết sức mình để giữ cho bài viết này cập nhật cho phù hợp.













Panorama Theme theo Themocracy

10 tuyến du khách
3 khách, 7 chương trình, 0 thành viên
Max khách truy cập hôm nay: 14 at 12:49 am UTC
Tháng này: 26 2012/04/04 10:27 pm UTC
Năm nay: 69 27-02-2012 09:56 am UTC
Tất cả thời gian: 130 28-03-2011 10:40 pm UTC