1. 程式人生 > >ceph rgw lifecycle( 物件儲存 物件生命週期)

ceph rgw lifecycle( 物件儲存 物件生命週期)

1、簡介

1.1 介紹

    對於 儲存 來說,容量 當然是 越大越好了,最好 可以 無限 寫入(哈哈,哪有 那麼 好的 事);但是 我們 可以 刪除 老舊 無用的資料,不過 總不能 時時刻刻 的手動 刪除 資料吧;我們 可以 根據 一定的規則 刪除 老舊的資料,此時 就可以 設定 物件 生命週期規則,制定 資料 刪除 規則,對於 客戶來說,叢集 好像 就可以 無限量 寫入了(哈哈哈,所以 後端 才是 真實的,但是 刪除 資料 有風險,謹慎操作哦!!!)
    

1.2 前提 條件

    你要 設定 物件 生命 週期,說明 你的 叢集 已經 在 正常 使用了,物件 閘道器 服務 正常 對外 提供服務
    

2、服務端 配置

    不管 進行 什麼 配置,你都需要 對你的 服務程序 進行 相關 的配置吧,ceph 物件閘道器 生命週期 也是一樣的道理,需要 對 提供 物件 閘道器 服務的
    
    

## 配置 設定
# vim /etc/ceph/ceph.conf
    ...
    ## 執行的時間段
    rgw_lifecycle_work_time = "00:00-24:00"

    ## 時間 間隔
    rgw_lc_debug_interval = "10" 
    ...

## 重啟 物件閘道器 服務
# systemctl restart ceph-radosgw.target

    
    

3、s3 browser 設定 生命週期(Windows 客戶端)

    通過 s3 browser 客戶端 軟體(這個 暫時 不想 詳細描述,後期 編寫 文章 單獨 介紹)
ceph rgw lifecycle( 物件儲存 物件生命週期)
    

4、設定 生命週期(Linux 客戶端)

4.1 安裝 boto3

    安裝 boto3,也可以 安裝 boto;(但是本文 的 後續 指令碼 是 根據 boto3 編寫的,boto 需要的 自己 寫寫嘍,差別不大,或者 聯絡我哦,免費 幫助!!!)
    

# pip install boto3

    

4.3 配置 指令碼(python)

# cat rgw_lifecycle_set.py
#!/usr/bin/env python2.7
#-*- coding: utf-8 -*.

import boto3
from botocore.client import Config
import datetime

## 根據 物件 閘道器 使用者 資訊 
aws_access_key_id = 'XXX'
aws_secret_access_key = 'XXX'

## 需要 設定 規則 的 bucket
bucket_name = 'XXX'

# aws2
s3 = boto3.client('s3', region_name=None,
                  use_ssl=False,
                  ## url 根據 實際 情況 配置
                  endpoint_url='{http://ceph.com}',
                  aws_access_key_id=aws_access_key_id,
                  aws_secret_access_key=aws_secret_access_key,
                  config=Config(s3={'addressing_style': 'path'}))

print s3.put_bucket_lifecycle( 
    Bucket=bucket_name, 
    LifecycleConfiguration={
        'Rules': [
            {
                'Status': 'Enabled', 
                'Prefix': '/', 
                'Expiration': 
                    {
                        'Days': 1
                    }, 
                'ID': '79m9n5aucsjb1nqi1687nzcbelqdkli3qwbtgzsm7n4nkfv6'
            }
        ], 
    }
)
print s3.get_bucket_lifecycle(Bucket=bucket_name)