Friday, March 14, 2008

Các lệnh Shell cơ bản trong Linux

Khi mở một shell, bạn cần đến tài khoản kích hoạt vào thư mục chủ (thông thường nằm trong /home/tên_người_dùng).

Chú ý rằng mỗi lệnh đều có nhiều tùy chọn riêng của mình. Để xem các tùy chọn cho một lệnh cụ thể, đơn giản bạn chỉ cần gõ "man " (trong đó: man là từ khóa; command là tên lệnh). Một điểm quan trọng cần chú ý là trong các hệ điều hành Linux, câu lệnh có phân biệt chữ hoa, chữ thường. “A” sẽ được hệ điều hành hiểu là khác so với “a”.

Để vào hệ thống file, dùng:

- pwd: đưa ra ngoài màn hình thư mục đang hoạt động (ví dụ: /etc/ssh).

- cd: thay đổi thư mục (ví dụ: cd .. – ra một cấp thư mục hiện tại; cd vidu – vào thư mục /vidu).

- ls: đưa ra danh sách nội dung thư mục.


- mkdir: tạo thư mục mới (mkdir tên_thumuc).

- touch: tạo file mới (touch ten_file).

- rmdir: bỏ một thư mục (rmdir ten_thumuc).

- cp: copy file hoặc thư mục (cp file_nguồn file_đích).

- mv: di chuyển file hoặc thư mục; cũng được dùng để đặt lại tên file hoặc thư mục (mv vị_trí_cũ vị_trí_mới hoặc mv tên_cũ tên_mới).

- rm: loại bỏ file (rm tên_file).

Để tìm kiếm file, bạn có thể dùng:

- find : dùng cho các tên file.

- grep <>: để tìm nội dung trong file.

Để xem một file, bạn có thể dùng:

- more : hiển thị file theo từng trang.

- cat <>: hiển thị tất cả file.

- head <>: hiển thị các dòng đầu tiên.

- tail <>: hiển thị các dòng cuối cùng (có thể hữu ích trong những trường hợp như khi bạn muốn xem thông tin cuối cùng của một file hệ thống).

Để chính sửa file, bạn phải sử dụng trình soạn thảo tích hợp sẵn trên dòng lệnh. Thông thường, đây là vi và được dùng với cú pháp: vi .

Để giải nén một lưu trữ (thông thường có đuôi tar.gz), bạn phải dùng lệnh tar với cú pháp tar -xvf .

Để in một file, dùng lệnh lpr . Chú ý là bạn phải có một số daemon hoạt động để quản lý máy in. Thông thường đây là các cup (chủ yếu là UNIX Printing System) có thể sử dụng cho tất cả các phân phối chính.

Để loại bỏ file khỏi hàng đợi ở máy in (bạn có thể lên danh sách hàng đợi bằng lệnh lpq), sử dụng câu lệnh lprm .

Để lắp hoặc gỡ bỏ thiết bị (thêm vào hệ thống file với vai trò như một phương tiện được phép sử dụng), dùng:

- mount /mnt/floppy: lắp thêm ổ mềm.

- umount /mnt/floppy: gỡ bỏ ổ mềm.

- mount /mnt/cdrom: lắp ổ CD-ROM.

- mount /mnt/cdrom: gỡ ổ DC-ROM.

Các thiết bị này thường được cài và cho phép sử dụng một cách tự động. Nhưng có thể một ngày đẹp trời nào đó bạn lại phải tự mình thực hiện công việc này khi có lỗi xảy ra. Đừng lo lắng!

Để tạo một phân vùng

Đầu tiên, tạo một thư mục trong /mnt (mkdir /mnt/ổ_đĩa_mới). Sau đó sử dụng lệnh mount (mount /dev/source /mnt/ ổ_đĩa_mới), trong đó /dev/source là thiết bị (tức phân vùng) bạn muốn lắp thêm vào hệ thống file.

Nếu muốn kết nối tới một host từ xa, sử dụng lệnh ssh. Cú pháp là ssh .

Quản lý hệ thống:

- ps: hiển thị các chương trình hiện thời đang chạy (rất hữu ích: ps là cái nhìn toàn bộ về tất cả các chương trình).

Trong danh sách đưa ra khi thực hiện lệnh ps, bạn sẽ thấy có số PID (Process identification - nhân dạng tiến trình).

Con số này sẽ được hỏi đến khi muốn ngừng một dịch vụ hay ứng dụng, dùng lệnh kill .

- top: hoạt động khá giống như Task Manager trong Windows. Nó đưa ra thông tin về tất cả tài nguyên hệ thống, các tiến trình đang chạy, tốc độ load trung bình… Lệnh top -d thiết lập khoảng thời gian làm tươi lại hệ thống. Bạn có thể đặt bất kỳ giá trị nào, từ .1 (tức 10 mili giây) tới 100 (tức 100 giây) hoặc thậm chí lớn hơn.

- uptime: thể hiện thời gian của hệ thống và tốc độ load trung bình trong khoảng thời gian đó, trước đây là 5 phút và 15 phút.

Thông thường tốc độ load trung bình được tính toán theo phần trăm tài nguyên hệ thống (vi xử lý, RAM, ổ cứng vào/ra, tốc độ load mạng) được dùng tại một thời điểm. Nếu tốc độ được tính toán là 0.37, tức có 37% tài nguyên được sử dụng. Giá trị lớn hơn như 2.35 nghĩa là hệ thống phải đợi một số dữ liệu, khi đó nó sẽ tính toán nhanh hơn 235% mà không gặp phải vấn đề gì. Nhưng giữa các phân phối có thể khác nhau một chút.

- free: hiển thị thông tin trên bộ nhớ hệ thống.

- ifconfig : để xem thông tin chi tiết về các giao diện mạng; thông thường giao diện mạng ethernet có tên là eth(). Bạn có thể cài đặt các thiết lập mạng như địa chỉ IP hoặc bằng cách dùng lệnh này (xem man ifconfig). Nếu có điều gì đó chưa chính xác, bạn có thể stop hoặc start (tức ngừng hoặc khởi_động) giao diện bằng cách dùng lệnh ifconfig up/down.

- passwd: cho phép bạn thay đổi mật khẩu (passwd người_dùng_sở_hữu_mật_khẩu hoặc tên người dùng khác nếu bạn đăng nhập hệ thống với vai trò root).

- useradd: cho phép bạn thêm người dùng mới (xem man useradd).

Dù ở phân phối nào, bạn cũng có thể dùng phím TAB để tự động hoàn chỉnh một lệnh hoặc tên file. Điều này rất hữu ích khi bạn quen với các lệnh. Bạn cũng có thể sử dụng các phím lên, xuống để cuộn xem các lệnh đã nhập. Bạn có thể dùng lệnh đa dòng trên một dòng. Ví dụ như, nếu muốn tạo ba thư mục chỉ trên một dòng, cú pháp có thể là: mkdir thư_mục_1 ; mkdir thư_mục_2 ; mkdir thư_mục_3.

Một điều thú vị khác nữa là các lệnh dạng pipe. Bạn có thể xuất một lệnh thông qua lệnh khác. Ví dụ: man mkdir | tail sẽ đưa ra thông tin các dòng cuối cùng trong trang xem "thủ công" của lệnh mkdir.

Nếu lúc nào đó được yêu cầu phải đăng nhập với tài khoản gốc (tức "siêu" admin của hệ thống), bạn có thể đăng nhập tạm thời bằng cách dùng lệnh su. Tham số -1 (su-1) dùng để thay đổi thư mục chủ và cho các lệnh đã hoặc đang dùng. Chú ý là bạn cũng sẽ được nhắc một mật khẩu.

Để thoát hay đóng shell, gõ exit hoặc logout.

T.Thu

Để website luôn online với cluster Apache High Availability Linux

Cluster sửa chữa lỗi (failover cluster) được dùng để đảm bảo tính sẵn sàng cho các dịch vụ và ứng dụng hệ thống khi bị tấn công, xử lý các lỗi phần cứng và rủi ro do môi trường. Trong bài này chúng tôi sẽ hướng dẫn các bạn cách thức thực hiện một cluster Apache hai nút, chắc chắn tin cậy và hiệu quả cao với ứng dụng thú vị của dự án The High-Availability Linux. Cluster này đã được kiểm tra trên các phân phối Fedora Core 5, CentOS 4.3, và Ubuntu 6.06.1 LTS server.

Trong môi trường cluster, hệ thống 'có tính sẵn sàng cao' (high ability - HA) chịu trách nhiệm bắt đầu và kết thúc các dịch vụ, cài đặt và gỡ bỏ tài nguyên, giám sát khả năng sẵn sàng của hệ thống trong môi trường cluster và điều khiển quyền sở hữu địa chỉ IP ảo chia sẻ giữa các nút cluster. Dịch vụ heartbeat (trung tâm) cung cấp các tính năng cơ sở cần thiết cho hệ thống HA.

Cấu hình cluster phổ biến nhất là standby, sẽ được mô tả dưới đây. Trong cấu hình cluster này, một nút thực hiện tất cả các việc, còn các nút khác ở trạng thái nghỉ ngơi. Heartbeat giám sát "sức khoẻ" của từng dịch vụ cụ thể, thông thường qua một giao diện Ethernet phân tách vốn chỉ dùng cho hệ thống HA sử dụng câu lệnh đặc biệt ping. Nếu vì một lý do nào đó, nút đang thực hiện bị hỏng, heartbeat sẽ chuyển tất cả thành phần HA sang nút khoẻ mạnh khác. Khi nút cũ phục hồi, nó có thể khôi phục lại tình trạng cũ trước đó của mình.

Cài đặt và cấu hình

Để kiểm tra hệ thống High Availability Linux, bạn cần một bộ điều hợp Ethernet thứ hai trên từng nút dành cho heartbeat. Cài đặt Web server Apache và chương trình heartbeat phải trên cả hai nút. Nếu gói heartbeat không nằm trong bất kỳ phần lưu trữ của các phân phối đã có, bạn có thể download tại đây. Trên server CentOS, tôi dùng yum để cài đặt phần mềm cần thiết:

yum install -y httpd heartbeat


Các file cấu hình cho hearbeat không nằm ở nơi phần mềm được cài đặt. Bạn cần copy chúng từ thư mục documentation tới thư mục /etc/ha.d/:

cp /usr/share/doc/heartbeat*/ha.cf /etc/ha.d/

cp /usr/share/doc/heartbeat*/haresources /etc/ha.d/

cp /usr/share/doc/heartbeat*/authkeys /etc/ha.d/

Trong file /etc/hosts bạn phải bổ sung thêm tên hostname và địa chỉ IP để hai nút có thể giao tiếp được với nhau. Trong trường hợp của tôi sẽ như thế này:


192.168.1.1 node1.example.com node1

192.168.1.2 node2.example.com node2


Phải đảm bảo file /etc/hosts là giống nhau ở cả hai nút. Sau đó ping chúng, copy file từ nút này tới nút khác, sử dụng câu lệnh copy an toàn:


scp /etc/hosts root@node2:/etc/

Tiếp theo, chỉnh sửa file cấu hình /etc/ha.d/ha.cf theo các điểm vào để heartbeat có thể hoạt động:

logfile /var/log/ha-log # chỗ để log mọi thứ từ heartbeat

logfacility local0 # tiện ích sử dụng cho syslog hoặc logger

keepalive 2 # thời gian giữa các heartbeat

deadtime 30 # thời gian đến khi host được đưa ra 'chết'

warntime 10 # thời gian trước khi cung cấp cảnh báo chậm trễ "late heartbeat".

initdead 120 # thời gian chết đầu tiên (initdead)

udpport 694 # cổng udp cho truyền thông bcast hoặc ucast

bcast eth1 # giao diện quảng bá (broadcast)

ucast eth1 10.0.0.1 # cluster 2 nút, vì thế không cần dùng dạng đa quảng bá (multicast)

auto_failback on # tự động gửi tài nguyên sai trở lại nút chính

node node1.example.com # tên của nút đầu tiên

node node2.example.com # tên của nút thứ hai

Đây là các tuỳ chọn cơ sở cần thiết để heartbeat hoạt động. File này phải được cấu hình giống hệt nhau trên cả hai nút, ngoại trừ phần "ucast" (nơi để địa chỉ IP của hàng để gửi các gói tới).

File tiếp theo là /etc/ha.d/haresources. Trong file này bạn cần định nghĩa tên nút chính, địa chỉ IP ảo (cluster IP) và tài nguyên dùng để bắt đầu. Ở trường hợp của chúng ta thì đó là Web server Apache.

Chỉ cần một dòng dữ liệu ở đây:

node1.example.com 192.168.1.5 httpd


Hãy chắc chắn rằng file này giống nhau hoàn toàn trên cả hai nút. Chú ý tên tài nguyên là tên script khởi tạo đặt trong thư mục /etc/init.d. Nếu tên tài nguyên trong /etc/init.d không hoàn toàn giống nhau, heartbeat sẽ không thể tìm thấy khi cố gắng đọc nó và cả Apache lẫn hearbeat đều không thể khởi động được.

File liên quan đến heartbeat cuối cùng là /etc/ha.d/authkeys. File này cũng phải hoàn toàn giống nhau trên cả hai nút và chỉ được đọc hoặc ghi bởi người dùng root. Nếu quyền hạn bị thiết lập khác đi, heartbeat sẽ từ chối khởi động. Bạn cần phải cấu hình file như thế này:

auth 1

1 crc

và giới hạn quyền đọc hoặc ghi chỉ dành cho người dùng root:

chmod 600 /etc/ha.d/authkeys

Bây giờ là cấu hình Apache service. Chúng ta muốn Apache nghe địa chỉ IP ảo 192.168.1.5 và cần trỏ thư mục Apache gốc tới điểm cài đặt dữ liệu /data, nơi các file Web được lưu lại. Chú ý là nơi lưu trữ dành cho Apache có thể là một nơi cụ thể từ thư mục file hệ thống cục bộ tới mạng khu vực lưu trữ. Tất nhiên nếu dữ liệu trong cả hai nút không giống nhau thì sẽ chẳng có điểm nào trong cluster failover cả. Nếu bạn không có thiết bị lưu trữ mạng mở rộng (như Fibre Channel chẳng hạn), bạn có thể cài đặt bất kỳ file hệ thống nào như SMB, NFS, iSCSI, hoặc SAN là thư mục địa phương để dữ liệu có thể được truy cập trên từng nút khi các nút hoạt động. Điều này được thực hiện bằng cách chỉnh sửa các thông số đầu vào trong file

/etc/httpd/conf/httpd.conf như sau (ít nhất là trên phân phối CentOS):

Listen 192.168.1.5:80

DocumentRoot "/data"

Bỏ chức năng bắt đầu tự động khởi động trong thời gian boot cho Apache service là khá quan trọng. Khi đó heartbeat sẽ bắt đầu và kết thúc dịch vụ khi cần thiết. Vô hiệu hoá chức năng bắt đầu với câu lệnh sau (trên hệ thống Red Hat):

chkconfig httpd remove

Phải đảm bảo cấu hình Apache giống nhau trên cả hai nút.


Kiểm tra

Bây giờ chúng ta sẽ kiểm tra thử chương trình làm việc với cấu hình vừa thiết lập, bắt đầu tạo cluster mới, khởi động dịch vụ hearbeat trên cả hai nút:

/etc/init.d/heartbeat start

Xem thư mục /var/log/ha-log trên cả hai nút. Nếu tất cả được cấu hình chính xác, bạn sẽ thấy thông tin trong các file log như sau:


Configuration validated. Starting heartbeat 1.2.3.cvs.20050927

heartbeat: version 1.2.3.cvs.20050927

Link node1.example.com:eth1 up.

Link node2.example.com:eth1 up.

Status update for node node2.example.com: status active

Local status now set to: 'active'

remote resource transition completed.

Local Resource acquisition completed. (none)

node2.example.com wants to go standby [foreign]

acquire local HA resources (standby).

local HA resource acquisition completed (standby).

Standby resource acquisition done [foreign].

Initial resource acquisition complete (auto_failback)

remote resource transition completed.

Tiếp theo là kiểm tra failover, khởi động lại server master (server chính). Server slave (server phụ) là dịch vụ Apache. Nếu mọi thứ hoạt động tốt bạn sẽ thấy như sau:


Received shutdown notice from 'node1.example.com'.

Resources being acquired from node1.example.com.

acquire local HA resources (standby).

local HA resource acquisition completed (standby).

Standby resource acquisition done [foreign].

Running /etc/ha.d/rc.d/status status

Taking over resource group 192.168.1.5

Acquiring resource group: node1.example.com 192.168.1.5 httpd

mach_down takeover complete for node node1.example.com.

node node1.example.com: is dead

Dead node node1.example.com gave up resources.

Link node1.example.com:eth1 dead.

Khi master online trở lại, thông số trên Apache service như sau:


Heartbeat restart on node node1.example.comheartbeat

Link node1.example.com:eth1 up.

node2.example.com wants to go standby [foreign]

standby: node1.example.com can take our foreign resources

give up foreign HA resources (standby).

Releasing resource group: node1.example.com 192.168.1.5 httpd

Local standby process completed [foreign].

remote resource transition completed.

Other node completed standby takeover of foreign resources.


Kết luận


Đó là tất cả các bước để xây dựng một Web server cluster mang tính sẵn sàng cao với chi phí thấp. Tất nhiên có nhiều sản phẩm thương mại khác cũng được cung cấp với cùng mục đích này. Nhưng với các doanh nghiệp nhỏ hay các tổ chức tương tự thì High Availability Linux và heartbeat là một lựa chọn sáng suốt.