Khái niệm cơ bản và vai trò của máy chủ mạng
Trong môi trường số hiện nay, máy chủ đóng vai trò nền tảng, đảm nhận chức năng lưu trữ, xử lý và cung cấp dịch vụ qua mạng. Việc hiểu rõ về máy chủ không chỉ giúp tối ưu hóa hiệu năng và độ tin cậy, mà còn là cơ sở để thiết kế hạ tầng CNTT bài bản và mở rộng linh hoạt.
Máy chủ được phân thành hai loại chính: máy chủ vật lý (dereferenced hardware) và máy chủ ảo (đa số chạy trên nền tảng ảo hóa như VMware, KVM, Hyper-V). Mỗi loại đều có đặc điểm riêng về chi phí, khả năng mở rộng và quản trị, nhưng mục tiêu cuối cùng là giống nhau: cung cấp dịch vụ ổn định, sẵn sàng cao và dễ bảo trì.
Lựa chọn phần cứng và triển khai hệ điều hành
2.1 Yêu cầu phần cứng theo mục đích sử dụng
Việc lựa chọn thành phần phần cứng cần dựa trên loại dịch vụ sẽ triển khai: nền tảng web nhẹ có thể sử dụng CPU_trung_bình + RAM_4GB + SSD_120GB, trong khi hệ thống cơ sở dữ liệu nâng cao đòi hỏi CPU_multi-core, ECC RAM >=64GB và hệ thống lưu trữ phân tán (ví dụ: NVMe SSD trong RAID 10 hoặc SAN).
- CPU: Ưu tiên bộ vi xử lý có đa nhân, hỗ trợ tăng tốc học sâu (AVX-512) nếu phục vụ AI/hoặc xử lý dữ liệu lớn.
- RAM: Nên dùng RAM có tính năng ECC để khắc phục lỗi bộ nhớByte-by-byte传动, giảm thiểu rủi ro mất mát dữ liệu.
- Lưu trữ: Ứng dụng I/O cao như CDN hoặc cache Redis nên dùng SSD NVMe. Với lưu trữ tập tin lớn, HDD Enterprise Plus kết hợp với Erasure Coding hoặc Ceph là giải pháp tối ưu.
- Mạng:县长 card Gigabit Ethernet đôi khi không đủ. Máy chủ dùng trong cụm high-availability nên trang bị ít nhất 2 cổng mạng + cấu hình bond modes như
mode=1 (active-backup)hoặcmode=4 (802.3ad).
2.2 Triển khai hệ điều hành và cấu hình ban đầu
Sau khi xác định cấu hình phần cứng, bước tiếp theo là chọn và cài đặt hệ điều hành phù hợp. Các hệ điều hành phổ biến bao gồm Ubuntu Server LTS, CentOS Stream (đã chuyển hướng sang RHEL Composer), Rocky Linux, Debian, Windows Server hoặc FreeBSD — tùy theo môi trường ứng dụng và yêu cầu hỗ trợ sẵn có của phần mềm.
Các bước cài đặt hệ điều hành cơ bản:
- Sao lưu dữ liệu quan trọng.
- Tải ISO từ nguồn chính chủ và tạo phương tiện boot (USB hoặc ISO mount qua KVM/IPMI).
- Tiến hành cài đặt, thiết lập phân vùng phù hợp: phân vùng /boot (512MB), / (root), swap (tối thiểu bằng RAM hoặc dùng swapfile), và /var nếu cần riêng biệt.
- Thiết lập IP tĩnh, gateway, DNS bất biến.
- Đổi tên hostname theo chuẩn:
hostnamectl set-hostname web01.prod.local. - Không khởi động service không cần thiết — chỉ giữ lại những dịch vụ phục vụ mục đích chính của máy chủ.
- Thay đổi mật khẩu root ngay sau khi cài đặt xong; không dùng tài khoản mặc định để truy cập từ xa.
Cài đặt mạng và xác định vai trò máy chủ
3.1 Thiết lập giao thức IP và划分 mạng
Mô hình địa chỉ IPv4 không phải ngẫu nhiên — việc lập kế hoạch địa chỉ NA (Network Addressing) cần考慮 đến: độ dài prefix, nhóm công việc (OU), công dụng thiết bị. Một cấu trúc đề xuất: X.Y.[module_type].[device_id]/[prefix]. Ví dụ: 10.1.10.5/24 nghĩa là network 10.1.0.0, module web (10), thiết bị thứ 5. Tiền tố /24~26 phù hợp cho mạng nội bộ, còn /30 hoặc /31 tối ưu cho kết nối point-to-point giữa router hay.switch.
Để đảm bảo tính ổn định, hãy luôn cấu hình IP tĩnh cho máy chủ. Dưới Linux (systemd-networkd / NetworkManager), bạn có thể sử dụng tệp cấu hình YAML như sau:
network:
version: 2
ethernets:
eth0:
addresses:
- 10.1.10.5/24
gateway4: 10.1.10.1
nameservers:
addresses: [8.8.8.8, 1.1.1.1]
optional: true3.2 Mở và đóng cổng dịch vụ theo nguyên tắc "tối thiểu cần thiết"
Mỗi dịch vụ ứng dụng (web, DB, DNS...) thường nghe trên một cổng cố định, ví dụ: 80/443 (HTTP/HTTPS), 3306 (MySQL), 5432 (PostgreSQL), 27017 (MongoDB). Việc mở cổng cần được kiểm soát nghiêm ngặt thông qua tường lửa lớp hệ điều hành hoặc tường lửa mạng (firewall appliance, Cloud Security Group).
Ví dụ cấu hình tường lửa ufw trên Ubuntu để chỉ phép kết nối từ bên ngoài vào cổng HTTP(S):
# Cài đặt ufw nếu chưa được cài sẵn
sudo apt update && sudo apt install ufw
# Đặt luật mặc định: từ chối yêu cầu đến, cho phép yêu cầu đi ra
sudo ufw default deny incoming
sudo ufw default allow outgoing
# Cho phép cổng TCP 80, 443 từ mọi nơi
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
#_activar firewall
sudo ufw enable
3.3 Xác định vai trò ứng dụng và thiết kế kiến trúc
Dựa vào nhu cầu业务,máy chủ được gán vai trò cốt lõi như:
- Web Frontend Server: Xử lý HTTP(S), Reverse Proxy (Nginx/Traefik), Cache nội dung (Varnish).
- Application Backend Server: Chạy logic nghiệp vụ (Java/Node.js/Go/Python), thường kết nối trực tiếp với Database.
- Database Server: MySQL, PostgreSQL, MongoDB, Elasticsearch — ưu tiên lưu trữ riêng biệt, ổ gắn riêng ( dedicated disk/ssd), vàPhân tách dữ liệu và nhật ký.
- Directory / Auth Server: LDAP / FreeIPA / AD để quản lý người dùng tập trung.
- Monitoring / Log Collector: Collect, hiển thị và cảnh báo hiệu suất hệ thống (Prometheus/Grafana, ELK, Loki).
Trong môi trường production, nên tách biệt rõ ràng các vai trò:Web tier phải cô lập với DB tier qua các boundary tường lửa, dù tính năng strict security.
Cấu hình phần mềm và quản lý môi trường chạy
4.1 Triển khai service stack cơ bản
Một stack web điển hình bao gồm:
- reverse proxy (Nginx)
- application server (Node.js/PHP-FPM/Java)
- database (PostgreSQL)
- cache (Redis/Memcached)
Ví dụ: cài đặt Nginx với bảo mật mặc định:
# Cập nhật danh sách gói phần mềm
sudo apt update
# Cài đặt Nginx
sudo apt install nginx
# Kích hoạt và tự khởi động khi boot
sudo systemctl enable --now nginx
# Kiểm tra trạng thái dịch vụ
systemctl status nginx --no-pager -l
# Cấu hình block server
sudo tee /etc/nginx/sites-available/default <<EOF
server {
listen 80;
server_name _;
root /var/www/html;
index index.html;
location / {
try_files \$uri \$uri/ =404;
}
}
EOF
# Kích hoạt cấu hình
sudo ln -sf /etc/nginx/sites-available/default /etc/nginx/sites-enabled/
sudo nginx -t && sudo systemctl reload nginx
4.2 Giám sát tiến trình và dịch vụ
Giám sát tiến trình giúp tự động phát hiện quá trình ứng dụng bị crash hoặc quá tải. Công cụ như supervisord, systemd, hoặc container orchestration (Kubernetes) đều hỗ trợ cơ chế restart tự động.
Ví dụ: Dùng systemd để quản lý ứng dụng Node.js không cần port root:
[Unit]
Description=MySimple Node App
After=network.target
[Service]
Type=simple
User=appuser
WorkingDirectory=/opt/myapp
ExecStart=/usr/bin/node /opt/myapp/index.js
Restart=always
RestartSec=5
[Install]
WantedBy=multi-user.target
lệnh: sudo systemctl daemon-reload; sudo systemctl enable --now myapp.service
4.3 Quản lý nhật ký hệ thống
_LOG là nguồn dữ liệu chính để chẩn đoán sự cố.므로 nên:_
- Tập trung log tại journalctl trên các hệ thống systemd, hoặc dùng rsyslog/syslog-ng chuyển về server trung tâm.
- Cấu hình
logrotatetự động界定 kích cỡ và thời gian lưu trữ. - Áp dụng định dạng JSON cho log từ services: giúpparse & index dễ dàng với ELK stack.
Ví dụ cấu hình /etc/logrotate.d/syslog:
/var/log/syslog {
rotate 7
daily
missingok
notifempty
delaycompress
compress
postrotate
/usr/lib/rsyslog/rsyslog-rotate
endscript
}
Giáo dục bảo mật hệ thống và kiểm soát truy cập
5.1 Quy tắc phân quyền và quản lý người dùng
Nguyên tắc quyền tối thiểu (Least Privilege) luôn đúng: mỗi người/dịch vụ chỉ được cấp quyền cần thiết để hoàn thành tác vụ.
- Tạo tài khoản riêng cho mỗi dịch vụ:
sudo useradd -r -s /usr/sbin/nologin mysql - Tách biệt hệ điều hành và dữ liệu ứng dụng ra các phân vùng khác nhau.
- Không bao giờ chạy dịch vụ với quyền root trừ khi nghiêm trọng (kernel module load, setup mạng).
- Quản lý SSH key theo hộ chiếu: lần lượt dùng
ssh-user@hostvàauthorized_keysphân theo vai trò (devOps/admin).
5.2 Thiết lập tường lửa và rà soát cổng dịch vụ
Cấu hình firewall theo hướng whitelist — chỉ mở những cổng cần thiết, ví dụ: 22 (SSH từ IP nội bộ), 80/443 (public HTTP), 3306 (internalOnly), 53 (DNS master/slave).
Dưới firewalld (CentOS/RHEL):
# Cài đặt firewalld
sudo yum install firewalld
sudo systemctl enable --now firewalld
# Thêm dịch vụ vào zone public
sudo firewall-cmd --permanent --zone=public --add-service={http,https,ssh}
sudo firewall-cmd --reload
# Kiểm tra danh sách cổng đang mở
sudo firewall-cmd --list-all
5.3 Ứng dụng web: kiểm soát lỗi và lớp bảo vệ
Nhiều đợt tấn công thành công là do lỗi cấu hình ứng dụng — thay vì vulnerabilities kỹ thuật. Các kẻ hở phổ biến:
- SQLi: Luôn dùng DSL hoặc parameterized queries, không Norfolk trực tiếp các biến từ REST body/URL vào câu truy vấn.
- XSS: Escape mọi output đầu ra của người dùng; thiết lập Header:
Content-Security-Policy: default-src 'self'. - CSRF: yêu cầu cryptographic nonce từ session hoặc dùng SameSite=Strict cookie.
- Session Fixation: Phát sinh session ID mới sau mỗi lần đăng nhập thành công.
Độ tin cậy cao: nâng cấp, bảo trì và cảnh báo
6.1 Cập nhật an toàn và kiểm tra tính tương thích
Không cập nhật phần mềm là một rủi ro lớn. Tuy nhiên, áp dụng bản vá mà không kiểm tra trước có thể gây downtime. Vì vậy:
- Lựa chọn kênh nghiên cứu (beta/stable/long-term) phù hợp môi trường.
- Cấu hình máy test để mô phỏng quá trình nâng cấp trước khi áp dụng cho production.
- Dùng công cụ như
apt-listbugshoặcrpm --testđể preview lỗi trước khi cài. - Tự động cập nhật chỉ nên dùng cho các bản vá bảo mật khẩn cấp (critical security patches), còn bản nâng cấp lớn vẫn nên manual hoặc có notification rõ ràng.
Ví dụ bật cập nhật tự động trên Ubuntu:
sudo apt install unattended-upgrades
sudo dpkg-reconfigure -plow unattended-upgrades
# Chỉnh file cấu hình
sudo tee /etc/apt/apt.conf.d/20auto-upgrades <<EOF
APT::Periodic::Update-Package-Lists "1";
APT::Periodic::Unattended-Upgrade "1";
EOF
6.2 Giám sát hiệu suất và chẩn đoán tương quan
Công cụ theo dõi hệ thống phổ biến:
top / htop / glances: Xem CPU, memory, load avg nursing.iostat / iotop: Đánh giá I/O latency, throughput đĩa.iftop / nethogs / ss: Kiểm tra bandwidth theo tiến trình/IP.perf / eBPF tools / `strace`: Live tracing hệ thống để điều tra bottleneck sâu.
Ví dụ đo lường độ trễ đĩa:
# Đánh giá latency trung bình mỗi 5 giây trong 10 lần
sudo iostat -x 5 10 | awk '/avg-cpu|Device/ {print $0}'
6.3 Thiết lập cảnh báo tự động với Prometheus + Alertmanager
Để đảm bảo hiệu suất luôn ở trạng thái mong muốn, nên lập trình cảnh báo dựa trên:
- CPU user + system > 85% trong vòng 5 phút
- Mức sử dụng swap > 10%
- Độ trễ phản hồi HTTP > 2s
- Độ trễ thể hiện ở p95 latency của DB queries
Ví dụ rule cảnh báo trong Prometheus:
groups:
- name: server_health_rules
rules:
- alert: HighCPUUsage
expr: 100 - (avg by(instance) (rate(node_cpu_seconds_total{mode="idle"}[5m])) * 100) > 85
for: 300s
labels:
severity: warning
annotations:
summary: "High CPU usage detected on {{ \$labels.instance }}"
description: "{{ \$labels.instance }} CPU usage is above 85% for 5 minutes."
6.4 Tăng tính sẵn sàng: cân bằng tải và sao lưu
Cơ chế fallback đáp ứng khi một node fall down:
- Cân bằng tải layer 4 (bearer + ipvs/keepalived) hoặc layer 7 (traefik/Nginx Plus/HAProxy), tập trung stateless.
- Dùng stateful service (database) nên cấu hình replication同步 (MySQL master-slave, PostgreSQL streaming replication, MongoDB replica set).
- Thiết lập backup định kỳ: với database dùng mysqldump/xtrabackup, với system file dùng rsync snapshot hoặc borgbackup nhằm tiết kiệm băng thông và không gian.
Ví dụ cơ chế failover cho web service:
# Keepalived giảm trùng heartbeat và switch VIP
sudo apt install keepalived
# Cấu hình /etc/keepalived/keepalived.conf
vrrp_instance VI_1 {
state MASTER
interface eth0
virtual_router_id 51
priority 100
advert_int 1
authentication {
auth_type PASS
auth_pass 12345
}
virtual_ipaddress {
10.1.10.100/24 dev eth0
}
}