Install & Konfigurasi Ceph Cluster Octopus di Ubuntu 20.04

Ceph sederhananya adalah aplikasi yang digunakan untuk membuat sebuah storage cluster. Lalu  apa itu Storage Cluster?
Storage cluster adalah kumpulan node/computer/server yang terintegrasi dalam satu manajemen untuk menyediakan layanan media penyimpanan yang terdistribusi

Pada artikel kali ini kita akan membahas cara install & konfigurasi ceph cluster octopus di ubuntu 20.04

 

Ada 3 jenis layanan yang disediakan oleh ceph yaitu:

-Object based Storage

-Block based Storage

-File System

 

Pada artikel ini kita akan menggunakan Ceph File System (CFS). Secara konsep Ceph File System memiliki konsep yang mirip dengan Network File System (NFS). Dimana file yang terintegrasi akan di share oleh server, dan di mount oleh client. CFS juga menggunakan FUSE dan juga memiliki algoritma khusus bernama CRUSH.

Step 1 (Skema & Preparation)

Disini kita akan menggunakan skema ceph seperti berikut ini

admin-00 : Ceph Mon, MGR, MDS: 192.168.100.10

node-00: OSD: 192.168.100.20, SDB: 10GB

node-01: OSD: 192.168.100.21, SDB: 10GB

node-02: OSD: 192.168.100.22, SDB: 10GB

Dimana admin-00 berfungsi sebagai Monitor dan node-00 s/d node-02 berfungsi sebagai Object Storage Device(OSD). Dimasing masing OSD memiliki disk tambahan pada drive SDB sebesar 10GB. Disini kita juga akan menggunakan environment Virtualbox saja dulu. Dimana masing masing Node memiliki RAM 1GB, kecuali Monitor sebesar 2GB.

– Preparation

Edit file /etc/hosts

nano /etc/hosts

edit menjadi seperti dibawah ini

# BEGIN ANSIBLE MANAGED BLOCK
127.0.0.1 localhost
192.168.100.10 admin-00
192.168.100.20 node-00
192.168.100.21 node-01
192.168.100.22 node-02

 

SSH ke admin-00, lakukan update & upgrade serta install base package
apt-get update && apt-get upgrade -y && apt-get install software-properties-common git curl vim bash-completion ansible
Update path
echo "PATH=\$PATH:/usr/local/bin" >>~/.bashrc source ~/.bashrc

Step 2 (Generate SSH Key & transfer key)

– Generate SSH Keys

ssh-keygen -t rsa -b 4096 -N '' -f ~/.ssh/id_rsa

– Copy SSH Keys ke all nodes

ssh-copy-id root@admin-00
ssh-copy-id root@node-00
ssh-copy-id root@node-01
ssh-copy-id root@node-02

 

Step 3 (Prepare script Ansible for provisioning)

Disini kita akan menggunakan ansible untuk memudahkan provisioning node nya ya. Bagi yang belum pernah menggunakan ini sangat mudah kok. Yang penting ikuti langkah-langkah berikut precisely oke ^__^

-Enter Directory

cd ~/

nano prep.yml

 

Isikan seperti berikut

# Begin prepare ceph nodes.yml
---
- name: Prepare ceph nodes
  hosts: ceph_nodes
  become: yes
  become_method: sudo
  vars:
    ceph_admin_user: cephadmin
  tasks:
    - name: Set timezone
      timezone:
        name: Asia/Jakarta


    - name: Install common packages
      apt:
        name: [vim,git,bash-completion,wget,curl,chrony]
        state: present
        update_cache: yes

    - name: Set authorized key taken from file to root user
      authorized_key:
        user: root
        state: present
        key: "{{ lookup('file', '~/.ssh/id_rsa.pub') }}"

    - name: Install Docker
      shell: |
        curl -fsSL <a rel="nofollow" target="_blank" href="https://download.docker.com/linux/ubuntu/gpg">https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
        echo "deb [arch=amd64] <a rel="nofollow" target="_blank" href="https://download.docker.com/linux/ubuntu">https://download.docker.com/linux/ubuntu focal stable" > /etc/apt/sources.list.d/docker-ce.list
        apt update
        apt install -qq -y docker-ce docker-ce-cli <a rel="nofollow" target="_blank" href="http://containerd.io/">containerd.io

    - name: Reboot server after update and configs
      reboot:

# End prep.yaml
Saya jelaskan sedikit, script diatas digunakan untuk menginstall beberapa kebutuhan aplikasi dasar dari semua node yang kita gunakan. Karena ceph berjalan diatas docker, maka kita perlu menginstall docker diatas server.  Lalu kita menset timezone untuk menyamakan waktu antar node, jika diperlukan gunakanlah NTP.
-create update-hosts script
nano update-hosts.yml
Isikan seperti berikut
# Start update-hosts.yml
---
- name: Prepare ceph nodes
  hosts: ceph_nodes
  become: yes
  become_method: sudo
  tasks:
    - name: Clean /etc/hosts file
      copy:
        content: ""
        dest: /etc/hosts

    - name: Update /etc/hosts file
      blockinfile:
        path: /etc/hosts
        block: |
           127.0.0.1    localhost
           192.168.0.10 admin-00
           192.168.0.11 node-00
           192.168.0.15 node-01
           192.168.0.14 node-02
# End update-hosts.yml
– Create Inventory Files
vim hosts
# Begin hosts node
[ceph_nodes]
admin-00
node-00
node-01
node-02
# End hosts node

Script diatas digunakan untuk mendaftarkan host mana saja yang akan di kenali

-Jalankan playbook prep.yml pada admin-00

ansible-playbook -i hosts prep.yml --user root

– Jalankan Update Hosts pada admin-00

ansible-playbook -i hosts update-hosts.yml --user root

Step 4

– Download cephadm

curl --silent --remote-name --location https://github.com/ceph/ceph/raw/octopus/src/cephadm/cephadm
-Kasih akses execute

chmod +x cephadm

– Duplicate ke local bin

cp cephadm /usr/local/bin

– Install cephadm

cephadm install

– Tambahkan repo

cephadm add-repo --release octopus

-install ceph-common

cephadm install ceph-common

Step 5

– Bootstraping new cluster

Proses bootstraping adalah proses untuk inisiasi node monitor pada ceph. Jalankan perintah berikut

mkdir -p /etc/ceph

cephadm bootstrap --mon-ip 192.168.100.10

akan muncul info akses admin dan passwordnya

 

Step 6 (Add another Monitor, OPTIONAL)
– Copy Ceph SSH key 

ssh-copy-id -f -i /etc/ceph/ceph.pub root@admin-01

 

Step 7

-Add nodes to the cluster 

ceph orch host add admin-00

-Apply configs 

ceph orch apply mon admin-00

– Labeling the nodes with mon 

ceph orch host label add admin-00 mon

-Verify

ceph orch host ls

-check docker

docker ps -a

Jika docker sudah ada dan berjalan, berarti proses berhasil dilakukan

 

Step 8 (Deploy OSD)

ssh-copy-id -f -i /etc/ceph/ceph.pub root@node-00
ssh-copy-id -f -i /etc/ceph/ceph.pub root@node-01 
ssh-copy-id -f -i /etc/ceph/ceph.pub root@node-02

-Add host cluster

ceph orch host add node-00

ceph orch host add node-01

ceph orch host add node-02

– Give Labels

ceph orch host label add node-00 osd

ceph orch host label add node-01 osd

ceph orch host label add node-02 osd

-Add daemon osd

ceph orch daemon add osd node-00:/dev/sdb

ceph orch daemon add osd node-01:/dev/sdb

ceph orch daemon add osd node-02:/dev/sdb

-Check device

ceph orch device ls

-Check status

ceph -s

 

Step 9

-create pool and mds

ceph osd pool create cephfs_data

ceph osd pool create cephfs_metadata

-create fs

ceph fs new cephfs cephfs_metadata cephfs_data

-check stat

ceph mds stat

-apply mds to node

ceph orch apply mds cephfs --placement="3 node-00 node-01 node-02"

-check fs ls

ceph fs ls

-check fs status

ceph fs status cephfs

 

Step 10 Preparing client nodes

– Transfer public key

ssh-copy-id root@client-ceph

-Install fuse and ceph common

ssh client-ceph "apt-get install ceph-common && ceph-fuse -y"

-transfer required file to client host

scp /etc/ceph/ceph.conf client-ceph:/etc/ceph/

scp /etc/ceph/ceph.client.admin.keyring client-ceph:/etc/ceph/

ssh client-ceph "chown ceph. /etc/ceph/ceph.*"

 

Step 11 Mount

Lakukan mount dari client ke mounting point ceph yang telah berhasil dibuat seperti berikut ini

ceph-authtool -p /etc/ceph/ceph.client.admin.keyring > admin.key
chmod 600 admin.key 
mount -t ceph node-02:/ /mnt -o name=admin,secretfile=admin.key

 

 

Kesimpulan

Penggunaan Storage cluster bisa dikategorikan cukup rumit untuk inisiasinya, masih banyak hal yang dapat kita explor diluar topik ini. Namun, yang terpenting adalah fundamental atau dasar dari logic Storage Cluster itu sendiri yang harus kita pahami

rangga try

Linux Enthusiast | Devops Engineer | System Engineer | Content Creator. Give me your vibes

5 1 vote
Article Rating
Subscribe
Notify of
guest
0 Comments
Inline Feedbacks
View all comments
0
Would love your thoughts, please comment.x
()
x
x Logo: Shield Security
This Site Is Protected By
Shield Security