まず、Centos7でCephストレージクラスターを構築してみてください

目次

1、 Cephの紹介

Cephは、[Object Storage](https://cloud.tencent.com/product/cos?from=10680)、ブロックデバイス、ファイルシステムなどのオープンソースの分散ストレージシステムです。信頼性が高く、インストールが簡単で、管理が簡単で、大量のデータを簡単に管理できます。 Cephストレージクラスターは、エンタープライズレベルのストレージの機能を備えており、多数のノードを編成し、ノードが相互に通信してデータを複製し、データを動的に再配布して、高可用性の分散ストレージ機能を実現します。 7年間の開発を経て、Cephはますます完璧になり、より多くの参加者を魅了してきており、今後さらに人気が高まると思います。

2、 環境とソフトウェアの準備

このデモンストレーション環境では、仮想マシンLinux Centos7で操作しており、ストレージクラスターは仮想マシンを介して構築されています。インストールされているソフトウェアとバージョンは次のとおりです。

  1. Centos:release 7.4.1708 (Core)
  2. Ceph:jewel-10.2.10
  3. Openssh-server:version 7.4
  4. NTP

注:この記事では、Cephストレージクラスターを構築するプロセスのみを取り上げます。Cephのアーキテクチャや各コンポーネントの詳細については詳しく説明しません。詳細については、[公式システム構造](http://docs.ceph.org.cn/architecture/)を参照してください。 [Ceph公式ドキュメント](http://docs.ceph.org.cn/start/quick-start-preflight/)では、Cephの基本機能を調べるために、ceph-deploy管理ノードと3ノードのCephストレージクラスターをインストールすることを推奨しています。構造図は次のとおりです。

ただし、これはマシンのメモリ制限によって制限され、仮想マシンをあまり開くことができないため、ここではmon.node1ノードが1つ少なくなり、ノードの監視機能をadminノードノードに移行したため、クラスター構造図は次のようになります。

Ceph分散ストレージクラスターは、Ceph Monitor、Ceph OSD、Ceph MDSの3つの主要コンポーネントで構成されています。後でオブジェクトストレージとブロックストレージを使用する場合、MDSをインストールする必要はなく、Cephfs [ファイルストレージ](https://cloud.tencent.com/product/cfs?from=10680)を使用する場合に限ります。インストールする必要があります。ここでは、今のところMDSをインストールしません。

3、 セフプリフライト

3.1 ノードホストの構成

後のインストールを容易にし、sshで各ノードを接続するために、最初に各ノードのホスト名を変更し、次のようにホストを構成します。

admin-node(10.222.77.213)

$ cat /etc/hostname 
admin

$ cat /etc/hosts
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1   localhost localhost.localdomain localhost6 localhost6.localdomain6
10.222.77.213 admin
10.222.77.242 node0
10.222.77.253 node1

-----------------------------
node0(10.222.77.242) 
$ cat /etc/hostname 
admin

$ cat /etc/hosts
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1   localhost localhost.localdomain localhost6 localhost6.localdomain6
10.222.77.242 node0
10.222.77.213 admin
10.222.77.253 node1

-----------------------------
node1(10.222.77.253) 
$ cat /etc/hostname 
admin

$ cat /etc/hosts
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1   localhost localhost.localdomain localhost6 localhost6.localdomain6
10.222.77.253 node1
10.222.77.213 admin
10.222.77.242 node0

**3.2 デプロイメントツールceph-deploy **をインストールします

Cephは、Cephクラスターのインストールを容易にする展開ツールceph-deployを提供します。これは、adminノードノードに対応するceph-deployノードにインストールするだけで済みます。 Cephリポジトリをceph-deploy管理ノードに追加してから、ceph-deployをインストールします。システムはCentos7バージョンであるため、構成は次のとおりです。

# ceph-deploy(admin-node)実行時

# Yumは他の依存パッケージを構成します
$ sudo yum install -y yum-utils && sudo yum-config-manager --add-repo https://dl.fedoraproject.org/pub/epel/7/x86_64/&& sudo yum install --nogpgcheck -y epel-release && sudo rpm --import/etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-7&& sudo rm /etc/yum.repos.d/dl.fedoraproject.org*

# Cephソースを追加
$ sudo vim /etc/yum.repos.d/ceph.repo
[ Ceph-noarch]
name=Ceph noarch packages
baseurl=http://download.ceph.com/rpm-jewel/el7/noarch
enabled=1
gpgcheck=1
type=rpm-md
gpgkey=https://download.ceph.com/keys/release.asc
priority=1

# cephをインストールします-deploy
$ sudo yum update && sudo yum install ceph-deploy

3.3 NTPとOpensshをインストールします

公式の推奨事項は、クロックドリフトによる誤動作を回避するために、すべてのCephノード(特にCeph Monitorノード)にNTPサービスをインストールすることです。

# yum install ntp
sudo yum install ntp ntpdate ntp-doc

# システムクロックの校正
ntpdate 0.cn.pool.ntp.org

以降の操作では、ceph-deployノードはsshを使用して各ノードにログインし、cephのインストールと構成の作業を完了する必要があるため、各ノードでSSHサービスが使用可能であることを確認してください。

# yum install openssh
$ sudo yum install openssh-server

# sshバージョンを表示
$ ssh -V
OpenSSH_7.4p1, OpenSSL 1.0.2k-fips  26 Jan 2017

3.4 Cephデプロイメントユーザーを作成する

ceph-deployツールは、通常のユーザーとしてCephノードにログインする必要があります。このユーザーは、パスワードを入力せずにソフトウェアと構成ファイルをインストールする必要があるため、パスワードなしでsudoを使用する権利があります。公式の推奨事項は、すべてのCephノードでceph-deploy用の特定のユーザーを作成し、「ceph」という名前を使用しないことです。ここでは便宜上、アカウント cephdを特定のユーザーとして使用し、各ノード(admin-node、node0、node1)はアカウントを作成し、sudo権限を持っている必要があります。

# Cephクラスターの各ノードで次の操作を実行します

# ceph固有のユーザーを作成する
$ sudo useradd -d /home/cephd -m cephd
$ sudo passwd cephd

# sudo権限を追加します
$ echo "cephd ALL = (root) NOPASSWD:ALL"| sudo tee /etc/sudoers.d/cephd
$ sudo chmod 0440/etc/sudoers.d/cephd

次に、ceph-deployノード(admin-node)で、cephdユーザーに切り替え、SSHキーを生成し、その公開キーを各Cephノードに配布し、cephdアカウントを使用して生成するように注意し、パスワードの入力を求められたら、Enterキーを押します。 、各ノードへのパスワードなしのログインが必要なため。

# ceph-deploy(admin-node)実行時

# sshキーを生成する
$ ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key(/home/cephd/.ssh/id_rsa): 
Created directory '/home/cephd/.ssh'.
Enter passphrase(empty for no passphrase): 
Enter same passphrase again: 
Your identification has been saved in/home/cephd/.ssh/id_rsa.
Your public key has been saved in/home/cephd/.ssh/id_rsa.pub.
The key fingerprint is:...

# 公開鍵をnode0にコピーします
$ ssh-copy-id cephd@node0
/bin/ssh-copy-id: INFO: Source ofkey(s) to be installed:"/home/cephd/.ssh/id_rsa.pub"
The authenticity of host 'node0 (10.222.77.242)' can't be established.
ECDSA key fingerprint is MD5:3c:e0:a7:a0:e6:3c:dc:c0:df:28:dc:87:16:2d:0f:c6.
Are you sure you want to continueconnecting(yes/no)? yes
/bin/ssh-copy-id: INFO: attempting to log inwith the newkey(s), to filter out any that are already installed
/bin/ssh-copy-id: INFO:1key(s) remain to be installed --if you are prompted now it is to install the newkeys
cephd@node0's password: 

Number ofkey(s) added:1

Now try logging into the machine,with:"ssh 'cephd@node0'"
and check to make sure that only the key(s) you wanted were added.

# 公開鍵をnode1にコピーします
$ ssh-copy-id cephd@node1
/bin/ssh-copy-id: INFO: Source ofkey(s) to be installed:"/home/cephd/.ssh/id_rsa.pub"
The authenticity of host 'node1 (10.222.77.253)' can't be established.
ECDSA key fingerprint is MD5:3c:e0:a7:a0:e6:3c:dc:c0:df:28:dc:87:16:2d:0f:c6.
Are you sure you want to continueconnecting(yes/no)? yes
/bin/ssh-copy-id: INFO: attempting to log inwith the newkey(s), to filter out any that are already installed
/bin/ssh-copy-id: INFO:1key(s) remain to be installed --if you are prompted now it is to install the newkeys
cephd@node1's password: 

Number ofkey(s) added:1

Now try logging into the machine,with:"ssh 'cephd@node1'"
and check to make sure that only the key(s) you wanted were added.

コピー後、ceph-deploy管理ノードの各ノードへのパスワードなしのログインをテストします。

$ ssh node0
Last login: Fri Dec  815:50:082017from admin

$ ssh node1
Last login: Fri Dec  815:49:272017from admin

テストに問題はありません。次に、ceph-deploy管理ノードの*〜/ .ssh / config *ファイルを変更して、ceph-deployを実行するたびに–usernamecephdを指定する必要がないようにします。これにより、sshとscpの使用も簡素化されます。

$ cat ~/.ssh/config
Host node0
 Hostname node0
 User cephd
Host node1
 Hostname node1
 User cephd

この時点で ssh node0を実行すると、 Badownerまたはpermissionson / home / cephd / .ssh / configのエラーが表示されることに注意してください。その理由は、設定ファイルの権限の問題です。これは、権限 sudo chmod 600configを変更することで解決できます。

3.5 その他のネットワーク構成

公式Webサイトのドキュメントでは、CephのさまざまなOSDプロセスがネットワークを介して相互接続され、そのステータスがモニターに報告されることが指定されているため、ネットワークがオンになっていることを確認してください。ただし、一部のディストリビューション(CentOSなど)はデフォルトでネットワークインターフェイスを閉じます。したがって、クラスター内の各ノードシステムのネットワークインターフェイスが開いていることを確認する必要があります。

# Cephクラスターの各ノードで次の操作を実行します

$ sudo cat /etc/sysconfig/network-scripts/ifcfg-enp0s3 
TYPE="Ethernet"
BOOTPROTO="dhcp"
DEFROUTE="yes"
PEERDNS="yes"
PEERROUTES="yes"
IPV4_FAILURE_FATAL="no"
IPV6INIT="yes"
IPV6_AUTOCONF="yes"
IPV6_DEFROUTE="yes"
IPV6_PEERDNS="yes"
IPV6_PEERROUTES="yes"
IPV6_FAILURE_FATAL="no"
IPV6_ADDR_GEN_MODE="stable-privacy"
NAME="enp0s3"
UUID="3e68d5a3-f9a6-4c83-9969-706f7e3b0bc2"
DEVICE="enp0s3"
ONBOOT="yes"  #ここでyesに設定します

注:インストールした仮想マシンクラスターのネットワークカードはenp0s3であるため、 / etc / sysconfig / network-scripts / ifcfg-enp0s3ファイルを変更する必要があります。システムネットワークカード名に従って対応する構成ファイルを変更してください。

SELINUX設定。CentOSシステムでは、SELinuxはデフォルトで強制として有効になっています。インストールを容易にするために、SELinuxを許容または無効に設定することをお勧めします。

# Cephクラスターの各ノードで次の操作を実行します

# 一時的に有効な設定
$ sudo setenforce 0

# 永続的に効果的な設定
$ sudo cat /etc/selinux/config
SELINUX=disabled  #ここで許容として設定| disabled
SELINUXTYPE=targeted 

必要なポート設定を開きます。CephMonitorsはデフォルトでポート6789を通信に使用し、OSDはデフォルトで6800:7300の範囲のポート通信を使用します。したがって、ファイアウォール設定を調整し、必要なポートを開き、対応する受信要求を許可する必要があります。

# ファイアウォール設定
$ sudo firewall-cmd --zone=public--add-port=6789/tcp --permanent

# もちろん、ファイアウォールをオフにすることもできます
$ sudo systemctl stop firewalld.service  #ファイアウォールを停止します
$ sudo systemctl disable firewalld.service  #ファイアウォールの起動を禁止する

4、 Cephストレージクラスターの構築

さて、上記の一連の事前チェック設定の後、Cephストレージクラスターの構築を開始できます。クラスター構造は、admin-node(ceph-deploy、Monitor)、node0(osd.0)、node1(osd.1)です。 。最初に言及することは、インストールプロセス中に問題が発生し、再操作する必要がある場合、たとえば、構築したクラスターをクリーンアップする場合は、次のコマンドを使用できることです。

# ceph-deploy(admin-node)実行時

# 構成のクリーンアップ
ceph-deploy purgedata admin node0 node1
ceph-deploy forgetkeys

# Cephインストールパッケージをクリーンアップします
ceph-deploy purge admin node0 node1

さて、今から構築を始めましょう。まず、Cephdユーザーはディレクトリceph-clusterを作成し、ディレクトリに入って一連の操作を実行します。設計したモニターノードは管理ノードノード上にあるため、次のコマンドを実行します。

# 実行ディレクトリを作成します
$ mkdir ~/ceph-cluster && cd ~/ceph-cluster

# クラスターを作成する
$ ceph-deploy newadmin[ceph_deploy.conf][DEBUG ] found configuration file at:/home/cephd/.cephdeploy.conf
[ ceph_deploy.cli][INFO  ]Invoked(1.5.39):/bin/ceph-deploy newadmin[ceph_deploy.cli][INFO  ] ceph-deploy options:[ceph_deploy.cli][INFO  ]  username                      : None
[ ceph_deploy.cli][INFO  ]  func                          :<functionnewat0xf24938>[ceph_deploy.cli][INFO  ]  verbose                       : False
[ ceph_deploy.cli][INFO  ]  overwrite_conf                : False
[ ceph_deploy.cli][INFO  ]  quiet                         : False
[ ceph_deploy.cli][INFO  ]  cd_conf                       :<ceph_deploy.conf.cephdeploy.Conf instance at 0xf1f6c8>[ceph_deploy.cli][INFO  ]  cluster                       : ceph
[ ceph_deploy.cli][INFO  ]  ssh_copykey                   : True
[ ceph_deploy.cli][INFO  ]  mon                           :['admin'][ceph_deploy.cli][INFO  ]  public_network                : None
[ ceph_deploy.cli][INFO  ]  ceph_conf                     : None
[ ceph_deploy.cli][INFO  ]  cluster_network               : None
[ ceph_deploy.cli][INFO  ]  default_release               : False
[ ceph_deploy.cli][INFO  ]  fsid                          : None
[ ceph_deploy.new][DEBUG ] Creating newcluster named ceph
[ ceph_deploy.new][INFO  ] making sure passwordless SSH succeeds
...[ ceph_deploy.new][DEBUG ] Resolving host admin
[ ceph_deploy.new][DEBUG ] Monitor admin at 10.222.77.213[ceph_deploy.new][DEBUG ] Monitor initial members are ['admin'][ceph_deploy.new][DEBUG ] Monitor addrs are ['10.222.77.213'][ceph_deploy.new][DEBUG ] Creating a random mon key...[ceph_deploy.new][DEBUG ] Writing monitor keyring to ceph.mon.keyring...[ceph_deploy.new][DEBUG ] Writing initial config to ceph.conf...

この時点で、ceph-deployがceph-clusterディレクトリにいくつかのファイルを生成することがわかります。* ceph.conf はceph構成ファイル、 ceph-deploy-ceph.log はceph-deployログファイル、 cephです。 mon.keyring *は、セフモニターのキーリングです。

$ ll ceph-cluster
- rw-rw-r--.1 cephd cephd 19612 714:46 ceph.conf
- rw-rw-r--.1 cephdcephd369412月714:46 ceph-deploy-ceph.log
- rw-------.1 cephd cephd 73 Dec 714:46 ceph.mon.keyring

$ cat ceph.conf 
[ global]
fsid = 363c3cf4-dba4-4f13-8ec5-ed93416f4e26
mon_initial_members = admin
mon_host =10.222.77.213
auth_cluster_required = cephx
auth_service_required = cephx
auth_client_required = cephx

次に、2つのosdノードがあるため、* ceph.conf *構成ファイルを変更してコピー数を2に増やす必要があります。

$ cat ceph.conf 
[ global]
fsid = 363c3cf4-dba4-4f13-8ec5-ed93416f4e26
mon_initial_members = admin
mon_host =10.222.77.213
auth_cluster_required = cephx
auth_service_required = cephx
auth_client_required = cephx
osd pool default size =2  #デフォルトのコピー数を2に増やします

次に、ceph-deployを使用して各ノードにcephをインストールする必要があります。

$ ceph-deploy install admin node0 node1
[ ceph_deploy.conf][DEBUG ] found configuration file at:/home/cephd/.cephdeploy.conf
[ ceph_deploy.cli][INFO  ]Invoked(1.5.39):/bin/ceph-deploy install admin node0 node1
[ ceph_deploy.cli][INFO  ] ceph-deploy options:[ceph_deploy.cli][INFO  ]  verbose                       : False
[ ceph_deploy.cli][INFO  ]  testing                       : None
[ ceph_deploy.cli][INFO  ]  cd_conf                       :<ceph_deploy.conf.cephdeploy.Conf instance at 0xde1c68>[ceph_deploy.cli][INFO  ]  cluster                       : ceph
[ ceph_deploy.cli][INFO  ]  dev_commit                    : None
[ ceph_deploy.cli][INFO  ]  install_mds                   : False
[ ceph_deploy.cli][INFO  ]  stable                        : None
[ ceph_deploy.cli][INFO  ]  default_release               : False
[ ceph_deploy.cli][INFO  ]  username                      : None
[ ceph_deploy.cli][INFO  ]  adjust_repos                  : True
[ ceph_deploy.cli][INFO  ]  func                          :<function install at 0xd5b140>[ceph_deploy.cli][INFO  ]  install_mgr                   : False
[ ceph_deploy.cli][INFO  ]  install_all                   : False
[ ceph_deploy.cli][INFO  ]  repo                          : False
[ ceph_deploy.cli][INFO  ]  host                          :['admin','node0','node1'][ceph_deploy.cli][INFO  ]  install_rgw                   : False
[ ceph_deploy.cli][INFO  ]  install_tests                 : False
[ ceph_deploy.cli][INFO  ]  repo_url                      : None
[ ceph_deploy.cli][INFO  ]  ceph_conf                     : None
[ ceph_deploy.cli][INFO  ]  install_osd                   : False
[ ceph_deploy.cli][INFO  ]  version_kind                  : stable
[ ceph_deploy.cli][INFO  ]  install_common                : False
[ ceph_deploy.cli][INFO  ]  overwrite_conf                : False
[ ceph_deploy.cli][INFO  ]  quiet                         : False
[ ceph_deploy.cli][INFO  ]  dev                           : master
[ ceph_deploy.cli][INFO  ]  nogpgcheck                    : False
[ ceph_deploy.cli][INFO  ]  local_mirror                  : None
[ ceph_deploy.cli][INFO  ]  release                       : None
[ ceph_deploy.cli][INFO  ]  install_mon                   : False
[ ceph_deploy.cli][INFO  ]  gpg_url                       : None
[ ceph_deploy.install][DEBUG ] Installing stable version jewel on cluster ceph hosts admin node0 node1
[ ceph_deploy.install][DEBUG ] Detecting platform for host admin ......

ceph-deployはSSHで各ノードにログインし、cephが依存するコンポーネントパッケージを順番にインストールするため、このプロセスはしばらく待つ必要があります。

インストールが完了するまで長い間待った後、次のステップはモニターノードを初期化してすべてのキーを収集することです。

$ ceph-deploy mon create-initial
...
ceph_deploy.mon][ERROR ] RuntimeError: config file /etc/ceph/ceph.conf exists with different content; use --overwrite-conf to overwrite
[ ceph_deploy][ERROR ] GenericError: Failed to create 1 monitors
...

残念ながら、実行中にエラーが報告されました。その理由は、* / etc / ceph / ceph.conf *構成ファイルがすでに存在しているためです。解決策は、 --overwrite-confパラメーターを追加して、既存の構成を上書きすることです。

$ ceph-deploy --overwrite-conf mon create-initial
[ ceph_deploy.conf][DEBUG ] found configuration file at:/home/cephd/.cephdeploy.conf
[ ceph_deploy.cli][INFO  ]Invoked(1.5.39):/bin/ceph-deploy --overwrite-conf mon create-initial
[ ceph_deploy.cli][INFO  ] ceph-deploy options:[ceph_deploy.cli][INFO  ]  username                      : None
[ ceph_deploy.cli][INFO  ]  verbose                       : False
[ ceph_deploy.cli][INFO  ]  overwrite_conf                : True
[ ceph_deploy.cli][INFO  ]  subcommand                    : create-initial
[ ceph_deploy.cli][INFO  ]  quiet                         : False
[ ceph_deploy.cli][INFO  ]  cd_conf                       :<ceph_deploy.conf.cephdeploy.Conf instance at 0x1d9e758>[ceph_deploy.cli][INFO  ]  cluster                       : ceph
[ ceph_deploy.cli][INFO  ]  func                          :<function mon at 0x1d8ea28>[ceph_deploy.cli][INFO  ]  ceph_conf                     : None
[ ceph_deploy.cli][INFO  ]  default_release               : False
[ ceph_deploy.cli][INFO  ]  keyrings                      : None
[ ceph_deploy.mon][DEBUG ] Deploying mon, cluster ceph hosts admin
[ ceph_deploy.mon][DEBUG ] detecting platform for host admin ......[admin][INFO  ] Running command: sudo /usr/bin/ceph --connect-timeout=25--cluster=ceph --admin-daemon=/var/run/ceph/ceph-mon.admin.asok mon_status
[ admin][INFO  ] Running command: sudo /usr/bin/ceph --connect-timeout=25--cluster=ceph --name mon.--keyring=/var/lib/ceph/mon/ceph-admin/keyring auth get client.admin
[ admin][INFO  ] Running command: sudo /usr/bin/ceph --connect-timeout=25--cluster=ceph --name mon.--keyring=/var/lib/ceph/mon/ceph-admin/keyring auth get client.bootstrap-mds
[ admin][INFO  ] Running command: sudo /usr/bin/ceph --connect-timeout=25--cluster=ceph --name mon.--keyring=/var/lib/ceph/mon/ceph-admin/keyring auth get client.bootstrap-mgr
[ admin][INFO  ] Running command: sudo /usr/bin/ceph --connect-timeout=25--cluster=ceph --name mon.--keyring=/var/lib/ceph/mon/ceph-admin/keyring auth get-or-create client.bootstrap-mgr mon allow profile bootstrap-mgr
[ admin][INFO  ] Running command: sudo /usr/bin/ceph --connect-timeout=25--cluster=ceph --name mon.--keyring=/var/lib/ceph/mon/ceph-admin/keyring auth get client.bootstrap-osd
[ admin][INFO  ] Running command: sudo /usr/bin/ceph --connect-timeout=25--cluster=ceph --name mon.--keyring=/var/lib/ceph/mon/ceph-admin/keyring auth get client.bootstrap-rgw
[ ceph_deploy.gatherkeys][INFO  ] Storing ceph.client.admin.keyring
[ ceph_deploy.gatherkeys][INFO  ] Storing ceph.bootstrap-mds.keyring
[ ceph_deploy.gatherkeys][INFO  ] Storing ceph.bootstrap-mgr.keyring
[ ceph_deploy.gatherkeys][INFO  ] keyring 'ceph.mon.keyring' already exists
[ ceph_deploy.gatherkeys][INFO  ] Storing ceph.bootstrap-osd.keyring
[ ceph_deploy.gatherkeys][INFO  ] Storing ceph.bootstrap-rgw.keyring
[ ceph_deploy.gatherkeys][INFO  ] Destroy temp directory /tmp/tmpLv4mug

実行が完了すると、一連のキーリングが現在のディレクトリに生成されます。これは、コンポーネント間のアクセスに必要な認証情報である必要があります。

$ ll ~/ceph-cluster
- rw-------.1セフドセフド11312715:13 ceph.bootstrap-mds.keyring
- rw-------.1 cephd cephd 71 12 715:13 ceph.bootstrap-mgr.keyring
- rw-------.1セフドセフド11312715:13 ceph.bootstrap-osd.keyring
- rw-------.1セフドセフド11312715:13 ceph.bootstrap-rgw.keyring
- rw-------.1 cephd cephd 12912 715:13 ceph.client.admin.keyring
- rw-rw-r--.1 cephd cephd 22212 714:47 ceph.conf
- rw-rw-r--.1セフドセフド12020712715:13 ceph-deploy-ceph.log
- rw-------.1 cephd cephd 73 Dec 714:46 ceph.mon.keyring

この時点で、cephモニターは正常に開始されています。次に、OSDを作成する必要があります。OSDは最終データが保存される場所です。ここでは、osd.0とosd.1の2つのOSDノードを用意しました。公式の推奨事項は、OSDとそのログのストレージスペースとして別のハードディスクまたはパーティションを使用することです。ただし、ローカル仮想マシンに条件はありませんが、OSDのストレージスペースとして仮想マシンのローカルディスクにディレクトリを作成できます。

# ceph-deploy(admin-node)実行時

$ ssh node0
$ sudo mkdir /var/local/osd0
$ sudo chown -R ceph:ceph /var/local/osd0
$ exit

$ ssh node1
$ sudo mkdir /var/local/osd1
$ sudo chown -R ceph:ceph /var/local/osd1
$ exit

注:ここでは、 chown -R ceph:ceph操作が実行され、osd0およびosd1ディレクトリのアクセス許可がceph:cephに割り当てられます。そうしないと、次にceph-deploy osd activate ...を実行するとアクセス許可エラーが報告されます。

次に、「prepare」OSD操作を実行するためにceph-deployノードが必要です。目的は、各OSDノードでOSDをアクティブ化するために必要な情報を作成することです。

$ ceph-deploy --overwrite-conf osd prepare node0:/var/local/osd0 node1:/var/local/osd1
[ ceph_deploy.conf][DEBUG ] found configuration file at:/home/cephd/.cephdeploy.conf
[ ceph_deploy.cli][INFO  ]Invoked(1.5.39):/bin/ceph-deploy --overwrite-conf osd prepare node0:/var/local/osd0 node1:/var/local/osd1
[ ceph_deploy.cli][INFO  ] ceph-deploy options:[ceph_deploy.cli][INFO  ]  username                      : None
[ ceph_deploy.cli][INFO  ]  block_db                      : None
[ ceph_deploy.cli][INFO  ]  disk                          :[('node0','/var/local/osd0', None),('node1','/var/local/osd1', None)][ceph_deploy.cli][INFO  ]  dmcrypt                       : False
[ ceph_deploy.cli][INFO  ]  verbose                       : False
[ ceph_deploy.cli][INFO  ]  bluestore                     : None
[ ceph_deploy.cli][INFO  ]  block_wal                     : None
[ ceph_deploy.cli][INFO  ]  overwrite_conf                : True
[ ceph_deploy.cli][INFO  ]  subcommand                    : prepare
[ ceph_deploy.cli][INFO  ]  dmcrypt_key_dir               :/etc/ceph/dmcrypt-keys
[ ceph_deploy.cli][INFO  ]  quiet                         : False
[ ceph_deploy.cli][INFO  ]  cd_conf                       :<ceph_deploy.conf.cephdeploy.Conf instance at 0x117d950>[ceph_deploy.cli][INFO  ]  cluster                       : ceph
[ ceph_deploy.cli][INFO  ]  fs_type                       : xfs
[ ceph_deploy.cli][INFO  ]  filestore                     : None
[ ceph_deploy.cli][INFO  ]  func                          :<function osd at 0x116a320>[ceph_deploy.cli][INFO  ]  ceph_conf                     : None
[ ceph_deploy.cli][INFO  ]  default_release               : False
[ ceph_deploy.cli][INFO  ]  zap_disk                      : False
[ ceph_deploy.osd][DEBUG ] Preparing cluster ceph disks node0:/var/local/osd0: node1:/var/local/osd1:[node0][DEBUG ] connection detected need for sudo
[ node0][DEBUG ] connected to host: node0 
[ node0][DEBUG ] detect platform information from remote host
[ node0][DEBUG ] detect machine type
[ node0][DEBUG ] find the location of an executable
[ ceph_deploy.osd][INFO  ] Distro info: CentOS Linux 7.3.1611 Core
[ ceph_deploy.osd][DEBUG ] Deploying osd to node0
...[ node0][INFO  ] checking OSD status...[node0][DEBUG ] find the location of an executable
[ node0][INFO  ] Running command: sudo /bin/ceph --cluster=ceph osd stat --format=json
[ ceph_deploy.osd][DEBUG ] Host node0 is now ready for osd use.[node1][DEBUG ] connection detected need for sudo
[ node1][DEBUG ] connected to host: node1 
[ node1][DEBUG ] detect platform information from remote host
[ node1][DEBUG ] detect machine type
[ node1][DEBUG ] find the location of an executable
[ ceph_deploy.osd][INFO  ] Distro info: CentOS Linux 7.3.1611 Core
[ ceph_deploy.osd][DEBUG ] Deploying osd to node1
...[ node1][INFO  ] checking OSD status...[node1][DEBUG ] find the location of an executable
[ node1][INFO  ] Running command: sudo /bin/ceph --cluster=ceph osd stat --format=json
[ ceph_deploy.osd][DEBUG ] Host node1 is now ready for osd use.

OK次に、 activateOSDをアクティブ化する必要があります。

$ ceph-deploy osd activate node0:/var/local/osd0 node1:/var/local/osd1
[ ceph_deploy.conf][DEBUG ] found configuration file at:/home/cephd/.cephdeploy.conf
[ ceph_deploy.cli][INFO  ]Invoked(1.5.39):/bin/ceph-deploy osd activate node0:/var/local/osd0 node1:/var/local/osd1
[ ceph_deploy.cli][INFO  ] ceph-deploy options:[ceph_deploy.cli][INFO  ]  username                      : None
[ ceph_deploy.cli][INFO  ]  verbose                       : False
[ ceph_deploy.cli][INFO  ]  overwrite_conf                : False
[ ceph_deploy.cli][INFO  ]  subcommand                    : activate
[ ceph_deploy.cli][INFO  ]  quiet                         : False
[ ceph_deploy.cli][INFO  ]  cd_conf                       :<ceph_deploy.conf.cephdeploy.Conf instance at 0x2045950>[ceph_deploy.cli][INFO  ]  cluster                       : ceph
[ ceph_deploy.cli][INFO  ]  func                          :<function osd at 0x2032320>[ceph_deploy.cli][INFO  ]  ceph_conf                     : None
[ ceph_deploy.cli][INFO  ]  default_release               : False
[ ceph_deploy.cli][INFO  ]  disk                          :[('node0','/var/local/osd0', None),('node1','/var/local/osd1', None)][ceph_deploy.osd][DEBUG ] Activating cluster ceph disks node0:/var/local/osd0: node1:/var/local/osd1:[node0][DEBUG ] connection detected need for sudo
[ node0][DEBUG ] connected to host: node0 
[ node0][DEBUG ] detect platform information from remote host
[ node0][DEBUG ] detect machine type
[ node0][DEBUG ] find the location of an executable
[ ceph_deploy.osd][INFO  ] Distro info: CentOS Linux 7.3.1611 Core
[ ceph_deploy.osd][DEBUG ] activating host node0 disk /var/local/osd0
[ ceph_deploy.osd][DEBUG ] will use init type: systemd
...[ node0][INFO  ] checking OSD status...[node0][DEBUG ] find the location of an executable
[ node0][INFO  ] Running command: sudo /bin/ceph --cluster=ceph osd stat --format=json
[ node0][INFO  ] Running command: sudo systemctl enable ceph.target
[ node1][DEBUG ] connection detected need for sudo
[ node1][DEBUG ] connected to host: node1 
[ node1][DEBUG ] detect platform information from remote host
[ node1][DEBUG ] detect machine type
[ node1][DEBUG ] find the location of an executable
[ ceph_deploy.osd][INFO  ] Distro info: CentOS Linux 7.3.1611 Core
[ ceph_deploy.osd][DEBUG ] activating host node1 disk /var/local/osd1
[ ceph_deploy.osd][DEBUG ] will use init type: systemd
...[ node1][INFO  ] checking OSD status...[node1][DEBUG ] find the location of an executable
[ node1][INFO  ] Running command: sudo /bin/ceph --cluster=ceph osd stat --format=json
[ node1][INFO  ] Running command: sudo systemctl enable ceph.target

ログを見ると、アクティベーションに問題はありません。最後のステップは、「ceph-deploy admin」を使用して構成ファイルと管理キーを各ノードに同期することです。これにより、各ノードでcephコマンドを使用するときに、モニターアドレスと「ceph.client」を指定する必要がなくなります。 admin.keyring`キー。

$ ceph-deploy admin admin node0 node1
[ ceph_deploy.conf][DEBUG ] found configuration file at:/home/cephd/.cephdeploy.conf
[ ceph_deploy.cli][INFO  ]Invoked(1.5.39):/bin/ceph-deploy admin admin node0 node1
[ ceph_deploy.cli][INFO  ] ceph-deploy options:[ceph_deploy.cli][INFO  ]  username                      : None
[ ceph_deploy.cli][INFO  ]  verbose                       : False
[ ceph_deploy.cli][INFO  ]  overwrite_conf                : False
[ ceph_deploy.cli][INFO  ]  quiet                         : False
[ ceph_deploy.cli][INFO  ]  cd_conf                       :<ceph_deploy.conf.cephdeploy.Conf instance at 0x15a93b0>[ceph_deploy.cli][INFO  ]  cluster                       : ceph
[ ceph_deploy.cli][INFO  ]  client                        :['admin','node0','node1'][ceph_deploy.cli][INFO  ]  func                          :<function admin at 0x1500cf8>[ceph_deploy.cli][INFO  ]  ceph_conf                     : None
[ ceph_deploy.cli][INFO  ]  default_release               : False
[ ceph_deploy.admin][DEBUG ] Pushing admin keys and conf to admin
[ admin][DEBUG ] connection detected need for sudo
[ admin][DEBUG ] connected to host: admin 
[ admin][DEBUG ] detect platform information from remote host
[ admin][DEBUG ] detect machine type
[ admin][DEBUG ] write cluster configuration to /etc/ceph/{cluster}.conf
[ ceph_deploy.admin][DEBUG ] Pushing admin keys and conf to node0
[ node0][DEBUG ] connection detected need for sudo
[ node0][DEBUG ] connected to host: node0 
[ node0][DEBUG ] detect platform information from remote host
[ node0][DEBUG ] detect machine type
[ node0][DEBUG ] write cluster configuration to /etc/ceph/{cluster}.conf
[ ceph_deploy.admin][DEBUG ] Pushing admin keys and conf to node1
[ node1][DEBUG ] connection detected need for sudo
[ node1][DEBUG ] connected to host: node1 
[ node1][DEBUG ] detect platform information from remote host
[ node1][DEBUG ] detect machine type
[ node1][DEBUG ] write cluster configuration to /etc/ceph/{cluster}.conf

同時に、 ceph.client.admin.keyringの正しい操作権限を確保するために、権限設定を増やす必要があります。

$ sudo chmod +r /etc/ceph/ceph.client.admin.keyring

この時点で、Cephストレージクラスターがセットアップされました。クラスターが正常に開始されたかどうかを確認できます。

# クラスターステータスの表示
$ ceph -s
cluster 363c3cf4-dba4-4f13-8ec5-ed93416f4e26
  health HEALTH_OK
  monmap e1:1 mons at {admin=10.222.77.213:6789/0}
   election epoch 6, quorum 0 admin
  osdmap e15:2 osds:2 up,2in
   flags sortbitwise,require_jewel_osds
  pgmap v9276:64 pgs,1 pools,863 MB data,226 objects
   33440 MB used,33574 MB /67015 MB avail
     64 active+clean

# またはクラスターの状態を表示する
$ ceph health
HEALTH_OK

# クラスタOSD情報を表示する
$ ceph osd tree
ID WEIGHT  TYPE NAME      UP/DOWN REWEIGHT PRIMARY-AFFINITY 
- 10.06400 root default-20.03200     host node0                                   
 00.03200   osd.0       up  1.000001.00000-30.03200     host node1                                   
 10.03200   osd.1       up  1.000001.00000

公式ドキュメントのCephのインストールとクラスター構築の手順を参照することで、ストレージクラスター全体が段階的に構築されます。ドキュメントは非常に詳細で使いやすいです。今回はこれを最初に記録します。次の記事では、Cephストレージシステムのオブジェクトストレージ、ブロックデバイス、およびファイルシステムについて引き続き調査します。

参考資料

Recommended Posts

まず、Centos7でCephストレージクラスターを構築してみてください
(1)クラスター環境を構築するためのCentos7のインストール
CentOS7でScaleIO分散ストレージクラスターを構築する
centos7.2でLAMP環境を構築する方法
ランチャーを使用して、CentOS7でK8sクラスターを構築します
CentOS8でPXCクラスターを構築する
RHEL8 / CentOS8でマルチノードElasticスタッククラスターを確立する方法
マスタースレーブDNSサーバーを構築するためのCentos7チュートリアル
centos7でk8s1.9.9をビルドする
Centos6.9ビルドrabbitmq3.6.8クラスター
Centos7ビルドKubernetesクラスター
ジェンキンスはセントスに基づいて構築されています
Centosサーバーでgiteaをセットアップする方法を教える3分
CentOSはNginxを使用してダウンロード機能サーバーを構築します
ローカルWebサーバーを構築するためのCentos8の実装手順
Centos7へのGlusterfsクラスターのインストール
CentOSでMariaDBレプリケーションを構築する
UbuntuでGitサーバーを構築する方法を教えてください
Ubuntu14.04で本番Elasticsearchクラスターをセットアップする方法
CentOs7.3ビルドSolrCloudクラスターサービス
CentOSでGitサーバーをセットアップするための詳細な手順
centOS7にjdk1.8をインストールする方法
CentOS8にMemcachedをインストールする方法
CentOS8にRをインストールする方法
CentOS8にFFmpegをインストールする方法
CentOS8にVirtualboxをインストールする方法
CentOS8にTensorFlowをインストールする方法
Centos7でgcc4.9.xに更新する方法
CentOS8にTeamViewerをインストールする方法
CentOSにPerl5をインストールする方法
CentOS8にGitをインストールする方法
CentOS8にGradleをインストールする方法
CentOS8にElasticsearchをインストールする方法
CentOS8にJenkinsをインストールする方法
CentOS8にJavaをインストールする方法
CentOS8にGoをインストールする方法
CentOS8にGCCをインストールする方法
CentOS8にYarnをインストールする方法
CentOS8にNginxをインストールする方法
CentOS7にAsteriskをインストールする方法
CentOS8にJenkinsをインストールする方法
CentOS8にVagrantをインストールする方法
CentOS8にPython3.8をインストールする方法
CentOS8にTomcat9をインストールする方法
CentOS8にWebminをインストールする方法
gitlabを構築するためのCentos6メソッドの手順
CentOS8にRubyをインストールする方法
CentOS8にSkypeをインストールする方法
CentOS8にhtopをインストールする方法
CentOS8にPythonをインストールする方法
dockerに基づいてElasticsearch6.2.4(centos)を構築する
CentOS8にElasticsearchをインストールする方法
LinuxでNginx環境を構築する(CentOS)
CentOS8にPostgresqlをインストールする方法
CentosにWordpressをインストールする方法
CentOS8にhtopをインストールする方法
ubuntuでファイルサーバーを構築する
CentOSに基づいてDiscuzフォーラムを構築する
CentOS8にTeamViewerをインストールする方法
CentOS7にスワップを追加する方法
CentOS8にMariaDBをインストールする方法