Rocky Linux Migration Disaster Recovery Plan

โดย อ. บอมกิตติทัศน์เจริญพนาสิทธิ์ | อัปเดต 24 ก. พ. 2026 | อ่าน 16 นาที
- Rocky Linux คืออะไร — ทำไมต้อง Migrate จาก CentOS
- เปรียบเทียบ Rocky Linux vs AlmaLinux vs Oracle Linux
- เตรียมตัวก่อน Migration — Checklist
- Migrate จาก CentOS 8 มา Rocky Linux 8
- Migrate จาก CentOS 7 — Upgrade Path
- ติดตั้ง Rocky Linux 9 ใหม่ (Fresh Install)
- Post-Migration — ตรวจสอบและ Hardening
- Disaster Recovery คืออะไร — RPO, RTO, DR Strategy
- Backup Strategy — 3-2-1 Rule
- DR Level ต่างๆ — Cold, Warm, Hot Site
- สร้าง DR Plan สำหรับ Rocky Linux Server
- Bare-metal Backup ด้วย ReaR
- Automated DR ด้วย Ansible
- DR Testing — ซ้อมกู้คืนระบบ
- Best Practices และสรุป
Rocky Linux คืออะไร — ทำไมต้อง Migrate จาก CentOS
Rocky Linux เป็น Enterprise Linux Distribution ที่เข้ากันได้ 100% แบบ Binary-compatible กับ Red Hat Enterprise Linux (RHEL) ก่อตั้งโดย Gregory Kurtzer ผู้ร่วมก่อตั้ง CentOS ดั้งเดิมตั้งชื่อเพื่อเป็นเกียรติแก่ Rocky McGaugh ผู้ร่วมก่อตั้ง CentOS อีกู้คืนที่เสียชีวิตไปแล้ว
เหตุผลที่ต้อง Migrate จาก CentOS คือ Red Hat ประกาศเปลี่ยน CentOS จาก Downstream (สร้างจาก RHEL Source) เป็น CentOS Stream ที่เป็น Upstream (อยู่ก่อน RHEL) ทำให้ CentOS Stream ไม่เหมาะกับ Production Server อีกต่อไปเพราะอาจมี Bug ที่ยังไม่ได้แก้ CentOS 8 สิ้นสุด Support ไปแล้ว CentOS 7 สิ้นสุด 30 มิถุนายน 2024 ดังนั้น Server ที่ยังใช้ CentOS ต้อง Migrate มา Rocky Linux, AlmaLinux หรือ RHEL
เปรียบเทียบ Rocky Linux vs AlmaLinux vs Oracle Linux
| คุณสมบัติ | Rocky Linux | AlmaLinux | Oracle Linux |
|---|---|---|---|
| ความเข้ากันได้ | 1:1 Binary RHEL | 1:1 Binary RHEL | RHEL Compatible + UEK |
| ผู้ดูแล | Rocky Enterprise Software Foundation | AlmaLinux OS Foundation | Oracle Corporation |
| Governance | Community-driven | Community-driven | Corporate-driven |
| Migration Tool | migrate2rocky | almalinux-deploy | centos2ol |
| Support ฟรี | Community | Community | Community + ซื้อเพิ่มได้ |
| Kernel พิเศษ | ไม่มี (ใช้ RHEL Kernel) | ไม่มี (ใช้ RHEL Kernel) | UEK (Unbreakable Enterprise Kernel) |
| แนะนำสำหรับ | Production ทั่วไป | Production ทั่วไป | Oracle Stack |
Rocky Linux และ AlmaLinux ใช้แทนกันได้เลือกตามความชอบทั้งคู่เข้ากันได้กับ RHEL 100% ส่วน Oracle Linux มี Kernel พิเศษ (UEK) ที่ Optimize สำหรับ Oracle Database
เตรียมตัวก่อน Migration — Checklist
- Backup ทุกอย่าง — Full System Backup + Database Dump + Config Files ก่อน Migration เสมอ
- ตรวจ Hardware Compatibility — ดูว่า Driver ทำงานกับ Rocky Linux ได้หรือไม่
- ตรวจ Application Compatibility — ทดสอบ Application บน Rocky Linux ก่อนทำ Production
- ตรวจ 3rd Party Repository — EPEL, Remi, ELRepo อาจต้อง Update URL
- Document ทุกอย่าง — จด IP, Hostname, Service ที่รัน, Firewall Rules, Cron Jobs
- แจ้ง Stakeholders — แจ้ง Downtime Window ให้ทุกู้คืนที่เกี่ยวข้อง
- เตรียม Rollback Plan — ถ้า Migration ล้มเหลวต้อง Restore กลับได้ภายในเวลาที่กำหนด
Migrate จาก CentOS 8 มา Rocky Linux 8
# 1. Backup ก่อนเสมอ!
sudo tar czf /backup/full-backup-$(date +%Y%m%d).tar.gz --exclude=/backup --exclude=/proc --exclude=/sys --exclude=/dev /
# 2. ดาวน์โหลด migrate2rocky script
curl -O https://raw.githubusercontent.com/rocky-linux/rocky-tools/main/migrate2rocky/migrate2rocky.sh
# 3. ตรวจสอบ Script
bash migrate2rocky.sh --help
# 4. รัน Migration
sudo bash migrate2rocky.sh -r
# ระบบจะ:
# - ลบ CentOS Repository
# - เพิ่ม Rocky Linux Repository
# - เปลี่ยน Package ทั้งหมดเป็น Rocky Linux
# - ใช้เวลาประมาณ 15-30 นาที
# 5. Reboot
sudo reboot
# 6. ตรวจสอบหลัง Reboot
cat /etc/os-release
# NAME="Rocky Linux"
# VERSION="8.9 (Green Obsidian)"
rpm -qa | grep centos
# ไม่ควรมี Package ของ CentOS เหลือ
# 7. Update ทั้งหมด
sudo dnf update -y
Migrate จาก CentOS 7 — Upgrade Path
CentOS 7 ไม่สามารถ Migrate ตรงไป Rocky Linux 8/9 ได้เพราะเป็นคนละ Major Version มี 2 ทางเลือก
- In-place Upgrade — ใช้ ELevate Project (จาก AlmaLinux) ที่ Upgrade CentOS 7 → Rocky Linux 8 → Rocky Linux 9 แบบ In-place แต่มีความเสี่ยงสูงแนะนำสำหรับ Server ที่ไม่ Critical
- Fresh Install + Migration — ติดตั้ง Rocky Linux 9 ใหม่แล้วย้าย Data และ Config จาก CentOS 7 มาวิธีนี้ปลอดภัยที่สุดแนะนำสำหรับ Production Server
# ELevate: CentOS 7 → Rocky Linux 8
sudo yum install -y http://repo.almalinux.org/elevate/elevate-release-latest-el7.noarch.rpm
sudo yum install -y leapp-upgrade leapp-data-rocky
# Pre-upgrade Check
sudo leapp preupgrade
# ดู Report
cat /var/log/leapp/leapp-report.txt
# แก้ปัญหาที่ Report แจ้ง แล้วรัน Upgrade
sudo leapp upgrade
# Reboot เข้า Upgrade Mode
sudo reboot
# ระบบจะ Boot เข้า Upgrade Environment อัตโนมัติ ใช้เวลา 30-60 นาที
ติดตั้ง Rocky Linux 9 ใหม่ (Fresh Install)
สำหรับ Server ใหม่หรือ Migration จาก CentOS 7 แนะนำ Fresh Install Rocky Linux 9
# ดาวน์โหลด ISO
# https://rockylinux.org/download
# หลังติดตั้งเสร็จ
# 1. Update
sudo dnf update -y
# 2. ติดตั้ง EPEL
sudo dnf install -y epel-release
# 3. ติดตั้ง Tools พื้นฐาน
sudo dnf install -y vim htop tmux wget curl git rsync
# 4. ตั้ง Firewall
sudo systemctl enable --now firewalld
sudo firewall-cmd --permanent --add-service=ssh
sudo firewall-cmd --permanent --add-service=http
sudo firewall-cmd --permanent --add-service=https
sudo firewall-cmd --reload
# 5. ตั้ง SELinux (Enforcing)
sudo setenforce 1
sudo sed -i 's/SELINUX=permissive/SELINUX=enforcing/' /etc/selinux/config
# 6. ตั้ง Automatic Security Update
sudo dnf install -y dnf-automatic
sudo sed -i 's/apply_updates = no/apply_updates = yes/' /etc/dnf/automatic.conf
sudo systemctl enable --now dnf-automatic.timer
Post-Migration — ตรวจสอบและ Hardening
- ตรวจ Service ทั้งหมด —
systemctl list-units --type=service --state=running - ตรวจ Network —
ip addr,ss -tlnp,firewall-cmd --list-all - ตรวจ Application — เปิดเว็บทดสอบ API ดู Error Log
- ตรวจ Cron Jobs —
crontab -l,ls /etc/cron.d/ - ตรวจ SELinux —
getenforceควรเป็น Enforcing ดู Audit Log ว่ามี Denial หรือไม่ - Hardening — ปิด SSH Root Login, ใช้ SSH Key, ปิด Port ที่ไม่ใช้, ตั้ง Fail2ban
Disaster Recovery คืออะไร — RPO, RTO, DR Strategy
Disaster Recovery (DR) คือแผนและกระบวนการกู้คืนระบบ IT เมื่อเกิดเหตุการณ์ร้ายแรงเช่น Hardware Failure, Data Center ไฟไหม้/น้ำท่วม, Ransomware Attack, Human Error ลบข้อมูลผิดหรือ Network Outage ยาวนาน
Metric สำคัญ 2 ตัวที่ต้องกำหนด
- RPO (Recovery Point Objective) — ปริมาณข้อมูลที่ยอมสูญเสียได้เช่น RPO 1 ชั่วโมง = ยอมเสียข้อมูลได้ไม่เกิน 1 ชั่วโมงล่าสุดกำหนดจาก Backup Frequency
- RTO (Recovery Time Objective) — เวลาที่ต้องกู้คืนระบบให้ Online เช่น RTO 4 ชั่วโมง = ระบบต้อง Online ภายใน 4 ชั่วโมงหลังเกิดเหตุกำหนดจาก DR Strategy
| RPO | Backup Strategy | RTO | DR Strategy |
|---|---|---|---|
| 24 ชม. | Daily Backup | 24+ ชม. | Cold Site |
| 1-4 ชม. | Hourly Snapshot | 4-8 ชม. | Warm Site |
| < 1 ชม. | Real-time Replication | < 1 ชม. | Hot Site |
| 0 (Zero) | Synchronous Replication | นาที | Active-Active |
Backup Strategy — 3-2-1 Rule
กฎ 3-2-1 เป็นมาตรฐานของ Backup Strategy
- 3 สำเนา — เก็บข้อมูลอย่างน้อย 3 ชุด (1 Original + 2 Backup)
- 2 สื่อ — เก็บบนสื่อต่างชนิดกันอย่างน้อย 2 แบบ (เช่น Disk + Tape หรือ Local + Cloud)
- 1 Offsite — เก็บอย่างน้อย 1 ชุดนอกสถานที่ (เช่น Cloud หรือ DR Site ต่างจังหวัด)
# Backup Script สำหรับ Rocky Linux
#!/bin/bash
DATE=$(date +%Y%m%d)
BACKUP_DIR="/backup"
REMOTE="backup-server:/backup/$(hostname)"
# 1. Database Backup
mysqldump --all-databases --single-transaction | gzip > $BACKUP_DIR/mysql-$DATE.sql.gz
pg_dumpall | gzip > $BACKUP_DIR/postgres-$DATE.sql.gz
# 2. Config Backup
tar czf $BACKUP_DIR/etc-$DATE.tar.gz /etc/
# 3. Application Data
rsync -az --delete /var/www/ $BACKUP_DIR/www/
rsync -az --delete /opt/app/ $BACKUP_DIR/app/
# 4. Send to Remote (Offsite)
rsync -az --delete -e "ssh -p 22" $BACKUP_DIR/ $REMOTE/
# 5. Cleanup: เก็บ 30 วัน
find $BACKUP_DIR -name "*.gz" -mtime +30 -delete
# 6. Verify
echo "Backup completed: $(du -sh $BACKUP_DIR)" | mail -s "Backup Report" admin@example.com
DR Level ต่างๆ — Cold, Warm, Hot Site
- Cold Site — มี Hardware พร้อมแต่ไม่มี Data ต้อง Restore จาก Backup เมื่อเกิดเหตุ RTO สูง (วัน) ค่าใช้จ่ายต่ำสุด
- Warm Site — มี Hardware + OS + Application แต่ Data ไม่ Real-time ต้อง Restore Backup ล่าสุดก่อน RTO ปานกลาง (ชั่วโมง)
- Hot Site — มีทุกอย่างเหมือน Production + Data Replicate แบบ Near Real-time พร้อม Failover ทันที RTO ต่ำ (นาที) ค่าใช้จ่ายสูงสุด
- Active-Active — 2 Site ทำงานพร้อมกัน Load Balance Traffic ข้ามกันถ้า Site หนึ่งล่มอีก Site รับ Traffic ทั้งหมดทันที RTO ใกล้ 0
สร้าง DR Plan สำหรับ Rocky Linux Server
DR Plan ที่ดีต้องครอบคลุม 5 ส่วน
- Risk Assessment — ระบุความเสี่ยงทั้งหมด (Hardware Failure, Natural Disaster, Cyber Attack, Human Error) ประเมินโอกาสและผลกระทบ
- RPO/RTO Definition — กำหนด RPO และ RTO สำหรับแต่ละ System ตาม Business Impact
- Backup & Replication — กำหนดวิธี Backup และ Frequency สำหรับแต่ละ System
- Recovery Procedures — เขียนขั้นตอนกู้คืนที่ละเอียด Step-by-Step ใครก็ทำตามได้
- Testing Schedule — ซ้อมกู้คืนอย่างน้อยปีละ 2 ครั้งบันทึกผลและปรับปรุง
Bare-metal Backup ด้วย ReaR
ReaR (Relax-and-Recover) เป็นเครื่องมือ Bare-metal Backup/Recovery สำหรับ Linux สร้าง Bootable ISO ที่ Restore ระบบทั้งหมดได้ภายในไม่กี่นาที
# ติดตั้ง ReaR
sudo dnf install -y rear genisoimage syslinux
# กำหนด Config
cat > /etc/rear/local.conf << 'EOF'
OUTPUT=ISO
OUTPUT_URL=nfs://backup-server/backup/rear/
BACKUP=NETFS
BACKUP_URL=nfs://backup-server/backup/rear/
BACKUP_PROG_COMPRESS_OPTIONS=("--gzip")
BACKUP_PROG_COMPRESS_SUFFIX=".gz"
NETFS_KEEP_OLD_BACKUP_COPY=2
EOF
# สร้าง Backup
sudo rear -v mkbackup
# ผลลัพธ์: ISO ที่ Boot ได้ + Data Archive
# เก็บไว้บน NFS Server
# Recovery: Boot จาก ISO แล้วรัน
rear -v recover
# ระบบจะ Restore Partition, OS, Data ทั้งหมดอัตโนมัติ
Automated DR ด้วย Ansible
# dr-playbook.yml — Automated Server Recovery
---
- name: Restore Rocky Linux Server
hosts: dr_servers
become: yes
vars:
backup_server: backup.example.com
backup_path: /backup/production
tasks:
- name: Install base packages
dnf:
name: "{{ item }}"
state: present
loop:
- nginx
- postgresql-server
- redis
- python3
- certbot
- name: Restore configs
synchronize:
src: "{{ backup_server }}:{{ backup_path }}/etc/"
dest: /etc/
mode: pull
- name: Restore application
synchronize:
src: "{{ backup_server }}:{{ backup_path }}/app/"
dest: /opt/app/
mode: pull
- name: Restore database
shell: |
gunzip -c {{ backup_path }}/postgres-latest.sql.gz | psql -U postgres
- name: Start services
systemd:
name: "{{ item }}"
state: started
enabled: yes
loop:
- nginx
- postgresql
- redis
- name: Verify health
uri:
url: "http://localhost/health"
status_code: 200
register: health
retries: 10
delay: 5
DR Testing — ซ้อมกู้คืนระบบ
DR Plan ที่ไม่เคยทดสอบไม่มีประโยชน์ต้องซ้อมกู้คืนอย่างสม่ำเสมอ
- Tabletop Exercise — ประชุมจำลองสถานการณ์เดินผ่าน DR Plan ทุกขั้นตอนบนกระดาษทำทุก Quarter
- Partial Test — ทดสอบ Restore บาง Component เช่น Restore Database จาก Backup ดูว่าข้อมูลครับหรือือไม่ทำทุกเดือน
- Full DR Test — จำลองเหตุการณ์จริง Failover ไป DR Site ทั้งหมดทดสอบว่า Application ทำงานได้ครบวัด RTO จริงทำปีละ 1-2 ครั้ง
หลังทุกการทดสอบต้องบันทึกผลปัญหาที่พบเวลาที่ใช้แล้วปรับปรุง DR Plan ให้ดีขึ้น
Best Practices และสรุป
- Backup ก่อน Migration เสมอ — ไม่มีข้อยกเว้น
- ทดสอบบน Staging ก่อน — อย่า Migrate Production เป็นตัวแรก
- ใช้ 3-2-1 Backup Rule — 3 สำเนา, 2 สื่อ, 1 Offsite
- กำหนด RPO/RTO ชัดเจน — คุยกับ Business ว่ายอมรับได้แค่ไหน
- Automate ทุกอย่าง — Backup Script, DR Playbook, Monitoring ทำอัตโนมัติ
- ซ้อม DR อย่างน้อยปีละ 2 ครั้ง — DR Plan ที่ไม่เคยทดสอบไม่มีค่า
- Document อัปเดตเสมอ — เมื่อ Infrastructure เปลี่ยน DR Plan ต้องเปลี่ยนตาม
- ใช้ SELinux Enforcing — ป้องกัน Attack ที่ Exploit Application
- อัปเดต Security Patch สม่ำเสมอ — เปิด dnf-automatic สำหรับ Security Update
Rocky Linux เป็นทางเลือกที่ดีที่สุดสำหรับ Migrate จาก CentOS ด้วยความเข้ากันได้ 100% กับ RHEL และ Community ที่แข็งแกร่งเมื่อรวมกับ Disaster Recovery Plan ที่ครอบคลุมจะได้ระบบ Production ที่เสถียรปลอดภัยและกู้คืนได้อย่างมั่นใจติดตามบทความใหม่ๆได้ที่ SiamCafe.net
Q: Rocky Linux คืออะไร
Enterprise Linux ที่เข้ากันได้ 100% กับ RHEL สร้างโดย Gregory Kurtzer ผู้ร่วมก่อตั้ง CentOS ทดแทน CentOS ที่เปลี่ยนเป็น Stream