[クラウドプラットフォーム](http://docs.ceph.org.cn/glossary/#term-48)に[Ceph Object Storage](http://docs.ceph.org.cn/glossary/#term-30)または[Ceph Block Device](http://docs.ceph.org.cn/glossary/#term-38)を提供する場合でも、[Ceph File System](http://docs.ceph.org.cn/glossary/#term-45)を展開する場合でも、Cephを彼として使用する場合でもすべての[Cephストレージクラスター](http://docs.ceph.org.cn/glossary/#term-21)の展開は、1つの[Cephノード](http://docs.ceph.org.cn/glossary/#term-13)、ネットワーク、およびCephストレージクラスターの展開から始まります。 Cephストレージクラスターには、少なくとも1つのCephMonitorと2つのOSDデーモンが必要です。 Cephファイルシステムクライアントを実行するときは、メタデータサーバー(メタデータサーバー)が必要です。
Cephは、クライアントデータをオブジェクトとしてストレージプールに保存します。 CRUSHアルゴリズムを使用することにより、Cephは、指定されたオブジェクト(Object)を保持する配置グループ(PG)を計算し、さらに配置グループを保持するOSDデーモンを計算できます。 CRUSHアルゴリズムにより、Cephストレージクラスターは動的にスケーリング、リバランス、および修復できます。
Cephは、システムの単一の中央ノードへの依存を排除して、中央ノードの結果がまったくないという設計アイデアを実現します。この設計アイデアは、他の分散ストレージシステムと比較することはできません。
Cephが非常に人気がある理由は、OpenStackと密接に関連しています。OpenStackは現在、より人気のあるオープンソースクラウド管理プラットフォームです。OpenStackとCephの統合は、オープンソースクラウドプラットフォームの標準構成になっています。
セフ中国の文書は、リンクを参照してください:
http://docs.ceph.org.cn/start/intro/
高可用性とは、システムの特定のコンポーネントに障害が発生した後でも、システムが通常のサービスを提供できる機能を指します。機器コンポーネントとデータの冗長性を使用して、信頼性を向上させることができます。 Cephクラスターでは、データの冗長性を2つの方法で提供できます。データの複数のコピーと消去コーディングです。
線形スケーラビリティとは、クラスターの拡張に対処するための柔軟性を指します。これは2つの側面を参照できます。
1、 クラスタのストレージ容量を拡張でき、ストレージノードとストレージデバイスを自由に追加または削除できることを意味します。
2、 システムのパフォーマンスは、クラスターの拡張に伴って直線的に増加することを意味します。
Cephは、オブジェクトストレージ、ブロックデバイスストレージ、およびファイルシステムストレージを提供できます。オブジェクトストレージはネットワークディスクアプリケーションサービスに接続でき、ブロックデバイスはIaaSクラウドプラットフォームソフトウェアに接続できます。 IaaSクラウドプラットフォームソフトウェアには、OpenStack、CloudStack、Zstackなどが含まれます。そのファイルシステムストレージは現在未成熟であり、実稼働環境での使用は公式には推奨されていません。
Cephは継続的な開発と急速な開発が行われています。 debianシリーズの9つのバージョンがリリースされました。それらは、ホタル、ジャイアント、ハンマー、インフェルナリス、ジュエリー、クラケン、発光、模倣、およびテストです。
ダウンロードサイトにアクセスします。
対応するバージョンに移動して、必要なソフトウェアパッケージをダウンロードできます。
この記事で使用されている宝石バージョンは、候補バージョンとも呼ばれます。
この記事で使用されている環境と特定のノード構成は次のとおりです。
オペレーティングシステム | ホスト名 | IPアドレス | 機能 |
---|---|---|---|
ubuntu-16.04.5-server-amd64 | jqb-node128 | 192.168.91.128 | MDS,MON,OSDS |
ubuntu-16.04.5-server-amd64 | jqb-node129 | 192.168.91.129 | MON,OSDS |
ubuntu-16.04.5-server-amd64 | jqb-node131 | 192.168.91.131 | MON,OSDS |
公式の要件により、少なくとも1つのCephMonitorと2つのOSDデーモンが必要です。
そのため、3台のサーバーを使用してcephクラスターをインストールしました。
mdsは1つしかないことに注意してください
**注:3つのUbuntuシステムでは、rootアカウントのログインを開始する必要があります。 ****
rootユーザーとして以下の操作を行います!
**これは非常に重要です。セフビルディングの成否を決定するのはここです。必ず注意してください。 ! ! ****
たくさんの穴を踏んだのですが、言いすぎると涙でした…!具体的な操作について話しましょう!
3台のサーバーにログインし、ホスト名を確認します
cat /etc/hostname
**出力が上記の表のホスト名でない場合は、必ず変更してください。 ****
**変更が完了したら、サーバーを再起動する必要があります。 ****
ここではプライベートDNSが使用されていないため、hostsファイルを直接使用して解決を強制します。
3つのサーバーのhostsファイルに次の3つのレコードがあることを確認してください
192.168.91.128 jqb-node128
192.168.91.129 jqb-node129
192.168.91.131 jqb-node131
デフォルトの更新ソースは遅すぎるため、AlibabaCloudの更新ソースに調整してください
deb http://mirrors.aliyun.com/ubuntu/ xenial main restricted
deb http://mirrors.aliyun.com/ubuntu/ xenial-updates main restricted
deb http://mirrors.aliyun.com/ubuntu/ xenial universe
deb http://mirrors.aliyun.com/ubuntu/ xenial-updates universe
deb http://mirrors.aliyun.com/ubuntu/ xenial multiverse
deb http://mirrors.aliyun.com/ubuntu/ xenial-updates multiverse
deb http://mirrors.aliyun.com/ubuntu/ xenial-backports main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu xenial-security main restricted
deb http://mirrors.aliyun.com/ubuntu xenial-security universe
deb http://mirrors.aliyun.com/ubuntu xenial-security multiverse
リリースキーを追加
wget -q -O-'https://download.ceph.com/keys/release.asc'| sudo apt-key add -
Cephパッケージソースを追加し、{ceph-stable-release}をCeph安定バージョン(カトルフィッシュ、餃子、皇帝、ホタルなど)に置き換えます。
deb http://download.ceph.com/debian-{ceph-stable-release}/$(lsb_release -sc) main
ceph-stable-release私は宝石バージョンを選びました
次に、ubuntuサーバーでコマンドを実行します
echo "deb http://download.ceph.com/debian-jewel/ $(lsb_release -sc) main"
結果を得ることができます:
deb http://download.ceph.com/debian-jewel/ xenial main
この情報を/etc/apt/sources.listに書き込むと、sources.listファイルの完全な内容は次のようになります。
deb http://mirrors.aliyun.com/ubuntu/ xenial main restricted
deb http://mirrors.aliyun.com/ubuntu/ xenial-updates main restricted
deb http://mirrors.aliyun.com/ubuntu/ xenial universe
deb http://mirrors.aliyun.com/ubuntu/ xenial-updates universe
deb http://mirrors.aliyun.com/ubuntu/ xenial multiverse
deb http://mirrors.aliyun.com/ubuntu/ xenial-updates multiverse
deb http://mirrors.aliyun.com/ubuntu/ xenial-backports main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu xenial-security main restricted
deb http://mirrors.aliyun.com/ubuntu xenial-security universe
deb http://mirrors.aliyun.com/ubuntu xenial-security multiverse
deb http://download.ceph.com/debian-jewel/ xenial main
3つのサーバーの/etc/apt/sources.listに一貫性があることを確認してください
システム更新ソースを更新します。3台のサーバーが次のコマンドを実行します
apt-get clean
apt-get update
3つのサーバーのタイムゾーンが同じであることを確認してください。タイムゾーンを強制的に上海に変更するには、次のコマンドを実行します。
ln -snf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
bash -c "echo 'Asia/Shanghai' > /etc/timezone"
ntpdateをインストールします
apt-get install -y ntpdate
アリババクラウドのタイムサーバーアップデートを使用する
ntpdate ntp1.aliyun.com
3 両方のサーバーで実行して、時間が一定であることを確認してください。
Cephは、radosgwを介してオブジェクトストレージ機能をサポートするRESTFul HTTP APIインターフェイスを提供します。Radosgwは、本質的にFastCGIサービスを提供するクライアントプログラムです。
apt-get install -y radosgw --allow-unauthenticated
HTTPSがミラーインストールをプルできるようにaptを構成します
apt-get install -y apt-transport-https --allow-unauthenticated
ceph関連のパッケージをインストールする
apt-get install -y ceph-base ceph-common ceph-fs-common ceph-fuse ceph-mds ceph-mon ceph-osd --allow-unauthenticated
上記は3つのサーバーすべてであり、すべて実行する必要があります。
次の操作はすべてjqb-node128で実行され、jqb-node128サーバーにログインします。
ceph-deployをインストールします
apt-get install -y ceph-deploy --allow-unauthenticated
httpsをhttpに変更
sed -i -e "28s/https/http/g"/usr/lib/python2.7/dist-packages/ceph_deploy/hosts/debian/install.py
秘密鍵を生成し、authorized_keysに書き込みます
ssh-keygen -t rsa -P ""-f ~/.ssh/id_rsa
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
ノード間のユーザー認証はsshを使用します。 SSHパスワードフリーログインを設定してください!
次の3つのコマンドを実行します
ssh-copy-id jqb-node128
ssh-copy-id jqb-node129
ssh-copy-id jqb-node131
リモートホスト〜/ .ssh / authorized_keysにファイルを書き込みます
ssh jqb-node128;exit;
ssh jqb-node129;exit;
ssh jqb-node131;exit;
上記の3つのコマンドを確認してください。パスワードは不要です
構成ファイルディレクトリを作成します
cd /opt
mkdir -p cephinstall
cd cephinstall
最初にいくつかの定数を定義します
MDS="jqb-node128"
MON="jqb-node128 jqb-node129 jqb-node131"
OSDS="jqb-node128 jqb-node129 jqb-node131"
INST="$OSDS $MON"
INSTは、インストールするノードを示します
ceph-deployコマンドを使用して、監視ノードを定義することにより、新しいクラスターを作成します。
ceph-deploy new $MON
実行後、現在のディレクトリにファイルceph.confが生成されます
構成ファイルceph.confを変更します
echo "osd pool default size =2
osd max object name len =256
osd max object namespace len =64
mon_pg_warn_max_per_osd =2000
mon clock drift allowed =30
mon clock drift warn backoff =30
rbd cache writethrough until flush =false" >> ceph.conf
すべてのノードにCephをインストールします
ceph-deploy install $INST
監視ノードを展開する
ceph-deploy mon create-initial
出力を注意深く観察し、エラーがないことを確認してください!
データの保存に使用される/ data / ceph / osdディレクトリは次のとおりです
for i in $OSDS;do
echo $i
ssh $i 'mkdir -p /data/ceph/osd'
ssh $i 'ln -snf /data/ceph/osd /var/lib/ceph/osd'
ceph-deploy osd prepare $i:/data/ceph/osd
# success indicator: Host xxx is now ready for osd use
done
for i in $OSDS;do
echo $i
ssh $i 'chown -R ceph:ceph /var/lib/ceph/'
ssh $i 'chown -R ceph:ceph /data/ceph/'
ceph-deploy osd activate $i:/data/ceph/osd
# fix problem "socket /com/ubuntu/upstart: Connection refused"
ssh $i 'dpkg-divert --local --rename --add /sbin/initctl'
ssh $i 'ln -snf /bin/true /sbin/initctl'
ssh $i 'rm -f /etc/apt/sources.list.d/ceph.list'
ssh $i 'modprobe ceph'
done
ceph-deploy admin $MDS
ノード情報を表示する
ssh $MDS "ceph osd tree"
確認キーを表示
ssh $MDS "ceph auth get-key client.admin | base64"
ssh $MDS "mkdir -p /var/lib/ceph/mds/ceph-$MDS"
ssh $MDS "chown -R ceph:ceph /var/lib/ceph"
通常、プールを作成する前に、デフォルトの pg_num
をオーバーライドする必要があります。公式の推奨事項は次のとおりです。
ssh $MDS ceph osd pool create fs_db_data 512 ssh $MDS ceph osd pool create fs_db_metadata 512
プールを見る
ceph osd lspools
ssh $MDS ceph fs newcephfs fs_db_metadata fs_db_data
Cephfsを見る
ssh $MDS ceph fs ls
ceph-deploy --overwrite-conf mds create $MDS
# 取り付けに必要な検証キー
MOUNTKEY=`ssh $MDS "ceph auth get-key client.admin"`
# ノードIP
MONIP=`ssh $MDS cat /etc/ceph/ceph.conf |grep mon_host|cut -d "=" -f2|sed 's?,?:6789,?g'`
# マウントディレクトリ
mkdir /mycephfs
# 取り付けを開始します
mount -t ceph $MONIP:6789://mycephfs -o name=admin,secret=$MOUNTKEY
マウントを確認してください
root@jqb-node128:~/cephinstall# df -hT
Filesystem Type Size Used Avail Use% Mounted on
udev devtmpfs 971M 0 971M 0%/dev
tmpfs tmpfs 199M 5.8M 193M 3%/run
/dev/sda1 ext4 19G 7.5G 11G 43% /
tmpfs tmpfs 992M 0 992M 0%/dev/shm
tmpfs tmpfs 5.0M 05.0M 0%/run/lock
tmpfs tmpfs 992M 0 992M 0%/sys/fs/cgroup
tmpfs tmpfs 199M 0 199M 0%/run/user/0192.168.91.128:6789,192.168.91.129:6789,192.168.91.131:6789:/ ceph 56G 26G 31G 46%/mycephfs
注:mountコマンドは非常に長く、すべてのノードのIP番号とポート番号が必要です。
cephにファイルを追加する必要がある場合。 / mycephfsディレクトリに入り、linuxのようにファイルを操作するだけで、完了です。
# /bin/bash
# 前提条件の環境
# システムはubuntuである必要があります-16.04.5-server-amd64、少なくとも3つのノード
# 各ホストのホスト名が次の変数設定と一致していることを確認してください
# ホストがドメイン名で相互にアクセスできることを確認します
# 各ホストでルートログインが有効になっていることを確認します
# このスクリプトを実行するには、必ずrootユーザーを使用してください
# リンクを参照してください:https://www.cnblogs.com/xiao987334176/articles/9909039.html
set-e
## mdsとadminは1つしかないことに注意してください。MDSの値を設定してください
################################################################
MDS="jqb-node128"
MON="jqb-node128 jqb-node129 jqb-node131"
OSDS="jqb-node128 jqb-node129 jqb-node131"
INST="$OSDS $MON"
################################################################
echo "ubuntu更新ソースを設定する">>/opt/ceph_install.log
# ubuntu更新ソースを設定する
echo "deb http://mirrors.aliyun.com/ubuntu/ xenial main restricted
deb http://mirrors.aliyun.com/ubuntu/ xenial-updates main restricted
deb http://mirrors.aliyun.com/ubuntu/ xenial universe
deb http://mirrors.aliyun.com/ubuntu/ xenial-updates universe
deb http://mirrors.aliyun.com/ubuntu/ xenial multiverse
deb http://mirrors.aliyun.com/ubuntu/ xenial-updates multiverse
deb http://mirrors.aliyun.com/ubuntu/ xenial-backports main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu xenial-security main restricted
deb http://mirrors.aliyun.com/ubuntu xenial-security universe
deb http://mirrors.aliyun.com/ubuntu xenial-security multiverse
deb http://download.ceph.com/debian-jewel/ xenial main" >/etc/apt/sources.list
echo "タイムゾーンを設定し、ソフトウェアをインストールします">>/opt/ceph_install.log
# タイムゾーンを設定し、ソフトウェアをインストールします
ln -snf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
bash -c "echo 'Asia/Shanghai' > /etc/timezone"
apt-get clean
apt-get update
apt-get install -y ceph-deploy --allow-unauthenticated
sed -i -e "28s/https/http/g"/usr/lib/python2.7/dist-packages/ceph_deploy/hosts/debian/install.py
echo "sshキーを生成する">>/opt/ceph_install.log
# sshキーを生成する
if[!-f ~/.ssh/id_rsa ];then
ssh-keygen -t rsa -P ""-f ~/.ssh/id_rsa
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
fi
echo "SSHパスワードなしのログイン">>/opt/ceph_install.log
# SSHパスワードなしのログイン
for i in $INST;do
echo $i
ssh-copy-id $i
done
echo "リモートノード環境の設定とソフトウェアのインストール">>/opt/ceph_install.log
# リモートノード環境の設定とソフトウェアのインストール
for i in $INST;do
# ソースを更新
ssh $i "echo 'deb http://mirrors.aliyun.com/ubuntu/ xenial main restricted
deb http://mirrors.aliyun.com/ubuntu/ xenial-updates main restricted
deb http://mirrors.aliyun.com/ubuntu/ xenial universe
deb http://mirrors.aliyun.com/ubuntu/ xenial-updates universe
deb http://mirrors.aliyun.com/ubuntu/ xenial multiverse
deb http://mirrors.aliyun.com/ubuntu/ xenial-updates multiverse
deb http://mirrors.aliyun.com/ubuntu/ xenial-backports main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu xenial-security main restricted
deb http://mirrors.aliyun.com/ubuntu xenial-security universe
deb http://mirrors.aliyun.com/ubuntu xenial-security multiverse
deb http://download.ceph.com/debian-jewel/ xenial main' >/etc/apt/sources.list"
# タイムゾーン設定
ssh $i ln -snf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
ssh $i "echo 'Asia/Shanghai' > /etc/timezone"
ssh $i apt-get update
ssh $i apt-get install -y ntpdate
ssh $i /etc/init.d/ntp stop
ssh $i ntpdate ntp1.aliyun.com #更新時間
# ceph関連のソフトウェアのインストール
ssh $i apt-get install -y apt-transport-https --allow-unauthenticated
ssh $i apt-get install -y radosgw --allow-unauthenticated
ssh $i apt-get install -y "ceph-base ceph-common ceph-fs-common ceph-fuse ceph-mds ceph-mon ceph-osd"--allow-unauthenticated
done
echo "管理ディレクトリを作成する">>/opt/ceph_install.log
# 管理ディレクトリを作成する
mkdir -p /opt/cephinstall
cd /opt/cephinstall
echo "過剰定義された監視ノード,新しいクラスターを作成する">>/opt/ceph_install.log
# 過剰定義された監視ノード,新しいクラスターを作成する
ceph-deploy new $MON
echo "構成ファイルを変更する">>/opt/ceph_install.log
# 構成ファイルを変更する
echo "osd pool default size =2
osd max object name len =256
osd max object namespace len =64
mon_pg_warn_max_per_osd =2000
mon clock drift allowed =30
mon clock drift warn backoff =30
rbd cache writethrough until flush =false" >> ceph.conf
echo "すべてのノードにCephをインストールします">>/opt/ceph_install.log
# すべてのノードにCephをインストールします
ceph-deploy install $INST
echo "監視ノードを展開する">>/opt/ceph_install.log
# 監視ノードを展開する
ceph-deploy mon create-initial
echo "クラスターにOSDを追加する">>/opt/ceph_install.log
# クラスターにOSDを追加する
# ここに/data/ceph/osdディレクトリ,データの保存に使用
for i in $OSDS;do
echo $i
ssh $i 'mkdir -p /data/ceph/osd'
ssh $i 'ln -snf /data/ceph/osd /var/lib/ceph/osd'
ceph-deploy osd prepare $i:/data/ceph/osd
# success indicator: Host xxx is now ready for osd use
done
echo "OSDノードをアクティブ化する">>/opt/ceph_install.log
# OSDノードをアクティブ化する
for i in $OSDS;do
echo $i
ssh $i 'chown -R ceph:ceph /var/lib/ceph/'
ssh $i 'chown -R ceph:ceph /data/ceph/'
ceph-deploy osd activate $i:/data/ceph/osd
# fix problem "socket /com/ubuntu/upstart: Connection refused"
ssh $i 'dpkg-divert --local --rename --add /sbin/initctl'
ssh $i 'ln -snf /bin/true /sbin/initctl'
ssh $i 'rm -f /etc/apt/sources.list.d/ceph.list'
ssh $i 'modprobe ceph'
done
echo "関連するすべてのノードに管理キーをデプロイします">>/opt/ceph_install.log
# 関連するすべてのノードに管理キーをデプロイします
ceph-deploy admin $MDS
# ノード情報を表示する
ssh $MDS "ceph osd tree"
echo "確認キーを表示">>/opt/ceph_install.log
# 確認キーを表示
ssh $MDS "ceph auth get-key client.admin | base64"
ssh $MDS "mkdir -p /var/lib/ceph/mds/ceph-$MDS"
ssh $MDS "chown -R ceph:ceph /var/lib/ceph"
echo "POOLを作成する">>/opt/ceph_install.log
# POOLを作成する
ssh $MDS ceph osd pool create fs_db_data 512
ssh $MDS ceph osd pool create fs_db_metadata 512
# プールを見る
ssh $MDS ceph osd lspools
echo "Cephfsを作成する">>/opt/ceph_install.log
# Cephfsを作成する
ssh $MDS ceph fs newcephfs fs_db_metadata fs_db_data
# プールを見る
ssh $MDS ceph fs ls
echo "MDSを展開する">>/opt/ceph_install.log
# MDSを展開する
ceph-deploy --overwrite-conf mds create $MDS
echo "取り付けに必要な検証キー">>/opt/ceph_install.log
# 取り付けに必要な検証キー
MOUNTKEY=`ssh $MDS "ceph auth get-key client.admin"`
# ノードIP
MONIP=`ssh $MDS cat /etc/ceph/ceph.conf |grep mon_host|cut -d "=" -f2|sed 's?,?:6789,?g'`
# マウントディレクトリ
mkdir /mycephfs
echo "取り付けを開始します">>/opt/ceph_install.log
# 取り付けを開始します
mount -t ceph $MONIP:6789://mycephfs -o name=admin,secret=$MOUNTKEY
# ディスクマウントを表示
df -hT
echo "マウント完了">>/opt/ceph_install.log
注:実行する前に、フロント環境がに準拠しているかどうかを注意深く確認してください
実行後、ログファイル/opt/ceph_install.logの出力を確認します。
ubuntu更新ソースを設定する
タイムゾーンを設定し、ソフトウェアをインストールします
sshキーを生成する
SSHパスワードなしのログイン
リモートノード環境の設定とソフトウェアのインストール
ubuntu更新ソースを設定する
タイムゾーンを設定し、ソフトウェアをインストールします
sshキーを生成する
SSHパスワードなしのログイン
リモートノード環境の設定とソフトウェアのインストール
管理ディレクトリを作成する
過剰定義された監視ノード,新しいクラスターを作成する
構成ファイルを変更する
すべてのノードにCephをインストールします
監視ノードを展開する
クラスターにOSDを追加する
OSDノードをアクティブ化する
関連するすべてのノードに管理キーをデプロイします
確認キーを表示
POOLを作成する
Cephfsを作成する
MDSを展開する
取り付けに必要な検証キー
取り付けを開始します
マウント完了
興味のある方は、以下の記事をご覧ください!
Ubuntu 16.04にCephストレージクラスターをインストールする方法:
https://linux.cn/article-8182-1.html
Cephの基本的な知識とインフラストラクチャの理解:
https://www.cnblogs.com/luohaixian/p/8087591.html
歴史上最も包括的なCephの紹介、原則、およびアーキテクチャ:
https://blog.csdn.net/uxiAD7442KMy1X86DtM3/article/details/81059215
Recommended Posts