Giải pháp Ảo hóa trên nền Linux với OpenVZ

Một trong nhiều công cụ ảo hoá dành cho Linux để bạn lựa chọn là OpenVZ, phần mềm miễn phí thuộc Virtuozzo do SWsoft cung cấp. OpenVZ và Virtuozzo là các giải pháp ảo hoá mức hệ điều hành, cho phép phân vùng server thành các máy chủ riêng ảo (VPS). Dạo qua một vòng tài liệu hướng dẫn trên chính OpenVZ, bạn sẽ thấy để hiểu được đầy đủ sâu sắc về công cụ này thông qua các tài liệu của nhà sản xuất không hề “dễ xơi”, thậm chí còn “đáng sợ”. Chúng ta thử tìm cách thức dễ dàng hơn để khởi đầu với OpenVZ: trên hệ thống Debian Etch.

Một năm trước đây, người dùng thường sử dụng Virtuozzo 3.0 cho Linux. Nhưng không phải túi người nào cũng rủng rỉnh để “tậu” được bản quyền Virtuozzo. OpenVZ mở ra giải pháp khác.

Khi nào nên sử dụng OpenVZ thay vì VMware Server hay Xen? Điều đó tuỳ thuộc vào từng trường hợp cụ thể. Với các hoạt động không cần chạy đa hệ điều này nhưng có nhiều khách, tạo hầu hết phần cứng hoặc cung cấp sự phân tách giữa các dịch vụ (như phân tách Web server giữa file server và print server chẳng hạn) với khả năng tràn tối thiểu, OpenVZ là lựa chọn tốt. Nhưng khi muốn chạy hệ điều hành non-Linux (như FreeBSD hay Windows Server) trên máy trạm Linux, nên sử dụng VMware hơn là OpenVZ (hoặc nếu mang tính thương mại và bản quyền nhiều hơn, nên dùng Virtuozzo), vì OpenVZ không cung cấp khả năng chạy đa hệ điều hành.

OpenVZ hỗ trợ nhiều nền tảng vi xử lý hơn là các bản luân phiên. VMware Server và Xen có thể dùng được cho dòng x86, AMD 64; còn OpenVZ được chấp nhận ở dòng x86, AMD64, Itanium (IA64), PowerPC, và UltraSPARC. Chú ý là hiện nay chưa có các kernel (nhân hệ điều hành) PowerPC xây dựng trước cho Debian, nhưng OpenVZ được hỗ trợ trên PowerPC.

Cài đặt OpenVZ

Có thể chạy OpenVZ trên bất kỳ hệ thống host nào, ví dụ ở đây là Debian. Bạn hoàn toàn có thể dùng Ubuntu, Fedora Core, Gentoo hoặc bất kỳ phân phối nào khác với một mẫu hệ điều hành (OS template). Mẫu hệ điều hành là tập hợp các gói dùng để tạo VPS, môi trường ảo AKA trong ngôn ngữ nước ngoài của OpenVZ.

Các nhân Debian cho khách OpenVZ được lấy từ vùng lưu trữ OpenVZ, nhưng chỉ cho Etch. Sử dụng kernel gần đây nhất cùng các gói “linux-header” lấy từ kho lưu trữ OpenVZ, cài đặt chúng bằng lệnh -i linux-image-2.6.18-openvz-686_02_i386.deb và dpkg -i linux-headers-2.6.18-openvz-686_02_i386.deb. Nhớ thay tên gói trong ví dụ bằng tên file bạn download về. Khi cài đặt các gói, dpkg đưa ra hai liên kết biểu tượng trỏ tới thư mục thiếu. Nhưng, cho đến nay chưa có vấn đề xuất hiện khi dùng OpenVZ. Vì vậy, các bạn không cần phải lo lắng.

Sau khi cài kernel và các header, bạn cần thêm một vài tham số (tìm trên OpenVZ wiki) vào thư mục /etc/sysctl.conf để chuẩn bị cho hệ thống chạy OpenVZ. Ví dụ, bạn cần nói với hệ thống cho phép gửi địa chỉ IP để các VPS (máy chủ riêng ảo) cũng sử dụng được mạng chia sẻ. Chỉ cần thêm các dòng này vào sysct.conf nếu chưa có, hoặc kiểm tra để chắc chắn xem chúng đã khớp nhau chưa:

net.ipv4.ip_forward = 1
net.ipv4.conf.default.proxy_arp = 0
net.ipv4.conf.all.rp_filter = 1
kernel.sysrq = 1
net.ipv4.conf.default.send_redirects = 1

net.ipv4.conf.all.send_redirects = 0

Sau khi cài đặt kernel và thực hiện các thay đổi này, bạn cần khởi động lại máy. Nhân kernel OpenVZ sẽ được thiết lập làm kernel mặc định trong menu GRUB đã sẵn sàng.

Tiếp theo, cần sử dụng các tiện ích OpenVZ, dùng lệnh sau apt-get install vzctl. Lệnh này sẽ cài đặt các gói vzctl và vzquota, gồm nhiều tiện ích (như vzctl) cần để quản lý OpenVZ.

OpenVZ sẽ được thiết lập khởi động trong quá trình boot sau khi cài đặt các tiện ích này. Nếu muốn sử dụng ngay bây giờ, bạn cần khởi động OpenVZ “thủ công” (hoặc khởi động lại). Khởi động OpenVZ bằng câu lệnh init script:

/etc/init.d/vz start

Thiết lập hệ thống khách

Bây giờ là thời gian thu thập một vài template và cài đặt hệ điều hành khách (Guest Operating System). Bạn có thể tìm thấy một số được tạo trước đó trên website download của OpenVZ, như các phiên bản của Fedora Core, Debian Sarge và Debian Etch, CentOS, Gentoo, Mandriva, và openSUSE. Chú ý là các khuôn mẫu này được dùng cho từng loại vi xử lý cụ thể. Vì thế hãy cẩn thận, đừng download nhầm phiên bản mẫu AMD64 hay UltraSPARC nếu bạn sẽ chạy nó trên hệ thống dòng x86.

Bạn cũng nên biết đến thư mục contrib chứa mẫu hệ điều hành do cộng đồng OpenVZ lập ra. Đây không phải là các mẫu “chính thức”, nhưng nếu muốn chạy Ubuntu, Slackware, AltLinux hay phân phối nào khác không thấy trong các mẫu OpenVZ, bạn nên xem trong thư mục này.

Nếu muốn chạy phân phối không có mẫu, có thể xem trong phần hướng dẫn OpenVZ wiki về các mẫu hệ điều hành. OpenVZ không phải là phần mềm cải tiến hơn VMware hay một số kỹ thuật ảo hoá khác. Cài đặt một phân phối Linux trên VMware Server hay VMware Workstation thường đơn giản như chạy qua thủ tục cài đặt của phân phối. Trong OpenVZ thì phức tạp hơn. Bạn cần phải tìm hiểu thêm nhiều về OpenVZ mới có thể chạy được hai thể hiện của khách.

Các mẫu OS download về cần lưu trữ trong thư mục /var/lib/vz/template/cache. Chúng được để ở dạng tarred và gzipped khi bạn download về. Nếu muốn giữ nguyên dạng, đừng giải nén chúng.

Để cài đặt hệ thống, sử dụng tiện ích vzctl. Có một tin xấu và một tin tốt ở đây. Tin xấu là tiện ích vzctl không dễ dùng như các công cụ đồ hoạ giao diện người dùng (GUI) trong Virtuozzo. Tin tốt là vzctl không quá khó sử dụng. Nó có thể đọc theo kịch bản (script) và không phân biệt chữ hoa chữ thường. Nếu bạn quản lý nhiều hệ thống OpenVZ, bạn cần viết cú pháp vào bất kỳ lúc nào. Nếu không tạo hay “dọn dẹp” các hệ thống khách OpenVZ, lượng thời gian tiêu tốn để vzctl quản lý trang và phác hoạ tuỳ chọn là rất lớn. Chúng ta hãy cùng xem một số lệnh phổ biến nhất.

Cú pháp tạo hệ thống khách là vzctl create vpsid –ostemplate ostemplatename. Trong đó vpsid là số gán cho hệ thống mới. OpenVZ đảo ngược các ID thấp dưới 100 để sử dụng nội bộ. Vì thế tôi thường gán ID từ 1001 trở lên. Trong trường hợp nếu bạn download mẫu hệ điều hành Debian Sarge cho dòng x86, chạy lệnh sau:

vzctl create 1001 –ostemplate debian-3.1-i386-minimal

Khi host khách được cài đặt, bạn có thể tìm thấy file hệ thống trong thư mục /var/lib/vz/root/vpsid và phạm vi riêng ở /var/lib/vz/private/vpsid (trừ khi thay đổi các thiết lập dùng –root mặc định hoặc tuỳ chọn –private). Thư mục riêng bao gồm các file riêng cho môi trường ảo (VE).

Nếu bạn tạo khách với mã số vz là 1001, file hệ thống gốc nằm ở /var/lib/vz/root/1001. File này sẽ trở nên hữu ích khi bạn muốn truy cập trực tiếp file (như khi admin thực hiện cấu hình ngăn khách khởi động theo cách thông thường chẳng hạn) hoặc trong các mục đích sao lưu.

Bây giờ chúng ta sẽ cài đặt mạng dù không mấy dễ dàng:

vzctl set –ipadd ipaddr –nameserver nameserverIP –hostname hostname –save

Tham số –ipadd gán cho địa chỉ IP giao diện venet đầu tiên trong hệ điều hành khách. Tham số –hostname gán tên host cho VPS (máy chủ riêng ảo), và tham số –nameserver cung cấp tên server. Giao diện venet không cung cấp cho các hệ thống khách OpenVZ mặc định địa chỉ vật lý MAC. Có nghĩa là, bạn không thể lấy địa chỉ giao diện qua DHCP.

Tuy nhiên, đến nay, một số cư dân cộng đồng OpenVZ đã bổ sung thêm kiểu giao diện mới gọi là veth, có thể cung cấp địa chỉ MAC. Thiết bị veth cũng cho phép người dùng cài đặt server DHCP bên trong hệ điều hành khách. Người dùng có thể cài đặt các thiết lập mạng riêng, nhưng không dùng được thiết bị venet. Nếu muốn cung cấp giao diện veth thay vì venet, bạn có thể xem thêm phần hướng dẫn trên OpenVZ wiki.

Quản lý OpenVZ

Khi VPS được cài đặt, khởi động hệ điều hành khách bằng cách chạy vzctl start vpsid, trong đó vpsid là ID bạn gán cho khách khi tạo ra nó.

Bạn nên xem một số thông báo về khởi động VPS, kết thúc với các từ “VPS start in progress…” (VPS đang trong quá trình khởi động). Khi đó, VPS đang chạy với lệnh vzlist. Sau khi chạy vzlist, bạn sẽ thấy như sau:

VPSID NPROC STATUS IP_ADDR HOSTNAME
1002 4 running 10.0.1.34 vroomfondle

Sử dụng tuỳ chọn -a để hiển thị tất cả server riêng ảo (VPS), cho dù chúng đang chạy hay không. Nếu muốn xem tài nguyên nào đang được khai thác, và xem dung lượng bộ nhớ đang được sử dụng là bao nhiêu, chạy lệnh vzcalc -v vpsid. Bạn sẽ thấy như sau:

Resource Current(%) Promised(%) Max(%)
Low Mem 0.13 1.20 1.20
Total RAM 0.55 n/a n/a
Mem + Swap 0.36 1.83 n/a
Alloc. Mem 0.67 1.83 13.82
Num. Proc 0.06 n/a 0.40
——————————————–

Memory 0.67 1.83 13.82

Thông số trên cho bạn biết dung lượng bộ nhớ đang được VPS dùng là bao nhiêu, bao nhiêu được cấp phát cho VPS và mức tăng lên có thể là bao nhiêu.

Các tham số VPS sử dụng tuỳ chọn -o. (Xem trên trang vzcalc man để biết thêm chi tiết).

Mặc định, các VPS không được khởi động cùng lúc với máy tính. Nhưng trong hầu hết mọi trường hợp, người ta thường muốn VPS được load sau khi hệ thống khởi động lại. Thay đổi thiết lập này, dùng vzctl như sau:

vzctl set vpsid –onboot yes –save

Tiện ích vzctl cũng được dùng để thiết lập tham số hệ thống, như tổng dung lượng, tài nguyên CPU, truy cập mô hình bảng IP (iptable), v.v…. Chúng ta cùng xem một ví dụ.

Một trong những điểm khó chịu trong OpenVZ là không dễ dàng chút nào khi nói “cung cấp cho RAM VPS 256MB”. Thay vào đó, bạn phải điều chỉnh cặp tham số và đọc qua một số tài liệu kỹ thuật thì mới tìm ra được cách xử lý OpenVZ với bộ nhớ.

Để đơn giản hơn một chút, tăng dung lượng RAM từ 256MB lên 1GB. Sau đó cách thiết lập các tham số vmguarpage (bộ nhớ cấp phát cho VPS) và privvmpage (dung lượng lớn bộ nhớ nhất được cấp phát) như sau:

vzctl set vpsid –vmguarpages 65536 –save
vzctl set vpsid –privvmpages 262144 –save

Một cách khác trực quan hơn là tính toán tổng dung lượng RAM bằng “các trang” trên diễn đàn SWsoft forum. Cần nhân thêm dung lượng RAM 256 bằng cách:

vzctl set vpsid –vmguarpages $((256 * 256)) –save

vzctl set vpsid –privvmpages $((256 * 1024)) –save

Đọc trang man và wiki OpenVZ, cùng một số tài liệu khác để biết thêm thông tin chi tiết.

Khi thiết lập tham số cho từng VPS, các thiết thiết lập cấu hình được lưu trữ ở: /etc/vz/conf/vpsid.conf. Nếu muốn thực hiện một thay đổi nào đó trên file, bạn có thể sử dụng tiện ích vzcfgvalidate để đảm bảo file cấu hình luôn được chính xác.

Thông thường, với các host, bạn cần sử dụng hệ thống admin đã thay đổi mật khẩu thư mục gốc. Với các hệ thống vật lý, bạn cần khởi động lại hệ thống và nhập mô hình người dùng đơn (single-user) để truy cập thư mục gốc cho các nhiệm vụ quản trị điều khiển. Với OpenVZ, tất cả điều bạn cần làm là vào một nút phần cứng và dùng vzctl để đăng nhập:

vzctl enter vpid

Câu lệnh này cho phép bạn đăng nhập vào VPS với vai trò root. Sau khi thực hiện xong hoạt động quản trị bạn cần, gõ lệnh exit để thoát. Nếu muốn thiết lập lại mật khẩu cho người dùng, sử dụng tuỳ chọn –userpasswd:

vzctl set vpsid –userpasswd user:passwd

Nếu người dùng (user) không tồn tại, nó sẽ được tạo.

Nếu muốn chạy lệnh trong VPS mà không cần đăng nhập VPS thực sự, sử dụng tham số exec cho vzctl để chạy lệnh ở thư mục gốc (root). Ví dụ, nếu muốn chạy lệnh nâng cấp nhanh trong Debian VPS:

vzctl exec vpsid apt-get upgrade

Lệnh này sẽ chạy apt-get upgrade trong bản thân VPS.

Để tắt VPS, chạy lệnh ngừng vzctl stop vpsid. Lệnh này sẽ thực thi tắt hoàn toàn bên trong VPS. Chạy vzctl restart vpsid để khởi động lại VPS. Các VPS có thể được tắt hoặc khởi động lại một cách bình thường bên trong VPS.

Đã đủ rồi, xin tạm biệt

Đến bây giờ, hệ thống khách đã chạy ổn định, và cũng nên đóng gói nó lại. Nếu muốn loại bỏ VPS, sử dụng lệnh destroy với vzctl:

vzctl destroy veid

Một điểm cần đặc biệt chú ý ở đây là: tiện ích vzctl không yêu cầu xác nhận lại trước khi phá huỷ VPS. Ngay sau khi ấn Enter, VPS sẽ bị loại bỏ, kể cả các thư mục dữ liệu riêng. Nếu không sao lưu, bạn sẽ gặp trở ngại khi muốn truy vấn dữ liệu.

Còn nhiều điều để nói, nhưng như thế cũng là đã đủ để bắt đầu với OpenVZ. Không phải mất quá nhiều thời gian tra tìm, đọc hiểu từ các wiki hay tài liệu của nhà sản xuất, nhưng sau khi chạy thành công VPS với những bước khởi đầu, bạn nên tham khảo thêm một số tài liệu khác để hiểu sâu hơn về OpenVZ.

Nguồn : Internet

About Tony Nguyễn
Tôi tên Tony tự Tèo trú tại thôn Tám, Trảng Thanh tỉnh Thừa Thiên. Thưở thiếu thời trí tuệ tôi thường thường, tuy thế tính tình thật thà thẳng thắng, thích thi thơ ...

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: