Ubuntu 14.04.1(Trusty Tahr)でCEPH 0.87分散ストレージ用のCalamari監視システムパッケージをビルドおよびインストールします

指定:既存のCEPHクラスター0.87。 目的:監視を提供する。 タスク番号2:命令を書く(簡単)。



私はグーグルでイカを見つけました。 さらに掘り下げて、組み立てと設置に関する英語の記事をいくつか見つけました。 いくつかの「熊手」を踏んで、配達しようとしました。 その結果、私はこの記事を書くようになりました。

結果として収集されたパッケージは、debパッケージを構築するためのdebian-policyとは完全に一致していません。 監視はより重要です。



0.簡単な説明Calamari



Calamariは、CEPH分散ファイルストレージクラスター監視および管理システムです。 以下が含まれます。



もちろん、他のソフトウェア(PostgresQLなど)が必要です。 ただし、前述のものとは異なり、さらに構成する必要はありません。 インストールのみが必要です。



1.初期配布設定



1.新しいUbuntu 14.04.1(Trusty Tahr)をインストールします。

私のバージョンでは、最小限の標準サーバー構成が設定されています。 /var/log/apt/history.logに次の行があります

Commandline: apt-get -o APT::Status-Fd=4 -o APT::Keep-Fds::=5 -o APT::Keep-Fds::=6 -q -y install minimal^ openssh-server^ server^ standard^
      
      





したがって、一部のパッケージ(例: software-properties-common )はすでにシステムに存在します。

また、アセンブリに必要な一部のパッケージ(例: libssl-dev )はインストールされるパッケージによって異なりますが、ドキュメントおよび説明されている記事に記載されているので、インストールすることを引き続き示します。



便宜上、 Midnight Commanderがインストールされています。



sudo経由でroot権限を持つcephユーザーを作成しました。



デフォルトでは、 aptitudeは推奨パッケージを自動的にインストールするように構成されています。 そのままにしておきます。



私は以前に書かれたすべてのものは、あなたが助けなしで行うことができると仮定しています。 そして、できるだけ詳細に自分の行動を説明しようとします。

2.更新:

 sudo aptitude update && sudo aptitude -y upgrade
      
      





3.重要な何かが更新された場合。 たとえば、私の場合、これはlinux-imageカーネルを含むパッケージです。その後、再起動します

 sudo reboot
      
      





4.タイムゾーンをSamaraからMoscowに変更します(オプション):

 sudo dpkg-reconfigure tzdata
      
      





5.パッケージをビルドするためのツールをインストールします。

 sudo aptitude -y install build-essential debhelper devscripts git make g++
      
      





重要:次の3つの段落では、パッケージをビルドします。 各パッケージは個別のマシンで組み立てることができますが、配布の初期構成を行う必要があります。



2. calamari-serverの環境設定とパッケージのビルド



calamari-serverを構築するための依存関係をインストールします 。 それらはBuild-Dependsにリストされているか、ビルドプロセスにとって重要であると私が発見しました。 記事の冒頭で既に述べたように、それらのいくつかは既にインストールされています。

 sudo aptitude -y install libcairo2-dev libpq-dev python-dev python-pip python-virtualenv python-crypto python-m2crypto python-mako \ python-msgpack python-zmq cython libssl-dev lsb-release openssl curl software-properties-common swig libzmq-dev python-cairo \ python-sphinx reprepro
      
      





作業するディレクトリを作成し、 calamari-serverでリポジトリをクローンします

 ceph@calamari:~$ mkdir -p ~/dev; cd ~/dev ceph@calamari:~/dev$ git clone https://github.com/ceph/calamari.git ceph@calamari:~/dev$ cd calamari
      
      





収集しようとしています

 ceph@calamari:~/dev/calamari$ dpkg-buildpackage
      
      





取得します
 dpkg-buildpackage: source package calamari dpkg-buildpackage: source version 1.0.0-1 dpkg-buildpackage: source distribution precise dpkg-buildpackage: source changed by Gary Lowell <glowell@pudgy.ops.newdream.net> dpkg-buildpackage: host architecture amd64 dpkg-source --before-build calamari fakeroot debian/rules clean dh clean --with python2 dh_testdir dh_auto_clean make -j1 clean make[1]: Entering directory `/home/ceph/dev/calamari' target: clean rm -rf venv rest-api/calamari_rest/version.py make[1]: Leaving directory `/home/ceph/dev/calamari' dh_clean rm -f debian/calamari-server.substvars rm -f debian/calamari-server.*.debhelper rm -rf debian/calamari-server/ rm -f debian/*.debhelper.log rm -f debian/files find . \( \( -type f -a \ \( -name '#*#' -o -name '.*~' -o -name '*~' -o -name DEADJOE \ -o -name '*.orig' -o -name '*.rej' -o -name '*.bak' \ -o -name '.*.orig' -o -name .*.rej -o -name '.SUMS' \ -o -name TAGS -o \( -path '*/.deps/*' -a -name '*.P' \) \ \) -exec rm -f {} + \) -o \ \( -type d -a -name autom4te.cache -prune -exec rm -rf {} + \) \) rm -f *-stamp dpkg-source -b calamari dpkg-source: error: can't build with source format '3.0 (quilt)': no upstream tarball found at ../calamari_1.0.0.orig.tar.{bz2,gz,lzma,xz} dpkg-buildpackage: error: dpkg-source -b calamari gave error exit status 255
      
      







エラーが表示されます

 dpkg-source: error: can't build with source format '3.0 (quilt)': no upstream tarball found at ../calamari_1.0.0.orig.tar.{bz2,gz,lzma,xz} dpkg-buildpackage: error: dpkg-source -b calamari gave error exit status 255
      
      





そして、カルスが目を向ける3行:

 dpkg-buildpackage: source version 1.0.0-1 dpkg-buildpackage: source distribution precise dpkg-buildpackage: source changed by Gary Lowell <glowell@pudgy.ops.newdream.net>
      
      





イカのバージョンは同じではありません。 配布は信頼できるはずです。 はい、ゲイリーではなくパッケージを収集します。 パッケージのアセンブリが停止したためのエラーは、私も好きではありません。



したがって、私は独自の方法でパッケージを収集します。



BugFix開発者からのバージョンでは、debian形式がパッケージ形式として指定されているため、 dpkg-buildpackageエラーが発生します

「3.0(キルト)」のバージョン。 形式を変更します。

 ceph@calamari:~/dev/calamari$ echo '3.0 (native)' > debian/source/format
      
      





パッケージをビルドします。パッケージのバージョン、リビジョン、リリース、重要度だけでなく、名前、メールアドレスに従ってdebian / changelogファイルを変更します。

 ceph@calamari:~/dev/calamari$ DEBEMAIL=your@email.com DEBFULLNAME="Your Name" dch \ -v `./get-versions.sh VERSION`-`./get-versions.sh REVISION`-1 -D trusty -u low 'Switch to dpkg-source 3.0 (native) format'
      
      





確認する

 ceph@calamari:~/dev/calamari$ head -5 debian/changelog calamari (1.2.1-100-ge0b9b21-1) trusty; urgency=low * Switch to dpkg-source 3.0 (native) format -- Your Name <your@email.com> Wed, 10 Dec 2014 17:05:10 +0300
      
      





その後、パッケージはエラーなしで、正しいバージョン、リビジョン、リリース、重要度でビルドされます。 明らかな理由から、私はdpkg-buildpackageの出力を引用しません。

 ceph@calamari:~/dev/calamari$ dpkg-buildpackage
      
      





確認する

 ceph@calamari:~/dev/calamari$ ls -la .. total 12016 drwxrwxr-x 3 ceph ceph 4096 Dec 10 17:20 . drwxr-xr-x 5 ceph ceph 4096 Dec 10 17:11 .. drwxrwxr-x 20 ceph ceph 4096 Dec 10 17:11 calamari -rw-rw-r-- 1 ceph ceph 1396 Dec 10 17:20 calamari_1.2.1-100-ge0b9b21-1_amd64.changes -rw-rw-r-- 1 ceph ceph 750 Dec 10 17:11 calamari_1.2.1-100-ge0b9b21-1.dsc -rw-rw-r-- 1 ceph ceph 1278706 Dec 10 17:11 calamari_1.2.1-100-ge0b9b21-1.tar.gz -rw-r--r-- 1 ceph ceph 10998618 Dec 10 17:20 calamari-server_1.2.1-100-ge0b9b21-1_amd64.deb
      
      





親ディレクトリに戻る

 ceph@calamari:~/dev/calamari$ cd ..
      
      





3.環境のセットアップとダイヤモンドの組み立て



重要:別のマシンでパッケージを収集する場合-記事の1段落の実装を忘れないでください。



ダイヤモンドアセンブリの依存関係をインストールする

 sudo aptitude -y install python-mock cdbs python-support python-configobj
      
      





ダイヤモンドリポジトリをダウンロードします。

 mkdir -p ~/dev; cd ~/dev ceph@calamari:~/dev$ git clone https://github.com/ceph/Diamond.git --branch=calamari ceph@calamari:~/dev$ cd Diamond ceph@calamari:~/dev/Diamond$ DEBEMAIL=your@email.com DEBFULLNAME="Your Name" dch -v `./version.sh`-1 -D trusty \ -u low `/bin/echo -n "built on "; date`
      
      





確認する

 ceph@calamari:~/dev/Diamond$ head -5 debian/changelog diamond (3.4.67-1) trusty; urgency=low * built on Wed Dec 10 17:57:02 MSK 2014 -- Your Name <your@email.com> Wed, 10 Dec 2014 17:57:02 +0300
      
      





パッケージを収集

 ceph@calamari:~/dev/Diamond$ dpkg-buildpackage
      
      





確認する

 ceph@calamari:~/dev/Diamond$ ls -la .. total 4572 drwxrwxr-x 3 ceph ceph 4096 Dec 10 18:00 . drwxr-xr-x 4 ceph ceph 4096 Dec 10 17:54 .. drwxrwxr-x 11 ceph ceph 4096 Dec 10 18:00 Diamond -rw-r--r-- 1 ceph ceph 232292 Dec 10 18:00 diamond_3.4.67-1_all.deb -rw-rw-r-- 1 ceph ceph 1182 Dec 10 18:00 diamond_3.4.67-1_amd64.changes -rw-rw-r-- 1 ceph ceph 723 Dec 10 18:00 diamond_3.4.67-1.dsc -rw-rw-r-- 1 ceph ceph 4427329 Dec 10 18:00 diamond_3.4.67-1.tar.gz
      
      





親ディレクトリに戻る

 ceph@calamari:~/dev/Diamond$ cd ..
      
      





4. calamari-clientsの環境を設定して構築する



重要:別のマシンでパッケージを収集する場合-記事の1段落の実装を忘れないでください。



node.jsを使用してリポジトリを追加します。

 echo "deb http://ppa.launchpad.net/chris-lea/node.js/ubuntu trusty main" | sudo tee /etc/apt/sources.list.d/nodejs.list sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys B9316A7BC7917B12
      
      





パッケージリストの更新:

 sudo aptitude update
      
      





calamari-clientsをビルドするための依存関係をインストールします。

 sudo aptitude -y install ruby1.9.1 ruby1.9.1-dev python-software-properties nodejs
      
      





NPMとGemを使用して依存関係をインストールします。

 sudo npm install -g bower@1.3.8 sudo npm install -g grunt-cli sudo gem install compass
      
      





一部の記事では、 sudoなしでgemをインストールすることが推奨されていますが、システムディレクトリへのアクセス権を誓いました。 もう1つの「レーキ」を踏んでsudoを実行し、次の行でrootユーザーの露出の結果を修正しました

 sudo chown -R ceph ~/.npm
      
      





注: NPMGemを介して依存関係をインストールし、 calamari-clientsビルドするのは、githubをブロックする時間と一致しました。 警戒してください。 このリソースにアクセスしないと、多くの問題を発見できます。 おそらく、本格的な(匿名ではない)プロキシまたはVPNがなければ解決されないでしょう。



calamari-clientsリポジトリをダウンロードする

 mkdir -p ~/dev; cd ~/dev ceph@calamari:~/dev$ git clone https://github.com/ceph/calamari-clients.git ceph@calamari:~/dev$ cd calamari-clients
      
      





パッチを(親ディレクトリに)ダウンロードします

 ceph@calamari:~/dev/calamari-clients$ wget https://raw.githubusercontent.com/avssav/patches/master/calamari-clients/makefile.patch -qO \ ../makefile.patch
      
      





githubが再び落ちる場合に備えて、ここにdiffファイルを残します。 画面からコピーすると、差分ファイルが曲がって作成されます。

../makefile.patch
 ceph@calamari:~/dev/calamari-clients$ echo 'diff -ruN a/Makefile b/Makefile --- a/Makefile 2014-12-03 10:13:32.486463458 +0300 +++ b/Makefile 2014-12-03 10:14:10.994462934 +0300 @@ -45,7 +45,7 @@ DATESTR=$(shell /bin/echo -n "built on "; date) set_deb_version: DEBEMAIL=$(DEBEMAIL) dch \ - --newversion $(VERSION)-$(REVISION)$(BPTAG) \ + --newversion $(VERSION)-$(REVISION)$(BPTAG) -u low \ -D $(DIST) --force-bad-version --force-distribution "$(DATESTR)" build:' > ../makefile.patch
      
      







パッチを適用します。

 ceph@calamari:~/dev/calamari-clients$ patch -ZEfsp1 < ../makefile.patch
      
      





calamari-clients debパッケージをビルドします。

 ceph@calamari:~/dev/calamari-clients$ DEBEMAIL=your@email.com DEBFULLNAME="Your Name" DIST=trusty BPTAG=-1 REAL_BUILD=y make dpkg
      
      





確認する

 ceph@calamari:~/dev/calamari-clients$ ls -la .. total 936 drwxrwxr-x 3 ceph ceph 4096 Dec 10 18:54 . drwxr-xr-x 8 ceph ceph 4096 Dec 10 18:45 .. drwxrwxr-x 11 ceph ceph 4096 Dec 10 18:41 calamari-clients -rw-r--r-- 1 ceph ceph 838592 Dec 10 18:54 calamari-clients_1.2.1.1-53-gddd7187-1_all.deb -rw-rw-r-- 1 ceph ceph 810 Dec 10 18:54 calamari-clients_1.2.1.1-53-gddd7187-1_amd64.changes -rw-rw-r-- 1 ceph ceph 92902 Dec 10 18:54 calamari-clients-make-dpkg.txt -rw-rw-r-- 1 ceph ceph 431 Dec 10 18:41 makefile.patch
      
      





親ディレクトリに戻る

 ceph@calamari:~/dev/calamari-clients$ cd ..
      
      





5. calamari-serverをインストールします



サーバーを別のマシンにインストールします。 最後の(5)を除く、パラグラフ1のすべてのサブパラグラフを満たします



更新2015.07:

開発者からのSaltstackがバージョン2015.07に更新されました。 イカは彼と一緒には働きません。 次のようにsaltstackをインストールします

 sudo aptitude -y install python-pip sudo pip install 'salt==2014.7.0'
      
      





2015.07までの塩マスターのインストール(情報を残す)
saltstackを使用してリポジトリを追加します。

 echo "deb http://ppa.launchpad.net/saltstack/salt/ubuntu trusty main" | sudo tee /etc/apt/sources.list.d/saltstack.list sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 4759FA960E27C0A6 sudo aptitude update
      
      





構成管理システムをインストールします。

 sudo aptitude -y install salt-master salt-minion salt-syndic
      
      







calamari-serverの依存関係をインストールする

 sudo aptitude install -y apache2 libapache2-mod-wsgi libcairo2 supervisor python-cairo libpq5 postgresql python-txamqp python-gevent \ python-sqlalchemy
      
      





calamari-serverおよびcalamari-clientsをインストールします

 sudo dpkg -i ./calamari-server_1.2.1-100-ge0b9b21-1_amd64.deb sudo dpkg -i calamari-clients_1.2.1.1-53-gddd7187-1_all.deb
      
      





イカのセットアップ

 ceph@calamari:~$ sudo calamari-ctl initialize [INFO] Loading configuration.. [INFO] Starting/enabling salt... [INFO] Starting/enabling postgres... [INFO] Initializing database... [INFO] Initializing web interface... [INFO] You will now be prompted for login details for the administrative user account. This is the account you will use to log into the web interface once setup is complete. Username (leave blank to use 'root'): Email address: your@email.com Password: Password (again): Superuser created successfully. [INFO] Starting/enabling services... [INFO] Restarting services... [INFO] Complete.
      
      





6. Cephノードをイカ監視に追加する



更新2015.07:

開発者からのSaltstackがバージョン2015.07に更新されました。 イカは彼と一緒には働きません。 次のようにsaltstackをインストールします。

すべてのノードで

gdebiをインストールする

 sudo aptitude -y install gdebi-core
      
      





ダイヤモンドとその設定

 sudo gdebi --option=APT::Get::force-yes=1,APT::Get::Assume-Yes=1 -n diamond_3.4.67-1_all.deb sudo cp /etc/diamond/diamond.conf.example /etc/diamond/diamond.conf
      
      





ソルトミニオンとその設定

 wget https://github.com/avssav/packages/raw/master/saltstack/salt-common_2014.7.0%2Bds-2trusty1_all.deb wget https://github.com/avssav/packages/raw/master/saltstack/salt-minion_2014.7.0%2Bds-2trusty1_all.deb sudo gdebi --option=APT::Get::force-yes=1,APT::Get::Assume-Yes=1 -n salt-common_2014.7.0+ds-2trusty1_all.deb sudo gdebi --option=APT::Get::force-yes=1,APT::Get::Assume-Yes=1 -n salt-minion_2014.7.0+ds-2trusty1_all.deb echo "master: CALAMARI_SERVER_IP" | sudo tee /etc/salt/minion.d/calamari.conf sudo update-rc.d salt-minion defaults
      
      







2015.07まで塩分を設定(情報を残す)
すべてのノードで

ソルトミニオンでリポジトリを追加

 echo "deb http://ppa.launchpad.net/saltstack/salt/ubuntu trusty main" | sudo tee /etc/apt/sources.list.d/saltstack.list wget -q -O - "http://keyserver.ubuntu.com:11371/pks/lookup?op=get&search=0x4759FA960E27C0A6" | sudo apt-key add - sudo aptitude update
      
      





diamondをインストールするための依存関係をインストールする

 sudo aptitude -y install python-support python-configobj
      
      





ダイヤモンドとその設定

 sudo dpkg -i diamond_3.4.67-1_all.deb sudo cp /etc/diamond/diamond.conf.example /etc/diamond/diamond.conf
      
      





ソルトミニオンとその設定

 sudo aptitude -y install salt-minion echo "master: CALAMARI_SERVER_IP" | sudo tee /etc/salt/minion.d/calamari.conf sudo update-rc.d salt-minion defaults
      
      







再起動

 sudo service salt-minion restart sudo service diamond restart
      
      





7. CalamariのCephクラスターの承認



前の段落を完了すると、Cephマシンのソルトミニオンクライアントはウィザードからアップグレードしようとします。

calamari-serverとsalt-masterを備えたマシン上

 ceph@calamari:~$ sudo salt-key -L Accepted Keys: Unaccepted Keys: ceph1 ceph2 ceph3 ceph4 ceph5 Rejected Keys:
      
      





クラスタマシンのリストが表示されます。 アクセスを許可する

 ceph@calamari:~$ sudo salt-key -A The following keys are going to be accepted: Unaccepted Keys: ceph1 ceph2 ceph3 ceph4 ceph5 Proceed? [n/Y] y Key for minion ceph1 accepted. Key for minion ceph2 accepted. Key for minion ceph3 accepted. Key for minion ceph4 accepted. Key for minion ceph5 accepted.
      
      





9.すべてが機能するはずです



ブラウザからhttp:// CALAMARI_SERVER_IPにログインし、セットアップ時に指定したユーザー名とパスワードを使用します(calamari-ctl initialize)。

10.役に立つささいなこと



ダイヤモンドの設定は、Cephノードで自動的に同期されます。 ただし、設定を手動で更新するコマンドがあります

 sudo salt-call state.highstate
      
      





次のコマンドは、calephari-serverとのCephノードの接続を確認します

 sudo salt-call ceph.get_heartbeats
      
      





ソルトマスターに接続されているすべてのソルトミニオンを確認します

 sudo salt '*' ceph.get_heartbeats
      
      





注:一部の中間結果は記事に含まれていません。 たとえば不快なエラー排除するパッチ除外されます。 しかし、記事を確認して、もう一度イカをgithubから複製し、パッチを適用したところ、パッチは機能しませんでした。 一般に、判明したように、私が記事を書いている間に、calamari'vtsyはメインブランチのバグを修正しました。

9.材料



Ubuntu 14.04でCephのCalamariをコンパイルする

Ceph Calamari:ステップバイステップ

Debian WeezyでパッケージをビルドしてCalamariをインストールする

Ceph Calamari:サバイバルガイド

イカのドキュメント

精密なビルド手順



All Articles