CephSF ลงบน ubuntu

ได้แน่นอนครับ! Ceph สามารถทำงานบน Ubuntu ได้อย่างยอดเยี่ยม และเป็นหนึ่งในระบบปฏิบัติการที่ได้รับความนิยมสูงสุดสำหรับการสร้าง Ceph Cluster

เราจะใช้เครื่องมือ cephadm ซึ่งเป็นวิธีที่ทันสมัยและแนะนำโดย Ceph ในปัจจุบัน cephadm จะจัดการ Ceph services ทั้งหมดผ่าน Container (โดยใช้ Podman หรือ Docker) ทำให้การติดตั้ง, บริหารจัดการ, และอัปเกรดทำได้ง่ายและเป็นระเบียบมาก

นี่คือขั้นตอนการติดตั้ง Ceph Cluster บน Ubuntu Server 22.04 LTS แบบละเอียดตั้งแต่ต้นจนจบครับ

🎯 เป้าหมาย

สร้าง Ceph Cluster ที่พร้อมใช้งานและทนทาน (High Availability) ประกอบด้วย:

  • 3 Nodes: เพื่อให้ได้ Quorum (เสียงข้างมาก) สำหรับส่วนบริหารจัดการ
  • ceph-node1 (IP: 192.168.1.101)
  • ceph-node2 (IP: 192.168.1.102)
  • ceph-node3 (IP: 192.168.1.103)
  • Disk: แต่ละ Node ควรมี Disk ว่างอย่างน้อย 1 ลูก (ที่ไม่ใช่ OS Disk) สำหรับใช้เป็น OSD
  • OS: Ubuntu Server 22.04 LTS (Jammy Jellyfish)

🛠️ ขั้นตอนที่ 1: เตรียม Server (ทำบนทุก Node)

ขั้นตอนนี้สำคัญมาก ต้องทำบน ceph-node1, ceph-node2, และ ceph-node3 ให้เหมือนกันทั้งหมด

  1. ตั้งค่า Hostname และ /etc/hosts
    เพื่อให้ทุก Node รู้จักกันผ่านชื่อได้ แก้ไขไฟล์ /etc/hosts บนทุกเครื่อง:
    Bash
    sudo nano /etc/hosts

    เพิ่มบรรทัดเหล่านี้เข้าไป:
    127.0.0.1       localhost
    192.168.1.101   ceph-node1
    192.168.1.102   ceph-node2
    192.168.1.103   ceph-node3

    จากนั้นตั้งค่า hostname ของแต่ละเครื่องให้ตรงกัน เช่น บน ceph-node1:
    Bash
    sudo hostnamectl set-hostname ceph-node1
  2. สร้าง User สำหรับจัดการ Ceph
    เพื่อความปลอดภัย เราจะสร้าง user ชื่อ ceph-admin และให้สิทธิ์ sudo แบบไม่ต้องถามรหัสผ่าน
    Bash
    sudo useradd -m -s /bin/bash ceph-admin
    sudo echo “ceph-admin ALL=(ALL) NOPASSWD:ALL” | sudo tee /etc/sudoers.d/ceph-admin
  3. ตั้งค่า SSH Key (ทำจาก ceph-node1)
    cephadm จะใช้ SSH เพื่อเชื่อมต่อไปยัง Node อื่นๆ เราจะสร้าง SSH key บน ceph-node1 ในนามของ ceph-admin และคัดลอกไปยัง Node อื่นๆ
    Bash
    # สลับไปที่ user ceph-admin
    sudo su – ceph-admin

    # สร้าง SSH key
    ssh-keygen -t rsa

    # คัดลอก key ไปยัง node อื่นๆ (ระบบจะถามรหัสผ่านของ ceph-admin)
    ssh-copy-id ceph-admin@ceph-node1
    ssh-copy-id ceph-admin@ceph-node2
    ssh-copy-id ceph-admin@ceph-node3

    ทดลอง SSH จาก ceph-node1 ไปยัง Node อื่นๆ เพื่อให้แน่ใจว่าไม่ต้องใส่รหัสผ่านแล้ว
  4. ติดตั้ง Dependencies และ Ceph Repository
    Bash
    # สลับกลับมาเป็น root หรือ user ที่มี sudo
    # อัปเดตระบบและติดตั้งเครื่องมือพื้นฐาน
    sudo apt update
    sudo apt install -y curl gnupg

    # เพิ่ม Ceph Repository Key
    curl -fsSL https://download.ceph.com/keys/release.asc | sudo gpg –dearmor -o /etc/apt/trusted.gpg.d/ceph.gpg

    # เพิ่ม Ceph Repository (ตัวอย่างสำหรับเวอร์ชัน Reef และ Ubuntu 22.04)
    echo “deb https://download.ceph.com/debian-reef/ jammy main” | sudo tee /etc/apt/sources.list.d/ceph.list
  5. ติดตั้ง cephadm และ Container Runtime
    cephadm จะติดตั้ง podman ให้โดยอัตโนมัติหากยังไม่มี แต่เราสามารถติดตั้งเองก่อนได้
    Bash
    sudo apt update
    sudo apt install -y cephadm chrony
  • cephadm: เครื่องมือหลักของเรา
  • chrony: สำหรับซิงโครไนซ์เวลาของทุก Node ให้ตรงกัน (สำคัญมาก!)
  1. ปิดการทำงาน Firewall (ชั่วคราว)
    เพื่อความง่ายในการติดตั้ง เราจะปิด ufw ไปก่อน ในระบบ Production ควรตั้งค่า rules ให้ถูกต้อง
    Bash
    sudo ufw disable

🚀 ขั้นตอนที่ 2: Bootstrap Ceph Cluster (ทำบน ceph-node1 เท่านั้น)

ขั้นตอนนี้คือการสร้าง “หัวใจ” ของ Cluster บน Node แรก

  1. สลับไปที่ user ceph-admin
    Bash
    sudo su – ceph-admin
  2. Bootstrap Cluster
    คำสั่งนี้จะบอก cephadm ให้เริ่มสร้าง Cluster โดยใช้ IP ของ ceph-node1 เป็น Monitor (MON) ตัวแรก
    Bash
    # สร้าง directory สำหรับ config
    mkdir -p /home/ceph-admin/ceph-cluster
    cd /home/ceph-admin/ceph-cluster

    # เริ่ม Bootstrap!
    cephadm bootstrap –mon-ip 192.168.1.101

    ขั้นตอนนี้จะใช้เวลาสักครู่ cephadm จะดึง Ceph container image และเริ่มรัน MON กับ Manager (MGR) ตัวแรกขึ้นมา
  3. ตรวจสอบผลลัพธ์
    เมื่อเสร็จสิ้น cephadm จะแสดงข้อความสำคัญ:
  • URL สำหรับเข้าหน้า Dashboard
  • Username (admin) และรหัสผ่านสำหรับ Dashboard
  • คำสั่งสำหรับเข้าใช้งาน Ceph command-line

สำคัญมาก: cephadm จะสร้างไฟล์ ceph.conf และ ceph.client.admin.keyring ไว้ที่ /etc/ceph/ และจะสร้าง cephadm-ansible-inventory.yaml ไว้ใน directory ที่คุณรันคำสั่ง

  1. เข้าใช้งาน Ceph Shell
    เพื่อให้ใช้คำสั่ง ceph ได้สะดวกที่สุด ให้ใช้ cephadm shell
    Bash
    sudo cephadm shell

    เมื่อเข้าไปใน shell แล้ว ลองรันคำสั่งตรวจสอบสถานะ:
    Bash
    ceph -s

    คุณควรจะเห็นสถานะเป็น HEALTH_WARN เพราะยังมี MON แค่ตัวเดียวและยังไม่มี OSD (Disk)

🌐 ขั้นตอนที่ 3: ขยาย Cluster (ทำบน ceph-node1 ใน cephadm shell)

ตอนนี้เราจะเพิ่ม Node ที่เหลือเข้ามาใน Cluster

  1. เพิ่ม Host
    cephadm จะใช้ SSH ที่เราตั้งค่าไว้เพื่อเข้าไปติดตั้ง Ceph services บน Node ใหม่
    Bash
    # รันคำสั่งใน cephadm shell
    ceph orch host add ceph-node2 192.168.1.102
    ceph orch host add ceph-node3 192.168.1.103
  2. ตรวจสอบสถานะ Host
    Bash
    ceph orch host ls
    # คุณควรจะเห็น Host ทั้ง 3 ตัวอยู่ในรายการ
  3. เพิ่ม MON และ MGR เพื่อทำ High Availability (HA)
    Bash
    # กำหนดให้มี MON ทั้งหมด 3 ตัว (กระจายไปตาม Node)
    ceph orch apply mon 3

    # กำหนดให้มี MGR ทั้งหมด 2 ตัว (Active/Standby)
    ceph orch apply mgr 2

    cephadm จะเลือก Node ที่เหมาะสมในการวาง services เหล่านี้ให้อัตโนมัติ รอสักครู่แล้วลอง ceph -s ดูอีกครั้ง จะเห็นว่าจำนวน mon และ mgr เพิ่มขึ้น

💾 ขั้นตอนที่ 4: เพิ่ม OSD (Disk สำหรับเก็บข้อมูล)

ขั้นตอนนี้คือการนำ Disk ที่ยังว่างอยู่มาใช้งาน

  1. ตรวจสอบ Disk ที่พร้อมใช้งาน
    Bash
    # ใน cephadm shell
    ceph orch device ls
    # คุณจะเห็นรายการ Disk ทั้งหมดใน Cluster และสถานะ (Available: true)
    # เช่น /dev/sdb, /dev/sdc
  2. สร้าง OSD จาก Disk ที่ว่างทั้งหมด
    คำเตือน: คำสั่งนี้จะล้างข้อมูลทั้งหมดใน Disk ที่มีสถานะ Available: true!
    Bash
    ceph orch apply osd –all-available-devices

    cephadm จะเข้าไปฟอร์แมตและสร้าง OSD บน Disk เหล่านั้นให้ รอสักครู่จนเสร็จ
  3. ตรวจสอบสถานะ Cluster
    รัน ceph -s อีกครั้ง ตอนนี้คุณควรจะเห็น:
  • osd: 3 osds: 3 up, 3 in (หรือมากกว่านี้ถ้ามี Disk หลายลูก)
  • สถานะ Cluster เปลี่ยนเป็น HEALTH_OK สีเขียว! 🎉
  • มีพื้นที่ (RAW CAPACITY) แสดงขึ้นมา

📄 ขั้นตอนที่ 5: สร้าง Ceph File System (CephFS)

เมื่อ Cluster พร้อมแล้ว เราก็มาสร้าง File System ที่จะนำไปใช้งานกัน

  1. สร้าง CephFS Volume
    คำสั่งนี้จะสร้างทุกอย่างที่จำเป็น (Data pool, Metadata pool, และ MDS service)
    Bash
    # ใน cephadm shell
    ceph fs volume create my-cephfs
  2. ตรวจสอบสถานะ
    cephadm จะสร้าง Metadata Server (MDS) ขึ้นมาโดยอัตโนมัติ
    Bash
    ceph -s
    # คุณจะเห็น section mds: my-cephfs: 1/1/1 up {0=ceph-nodeX=active}

ยินดีด้วยครับ! ตอนนี้คุณได้ติดตั้ง Ceph Cluster ที่สมบูรณ์และพร้อมใช้งานบน Ubuntu Server เรียบร้อยแล้ว ขั้นตอนต่อไปคือการนำ CephFS นี้ไป mount บนเครื่อง Client (Docker Host) เพื่อใช้งานเป็น Persistent Volume ซึ่งสามารถทำตามขั้นตอนในคำตอบก่อนหน้านี้ได้เลยครับ