LoginSignup
16
11

More than 3 years have passed since last update.

Raspberry Piで始めるCeph入門

Last updated at Posted at 2019-12-08

全国1億3千万人のCephファンのみなさんこんばんは

FUJITSU アドベントカレンダー 8日目の記事です

逸般的誤家庭から一般的ご家庭にCephを普及すべく、k8sを始めようと思って机の隅っこでホコリを被っているであろうRaspberry Piを活用して、RasPi Cephクラスタを始めようというのが、今回のテーマです

RasPiやCephについては、周知でしょうからここでは技術的な紹介は省いて、構築をささっといきたいと思います。

前置き

今回構築するのは、
Cephクラスタ(3ノード)とRados Gateway(S3/Swift互換)(以下RGW)の構築です。
先に言っておくと、RGWをRasPiで動かそうとするとエラー吐いて落ちるので、こいつだけx86の上で動いています。
また、Cephクラスタには、ノードに1OSD/DISKが必要となりますが、これをUSBメモリで代用します。

今回の機材

Cephクラスタ:RasPi3 3台
OSD用DISK代わりのUSBメモリ:3本
RGW:LIVAの小型PC
   過去にこの記事で使ったやつ

ソフトウェア

OS

RasPi: Raspbian(201909)
RGW : debian10
RaspbianのベースであるDebian10を使います。

Ceph

Raspbian/debianに付属する Ceph(Luminous)

構成図

1.jpg

cephで定番のPublicネットワーク構成を取らずにフラット構成としています
RasPiに限らず、すべてVMで作る場合もフラット構成は有用です。

参考(Publicネットワークを使う場合)
2.jpg

Cephクラスタのセットアップ

Raspbian/Debianは特に気にせずセットアップして起動します。
Cephのセットアップは、本家公式のLuminousを参照します

Cephのセットアップマニュアル

公式との差異

はじめにCephのリポジトリをセットする部分は省略します。
また台数の都合で、admin-nodeが用意できなかったので、node1で代用します。

セットアップマニュアルのここから始める
3. Update your repository and install ceph-deploy:

追加

apt-get install lvm2

あとは、マニュアル通りにセットアップを進めていきます。

CREATE A CLUSTER
2.If you have more than one network interface, add the public network setting under the [global] section of your Ceph configuration file. See the Network Configuration Reference for details. の部分では、フラットであれば、そのネットワークアドレスを書いておけば問題ありません。
他の機材が同じサブネットにいても、Cephクラスタには影響ありません。

RGWノードのセットアップもここで合わせて行っておきます。
具体的には、node1,2,3と同様にノード名:rgwにもsshのキーを配り、名前解決できるようにしておきます。

RGWの構築

マニュアルの指定だと、node1に同居していることになっているため、
事前に、admin-node(今回だとnode1)で、RGWの名前が解決できるようになっていれば問題ありません

ceph-deploy rgw create rgw

OSDの用意

OSDを作成追加します

ceph-deploy osd create --data /dev/sda1 node1

これだけで作成できます
OSDは、LVM上にBluestoreタイプで作成されます。

ただし、lvm関係でRaspiだと死ぬっぽく、失敗したら、pvremove/lvremoveなどを駆使して失敗して綺麗にして、再度実行すれば成功します。(初回は必ず死ぬかもしれない)

s3ユーザを作る

rgwのadminガイドのこのあたりを見ながら、ユーザを作成する。
実行は、node1の上で問題ない

sudo radosgw-admin user create --uid="testuser" --display-name="First User"

実行例

pi@node1:~ $ sudo radosgw-admin user info --uid=testuser
{
    "user_id": "testuser",
    "display_name": "First User",
    "email": "",
    "suspended": 0,
    "max_buckets": 1000,
    "auid": 0,
    "subusers": [],
    "keys": [
        {
            "user": "testuser",
            "access_key": "xxx",
            "secret_key": "xxx"
        }
    ],
    "swift_keys": [],
    "caps": [],
    "op_mask": "read, write, delete",
    "default_placement": "",
    "placement_tags": [],
    "bucket_quota": {
        "enabled": false,
        "check_on_raw": false,
        "max_size": -1,
        "max_size_kb": 0,
        "max_objects": -1
    },
    "user_quota": {
        "enabled": false,
        "check_on_raw": false,
        "max_size": -1,
        "max_size_kb": 0,
        "max_objects": -1
    },
    "temp_url_keys": [],
    "type": "rgw"
}

access_key/secret_keyを使って、あとは遊びましょう
USBメモリのアクセスランプが綺麗に光ってアクセスはよく見えます。

終わりに

できあがったクラスタの状態

pi@node1:~ $ sudo ceph -s
  cluster:
    id:     1ae87c09-6e16-483b-9c5c-5d173df32e79
    health: HEALTH_WARN
            41/1135 objects unfound (3.612%)

  services:
    mon: 3 daemons, quorum node1,node2,node3
    mgr: node1(active), standbys: node2, node3
    osd: 3 osds: 3 up, 3 in

  data:
    pools:   8 pools, 184 pgs
    objects: 1.14k objects, 3.00GiB
    usage:   12.0GiB used, 32.2GiB / 44.3GiB avail
    pgs:     123/3405 objects degraded (3.612%)
             41/1135 objects unfound (3.612%)
             183 active+clean
             1   active+recovery_wait

pi@node1:~ $ sudo ceph osd tree
ID CLASS WEIGHT  TYPE NAME      STATUS REWEIGHT PRI-AFF
-1       3.00000 root default
-3       1.00000     host node1
 0   hdd 1.00000         osd.0      up  1.00000 1.00000
-5       1.00000     host node2
 1   hdd 1.00000         osd.1      up  1.00000 1.00000
-7       1.00000     host node3
 2   hdd 1.00000         osd.2      up  1.00000 1.00000

ceph ダッシュボード
3.jpg

あとは、 cephを使い倒して、upstreamコントリビューションすれば完璧です。

おわり

16
11
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
16
11