Integrate Openstack With Ceph RGW

December 23, 2022 • Reading time: 3 minutes.


Pada catatan ini, saya akan membagikan cara untuk mengintegrasikan Openstack dengan Ceph Object Storage yaitu Ceph Rados Gateway.


Openstack sebenarnya memiliki layanan object storage-nya sendiri, yaitu Swift. Layanan ini menawarkan layanan penyimpanan cloud yang dapat menyimpan dan mengambil banyak data dengan menggunakan API sederhana.


Sedangkan Ceph Rados Gateway adalah antarmuka object storage menyediakan aplikasi dengan gateway RESTful API ke Ceph Storage Cluster.


Untuk versi yang digunakan adalah sebagai berikut :

  • Ubuntu 20.04
  • Openstack Xena version
  • Ceph Pacific Version

Diasumsikan bahwa sudah ada Openstack Cluster dan Ceph Cluster yang sudah berjalan normal dan setiap endpoint pada Openstack menggunakan HAProxy sebagai Load Balancer. Sehingga tahap yang dijelaskan oleh saya hanya proses untuk mengintegrasikan Openstack Swift dengan Ceph Rados Gateway.


Ceph rados gateway support API untuk swift, sehingga endpoint Openstack Swift bisa lansung diset ke API server dari Ceph rados gateway.


Requirement :

  • Ceph Cluster yang sudah berjalan normal
  • Openstack Cluster yang sudah berjalan normal dengan Minimal service + Swift service

Instalasi dan Konfigurasi Ceph Rados Gateway

Untuk implementasinya, pertama instalasi dan konfigurasi Ceph Rados Gateway terlebih dahulu.


  1. Instal paket radosgw pada node yang akan difungsikan sebagai ceph rados gateway. Pada skenario saya, node yang difungsikan sebagai ceph rados gateway adalah node controller pada Openstack Cluster.

    sudo apt install radosgw
    
  2. Edit file /etc/ceph/ceph.conf pada setiap node yang akan dijadikan ceph rgw dengan menambahkan konfigurasi untuk ceph rgw

     1
     2
     3
     4
     5
     6
     7
     8
     9
    10
    11
    12
    13
    14
    15
    16
    
    [client.rgw.<NAMA_NODE>] 
    host = <NAMA_NODE> 
    rgw frontends = "civetweb port=<IP_NODE>:8080" 
    rgw keystone api version = 3 
    rgw keystone url = <KEYSTONE_ENDPOINT_URL> 
    rgw keystone admin user = admin 
    rgw keystone admin password = <PASSWORD_ADMIN> 
    rgw keystone admin tenant = admin 
    rgw keystone accepted roles = admin 
    rgw keystone admin domain = default 
    rgw keystone token cache size = 500 
    rgw keystone revocation interval = 300 
    rgw keystone implicit tenants = true 
    rgw swift account in url = true 
    rgw s3 auth use keystone = true 
    . . .
    
  3. Membuat direktori /var/lib/ceph/radosgw/ceph-rgw.<NAMA_NODE>

    sudo mkdir -p /var/lib/ceph/radosgw/ceph-rgw.<NAMA_NODE>
    
  4. Membuat keyring ceph untuk ceph-rgw

    ceph auth get-or-create client.rgw.<NAMA_NODE> osd 'allow rwx' mon 'allow rw' -o /var/lib/ceph/radosgw/ceph-rgw.<NAMA_NODE>/keyring; 
    chown -R ceph. /var/lib/ceph/radosgw;
    
  5. Menjalankan service ceph-rgw

    systemctl enable --now ceph-radosgw@rgw.<NAMA_NODE>
    
  6. Kemudian, pastikan ceph-rgw tersebut sudah terdeteksi oleh Ceph cluster Ceph Status

    pada ceph status saya, terdeteksi 3 daemon yang nyala karena saya menginstall ceph-rgw pada tiga node controller.

  7. (Opsional) Jika ceph-rgw diinstall pada lebih dari satu node maka tambahkan konfigurasi pada Load Balancer (disini saya menggunakan HAProxy)

     1
     2
     3
     4
     5
     6
     7
     8
     9
    10
    
    . . . 
    listen cephrgw_api_cluster 
      bind <INTERNAL_VIRTUAL_IP>:8080 
      bind <PUBLIC_VIRTUAL_IP>:8080 
      balance source 
      option tcpka 
      option tcplog 
        server controller-1 <NODE_1>:8080 check inter 2000 rise 2 fall 5 
        server controller-2 <NODE_2>:8080 check inter 2000 rise 2 fall 5 
        server controller-3 <NODE_3>:8080 check inter 2000 rise 2 fall 5
    

Konfigurasi Openstack Endpoint

Setelah dilakukan instalasi dan konfigurasi Ceph Rados Gateway, selanjutnya konfigurasi Openstack dengan menambahkan endpoint untuk swift.


  1. Menambahkan endpoint untuk swift
    # Endpoint Public
    openstack endpoint create --region local \ 
    object-store public \ 
    'http://public.cluster.local:8080/swift/v1/AUTH_%(project_id)s' 
    
    # Endpoint Admin
    openstack endpoint create --region local \ 
    object-store admin \ 
    'http://admin.cluster.local:8080/swift/v1' 
    
    # Endpoint Internal
    openstack endpoint create --region local \
    object-store internal \
    'http://internal.cluster.local:8080/swift/v1/AUTH_%(project_id)s'
    

Setelah semua proses diatas dilakukan, maka pada Openstack horizon akan muncul tab Object Storage.

Horizon


Pengujian

  1. Pengujian membuat container(pada swift dikenal dengan istilah container, pada cloud provider lain dikenal dengan bucket) Container

  2. Pengujian upload file ke dalam container Upload-1 Upload-2

  3. Pengujian download dari container Download




Yah begitulah cara integrasi Openstack dengan Ceph Rados Gateway.

Selamat ngoprek!

comments powered by Disqus