Thiết kế giải pháp trên IBM SmartCloud Enterprise: Các bài thực hành và các công cụ tốt nhất

Quản lý điện toán đám mây cho doanh nghiệp CNTT hiệu quả hơn

Một gói phần mềm là một tập hợp các tập tin cài đặt phần mềm, tập tin cấu hình, và siêu dữ liệu có thể được triển khai trên một đối tượng máy ảo.Trong bài viết này đầu tiên của một loạt các tác giả trình bày một cái nhìn tổng quan của gói phần mềm và các khái niệm quản lý image, giải thích các mô hình tài nguyên, so sánh nền tảng này để quản lí các gói phần mềm nền tảng khác, thảo luận về trường hợp sử dụng, và khảo sát các công cụ có sẵn. Các khái niệm được minh họa bằng việc sử dụng một ứng dụng máy tính tiết kiệm năng lượng.

Loạt bài này mô tả việc sử dụng các gói phần mềm, quản lý image, và các công cụ khác trên IBM® SmartCloud Enterprise để giải quyết vấn đề thực tế trong quản lý doanh nghiệp CNTT.

Alex Amies, Kỹ sư phần mềm cao cấp, IBM

Alex Amies là kỹ sư phần mềm cao cấp tại phòng thí nghiệm phát triển GTS của IBM tại Trung Quốc. Ông hiện là kiến trúc sư tham gia thiết kế IBM SmartCloud Enterprise. Trước đây, ông đã làm kiến trúc sư và nhà phát triển về các sản phẩm bảo mật và đám mây trong các nhóm khác của IBM.



Alexei Karve, Kỹ sư phần mềm cao cấp, IBM Research

Alexei Karve là kỹ sư phần mềm cao cấp tại Trung tâm nghiên cứu Thomas J Watson của IBM. Ông là thành viên của nhóm thiết kế về SmartCloud Enterprise tập trung vào các gói phần mềm và VPN/VLAN cho các hệ thống hỗ trợ nghiệp vụ đám mây. Alexei có nhiều kinh nghiệm trong các dịch vụ hỗ trợ hoạt động, ảo hóa và Trình quản lý cung ứng Tivoli (Tivoli Provisioning Manager) . Ông đã trải qua quá trình làm việc lâu dài và đa dạng trong lĩnh vực quản lý hệ thống kể từ khi gia nhập IBM vào năm 1993.



Andrzej Kochut, Tiến sĩ nghiên cứu, IBM T.J. Watson Research Center

Andrew là một thành viên của đội ngũ thiết kế SmartCloud Enterprise tập trung vào hệ thống hỗ trợ kinh doanh. Ông được đặt ở trụ sở Hoa Kì



Hidayatullah Shaikh, Nhân viên kỹ thuật cao cấp, IBM Corporation

Shaikh là một Nhà sáng chế xuất sắc của IBM và người lãnh đạo kỹ thuật về các sản phẩm Business Support Systems cho IBM SmartCloud Enterprise và Enterprise+, ông làm việc tại Hoa Kỳ.



Qiangguo Tong, Kỹ sư tư vấn phần mềm, IBM

Qiang Guo Tong gia nhập IBM vào năm 2004. Ông là một trong những nhà lãnh đạo nhóm phát triển IBM SmartCloud Enterprise chịu trách nhiệm về việc tạo các tính năng mới. Ông cũng là kiến trúc sư giải pháp hỗ trợ toàn cầu hóa về SmartCloud. Ông có chuyên môn kỹ thuật về công nghệ toàn cầu hóa và công nghệ JavaEE. Ông đã có hơn 8 năm kinh nghiệm phát triển ứng dụng web dựa trên kiến trúc JavaEE và tập trung vào các công nghệ web 2.0 như Dojo, JSON-RPC.



Randy Rendahl, Kỹ sư cao cấp, IBM

Randy là một Master Inventor và thành viên của đội ngũ thiết kế SmartCloud Enterprise. Ông hiện đang tập trung vào các dịch vụ hỗ trợ kinh doanh với chuyên ngành trong các lĩnh vực thanh toán và đánh giá, quá trình kinh doanh dễ dàng hơn và thiết kế mô hình dữ liệu BSS. Có trụ sở tại Research Triangle Park, NC Randy có kiến thức rộng trên công nghệ điện toán đám mây BSS được hình thành trên một nền tảng từ một quá khứ lâu dài và đa dạng trong các lĩnh vực quản lý hệ thống kể từ khi gia nhập IBM vào năm 1989.



Scott Peddle, Nhà phát triển tư vấn phần mềm, IBM Japan

Photo of Scott PeddleScott Peddle là một nhà phát triển phần mềm tư vấn về IBM SmartCloud Enterprise. Scott lãnh đạo các dự án tập trung vào việc tích hợp Rational Asset Manager trong một môi trường đám mây. Ông có kinh nghiệm về lãnh đạo dự án để tích hợp các công cụ WebSphere BPM, chẳng hạn như WebSphere Business Modeler và WebSphere Integration Developer qua Rational Asset Manager. Scott cũng là kỹ sư phát hành cho các sản phẩm xây dựng và thiết kế Rational, như Rational Software Architect và Rational Application Developer.



31 07 2013

Một mục tiêu trong điện toán đám mây là để cho phép một lựa chọn phong phú của các nguồn tài nguyên làm việc cho người tiêu dùng điện toán đám mây, một mục tiêu khác là để giữ cho các nhiệm vụ hỗ trợ ở một mức độ quản lý cho các nhóm image và phát triển phần mềm. Nó có vẻ như là hai mục tiêu này là đặc quyền của nhau, nhưng loạt bài này (see series overview) trình bày cách sử dụng hiệu quả và quản lý các gói phần mềm và các nguồn tài nguyên image có thể làm cho cả hai mục tiêu này có thể đạt được.

Bài viết này:

  • Cung cấp một cái nhìn tổng quan của gói phần mềm và các khái niệm quản lý image.
  • Giải thích các mô hình tài nguyên.
  • So sánh mô hình này với các phần mềm quản lý gói nền tảng khác.
  • Thảo luận về trường hợp sử dụng.
  • Khảo sát những công cụ có sẵn.

Các khái niệm được minh họa bằng việc sử dụng một ví dụ ứng dụng máy tính tiết kiệm năng lượng. Tìm hiểu cách thực hiện một giải pháp đơn giản, bao gồm một số lượng rất nhỏ của mã Python và hướng dẫn xây dựng một gói RPM. Làm như thế nào để triển khai những gói phần mềm cho một máy ảo trên đám mây. Bài viết tiếp theo của loạt bài này sẽ nghiên cứu từng công cụ, các API, và trường hợp sử dụng chi tiết hơn, bằng cách sử dụng ứng dụng ví dụ tương tự.

Bài viết này là thích hợp cho người sử dụng điện toán đám mây và các nhà hoạch định muốn biết làm thế nào để quản lý hiệu quả các nguồn tài nguyên điện toán đám mây một cách bền vững. Không có kiến thức về lập trình là cần thiết. Mặc dù một số ví dụ tập lệnh rất ngắn được cung cấp, tất cả các nền tảng cần thiết được giải thích. Ví dụ sử dụng Linux® nhưng có thể dễ dàng thích nghi với làm việc trên Windows®.

Loạt bài này mô tả việc sử dụng các gói phần mềm, quản lý Image, và các công cụ khác trên IBM SmartCloud Enterprise để giải quyết vấn đề thực tế trong quản lý doanh nghiệp CNTT; Các tính năng khác nhau và các công cụ có sẵn trên điện toán đám mây được giới thiệu sử dụng một ví dụ ứng dụng máy tính tiết kiệm năng lượng đơn giản.

Chủ đề sắp tới bao gồm:

  • Tổng quan về các gói phần mềm và quản lý Image trong IBM SmartCloud Enterprise.
  • Nhập các image vào IBM SmartCloud Enterprise.
  • Quản lý gói phần mềm sử dụng ICCT trong IBM SmartCloud Enterprise.
  • Phần mềm quản lý doanh nghiệp sử dụng gói API SmartCloud IBM.
  • Quản lý gói phần mềm sử dụng CohesiveFT trong IBM SmartCloud Enterprise.
  • Dịch vụ doanh nghiệp cho phép sử dụng IBM Workload Deployer trên IBM SmartCloud Enterprise.
  • Tóm tắt các trường hợp sử dụng cho gói phần mềm và quản lý image.
  • Sao chép Image từ IBM SmartCloud Enterprise.
  • Tạo ra một dịch vụ doanh nghiệp trên SmartCloud Enterprise IBM.

Một vài nội dung khởi đầu

Trong ngữ cảnh của IBM SmartCloud Enterprise, một gói phần mềm là một tập hợp của các tập tin cài đặt phần mềm, tập tin cấu hình, và siêu dữ liệu có thể được triển khai trên máy ảo.

Bạn có thể tạo và quản lí gói phần mềm trong SmartCloud Enterprise bằng cách sử dụng công cụ IBM Image Construction and Composition (ICCT), SmartCloud Enterprise REST APIs, và một số công cụ của hãng thứ ba.

Phần mềm trong tệp image của máy ảo (virtual machine images) thường được cài đặt sẵn và cấu hình bởi nhà phát triển. Một vấn đề với phương pháp "freeze-dried" là bạn có thể không tìm thấy một image có chứa tập hợp các phần mềm mà bạn muốn và điều này có thể khiến bạn phải dùng tới phương pháp "do-it-yourself (tự cài đặt)", bạn có thể chọn một tệp image máy ảo có sẵn và sử dụng nó như một nền tảng để cài đặt phần mềm của riêng bạn. Điều này dẫn đến sự gia tăng kích cỡ của những image, được biết đến trong IT với cái tên sự giãn nỡ của tệp image máy ảo ( virtual machine image sprawl).

Một vấn đề khác là mỗi image máy ảo được thiết kế cho một công dụng riêng hướng tới từng trường hợp cụ thể, có thể không dùng được cho các trường hợp nằm ngoài dự định của nhà phát triển image đó. SmartCloud Enterprise cung cấp một cầu nối giữa phương pháp "freeze-dried" và phương pháp "do-it-yourself" bằng cách sử dụng các tham số máy ảo, tập lệnh kích hoạt, và gói phần mềm để tạo các image mẫu trên SmartCloud Enterprise.

Có một giải pháp khác, linh động hơn là sử dụng công cụ IBM Image Construction and Composition (ICCT), một công cụ độc lập có thể thêm phần mềm vào máy ảo. ICCT hiện nay bao gồm IBM Workload Deployer 3.1, IBM SmartCloud Provisioning 1.2, và IBM SmartCloud Enterprise. ICCT lưu trữ image dưới dạng các gói Open Virtual Format Archive (OVA) có thể được triển khai bằng cách sử dụng IBM Workload Deployer 3.1, IBM SmartCloud Enterprise và VMware.

Image máy ảo có thể bao gồm:

  • Hệ điều hành.
  • Phần mềm trung gian.
  • Các ứng dụng.
  • Cấu hình sử dụng cụ thể.

Khi bạn thêm càng nhiều thứ vào trong một image, khả năng tái sử dụng của nó sẽ giảm xuống; khả năng tái sử dụng bị giảm xuống có nghĩa là, nhiều khả năng bạn sẽ phải sử dụng nhiều Image hơn. Nhưng đổi lại (cũng quan trọng không kém),bạn càng đưa ít thứ vào trong image, thì tính hữu dụng của nó với những người sử dụng đám mây cũng sẽ giảm theo.

Quyết định đưa những gì vào trong một image và làm thế nào để đưa nó trở thành một khuôn mẫu là hai nhiệm vụ cơ bản của nghệ thuật phát triển image.


Mô hình tài nguyên SmartCloud Enterprise

Một mô hình tài nguyên lý tưởng đã đơn giản hóa được thể hiện trong Hình 1.

Hình 1. Mô hình tài nguyên image và gói phần mềm:
Mô hình tài nguyên hình ảnh và gói phần mềm

Mô tả các nguồn tài nguyên, các thuộc tính, và các mối quan hệ ở bảng 1.

Bảng 1. Giới thiệu tài nguyên, thuộc tính, và các mối quan hệ
Tài nguyênMô tảThuộc tính và các mối quan hệ
ImageMột tập tin nhị phân có thể được lưu trữ và khởi tạo vào một trường máy ảo và siêu dữ liệu mô tả nó.Một Image được lưu trữ tại một vị trí. Trạng thái cho biết là có thể sử dụng hoặc trải qua một số chuyển tiếp. Một Image có thể được khởi tạo để tạo ra một đối tượng.
LocationMột trung tâm dữ liệu hoặc một vị trí mà các máy vật lý được lưu trữ.Image, đối tượng, VLAN phải đặt cùng vị trí.
InstanceMột máy ảoTiến trình dự phòng cần một Image và một InstanceType, lựa chọn, địa chỉ và số lượng, như là số đầu vào để tạo đối tượng. Trạng thái cho biết là nó đang chạy hay có một điều kiện khác.
InstanceTypeMột khuôn mẫu cho nguồn tài nguyên liên kết với một máy ảoSố lượng của CPU ảo, bộ nhớ ảo, đĩa ảo và kiến trúc ( 32 bit, 64 bit)
SoftwareBundleTập lệnh cài đặt và kích hoạt, tùy chọn, tập tin nhị phân và các tài nguyên khác có thể được cài đặt.Một SoftwareBundle có thể được bổ sung vào một Image. Khi Image được khởi tạo, các SoftwareBundle và tập lệnh kích hoạt được đưa vào hệ thống tập tin máy ảo.
VolumeMột thiết bị lưu trữ khối ảo có thể được sử dụng để lưu trữ dữ liệu và image.Một Volume có thể được gắn vào một instance trong quá trình dự phòng hoặc sau khi nó đang chạy. Các dữ liệu trên một Volume không thể truy cập trừ khi nó được gắn liền với một Instance.
AddressLà biểu diễn của một địa chỉ IP có thể được quản lý như một nguồn tài nguyên độc lập.Một Address có thể được gắn vào một Instance. Address sẽ luôn luôn được liên kết với một VLAN..
VLANMột mạng cục bộ ảo hoặc mạng con.VLAN có thể là công cộng hoặc riêng tư, chỉ cho phép kết nối thông qua một VLAN hoặc máy ảo multi-homed.
KeyMột đại diện của một khóa SSH; khóa riêng nên được giữ bởi người sử dụng, các đám mây làm khóa công khai và cho phép người sử dụng để tạo ra một khóa mới bất cứ khi nào cần thiết.Một khóa sẽ được nhúng vào các máy ảo Linux trong quá trình dự phòng và trước khi khởi động.

Hệ thống quản lý các gói phần mềm

Quản lý gói phần mềm là một khía cạnh then chốt của quản lý hệ thống máy tính, bao gồm cả quản lý hệ thống đám mây. Quản lý gói trên mây khá đặc biệt, bởi vì bạn sẽ tương tác với máy ảo động. Điều này tạo cơ hội cho việc cung cấp các phần mềm bổ sung trên mây và nâng kỳ vọng của người sử dụng rằng hệ thống sẽ không dừng lại ở mức chỉ hoạt động.

Các hệ thống quản lý gói phần mềm trên mây tương tự như trong khái niệm và có thể bao trùm cả hệ thống quản lý gói, được bọc bởi hệ hệ điều hành và một số nền tảng phát triển phần mềm.

Phần này phác thảo hệ thống quản lý gói phần mềm Linux và đặt nó vào hệ thống mây thông qua một ví dụ bao gồm: tạo mô-đun phần mềm trong Python, đóng gói thành RPM và chèn vào máy ảo đặt trên mây tại thời điểm dự phòng.

Gói quản lí RPM và YUM

Red Hat Package Manager (RPM) được phát triển bởi Red Hat trong thập niên 1990 và nó là một phần của Linux Standard Base. Nó cũng được chuyển sang các hệ hiều hành khác chẳng hạn như IBM AIX®:

  • Nó duy trì tính nhất quán giữa các packages (gói)
  • Có thể sử dụng để thu thập thông tin về các packages đã cài đặt
  • Xác nhận các packages để xác thực sử dụng mật mã chữ ký
  • Cập nhật các packages đã cài đặt
  • Có thể lấy các packages từ Internet

Có một số giao diện cho RPM, bao gồm Yellow Dog Updater Modified (YUM), up2date, Zypper, và Smart Package Manager. RPM được sử dụng chủ yếu trên Red Hat Enterprise Linux, CentOS, và Fedora. Đối với các hệ thống có nền tảng là Debian, bao gồm SUSE và Ubuntu, thì gói quản lí của Debian được sử dụng.

YUM được phát triển tại Duke University trước khi để cho RPM quản lí hệ thống Red Hat Linux. YUM cung cấp thêm chức năng tự động cập nhật và quản lí phụ thuộc vào RPM và làm việc tới trung tâm chứa phần mềm. Trong khi RPM hiểu rằng phụ thuộc vào nó sẽ không giải quyết được chúng. Đây là một vấn đề mà YUM có thể giúp đỡ một phần đáng kể.

Để cài đặt một gói với kệnh rpm ta dùng tùy chọn -i:

# rpm -i <package-name>

Nếu có yêu cầu xác nhận tin tưởng, lệnh rpm sẽ thất bại. Bạn phải có quyền root để cài đặt, gỡ bỏ, hoặc cập nhật các gói.

Để cài đặt một gói phần mềm với yum dùng tùy chọn install. Ví dụ, để cài đặt dos2unix:

# yum install dos2unix

Nếu đã đạt được độ tin cậy, sau đó YUM sẽ cài đặt chúng một cách tự động

Gói quản lí Debian

Advanced Packaging Tool (APT) là một hệ thống quản lí gói được sử dụng bởi hệ thống Debian, gồm cả SUSE và Ubuntu. Cũng như đối với RPM và YUM, gói dữ liệu được lưu trữ trong một trung tâm cơ sở dữ liệu.

Bạn có thể cài đặt một gói phần mềm với lệnh apt-get install. Để cài đặt gói dos2unix:

# apt-get install dos2unix

apt-get tìm thông tin các gói trong kho lưu trữ từ xa, xác định sự phụ thuộc (cần thiết), tải các gói và cài đặt nó.

Các module Python

Python được tích hợp các tính năng cho việc phân phối và cài đặt theo các module. Từ quan điểm của việc cài đặt và tiêu thụ phần mềm Python, các tính năng này có thể dễ dàng sử dụng bằng cách tải về một module, giải nén nó, và thực hiện lệnh cài đặt. Python là một ngôn ngữ thuận tiện cho chúng tôi thể hiện sự phân phối phần mềm và quy trình quản lý của phần mềm mẫu. Bạn không cần phải biết bất cứ điều gì về Python để hiểu bài viết này, chỉ cần hiểu được các giải thích trong phần này.

Trước khi bắt đầu, chúng ta liệt kê một số thuật ngữ cơ bản của Python trong bảng 2.

Bảng 2. Một số thuật ngữ cơ bản trong Python
Thuật ngữMô tả
ModuleLà một phần tái sử dụng lại code trong Python.
Pure Python moduleMột module được viết bằng Python và được chứa trong 1 tệp gọi là module.py.
PackageMột thư mục có chứa một hoặc nhiều module Python gốc và có chứa một tệp cài đặt __init__.py.
Extension moduleMột module viết bằng C/C++ hay Java™ cho Jython.
Distribution moduleMột bộ các module được phân phối như một nguồn tài nguyên duy nhất. Điều này tương đương với một gói phần mềm trên nhiều nền tảng khác và trong ý nghĩa chung của thuật ngữ này.

Để cài đặt Python module:

# python setup.py install

Điều này thường được thực hiện bằng quyền root và cài đặt các module trong thư mục {INSTALL_ROOT}//site-packages, ví dụ, /usr/lib/python2.6/site-packages. Ngoài ra, bạn có thể cài đặt nó như là một người sử dụng bình thường trong thư mục gốc của bạn với lệnh:

$ python setup.py install --user

Python cung cấp bộ công cụ Distutils để giúp các tác giả của các module phân phối phần mềm của họ mà làm cho các lệnh có thể chạy.


Đoạn code ví dụ: Một module phân phối viết bằng Python

Giờ chúng ta hãy tạo ra một module Python, một tập lệnh cài đặt và kiểm tra bằng cách cài đặt nó. Gói phần mềm được đề cập đến ở đây là một công cụ tính toán năng lượng có tên là ecalc và chỉ chứa một module đơn lẻ là energy_calculator và một lớp EnergyCalculator. Trong ví dụ đơn giản này, việc mà đoạn mã (code) làm chỉ là in ra một vài dữ liệu mẫu; mặc dù vậy, bạn có thể dễ dàng áp dụng các khái niệm tương tự ở đây cho những trường hợp phức tạp hơn và đòi hỏi một hệ thống quản lý gói phần mềm cao cấp hơn.

Dưới đây là đoạn code của lớp EnergyCalculator:

# energy_calculator.py
"""
energy_calculator module for computing energy usage
"""

class EnergyCalculator:
    """EnergyCalculator class"""

    def __init__(self):
        self._base = 200

    def energy_used(self):
        return self._base

Để gọi nó từ máy tính năng lượng khách, ta dùng đoạn code sau:

#!/usr/bin/python
# energy_client.py

""" EnergyCalculator client """

from energy_calculator import EnergyCalculator

ec = EnergyCalculator()
print("You used {0} kJ today".format(ec.energy_used()))

Khi được gọi, kết quả ví dụ ta nhận được là:

$ ./energy_client.py
You used 200 kJ today

Đầu tiên, hãy tạo ra một tập lệnh cài đặt:

# setup.py
# Setup script for libenery

from distutils.core import setup
setup(name='libenergy',
      version='0.1',
      py_modules=['energy_calculator'],
      )

Sau đó tạo module phân phối:

$ python setup.py sdist

Đoạn mã lệnh cài đặt ở ví dụ trên tạo ra một gói phân phối nguồn. Nó tạo ra một thư mục phân phối có chứa một tệp nén libenergy-0.1.tar.gz có thể dùng để cài đặt gói phần mềm. Nó không bao gồm tập lệnh khách energy_client.py. Nó đưa ra các cảnh báo khi chúng ta cung cấp thiếu các thông tin về tác giả, địa chỉ URL và tệp README. Đoạn lệnh cũng tạo ra một danh sách liệt kê trong tệp MANIFEST được bao gồm trong tệp TAR. Để sao chép tệp libenergy-0.1.tar.gz tới máy đích của bạn, hãy dùng lệnh sao chép an toàn dưới đây:

$ scp -i ${key} libenergy-0.1.tar.gz idcuser@${vm}:libenergy-0.1.tar.gz

Câu lệnh trên được dùng trong trường hợp giả định là bạn đang làm việc trên Linux. Chúng ta cũng thực hiện giống như vậy trên Windows nhưng cần phải cài thêm lệnh scp. Nó được tích hợp cùng với OpenSSH và sử dụng khóa SSH ${key} để sao chép tệp vào máy ảo với tên máy chủ hoặc địa chỉ IP ${vm} như là idcuser. Hãy định nghĩa các biến môi trường cho chúng để tránh việc phải nhập lại các giá trị nhiều lần. Sau đó, bạn có thể chia nhỏ gói phần mềm ra và cài đặt từ xa bằng cách thực thi lệnh sau từ thư mục phân phối:

$ ssh -i ${key} idcuser@${vm} 'gunzip libenergy-0.1.tar.gz; 
 tar -xvf libenergy-0.1.tar; cd libenergy-0.1; sudo python setup.py install'

Đoạn mã lệnh SSH này thực thi từ xa để giải nén gói phần mềm và cài đặt nó với quyền root bằng lệnh sudo. Các lệnh từ xa được đặt trong dấu ngoặc đơn và cách nhau bằng dấu chấm phẩy.

Giờ thì bạn đã cài đặt xong module energy_calculator trên máy đích, bạn có thể sử dụng chương trình trên máy khách để gọi nó bằng tập lệnh sau:

$ scp -i ${key} energy_client.py idcuser@${vm}:energy_client.py
$ ssh -i ${key} idcuser@${vm} './energy_client.py'
You used 200 kJ today

Các lệnh ở trên đầu tiên sẽ sao chép và sau đó thực thi tập lệnh khách. Thực hiện các lệnh từ thư mục chứa tập lệnh khách.

Giờ hãy cùng tổng kết lại những gì bạn đã đạt được tới thời điểm này:

  • Bạn đã viết ra một module Python và một tập lệnh khách để thực hiện nó.
  • Bạn đã tạo ra một gói cài đặt module
  • Bạn đã cài đặt module từ xa trên một máy ảo bằng cách sử dụng SSH.
  • Bạn đã gọi từ xa một module trên máy ảo bằng cách sử dụng tập lệnh khách.

Những gì bạn đã làm được không hề tệ chút nào đâu, đặc biệt là khi bạn mới chỉ viết và sử dụng phần mềm "của riêng bạn" trong phạm vi của ví dụ này. Mặc dù vậy, ví dụ ở đây là đơn giản; và có 1 vài hạn chế ngày càng biểu hiện rõ:

  1. Người dùng cần phải biết cách cài đặt module Python. Sẽ tốt hơn nếu chúng ta có thể sử dụng cách thức cài đặt gói phần mềm tương tự như các sản phẩm được viết bằng các ngôn ngữ khác.
  2. Việc tìm hiểu và cập nhật thường không mấy thuận tiện đối với những người không phải là lập trình viên Python.
  3. Nó không cung cấp cho chúng ta thông tin những điều kiện tiên quyết cần có, ví dụ như là trình độ về quản lý hệ thống và trình độ về Python cần có.
  4. Để tránh hiện tượng kéo giãn image, thì sẽ tốt hơn nếu chúng ta cài đặt nó từ một giao diện điều khiển trên cloud (cloud console) và đưa gói phần mềm vào các máy ảo. Ít nhất thì ta cũng có được một vài lựa chọn khác thay vì phải viết hàng loạt các tập lệnh phức tạp như trong ví dụ đưa ra.

Tốt hơn hết là bạn nên đưa các module tính toán năng lượng vào một máy ảo tại một thời điểm dự phòng hoặc khi bạn cần phải cập nhật nó tự động.


Cài đặt module Python với RPM

Python có một vài công cụ hỗ trợ giúp bạn tạo ra các gói cài đặt cho Red Hat Package Management (RPM), Windows và một số định dạng khác có thể giúp ta giải quyết các hạn chế 1, 2, và 3 vừa được đề cập tới trên kia. Các định dạng trên là một dạng dễ sử dụng hơn khi viết các tập lệnh kích hoạt và khởi động.

Phần này sẽ chỉ cách viết một tập lệnh kích hoạt nhằm kiểm tra xem công cụ tính toán năng lượng đã được cài hay chưa. Nếu nó chưa được cài đặt, giờ bạn có thể cài đặt với một lệnh rpm.

Để tạo một gói RPM:

$ python setup.py bdist_rpm

Lệnh này tạo ra một gói RPM có tên là libenergy-0.1-1.noarch.rpm trong thư mục phân phối. Copy nó vào máy ảo đích với một lệnh scp:

$ scp -i ${key} libenergy-0.1-1.noarch.rpm idcuser@${vm}:/tmp/libenergy-0.1-1.noarch.rpm

Cài đặt module tính toán năng lượng:

$ sudo rpm -i /tmp/libenergy-0.1-1.noarch.rpm

Lệnh rpm sẽ kiểm tra xem nó đã được cài đặt hay chưa và không tiến hành cài đặt lại nó nếu như nó đã chạy lần thứ 2.

Như ta đã thấy thì kết quả là module đã được cài đặt bằng cách chạy công cụ tính toán năng lượng trên máy khách, energy_client.py Bạn sẽ sử dụng tệp RPM này và lệnh bên cạnh để đưa module vào các máy ảo khi chúng được cấp quyền trên cloud.


Sao chép một tệp image bằng cách sử dụng cổng thông tin web SmartCloud

Quá trình hướng dẫn cho việc tạo ra các gói phần mềm là không dễ dàng như sử dụng các công cụ như ICCT, nhưng nó thể hiện quá trình đóng gói phần mềm một cách chi tiết hơn và là tuân theo tự động hóa bằng cách sử dụng các API SmartCloud Enterprise. Vì những lí do này chúng tôi sẽ thảo luận về nó đầu tiên.

Một trong những bước cần thiết đầu tiên là tạo ra một tệp image mà bạn có quyền sở hữu. Điều này là cần thiết để chỉnh sửa các siêu dữ liệu và thêm các tệp, chúng sẽ được thêm vào, máy ảo sẽ được cung cấp dựa trên tệp image. Có 2 cách để làm việc này:

  1. Khởi động một máy ảo và thực hiện các tùy chỉnh mà bạn muốn, bao gồm cài đặt phần mềm.
  2. Sao chép tệp image hiện tại.

Sao chép image được mô tả bởi vì nó là cách tiếp cận dễ dàng nhất để tự động và xây dựng các công cụ để quản lý tệp image.

Sao chép một tệp image:

  1. Nhấn vào nut Add Image trong trang Control Panel | Images. Cửa sổ các tệp image cơ sở được mở ra.
    Hình 2. Sao chép một tệp image bằng cách sử dụng cổng thông tin web SmartCloud
    Sao chép hình ảnh trong cổng thông tin web SmartCloud
  2. Nhấn nút Next. Bước 2 của thuật sĩ được mở ra.
    Hình 3. Bước 2 của Clone Image Wizard
    Bước 2 của Clone Image Wizard
  3. Nhập tên và mô tả cho tệp image được sao chép. Xác nhận dữ liệu trong bước 3 của thuật sĩ và nhấn nút Next.
  4. Đồng ý với các điều khoản và điều kiện trong Bước 4 và nhấp vào nút Submit. Tệp image mất một vài phút để sao lưu và xuất hiện trong Control Panel và Asset Catalog.

Nội dung các asset của tệp image nằm dong danh mục asset, tương tự như hình 4.

Hình 4. Các tệp bản sao image trong mục lưu trữ
Các file bản sao ảnh trong mục lưu trữ

Các tập tin bao gồm parameters.xml trong đó mô tả các thông số đầu vào và các tập tin mô hình cấu trúc liên kết của tệp image. Các tệp mà bạn quan tâm nhất nằm trong thư mục activation_scripts, được thể hiện trong hình 5.

Hình 5. Các tệp trong thư mục activation_scripts
Các file trong thư mục activation_scripts

Thêm tập lệnh cài đặt vào máy ảo trong quá trình dự phòng

Dưới đây là nội dung bản sao image của phần trước trong danh sách mục lục:

Hình 6. Các tệp bản sao image trong mục lưu trữ:
Các file bản sao ảnh trong mục lưu trữ

Các tập tin bao gồm parameter.xml và những tập tin kiểu topology. Parameter.xml mô tả những tham số truyền vào. Các tập tin mà bạn cần quan tâm nằm trong thư mục activation_script, xem hình 7.

Hình 7. Các tệp trong thư mục activation_scripts:
Các file trong thư mục activation_scripts

Tập tin then chốt của việc thêm các tập tin vào máy ảo tại thời điểm dự phòng là tập tin script.txt. Dưới đây là tập tin script.txt từ bản sao image RHEL 6:

cloud-startup3.txt=/etc/init.d/cloud-startup3.sh
activate.txt=/etc/cloud/activate.sh

Điều này dẫn đến tập tin cloud-startup3.txt được thêm vào máy ảo tại /ect/init.d/cloud-starup3.sh, còn tập tin active.txt thêm tại /ect/cloud/active.sh.

Để thêm tập tin của bạn vào máy ảo:

  1. Tải về các tập tin trong thư mục activation_script, đặt chúng vào một thư mục cùng tên.
  2. Thêm tập tin libenergy-0.1-1.noarch.rpm vào thư mục
  3. Tạo script libenergy-active.sh:
    /usr/bin/logger 'installing libenergy-0.1'
    rpm -i /tmp/libenergy-0.1-1.noarch.rpm  2> /tmp/energy.log
    /usr/bin/logger < /tmp/energy.log
  4. Thận trọng khi sử dụng đường phân cách UNIX-style hoặc thực thi tiện ích docs2unix. Để script này được sao chép vào máy ảo và thực thi khi khởi động, thêm nó vào thư mục activation_script. Sau đó, sửa lại tập tin script.txt như hình dưới:
    cloud-startup3.txt=/etc/init.d/cloud-startup3.sh
    activate.txt=/etc/cloud/activate.sh
    libenergy-0.1-1.noarch.rpm=/tmp/libenergy-0.1-1.noarch.rpm
    libenergy-activate.sh=/home/idcuser/libenergy-activate.sh
  5. Gọi đến script từ script khởi động trên mây cloud-startup3.sh. Sửa lại tệp cloud-startup.sh bằng cách thêm vào những dòng in đậm bên dưới:
        start)
            echo "== Cloud Starting"
            if [ ! -e /etc/cloud/idcuser_pw_randomized ]; then
                echo "Randomizing idcuser password"
                echo idcuser:'< /dev/urandom tr -dc _A-Z-a-z-0-9 |head -c16' | 
    			 /usr/sbin/chpasswd
                touch /etc/cloud/idcuser_pw_randomized
            fi
            /sbin/restorecon -R -v /home/idcuser/.ssh
            chmod +x /home/idcuser/libenergy-activate.sh
            /home/idcuser/libenergy-activate.sh
            ;;
  6. Nén thư mục và gọi đến tập tin activation_script nhận được. Sửa bản sao image và upload tập tin ZIP. Nó sẽ được giải nén trong quá trình tải lên.

Để kiểm tra image đã sao chép và sửa đổi, cung cấp một máy ảo dựa trên bản sao image; kiểm tra mô-đun được cài đặt bằng cách chạy máy khách tính năng lượng, energy_client.py, như hình dưới::

$ scp -i ${key} energy_client.py idcuser@${vm}:energy_client.py
$ ssh -i ${key} idcuser@${vm} './energy_client.py'
You used 200 kJ today

Nếu bạn không thấy dòng chữ You used 200 kJ today xuất ra, hãy kiểm tra tập tin log /var/log/message để tìm lỗi.

Đến thời điểm này, chúng ta vừa học xong làm thế nào để thêm một mô-đun phần mềm vào máy ảo mà không cần cài đặt máy ảo đang chạy. Bạn chỉ khởi động máy ảo để xác nhận kết quả. Đây là bước tiến quan trọng trong khả năng quản lý image tự động trên mây và là cơ sở cho một số công cụ có sẵn để giúp người dùng quản lý image trên máy ảo của họ.

Các phần sau sẽ cho biết làm thế nào để dùng một số công cụ này và làm thế nào để dùng APIs tự động một cách hiệu quả hơn. Cũng lưu ý rằng, bạn đã không tạo một gói phần mềm độc lập trên mây mà trực tiếp hợp nhất tập tin cài đặt RPM và script cài đặt với siêu dữ liệu máy ảo trong kho lưu trữ. Chúng ta sẽ thảo luận về các gói phần mềm trên mây.


Tạo một gói phần mềm tổng thể (Composable Software Bundles)

Để tạo một Composable Software Bundles, tải về và chỉnh sửa một trong các mẫu được cung cấp bởi SmartCloud Asset Catalog. Trong Asset Catalog, tìm liên kết tìm kiếm ở cột bên trái được gọi là Composable Software Bundles (Hình 8). Duyệt các kết quả tìm kiếm được trả về.

Hình 8. Các kết quả khi tìm gói phần mềm tổng thể (composable software bundles)
Các kết quả khi tìm gói phần mềm tổng thể (composable software bundles)

Có rất nhiều gói khác nhau có sẵn để sử dụng như mẫu. Dùng nút Asset Manager Clone để tạo bản sao và chỉnh sửa gói. Điều này giúp bạn tạo ra các nguồn mà bạn có thể sử dụng các công cụ tự động hóa của riêng bạn để chia sẻ giữa các image của máy ảo, nhưng chúng sẽ chỉ được hiển thị cho bạn. Để tạo ra gói phần mềm có thể tái sử dụng rộng rãi hơn, bạn cần đăng ký sử dụng chúng bằng ICCT hoặc công cụ khác.


Sử dụng ICCT để quản lý các gói phần mềm

ICCT được bao gồm trong danh mục image của IBM SmartCloud Enterprise, nó cho phép bạn chạy nó trên các đám mây. Để sử dụng, ta dùng SmartCloud Enterprise Control Panel:

  1. Chọn Instance và nhấn nút Add Instance.
  2. Chọn một trung tâm dữ liệu (data center), chọn image ICCT từ danh mục, và cung cấp một yêu cầu mới sử dụng thuật sĩ.
  3. Nhập tên người dùng ICCT và mật khẩu. Sau khi máy ảo được cung cấp, sử dụng liên kết trong trang Getting Started để đăng nhập.
  4. Sau khi đăng nhập vào ICCT, click vào link Build and Manage Software Bundles.
  5. Trong bảng điều khiển bên trái là một gói gọi là Enablement Bundle for SmartCloud Enterprise. Bạn nên mở rộng nó để tạo các gói phần mềm cho riêng bạn nếu bạn có kế hoạch sử dụng ICCT hay các gói phần mềm APIs của SmartCloud Enterprise .

Kết Luận

Trong bài viết này, bạn đã đạt được sự hiểu biết rộng về image và khả năng đóng gói phần mềm của IBM SmartCloud Enterprise thông qua các ví dụ đơn giản. Bài viết trong tương lai sẽ xây dựng dựa trên ví dụ này, sử dụng các công cụ có khả năng bổ sung thêm để xây dựng phiên bản phức tạp hơn của ví dụ này và tự động hóa rất nhiều các công việc thủ công đã được thực hiện ở ví dụ này.

Tài nguyên

Học tập

Lấy sản phẩm và công nghệ

Thảo luận

Bình luận

developerWorks: Đăng nhập

Các trường được đánh dấu hoa thị là bắt buộc (*).


Bạn cần một ID của IBM?
Bạn quên định danh?


Bạn quên mật khẩu?
Đổi mật khẩu

Bằng việc nhấn Gửi, bạn đã đồng ý với các điều khoản sử dụng developerWorks Điều khoản sử dụng.

 


Ở lần bạn đăng nhập đầu tiên vào trang developerWorks, một hồ sơ cá nhân của bạn được tạo ra. Thông tin trong bản hồ sơ này (tên bạn, nước/vùng lãnh thổ, và tên cơ quan) sẽ được trưng ra cho mọi người và sẽ đi cùng các nội dung mà bạn đăng, trừ khi bạn chọn việc ẩn tên cơ quan của bạn. Bạn có thể cập nhật tài khoản trên trang IBM bất cứ khi nào.

Thông tin gửi đi được đảm bảo an toàn.

Chọn tên hiển thị của bạn



Lần đầu tiên bạn đăng nhập vào trang developerWorks, một bản trích ngang được tạo ra cho bạn, bạn cần phải chọn một tên để hiển thị. Tên hiển thị của bạn sẽ đi kèm theo các nội dung mà bạn đăng tải trên developerWorks.

Tên hiển thị cần có từ 3 đến 30 ký tự. Tên xuất hiện của bạn phải là duy nhất trên trang Cộng đồng developerWorks và vì lí do an ninh nó không phải là địa chỉ email của bạn.

Các trường được đánh dấu hoa thị là bắt buộc (*).

(Tên hiển thị cần có từ 3 đến 30 ký tự)

Bằng việc nhấn Gửi, bạn đã đồng ý với các điều khoản sử dụng developerWorks Điều khoản sử dụng.

 


Thông tin gửi đi được đảm bảo an toàn.


static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=70
Zone=Cloud computing
ArticleID=939464
ArticleTitle=Thiết kế giải pháp trên IBM SmartCloud Enterprise: Các bài thực hành và các công cụ tốt nhất
publish-date=07312013