読者です 読者をやめる 読者になる 読者になる

cinder-backup

OpenStack

本エントリーは OpenStack Advent Calendar 2014 22日目です。

# 相変わらずみんなが記事内でAdvent Calendarだと宣言してくれない…

 

3台構成でのJunoのインストール手順を公開しようと思いましたが、ネットワーク構成にちょっと問題が見つかってしまい公開を控えることにしました。orz

代わりに、cinder-backupでもしてお茶を濁します。

cinder-backupはボリュームをSwift/Ceph/Tivoli Storage Manager(2014年12月22日時点)にバックアップするものです。

Backup drivers - OpenStack Configuration Reference - juno

 

環境

一台構成で、Keystone + Cinderを構築し、バックアップ対象先として、Cephを利用します。

  • OS: Ubuntu 14.10
  • VirtualBox
  • OpenStack version: 2014.2.1
  • Volume: LVM
  • Backup: Ceph
  • NIC
    • eth0: ホストンリー
    • eth1: 内部ネットワーク
    • eth2: NAT
  • Disk
    • /dev/sda: OS / OpenStack
    • /dev/sdb: LVM
    • /dev/sdc: Ceph

 

インストール

DevStackでもいいのですが、折角なのでパッケージインストールをします。

 

共通設定

ネットワーク、MySQL、RabittMQ、Memcached(yrmcds)の設定を行います。

$ sudo vim /etc/network/interfaces
-------------------
auto lo
iface lo inet loopback

auto eth0
iface eth0 inet static
    address 192.168.56.121
    netmask 255.255.255.0
    network 192.168.56.0
    broadcast 192.168.56.255

auto eth1
iface eth1 inet static
address 192.168.5.121
netmask 255.255.255.0
network 192.168.5.0
broadcast 192.168.5.255
auto eth2 iface eth2 inet dhcp ------------------- $ sudo ifup eth0; sudo ifup eth0 $ sudo ifup eth1 $ sudo apt-get update $ sudo apt-get -y upgrade $ sudo apt-get -y dist-upgrade $ sudo reboot $ sudo apt-get install -y python-mysqldb mysql-server $ sudo sed -i -e "s/\(^bind-address.*= \).*/\10.0.0.0/" -e "s/\(\[mysqldump\]\)/skip-name-resolve\n\n\1/g" /etc/mysql/my.cnf $ sudo service mysql restart $ mysql_secure_installation $ cat > ~/openstack.sql << _EOF_ CREATE DATABASE IF NOT EXISTS keystone CHARACTER SET utf8; CREATE DATABASE IF NOT EXISTS cinder CHARACTER SET utf8; GRANT ALL PRIVILEGES ON keystone.* TO keystone@localhost IDENTIFIED BY 'Stackers0'; GRANT ALL PRIVILEGES ON cinder.* TO cinder@localhost IDENTIFIED BY 'Stackers0'; GRANT ALL PRIVILEGES ON keystone.* TO keystone@'192.168.5.%' IDENTIFIED BY 'Stackers0'; GRANT ALL PRIVILEGES ON cinder.* TO cinder@'192.168.5.%' IDENTIFIED BY 'Stackers0'; _EOF_ $ mysql -uroot -pStackers0 < ~/openstack.sql $ sudo apt-get install -y rabbitmq-server $ sudo rabbitmqctl add_vhost /keystone $ sudo rabbitmqctl add_user cinder Stackers0 $ sudo rabbitmqctl set_permissions -p /keystone cinder ".*" ".*" ".*" $ sudo rabbitmqctl add_vhost /cinder $ sudo rabbitmqctl add_user cinder Stackers0 $ sudo rabbitmqctl set_permissions -p /cinder cinder ".*" ".*" ".*"
$ sudo apt-get install -y --no-install-recommends yrmcds $ sudo vim /etc/yrmcds.conf ------------------- user = yrmcds group = yrmcds virtual_ip = 192.168.5.121 port = 11211 repl_port = 11213 max_connections = 10000 temp_dir = "/var/tmp/yrmcds" log.threshold = info log.file = "/var/log/yrmcds.log" buckets = 1000000 max_data_size = 10M heap_data_limit = 256K memory_limit = 1024M workers = 10 gc_interval = 10 ------------------- $ sudo service yrmcds restart

 

Keystone

Keystoneのインストールと設定をします。各種設定ファイルの内容はリンク先を参照ください。

$ sudo apt-get install -y keystone python-openstackclient python-memcache
$ sudo vim /etc/keystone/keystone.conf
  http://pastebin.com/aUFbcQUq
$ sudo keystone-manage db_sync
$ sudo service keystone restart
$ vim ~/keystone_data.sh
http://pastebin.com/sDg9vRkM $ chmod 755 ~/keystone_data.sh $ ~/keystone_data.sh $ cat > ~/openrc << _EOF_ export OS_TENANT_NAME=admin export OS_USERNAME=admin export OS_PASSWORD=Stackers0 export OS_AUTH_URL=http://192.168.5.121:5000/v2.0 export OS_REGION_NAME=regionOne _EOF_ $ cat > ~/demorc << _EOF_ export OS_TENANT_NAME=demo export OS_USERNAME=demo export OS_PASSWORD=Stackers0 export OS_AUTH_URL=http://192.168.5.121:5000/v2.0 export OS_REGION_NAME=regionOne _EOF_ $ . ~/openrc $ keystone user-list $ openstack user list

 

Cinder

LVM設定

/dev/sdbをLVM用に設定します。

$ sudo fdisk /dev/sdb
n
p
[Enter]
[Enter]
[Enter]
t
8e
w

$ sudo apt-get -y install lvm2
$ sudo pvcreate /dev/sdb1
$ sudo vgcreate -s 32m cinder-volumes /dev/sdb1
$ sudo vim /etc/lvm/lvm.conf
 -    volume_list = [ "vg1", "vg2/lvol1", "@tag1", "@*" ]
 +    volume_list = [ "cinder-volumes" ]
$ sudo vgs
  VG             #PV #LV #SN Attr   VSize  VFree
  cinder-volumes   1   0   0 wz--n-  7.97g 7.97g

 

Ceph設定

1台構成でCephを構成します。バックアップ先のプールにはbackupsを設定します。

$ sudo apt-get install -y ceph python-ceph
$ sudo fdisk /dev/sdc
n
p
[Enter]
[Enter]
[Enter]
t
83
w
$ sudo mkfs.xfs -f -i size=1024 /dev/sdc1
$ sudo mount -t xfs -o noatime,nodiratime,nobarrier,logbufs=8 /dev/sdc1 /var/lib/ceph
$ echo "/dev/sdc1 /var/lib/ceph xfs noatime,nodiratime,nobarrier,logbufs=8 0 0" | sudo tee -a /etc/fstab
$ cd /var/lib/ceph
$ sudo mkdir -p /var/lib/ceph/bootstrap-mds /var/lib/ceph/bootstrap-osd /var/lib/ceph/mds /var/lib/ceph/mon /var/lib/ceph/osd /var/lib/ceph/tmp
$ sudo ceph-authtool /var/lib/ceph/tmp/keyring.mon.`hostname` --create-keyring --name=mon. --add-key=$(ceph-authtool --gen-print-key) --cap mon 'allow *'
$ sudo mkdir /var/lib/ceph/mon/ceph-`hostname`
$ CEPH_FSID=$(uuidgen)
$ sudo tee /etc/ceph/ceph.conf > /dev/null << _EOF_
[global]
fsid = ${CEPH_FSID}
mon_initial_members = `hostname`
mon_host = `ip a show eth1 | grep "inet " | awk '{ print $2 }' | sed s,/.*,,`
auth_cluster_required = cephx
auth_service_required = cephx
auth_client_required = cephx
filestore_xattr_use_omap = true
osd crush chooseleaf type = 0
osd journal size = 100
_EOF_

$ sudo ceph-mon -c /etc/ceph/ceph.conf --mkfs -i `hostname` --keyring /var/lib/ceph/tmp/keyring.mon.`hostname`
$ sudo touch /var/lib/ceph/mon/ceph-`hostname`/upstart
$ sudo touch /var/lib/ceph/mon/ceph-`hostname`/done
$ sudo initctl emit ceph-mon id=`hostname`
$ sudo ceph -c /etc/ceph/ceph.conf osd pool set data size 1
$ sudo ceph -c /etc/ceph/ceph.conf osd pool set rbd size 1
$ sudo ceph -c /etc/ceph/ceph.conf osd pool set metadata size 1
$ echo "Cinder backups"
$ sudo ceph -c /etc/ceph/ceph.conf osd pool create backups 8
$ sudo ceph -c /etc/ceph/ceph.conf osd pool set backups size 1
$ sudo ceph -c /etc/ceph/ceph.conf auth get-or-create client.backup mon "allow r" osd "allow class-read object_prefix rbd_children, allow rwx pool=backups" | sudo tee /etc/ceph/ceph.client.backup.keyring
$ OSD_ID=$(sudo ceph -c /etc/ceph/ceph.conf osd create)
$ sudo mkdir -p /var/lib/ceph/osd/ceph-${OSD_ID}
$ sudo ceph-osd -c /etc/ceph/ceph.conf -i ${OSD_ID} --mkfs
$ sudo ceph -c /etc/ceph/ceph.conf auth get-or-create osd.${OSD_ID} mon 'allow profile osd ' osd 'allow *' | sudo tee /var/lib/ceph/osd/ceph-${OSD_ID}/keyring
$ sudo touch /var/lib/ceph/osd/ceph-${OSD_ID}/upstart
$ sudo pkill -f ceph-mon
$ sudo pkill -f ceph-osd
$ sudo initctl emit ceph-mon id=`hostname`
$ sudo ceph -c /etc/ceph/ceph.conf osd ls
$ sudo rados lspools
$ sudo ceph-authtool --print-key /etc/ceph/ceph.client.admin.keyring | sudo tee /etc/ceph/secret.admin
$ sudo reboot

 

バックアップに関わる設定

 Cinder backupに関わるパラメータは以下のページの通りです。

Backup drivers - OpenStack Configuration Reference - juno

 

Cephを利用する場合は、backup_driverにcinder.backup.drivers.cephを指定し、各種項目を設定します。

  • backup_driver=cinder.backup.drivers.ceph
  • backup_ceph_conf=/etc/ceph/ceph.conf
  • backup_ceph_user=backup
  • backup_ceph_chunk_size=134217728
  • backup_ceph_pool=backups
  • backup_ceph_stripe_unit=0
  • backup_ceph_stripe_count=0

 

Cinderインストール

$ sudo apt-get install -y cinder-api cinder-scheduler cinder-volume cinder-backup
$ sudo mkdir /var/cache/cinder
$ sudo chown -R cinder:cinder /var/cache/cinder
$ sudo vim /etc/cinder/cinder.conf
  http://pastebin.com/jqkQAnD3 (適当)
$ sudo cinder-manage db sync
$ sudo rm -f /var/lib/cinder/cinder.sqlite
$ sudo service cinder-api restart
$ sudo service cinder-backup restart
$ sudo service cinder-scheduler restart
$ sudo service cinder-volume restart

 

バックアップの取得

 LVM上にボリュームを作成し、そのボリュームをバックアップします。

$ . ~/openrc
$ cinder create 1
+---------------------+--------------------------------------+
|       Property      |                Value                 |
+---------------------+--------------------------------------+
|     attachments     |                  []                  |
|  availability_zone  |                 nova                 |
|       bootable      |                false                 |
|      created_at     |      2014-12-21T15:05:02.596022      |
| display_description |                 None                 |
|     display_name    |                 None                 |
|      encrypted      |                False                 |
|          id         | 629ee750-6732-4e5c-8f32-677824c18582 |
|       metadata      |                  {}                  |
|         size        |                  1                   |
|     snapshot_id     |                 None                 |
|     source_volid    |                 None                 |
|        status       |               creating               |
|     volume_type     |                 None                 |
+---------------------+--------------------------------------+

$ cinder list
+--------------------------------------+-----------+--------------+------+-------------+----------+-------------+
|                  ID                  |   Status  | Display Name | Size | Volume Type | Bootable | Attached to |
+--------------------------------------+-----------+--------------+------+-------------+----------+-------------+
| 629ee750-6732-4e5c-8f32-677824c18582 | available |     None     |  1   |     None    |  false   |             |
+--------------------------------------+-----------+--------------+------+-------------+----------+-------------+

$ sudo lvs
  LV                                          VG             Attr      LSize Pool Origin Data%  Move Log Copy%  Convert
  volume-629ee750-6732-4e5c-8f32-677824c18582 cinder-volumes -wi-a---- 1.00g

 

LVMのボリュームが作成されました。

ボリュームのバックアップを取得します。

$ cinder backup-create 629ee750-6732-4e5c-8f32-677824c18582
+-----------+--------------------------------------+
|  Property |                Value                 |
+-----------+--------------------------------------+
|     id    | 6c3a8b27-8cb6-4224-8fb2-1ee4d02a7a54 |
|    name   |                 None                 |
| volume_id | 629ee750-6732-4e5c-8f32-677824c18582 |
+-----------+--------------------------------------+

$ cinder backup-list
+--------------------------------------+--------------------------------------+-----------+------+------+--------------+-----------+
|                  ID                  |              Volume ID               |   Status  | Name | Size | Object Count | Container |
+--------------------------------------+--------------------------------------+-----------+------+------+--------------+-----------+
| 6c3a8b27-8cb6-4224-8fb2-1ee4d02a7a54 | 629ee750-6732-4e5c-8f32-677824c18582 | available | None |  1   |     None     |  backups  |
+--------------------------------------+--------------------------------------+-----------+------+------+--------------+-----------+

$ sudo rbd ls backups
volume-629ee750-6732-4e5c-8f32-677824c18582.backup.6c3a8b27-8cb6-4224-8fb2-1ee4d02a7a54

 

リストア

 ボリュームを削除して、バックアップからリストアを行います。

$ cinder delete 629ee750-6732-4e5c-8f32-677824c18582
$ sudo lvs
$ cinder backup-restore 6c3a8b27-8cb6-4224-8fb2-1ee4d02a7a54
$ cinder list
+--------------------------------------+-----------+-----------------------------------------------------+------+-------------+----------+-------------+
|                  ID                  |   Status  |                     Display Name                    | Size | Volume Type | Bootable | Attached to |
+--------------------------------------+-----------+-----------------------------------------------------+------+-------------+----------+-------------+
| 60fea874-dfd6-4a75-a039-3135748c7e32 | available | restore_backup_6c3a8b27-8cb6-4224-8fb2-1ee4d02a7a54 |  1   |     None    |  false   |             |
+--------------------------------------+-----------+-----------------------------------------------------+------+-------------+----------+-------------+
$ sudo lvs
  LV                                          VG             Attr      LSize Pool Or
  volume-60fea874-dfd6-4a75-a039-3135748c7e32 cinder-volumes -wi-a---- 1.00g

 

無事、ボリュームが復元できたように見えます。

 

どうまとめよう・・・便利なので使ってね!

 

おしまい

最近 OpenStack でハマったこと

本エントリーは OpenStack Advent Calendar 2013 JP : ATND 21日目です。

 

OpenStack Havana がリリースされてしばらく経ちます。

私が Ubuntu 13.10 と OpenStack Havana の組み合わせで最近ハマったことを履歴として残してみます。

 

OpenStack Havanaで最近ハマったところとは以下3点でした。

  1. libvirt の Audit message が出力できない
  2. インスタンスから Cinder のボリュームがマウントできない
  3. Cinder で cinder-manage db sync が出来ない

 

続きを読む

OpenStack 情報をどこから得ているの?

OpenStack

OpenStack Advent Calendar 2013 JP : ATND 2日目、23時38分現在今日が終わってしまう!間に合わなそう!ということで2秒で考えて20分で書き上げます。@代打

毎日OpenStackだけをやっている私ですが、どこから情報を得ているのかをまとめてみます。間に合え。

 

公式情報

  • OpenStack Wiki

    • OpenStack wiki ここに仕様だったり使い方だったりがあります。たまに議論の途中経過が書かれていたりしてどれが本当かわからないこともあります。
  • open OpenStack Docs: current

    • OpenStack 各種ドキュメントです。(APIドキュメントを除き)全部あわせて2000ページくらいありますが全部目を通しましょう。
  • Community » OpenStack Open Source Cloud Computing Software

    • OpenStackコミュニティ関連ページです。
    • OpenStack メーリングリストはGeneral Discussion, Development, Operatorsを追うと良いでしょう。
    • General は一般的な質問。毎週送られてくる「OpenStack Community Weekly Newsletter」には素晴らしい豆知識が載っていることも。
    • Development は開発に関わる内容や提案など。
    • Operators はクラウド事業者のためのベストプラクティスを交換する場だった気がします。
    • 1,2日放置すると簡単に100スレッドいくので覚悟が必要です。。
    • 最近 Dev ML にインキュベート前のプロジェクト情報が大量に流れているので Stackforge ML を作るかーという話も出ています。
  • Launchpad

    • OpenStack 関連プロジェクトの Bug や Blueprint を見ます。
    • Bug かな?と思ったらここで検索してみる癖をつけると良いと思います。
  • stackforge · GitHub

    • コミュニティプロジェクトのソースなどがあります。気になるものは git clone して毎日 git pull の結果を見ましょう。
    • 毎日だ!
    • 今見ているのはこんな感じです。

 

ブログなど

  • Blog | eNovance

    • OpenStack Gold Member の eNovanceのブログです。最近アツいです。
  • jedipunkz' blog

    • @jedipunkz さんのブログOpenStackだけではなく多くの情報を得ることができます。いつも見てます!

 

なんとか2日に間にあった!

ここも見た方がいいよ。というのがあればぜひ教えてください。何かあれば随時追加します。お楽しみに!

明日3日目は @boot_vmlinuz さんの「LogCAS秘話」です。よろしくお願いします。

 

ではでは。

SELinux と 石川さんごめんなさい

昨日プチいしかわさんごめんなさい祭りがあったので経緯を思い出しながら書いてみます。

 

私の周りだけだとは思いますが、SELinuxを無効にする時は「いしかわさん ごめんなさい3回唱えつつ、/etc/selinux/config を編集し、SELINUX=disabled にする。」という噂をたまに時々、稀に良く聞きます。

 

原因は何かと考えたのですが、多分、hbstudy か qpstudy です。

私は昔々、 hbstudy や qpstudy では毎回、LT のネタに SELinux をやっていました。

毎回やっていると、「あいつはなんだかわからないけど SELinux やっているヤツだ。」と認識されるようで、勉強会の度に「今日も SELinux ですよね」「今日もroot取るんですか」みたいな反応をもらうようになりました。

やっほー、SELinux おじさんだよ。(この頃は黒い人とか黒川さん呼ばれていた気がします。)

 

しつこく LT で SELinux ネタをやっているうちに反応が変わり、「今日も、SELinux ですよね。でも、僕まだ SELinux まだ無効ですよ。なんかごめんなさい。」みたいな反応をする人が現れました。

これがしばらく続いた後、「いしかわさんごめんなさい」だけが残り、
Twitter で「いしかわさんごめんなさい」が拡散され今に至ったんだったと思います。

思い出した限りでは多分そんな感じですが何せ2011年あたりのことなのでよく覚えてません。笑

 

 

 おしまい

 

http://stopdisablingselinux.com/

 

 

■ 追記

そういえば 6割 事件とかありましたね。

Ustされている勉強で 「SELinux の利用している人」に挙手してもらいました。実際には3人しか手を上げていないのに会場が映っていない事をいいことに、
「今会場の六割の人が SELinux を利用していると手を上げました!」とデマを吐き、視聴者を混乱のずんどこに叩き落しました。懐かしい。

 

■ さらに追記

関係ない石川さんに迷惑掛かっているっぽいのでネタにする時はご注意ください。

 

■ さらにさらに追記

2014年度ごめんなさいは基本スルーしますw

CVE-2013-2094 と SELinux

SELinux Linux 検証

重要な修正

熊猫先生からご指摘を頂きました。この記事には重要なことが抜けている。

 

 

仰る通りです。自分の資料でも散々カーネルにバグがなければと書きながらこのザマ。

いくらその場のノリでやったとはいえ調べなさ過ぎでした。猛反するばかりです。

本当に申し訳ありませんでした。

 

(5/24 追記)

SELinux を無効にし、root shell を起動できたと連絡をいただきました。

 

 

続きを読む

Fedora 18: Redmine + mod_passenger + SELinux(単体起動するまで)のざっくりメモ

SELinux

※多分こんな感じでいけるはず。

前提条件

OS: Fedora 18
Apache, mod_passenger, Ruby, MySQL は yum でインストールします。
Redmine は 2.3.0 を使用します。

mod_passenger インストール

# yum -y install mod_passenger
# vim /etc/httpd/conf.d/passenger.conf
PassengerTempDir /var/run/passenger

Passenger が PassengerTempDir 以下に作る socket 以外の扱いがよくわからない。。
ソースから入れるとパスが変わるので以下の手順ではいけなくなるので注意が必要です。ラベルを付与すれば OK です。

続きを読む

#isucon2 でまたチューニングせずに別のことをしていた話

運営の皆さん楽しい会をありがとうございました。お疲れ様でした。素晴らしい手際を見習いたいです。


今回も @ さん、@ さんと参加してきましたのでやったことをメモします。

やったこと

(スーパーなエンジニアが2人もいるので)前回に引き続きチューニングに一切関わっていません。
何していたかというとひたすら SELinux の設定をしていました。(今回は Targeted です。)

続きを読む