MySQLに外部サーバ定義を登録する

リンクテーブルを作成するときなど、FEDERATED ストレージエンジンで使用する外部サーバーを定義する際には、CREATE SERVERコマンドを使用する。外部サーバを定義するとmysql.serversテーブルにカラムが追加されるが、SQL文で直接mysql.serversにカラムを追加すると正常に動作しないので注意が必要である。

CREATE SERVER server_name FOREIGN DATA WRAPPER mysql OPTIONS (USER 'hoge', PASSWORD 'hogehoge', HOST '192.168.0.x', DATABASE 'database_name');

以下のように追加するのはよくないぽい。

INSERT INTO `mysql`.`servers` (`Server_name` ,`Host` ,`Db` ,`Username` ,`Password` ,`Port` ,`Socket` ,`Wrapper` ,`Owner`)VALUES ('server_name', '192.168.x.1', 'database_name', 'hoge', 'hogehoge', '0', '', '1', 'mysql', '');

XCodeからiTunes Connectへアップロード時にITMS-90530エラー

XCodeからiTunes Connectへアーカイブファイルをアップロードする際にITMS-90530エラーが発生することがある。
対処法は、iPhoneなどの端末を一切接続しない状態で、もう1度アーカイブファイルを作成する。

OpenStack(1)TripleOを用いてMitakaをインストールする

インストーラ

OpenStackのインストール方法は、選択したコンポーネントを1つずつインストールしていく方法と、インストーラを使って自動的にシステム構築を行う方法とがある。OpenStackのインストーラは複数提供されていて、代表的なものにpackstackや、TripleO(Openstack on OpenStack)などが存在する。packstackは、answerファイルと呼ばれる設定ファイルに内容を記述するだけで非常に簡単に環境構築が可能である一方で、高可用性(HA)設定や負荷分散設定などには対応していない。そのためkiloからは「OSP director」(RedHat系ではTripleO)と呼ばれるインストーラが新たに公開され複雑な設定も可能となっている。

TripleO(OpenStack on OpenStack)

TripleOは、OpenStack on OpenStackの名の通り、OpenStack上でOpenStackの構築を行う。クラウド構築基盤である下レイヤ部分をUnderCloud、コントローラノードやコンピュートノードなどが存在する上レイヤ部分をOverCloudと呼ぶ。UnderCloudは、通常directorと呼ばれる環境構築用の端末1台のみで構成される。

資料

現在のところTripleOを扱った資料はほとんど存在しない。公式ページで提供されているドキュメントが最も分りやすい。


環境構築

UndercloudおよびOvercloudの設定にあたって必要となる環境の設定を行う。
デフォルト値が定められており、それ以外の値にする場合は変更が必要となるので注意すること。
詳細は、Environment Setupを参照する。

  • CentOS 7(64bit版)のインストール
  • インストール用ユーザ(stack)の作成
sudo useradd stack
sudo passwd stack  # specify a password
echo "stack ALL=(root) NOPASSWD:ALL" | sudo tee -a /etc/sudoers.d/stack
sudo chmod 0440 /etc/sudoers.d/stack
  • インストール用ユーザ(stack)でログイン
su - stack
  • 必要なリポジトリの有効化
sudo yum -y install epel-release
sudo curl -o /etc/yum.repos.d/delorean.repo https://trunk.rdoproject.org/centos7/current-tripleo/delorean.repo
sudo curl -o /etc/yum.repos.d/delorean-current.repo https://trunk.rdoproject.org/centos7/current/delorean.repo
sudo /bin/bash -c "cat <<EOF>>/etc/yum.repos.d/delorean-current.repo

includepkgs=diskimage-builder,instack,instack-undercloud,os-apply-config,os-cloud-config,os-collect-config,os-net-config,os-refresh-config,python-tripleoclient,tripleo-common,openstack-tripleo-heat-templates,openstack-tripleo-image-elements,openstack-tripleo,openstack-tripleo-puppet-elements,openstack-puppet-modules
EOF"
sudo curl -o /etc/yum.repos.d/delorean-deps.repo https://trunk.rdoproject.org/centos7/delorean-deps.repo
  • instack-undercloudのインストール
sudo yum install -y instack-undercloud
  • 環境変数の設定
export NODE_DIST=centos7
  • 仮想環境構築スクリプトの実行
    全ての処理が終了すると、作成された仮想環境のIPアドレスが表示される。
cd ~
instack-virt-setup

instack vm IP address is 192.168.122.83
You can connect by running:
ssh root@192.168.122.83
And then su to the stack user:
su - stack

KVM ゲストOSの管理

Undercloudは、KVM上の仮想環境にて構築されている。
仮想環境へのログインは、SSHもしくはvirshのコンソールを使うとよい。

ゲストOSの起動終了

  • ゲストOSの確認
virsh list --all
  • ゲストOSの起動
virsh start DOMAIN_NAME_OR_UUID
  • ゲストOSの終了
virsh shutdown DOMAIN_NAME_OR_UUID
virsh destroy DOMAIN_NAME_OR_UUID
  • ゲストOSの削除
virsh undefine DOMAIN_NAME_OR_UUID

設定の確認

  • 設定の出力
virsh dumpxml DOMAIN_NAME_OR_UUID
  • 設定の変更
virsh edit DOMAIN_NAME_OR_UUID

コンソールログイン

コンソールでログインする場合は、以下の設定が含まれているか確認する。

virsh edit DOMAIN_NAME_OR_UUID

<device>
  <serial type='pty'>
    <target port='0'/>
  </serial>
  <console type='pty'>
    <target type='serial' port='0'/>
  </console>
</device>
  • コンソールでログイン
virsh console DOMAIN_NAME_OR_UUID

Undercloudの構築

Undercloudのインストールと、コンポーネントのアップデートを行う。
詳細は、Undercloud Installationを参照のこと。

  • 仮想環境にインストール用ユーザ(stack)でログイン
ssh root@192.168.122.83
su - stack
  • SELinuxの設定をpermissiveに変更
vi /etc/selinux/config

# This file controls the state of SELinux on the system.
# SELINUX= can take one of these three values:
#     enforcing - SELinux security policy is enforced.
#     permissive - SELinux prints warnings instead of enforcing.
#     disabled - No SELinux policy is loaded.
SELINUX=permissive
# SELINUXTYPE= can take one of these two values:
#     targeted - Targeted processes are protected,
#     minimum - Modification of targeted policy. Only selected processes are protected.
#     mls - Multi Level Security protection.
SELINUXTYPE=targeted
  • 必要なリポジトリの有効化
sudo yum -y install epel-release
sudo sed -i 's/\[delorean\]/\[delorean-current\]/' /etc/yum.repos.d/delorean-current.repo
sudo /bin/bash -c "cat <<EOF>>/etc/yum.repos.d/delorean-current.repo

includepkgs=diskimage-builder,instack,instack-undercloud,os-apply-config,os-cloud-config,os-collect-config,os-net-config,os-refresh-config,python-tripleoclient,tripleo-common,openstack-tripleo-heat-templates,openstack-tripleo-image-elements,openstack-tripleo,openstack-tripleo-puppet-elements,openstack-puppet-modules
EOF"
sudo curl -o /etc/yum.repos.d/delorean-deps.repo https://trunk.rdoproject.org/centos7/delorean-deps.repo
  • yumリポジトリの優先度設定
    Deloreanリポジトリが、RDOリポジトリよりも優先されるように設定
sudo yum -y install yum-plugin-priorities
  • TripleOクライアントのインストール
sudo yum install -y python-tripleoclient
  • Undercloudののインストール
openstack undercloud install

#############################################################################
Undercloud install complete.

The file containing this installation's passwords is at
/home/stack/undercloud-passwords.conf.

There is also a stackrc file at /home/stack/stackrc.

These files are needed to interact with the OpenStack services, and should be
secured.

#############################################################################

Overcloudのデプロイ

環境変数の読み込み

source stackrc
export NODE_DIST=centos7
export USE_DELOREAN_TRUNK=1
export DELOREAN_TRUNK_REPO="https://trunk.rdoproject.org/centos7/current-tripleo/"
export DELOREAN_REPO_FILE="delorean.repo"

CentOS7(1)アレイコントローラの認識

HP Dynamic Smart Array B140i Controller

CentOS7をインストールするサーバに、アレイコントローラが搭載されている場合、アレイコントローラのドライバを指定した上でインストールを実行しないと、論理ドライブが認識されずに物理ドライブがそのまま見えてしまう場合がある。HP ProLiantに搭載されているHP Dynamic Smart Array B140i Controllerを認識させる場合は、デバイスドライバの入ったUSBメモリを作成し、このUSBメモリを使ってCentOSインストールと同時にドライバの組み込みも行う。デバイスドライバは、HPのサポートページからダウンロードすることが可能である。

デバイスドライバ(ドライバディスケット)のダウンロード

HPのサポートページから「.gz」形式のドライバーをダウンロードする。

デバイスドライバのダウンロード

デバイスドライバー(ドライバディスケット)の解凍

解凍すると「.dd」形式のファイルとなる。

デバイスドライバの解凍

USBメモリへの書き込み

FAT形式にフォーマットしたUSBメモリにddコマンドを用いてドライバを書き込む。「.dd」形式のファイルをファインダー上でドラッグアンドドロップするだけでは、正常に読み込むことができない

FAT形式にフォーマット

Macの場合は、ディスクユーティリティを使ってFAT形式にフォーマットする。このとき、名前をUNTITLEDと命名すると、通常は/Volumes/UNTITLEDでマウントされる。また、装置欄に記述されている名称(disk2)がデバイス名称(/dev/disk2)となる。

USBメモリのフォーマット

ddコマンドによる書き込み

USBメモリがマウントされている状態では、ddコマンドを実行することができない。

$ sudo dd if=hpdsa-1.2.8-107.rhel7u0.x86_64.dd of=/dev/disk2
Password:
dd: /dev/disk2: Resource busy

そこで、ddコマンドを実行する前に、USBメモリをアンマウントしておく。

$ sudo umount -fv /Volumes/UNTITLED

改めて、ddコマンドを実行する。

$ sudo dd if=hpdsa-1.2.8-107.rhel7u0.x86_64.dd of=/dev/disk2
2584+0 records in
2584+0 records out
1323008 bytes transferred in 0.654908 secs (2020143 bytes/sec)

CentOSをインストール

CentOSをインストールする際にGRUBエントリーの編集を行い、デバイスドライバーのインストールとAHCIの無効化を行う。

GRUB選択画面

eコマンド”で編集画面に遷移し、”inst.dd modprobe.blacklist=ahci“を追記した上で起動を行う。この時点では、まだUSBメモリを挿入しない

vmlinuz initrd=initrd.img inst.stage2=hd:LABEL=CENTOS\X207\X20\X86_64 quit inst.dd modprobe.blacklist=ahci
[code]

すると、どのデバイスからドライバをインストールするかを問うプロンプトが表示されるので、**この時点で初めてUSBメモリを挿入**し、”**rコマンド**“によりデバイス一覧の再スキャンを行う。

[code language="bash"]
DD: starting interactive mode

(Page 1 of 0) Driver disk device selection
    /DEVICE TYPE      LABEL
# to select, 'r'-reflesh, or 'c'-continue:

USBメモリが認識されるので、どのデバイスにある、どのドライバを組み込むのかを対話形式で入力する。

(Page 1 of 1) Driver disk device selection
	/DEVICE	TYPE	LABEL
1)	sda1	vfat	VID	XXXXX
2)	sda2	ext4	OEMDRV	XXXXX
# to select, 'r'-reflesh, or 'c'-continue: 2
DD: Examining /dev/sda2

(Page 1 of 1) Select drivers to install
1)	[]	/media/DD-1/rmps/x86_64/kmod-hpdsa-1.2.8-107.rhel7u2.x86_64.rpm
# to toggle selection, or 'c'-continue: 1

(Page 1 of 1) Select drivers to install
1)	[x]	/media/DD-1/rmps/x86_64/kmod-hpdsa-1.2.8-107.rhel7u2.x86_64.rpm
# to toggle selection, or 'c'-continue: c
DD: Extracting: kmod-hpdsa

これでドライバの組み込みが終了したので、この時点で必ずUSBメモリを抜いておく。USBメモリを挿したままインストール作業を実行すると、USBメモリからOSインストールを行おうとしてエラーが発生する。

HP Smart Array P440 FBWC Controller

SAS HDDのアレイコントローラであるP440は、何もしなくてもCentOSから認識された。違いはなんなんだ。