IBM® Smart Business Development and Test on the IBM Cloud (Phát triển và thử nghiệm nghiệp vụ thông minh của IBM trên Đám mây của IBM) là một môi trường linh hoạt mở rộng và cung cấp sẵn để mang lại cho các khách hàng doanh nghiệp tất cả mọi thứ mà họ cần để phát triển, thử nghiệm và lưu trữ trên các ứng dụng máy chủ. Nó bao gồm một cổng thông tin web để cấu hình và quản lý tài nguyên đám mây, các hình ảnh phần mềm của các sản phẩm IBM khởi đầu các nỗ lực phát triển và thử nghiệm và các API cho phép những người dùng kiểm soát tài nguyên đám mây và phần mềm theo lập trình. Và các nhóm công tác của IBM vẫn đang bổ sung thêm các tính năng mới kể từ buổi đầu ra mắt Đám mây của IBM được thiết kế để cung cấp thêm tính linh hoạt và khả năng phục hồi.
Tính nhanh nhẹn hơn và tính linh hoạt được cải thiện nhiều hơn — giúp điều chỉnh cấu trúc mạng ứng dụng của bạn với các yêu cầu nghiệp vụ theo thời gian thực — đi kèm với một thỏa thuận: Một sự suy giảm về tính tương thích với các môi trường đám mây của các tính năng như tính sẵn sàng cao (HA).
Tính sẵn sàng cao, sự yêu cầu để bảo vệ một ứng dụng mức sản xuất khỏi lỗi của nút bất kỳ, không phải là một khái niệm mới theo bất kỳ tiêu chuẩn nào; nhiều sản phẩm phần mềm giải quyết thách thức này. Nhưng nói chung hầu hết các sản phẩm này không tương thích với đám mây; hầu hết các nhà cung cấp đám mây công cộng không cung cấp chức năng cần thiết.
Với suy nghĩ đó, các khách hàng cần bổ sung thêm cho các việc triển khai đám mây của mình với các ý tưởng về tính sẵn sàng cao đang tồn tại bên ngoài đám mây. Trong bài viết này, bạn sẽ thấy những gì mà IBM đã thực hiện với đám mây của mình để giải quyết vấn đề này và cách bạn có thể cung cấp tính năng đó:
- Chúng tôi sẽ thảo luận về cách tiếp cận mà Đám mây của IBM có (đã bổ sung thêm sự hỗ trợ cho các địa chỉ IP ảo).
- Chúng tôi sẽ chỉ cho bạn cách chuẩn bị các cá thể đám mây của bạn để tận dụng tính năng này.
- Trong một ví dụ, chúng tôi sẽ chỉ cho bạn cách thiết lập một trang web có tính sẵn sàng cao.
- Và chúng tôi sẽ chỉ cho bạn cách thử nghiệm trang web đó.
Sự hỗ trợ địa chỉ IP ảo an toàn, thích hợp
Để giải quyết các mối quan tâm về HA một cách an toàn và thích hợp, các kỹ sư Đám mây của IBM đã bổ sung thêm sự hỗ trợ cho các địa chỉ IP ảo (vIP) trên các cá thể ảo của Đám mây IBM. Mặc dù có nhiều phương pháp để cung cấp dịch vụ sẵn sàng cao (xem phần Tài nguyên), các phương pháp phổ biến và mạnh mẽ nhất của các dịch vụ này là sử dụng các IP ảo.
Ngoài một địa chỉ IP tĩnh thông thường (mỗi cá thể nhận một địa chỉ khi được cung cấp và nó không bao giờ thay đổi), một cá thể có thể chiếm động một hoặc một số địa chỉ IP ảo bổ sung. Vì nó là mã ứng dụng đang chạy trong các cá thể điều khiển sự liên kết giữa các IP ảo và các cá thể, nên cấu trúc mạng ứng dụng có thể điều chỉnh rất nhanh theo một lỗi nút, trong dải con thứ hai.
Hãy xem xét ví dụ đơn giản này. Có một cặp các máy ảo VM A và VM B có địa chỉ IP tĩnh tương ứng là 192.168.1.101 và 192.168.1.102. Ngoài ra, cả hai máy ảo được cấu hình để cho phép phân bổ động địa chỉ IP ảo 192.168.1.10 (Hình 1).
Hình 1. Máy ảo A và máy ảo B có các IP tĩnh riêng và có thể chiếm một IP ảo
Trong cấu hình này, các địa chỉ IP tĩnh được dùng để quản lý và duy trì các cá thể. Ngược lại, địa chỉ IP ảo được trưng ra cho các khách hàng làm địa chỉ IP máy chủ.
Ban đầu, Máy ảo A giữ IP ảo và do vậy, xử lý tất cả lưu lượng dịch vụ. Máy ảo B khởi động và chạy, nhưng không có IP ảo và hoạt động như là một máy dự phòng ấm (Hình 2).
Hình 2. Cấu hình chủ động/thụ động : Máy ảo A giữ IP ảo và phục vụ tất cả lưu lượng; máy ảo B hoạt động như một máy dự phòng thụ động
Bây giờ chúng ta hãy tưởng tượng xem ứng dụng phát hiện ra một vấn đề với máy ảo A. Có lẽ nó đang cảm thấy giảm tốc độ hoặc có lỗi. Ứng dụng này quyết định chuyển giao quyền điều khiển IP ảo cho máy ảo khác. Bây giờ, máy ảo B phục vụ tất cả lưu lượng trong khi máy ảo A, trước khi được sửa chữa, từ bỏ IP ảo và trở thành máy dự phòng ấm (Hình 3).
Hình 3. Cấu hình chủ động/thụ động: các máy ảo hoán đổi vai trò
Vì địa chỉ IP ảo có thể được chuyển đổi giữa các máy ảo trong dải con thứ hai, bằng cách lập trình cẩn thận bạn có thể làm giảm đáng kể hoặc loại bỏ hầu như bất kỳ sự ngừng chạy tiềm ẩn nào, di chuyển địa chỉ IP tại dấu hiệu có lỗi đầu tiên. Thật đơn giản, đây là một phương pháp đã được chứng minh và một phương pháp mà môi trường Đám mây của IBM hỗ trợ.
Bây giờ hãy xem xét việc chuẩn bị các cá thể của bạn để tận dụng lợi thế này.
Chuẩn bị các cá thể của bạn có tính sẵn sàng cao
Sau đây là ba bước để chuẩn bị một cá thể trong Đám mây của IBM tận dụng lợi thế của phương pháp địa chỉ IP ảo để mang lại tính sẵn sàng cao.
Nhận một địa chỉ IP dữ trữ chưa cấp phát
Hãy chắc chắn rằng bạn có một địa chỉ IP dữ trữ chưa cấp phát. Đăng nhập vào cổng thông tin Đám mây của IBM và nhấn vào thẻ Account (Tài khoản). Di chuyển xuống phần các IP của bạn để xem danh sách các IP dự trữ. Hãy đảm bảo có ít nhất một địa chỉ chưa sử dụng tại các trung tâm dữ liệu lựa chọn của bạn, nếu không, hãy nhấn vào Add IP (Thêm IP) và chờ địa chỉ IP mới có sẵn để sử dụng (Hình 4).
Hình 4. Bảng địa chỉ IP dự trữ của cổng thông tin Đám mây của IBM
Bây giờ bạn chỉ cần cung cấp các cá thể của bạn. Hãy chọn hình ảnh lựa chọn của bạn và trên màn hình sau đây, hãy nhấn vào nút Add IP, cạnh phần Virtual IP (IP ảo) và chọn một trong các địa chỉ IP chưa sử dụng (Hình 5).
Hình 5. Hộp thoại cung cấp cá thể Đám mây của IBM này cho phép bạn gán một IP ảo cho cá thể của bạn
Lưu ý rằng địa chỉ IP ảo cần nằm trong trung tâm dữ liệu giống như cá thể mà bạn đang gán cho nó. Nhấn vào Close (Đóng) và hoàn tất các yêu cầu cung cấp.
Ngay khi được cấp, ban đầu mỗi cá thể sẽ chỉ chiếm lấy địa chỉ IP tĩnh của nó. Lưu ý rằng địa chỉ IP tĩnh của một cá thể được gắn với giao diện mạng eth0 trong khi các IP ảo, nếu được lựa chọn trong quá trình cung cấp, được gán cho các giao diện eth0, eth1, v.v.., theo thứ tự mà chúng được chọn.
Liên kết một IP ảo với một cá thể
Ở bất kỳ thời gian nào trong vòng đời của một cá thể, bạn có thể sử dụng
lệnh
sudo
/sbin/ifup <interface name>
để kết hợp một địa chỉ IP ảo với một cá thể. Lệnh
sudo /sbin/ifdown <interface name> sẽ
tách nó ra.
Theo cách này, tại một thời điểm chỉ có một cá thể có thể sở hữu một địa chỉ IP ảo. Đám mây của IBM không hỗ trợ nhiều luồng, do đó việc gán một địa chỉ IP cho nhiều máy ảo chỉ sẽ dẫn đến nhiều xung đột mà thôi.
Ví dụ, giả sử một cá thể đã nhận được một địa chỉ IP tĩnh đã gán cho hệ thống là 170.224.163.231 và một địa chỉ IP ảo là 170.224.163.161. / Etc/sysconfig/network-scripts/ifcfg-eth0 sẽ cho bạn biết thêm về cấu hình của giao diện chính:
DEVICE=eth0 TYPE=Ethernet BOOTPROTO=static HWADDR=DE:AD:BE:A7:13:52 IPADDR=170.224.163.231 NETMASK=255.255.240.0 ONBOOT=yes GATEWAY=170.224.160.1 |
So sánh cái đó với các nội dung của tệp /etc/sysconfig/network-scripts/ifcfg-eth1:
DEVICE=eth1 TYPE=Ethernet BOOTPROTO=static HWADDR=DE:AD:BE:C8:25:20 IPADDR=170.224.163.161 NETMASK=255.255.240.0 ONBOOT=no |
Ban hành lệnh sudo /sbin/ifup eth1 để kết hợp
170.224.163.161 với cá thể đó và lệnh
sudo /ifdown eth1 để tách nó ra. Nếu bạn muốn
nhận được địa chỉ IP này vào lúc khởi động, bạn chỉ cần thay đổi mệnh đề
ONBOOT thành yes
trong tệp /etc/sysconfig/network-scripts/ifcfg-eth1.
Thiết lập một trang web có tính sẵn sàng cao (HA)
Trong ví dụ này, chúng ta sẽ kết hợp vào một cấu trúc mạng đơn giản gồm hai máy chủ ủy quyền được cấu hình theo cấu hình HA chủ động/thụ động và ba máy chủ ứng dụng web (như trong Hình 6):
Hình 6. Một cấu trúc mạng đơn giản ở đó có một cặp của máy ủy quyền dự phòng, thiết lập theo cấu hình chủ động/thụ động, chia lưu lượng cho ba máy chủ web
Cấu hình phần mềm sau đây được dùng cho ví dụ này:
- Các máy chủ ủy quyền đang chạy nginx.
- Tính sẵn sàng cao cho các máy chủ ủy quyền do phần mềm Linux HA và Pacemaker cung cấp.
- Các máy chủ web đang chạy Apache (được cài đặt sẵn như là một phần ảnh hệ điều hành cơ bản).
- Tất cả cá thể Đám mây của IBM dùng ảnh RHEL 5.4 bronze 64-bit cơ bản.
- Khi sử dụng cổng thông tin Đám mây của IBM, bạn cần phải cung cấp tất cả năm cá thể. Hãy chắc chắn dự trữ và cấp phát một IP ảo cho cặp các nút ủy quyền như được mô tả ở trên trong bài viết này.
- Cấu hình các cá thể ủy quyền. Tất cả các bản tải về có sẵn trong phần Tài nguyên.
- Bạn cần một vài điều kiện tiên quyết:
sudo yum -y install glib2-devel libxml2 libxml2-devel bzip2 bzip2-devel pcre-devel
- Cài đặt nginx (tương tự như sau):
wget http://nginx.org/download/nginx-0.8.53.tar.gz tar -xvfz nginx-0.8.53.tar.gz cd nginx-0.8.53 ./configure -with-http_ssl_module make sudo make install
- Để thêm các quy tắc ủy quyền cơ bản vào nginx, chỉnh sửa tệp
/usr/local/nginx/conf/nginx.conf và theo hướng máy chủ, thêm như sau
(sử dụng địa chỉ IP thực của các máy chủ ứng dụng):
upstream appservers { ip_hash; server appserver1_ip; server appserver2_ip; server appserver3_ip; } - Điều quan trọng là có thời gian thích hợp trên tất cả các máy chủ, vì
thế bảo đảm chắc chắn ntpd khởi động tự động:
sudo /sbin/chkconfig --level 2345 ntpd on sudo /sbin/service ntpd start
- Cài đặt các gói Linux-HA và Pacemaker. Hãy chắc chắn rằng các kho lưu
trữ Clusterlabs (Pacemaker) và EPEL có sẵn. Với RHEL 5.4, đưa ra hai
lệnh sau:
sudo rpm -Uvh \ http://download.fedora.redhat.com/pub/epel/5/i386/epel-release-5-4.noarch.rpm sudo wget -O \ /etc/yum.repos.d/pacemaker.repo http://clusterlabs.org/rpm/epel-5/clusterlabs.repo
Sau đó cài đặt Pacemaker và các gói cần thiết:sudo yum install -y pacemaker heartbeat
- Bạn cần một kịch bản lệnh tương thích để quản lý máy chủ nginx, vì thế
hãy cài đặt tác nhân tài nguyên nginx. Kịch bản lệnh này đã được gửi
tới dự án Linux-HA và cuối cùng sẽ được cung cấp tự động. Cho đến khi
điều đó xảy ra, hãy sử dụng lệnh sau:
sudo wget -O /usr/lib/ocf/heartbeat/resource.d/nginx \ http://lists.linux-ha.org/pipermail/linux-ha-dev/attachments/20101206/3c141ea6/ attachment.txt - Bạn phải cung cấp cấu hình thích hợp cho phần mềm Heartbeat trong dự
án Linux-HA. Đối với Đám mây của IBM, cần cấu hình tất cả giao tiếp
xảy ra bằng cách sử dụng truyền dẫn đơn luồng (gửi các thông báo đến
một đích đến của mạng đơn được xác định bằng một địa chỉ duy nhất). Đó
là lý do tại sao bạn đã cài đặt tầng giao tiếp Heartbeat.
Để cấu hình tầng giao tiếp Heartbeat, có ba tệp khác nhau cần cấu hình: /etc/ha.d/ha.cf, /etc/ha.d/authkeys, và /etc/logd.cf.
- Tất cả các máy cần phải có một bản sao chính xác của tệp
/etc/ha.d/ha.cf . Để cấu hình, thêm những dòng sau:
use_logd yes ucast eth0 cluster1-fixed-ip ucast eth0 cluster2-fixed-ip # repeat for all cluster nodes autojoin any crm on
Cần lưu ý rằng bạn phải sử dụng phương thức giao tiếpucastkhi chạy Đám mây của IBM do nó không hỗ trợ giao tiếp quảng bá hoặc đa luồng. Điều này ngăn bạn khỏi sử dụng Corosync như tầng giao tiếp của bạn; nó đòi hỏi giao tiếp đa luồng hay quảng bá. Các địa chỉ "IP cố định" phải có là địa chỉ thực (không ảo) của các máy chủ. Đặt một dòng cho mỗi máy chủ. - Mỗi máy tính cũng cần có một bản sao của tệp
/etc/ha.d/authkeys, nó phải ở chế độ 0600. Sử dụng phương thức
này để tạo ra bản sao đầu tiên, sau đó sao chép tệp này đến
tất cả các nút khác trong cụm:
cat <<-!AUTH >/etc/ha.d/authkeys auth 1 1 sha1 'dd if=/dev/urandom count=4 2>/dev/null | openssl dgst -sha1` !AUTH
- Cuối cùng, cấu hình /etc/ha.d/logd.cf với dòng sau:
logfacility daemon.
- Tất cả các máy cần phải có một bản sao chính xác của tệp
/etc/ha.d/ha.cf . Để cấu hình, thêm những dòng sau:
- Do cấu hình Pacemaker sau khi nó đang chạy sẽ đơn giản hơn, nên chúng ta sẽ trì hoãn việc cấu hình đó về sau này.
- Hãy chắc chắn rằng Heartbeat khởi động tự động bằng mã này:
sudo /sbin/chkconfig --levels 345 heartbeat on
- Cấu hình tường lửa ban đầu có một chút hạn chế, do đó, hãy thêm một
vài quy tắc vào /etc/sysconfig/iptables:
# allow pings -A INPUT -p icmp --icmp-type any -j ACCEPT # on the virtual IP address, allow only ports 80 and 443. -A INPUT -d virtual_ip -m tcp -p tcp --dport 80 -j ACCEPT -A INPUT -d virtual_ip -m tcp -p tcp --dport 443 -j ACCEPT -A INPUT -d virtual_ip -j REJECT --reject-with icmp-host-prohibited # allow ssh on the service IPs -A INPUT -p tcp -m tcp --dport 22 -j ACCEPT # allow heartbeat port -A INPUT -p udp -m udp --dport 694 -j ACCEPT
- Sau khi hoàn thành các việc chỉnh sửa, hãy khởi động lại tường lửa:
sudo /sbin/service iptables restart
- Các máy chủ web đòi hỏi có sự lưu ý về cấu hình một chút. Trước tiên,
hãy chắc chắn rằng Apache khởi động tự động:
sudo /sbin/chkconfig -level 345 httpd on sudo /sbin/service httpd start
Bây giờ, hãy mở cổng 80 và 443 trong /etc/sysconfig/iptables:
-A INPUT -p tcp -m tcp --dport 80 -j ACCEPT -A INPUT -p tcp -m tcp --dport 80 -j ACCEPT
Một khi bạn đã làm điều đó, hãy khởi động lại tường lửa:
sudo /sbin/service iptables restart. Bảo đảm chắc chắn ntpd cũng khởi động tự động theo các nút này:sudo /sbin/chkconfig --level 2345 ntpd on sudo /sbin/service ntpd start
Bạn đã thiết lập xong tất cả. Bây giờ hãy thử nghiệm hệ thống.
Để kiểm tra hệ thống:
- Khởi động Heartbeat (sẽ khởi động Pacemaker) trên tất cả các nút trong cụm.
- Cấu hình Pacemaker bằng lệnh
crm. - Kiểm tra xem mọi thứ đã bắt đầu chính xác chưa.
- Thử nghiệm cấu hình. Thực hiện một số chuyển đổi tài nguyên dự phòng lỗi cơ bản.
Để khởi động Heartbeat, đưa ra lệnh
service heartbeat start. Một khi khởi động nó,
bạn sẽ thấy một số lượng lớn các quá trình trông tương tự như sau:
ha_logd: read process ha_logd: write process heartbeat: master control process heartbeat: FIFO reader heartbeat: write: ucast some-ip-address heartbeat: read: ucast some-ip-address /usr/lib/heartbeat/ccm /usr/lib/heartbeat/cib /usr/lib/heartbeat/lrmd -r /usr/lib/heartbeat/stonithd /usr/lib/heartbeat/attrd /usr/lib/heartbeat/crmd /usr/lib/heartbeat/pengine |
Khi xem các quá trình đó, bạn biết rằng Heartbeat và Pacemaker đang chạy.
Để cấu hình Pacemaker, chỉnh sửa cấu hình trực tiếp nhờ sử dụng lệnh
crm configure edit, lệnh này mở một trình soạn
thảo văn bản. Hãy chèn các dòng sau vào tệp cấu hình ngay trước câu lệnh
property ở cuối tập tin:
primitive nginx-primitive ocf:heartbeat:nginx \
op monitor interval="5s" timeout="120s" \
OCF_CHECK_LEVEL="0" \
op monitor interval="10s" timeout="120s" \
OCF_CHECK_LEVEL="10" \
params configfile="/etc/nginx/stci.d/nginx.conf"
primitive nginx-ipaddr ocf:heartbeat:IPaddr2 \
op monitor interval="5s" timeout="120s"\
params ip="NGINX-IP-ADDRESS"
primitive NFS-server lsb:nfs-kernel-server
primitive NFS-ipaddr ocf:heartbeat:IPaddr2 \
op monitor interval="5s" timeout="120s"\
params ip="NFS-IP-ADDRESS"
group nginx-group nginx-primitive nginx-ipaddr
group NFS-group NFS-server NFS-ipaddr
clone nginx-clone nginx-group \
meta clone-max="1"
|
Sau khi bạn lưu lại cấu hình Pacemaker, hệ thống đã khởi động tài nguyên
của bạn và đã truyền cấu hình mới này đến tất cả các nút trong hệ thống.
Đây là phần thú vị. Nếu bạn kiểm tra các bản ghi hệ thống, bạn sẽ thấy các
thông báo về các dịch vụ đang được khởi động và v.v.. Để xem trạng thái hệ
thống HA, hãy chạy lệnh sudo crm_mon. Điều này
chỉ cho bạn các tài nguyên nào đang chạy, các nút nào đang lên hoặc xuống
trong cụm và v.v..
Lệnh crm_mon cho bạn thấy nút nào đang chạy
nginx. Có một số phương pháp để kiểm tra cấu hình này; chúng ta nên thử
tất cả. Một cụm mà không qua kiểm tra kỹ lưỡng sẽ không có
tính sẵn sàng cao:
- Ban hành một lệnh
sudo service heartbeat stoptrên nút hoạt động; hãy xem nơi mọi thứ đã dịch chuyển đến, sau đó khởi động lại nó. - Thực hiện một lệnh
sudo reboot -ftrên vào nút chủ động, sau đó xem (từ một nút khác), nơi tài nguyên di chuyển đến. - Ban hành một lệnh
sudo crm node standbytrên nút chủ động, xem nơi mà các dịch vụ đi tới, sau đó đưa ra một lệnhsudo crm node online.
Lệnh này hoàn thành quá trình cài đặt và thử nghiệm dịch vụ ủy quyền nginx của bạn. Linux cũng cung cấp một bộ cân bằng tải mức nhân có sẵn có thể được dùng và tạo ra tính sẵn sàng cao thay cho nginx.
Một tập kỹ thuật giống nhau được giới thiệu trong bài viết này có thể được sử dụng để làm cho hầu như bất kỳ dịch vụ nào cũng có tính sẵn sàng cao trong đám mây; ví dụ, một máy chủ NFS có tính sẵn sàng cao trong Đám mây của IBM bao gồm việc sao chép dữ liệu giữa các máy chủ đám mây ảo.
Bài viết này mô tả chi tiết cách tiếp cận Đám mây của IBM có tính sẵn sàng cao (có bổ sung thêm sự hỗ trợ cho các địa chỉ IP ảo); đã giải thích cách chuẩn bị các cá thể đám mây của bạn để tận dụng lợi thế của tính năng IP ảo; đã đưa ra một ví dụ về cách thiết lập một trang web có tính sẵn sàng cao và mô tả cách thử nghiệm trang web đó.
Học tập
- Có nhiều phương pháp khác với các địa chỉ
IP ảo có thể cung cấp các dịch vụ HA; hãy xem làm thế nào để tính sẵn
sàng, tự động hóa, quản lý hệ thống, nguồn mở và các chủ đề liên quan đồng
hành với việc quản trị các máy tính bằng tự động hóa.
-
nginx ("engine x") là một máy chủ
HTTP và ủy quyền ngược.
- Trong tài
nguyên
của nhà phát triển đám mây của developerWorks, hãy khám phá và
chia sẻ kiến thức và kinh nghiệm của các nhà phát triển ứng dụng và dịch
vụ khi xây dựng các dự án triển khai đám mây của họ.
- Làm theo developerWorks trên
Twitter.
- Xem các trình
diễn theo yêu cầu của developerWorks trải rộng từ cài đặt sản phẩm
và các trình diễn thiết lập cho người mới bắt đầu, đến chức năng tiên tiến
cho các nhà phát triển có kinh nghiệm.
- Truy cập phát
triển và thử nghiệm nghiệp vụ thông minh của IBM trên Đám mây của
IBM.
Lấy sản phẩm và công nghệ
- HA cho các ủy
quyền trong bài viết này được cung cấp bởi:
- Dự án Linux-HA [Tìm hiểu] duy trì một tập các khối xây dựng với các hệ thống cụm có tính sẵn sàng cao [Tải về Heartbeat | Tải về Cluster Glue | Tải về các tác nhân tài nguyên].
- Để có ích cho người dùng, trình tiện ích Heartbeat cần được kết hợp với một trình quản lý tài nguyên cụm (CRM) — Pacemaker .
- Các gói bổ sung cho Enterprise Linux (EPEL) là một nỗ lực cộng đồng dựa trên tình nguyện từ dự án Fedora để tạo ra một kho lưu trữ các gói bổ sung chất lượng cao cho bản Linux cho doanh nghiệp Red Hat (RHEL) và các sản phẩm phụ tương thích của nó [Tìm hiểu | Tải về].
Thảo luận
- Tham gia một nhóm điện toán đám mây trong cộng đồng developerWorks.
- Đọc tất cả các blog đám mây lớn đến từ các thành viên cộng đồng
developerWorks.
- Tham gia cộng đồng
developerWorks, một mạng chuyên nghiệp và tập thể thống nhất về
các công cụ cộng đồng để kết nối, chia sẻ và cộng tác.