2017年5月16日火曜日

multipathd の導入

というわけで、sagittarius / aquarius に mutlipathd を導入する。
途中、OS再起動 / 仮想マシンディスク領域の再認識を行うので、ゲストは止めておこう。

ざっくり以下の手順だ。
まずはインストール。
(プロンプトの前にホスト名が書いていない行は、sagittairus / aquarius 両方で実施)
$ sudo apt-get update
$ sudo apt-get --simulate install multipath-tools
$ sudo apt-get install multipath-tools

$ ps -ef | grep multipath

$ ls -ld /etc/multipath
(ディレクトリが無ければリブートだが、今回は両ホストともディレクトリが作成された)

$ ls /etc/multipath.conf
$ cd /usr/share/doc/multipath-tools/examples
$ sudo bash -c "zcat multipath.conf.annotated.gz > /etc/multipath.conf"
$ ls /etc/multipath.conf
$ cd

$ sudo vi /etc/multipath.conf
--ココから
10行目付近
#defaults {
↓先頭の#を削除
defaults {

215行目付近
# user_friendly_names no
↓先頭の#を削除し、no→yesへ書き換え
user_friendly_names yes

341行目付近
#}
↓先頭の#を削除
}
--ココまで
$ sudo systemctl reload multipathd.service

ここで、open-iscsi.service の再起動を行い、使用中の関連ディスクの再認識をする。
(そのため、ゲストは停止しておくこと)
$ sudo systemctl restart open-iscsi.service

ココから、wwids ファイルに手を加えていくのだが、色々弄った関係で、sagittarius / aquarius で iSCSI LUN の数が異なっている。
最終的には統一させる予定だが、今は各ホストに合わせて実施していく。

sagittarius は、sdd / sde / sdf / sdg / sdh の 5LUN 持っている。
(sagittarius) $ sudo cat /etc/multipath/wwids
(sagittarius) $ sudo multipath -a /dev/sdd
(sagittarius) $ sudo multipath -a /dev/sde
(sagittarius) $ sudo multipath -a /dev/sdf
(sagittarius) $ sudo multipath -a /dev/sdg
(sagittarius) $ sudo multipath -a /dev/sdh
(sagittarius) $ sudo cat /etc/multipath/wwids

(sagittarius) $ sudo cat /etc/multipath/bindings
(sagittarius) $ sudo multipath -r /dev/sdd
(sagittarius) $ sudo multipath -r /dev/sde
(sagittarius) $ sudo multipath -r /dev/sdf
(sagittarius) $ sudo multipath -r /dev/sdg
(sagittarius) $ sudo multipath -r /dev/sdh
(sagittarius) $ sudo cat /etc/multipath/bindings

もう一度ディスクの再認識。
(いちいち再認識する必要無いはずなんだけど…)
(sagittarius) $ sudo systemctl restart open-iscsi.service
(sagittairus) $ sudo multipath -ll

aquarius は sdb の 1LUN のみだ。
(aquarius) $ sudo cat /etc/multipath/wwids
(aquarius) $ sudo multipath -a /dev/sdb
(aquarius) $ sudo cat /etc/multipath/wwids

(aquarius) $ sudo cat /etc/multipath/bindings
(aquarius) $ sudo multipath -r /dev/sdb
(aquarius) $ sudo cat /etc/multipath/bindings

(aquarius) $ sudo systemctl restart open-iscsi.service
(aquarius) $ sudo multipath -ll

gemini / cancer の時はデバイスファイル名(mpath?)を変更したが、今回は変更しない。
後日、正規に iSCSI LUN を付けた時にはきちんと命名することにする。

あと、iSCSI のディスク領域(/etc/libvirt、/var/lib/libvirt、/var/log/libvirt がアンマウントされていると思うので、適宜マウントしておくこと。

次回からは、corosync / dlm / gfs2 の導入だ。

OpenvSwitch と open-iscsi の起動停止順

今度は、主題の通りの件だ。
gemini / cancer のペアの時に、ココで実施した内容の前半部分になる。
こちらも、sagittarius / aquarius で同時に実施する。
#例によって、仮想マシンは停止しておいてくれ。

$ cd /lib/systemd/system
$ sudo cp -pi open-iscsi.service open-iscsi.service.orig
$ sudo vi open-iscsi.service
--ココから
Wants=network-online.target remote-fs-pre.target iscsid.service
After=network-online.target iscsid.service
↓(前提条件に openvswitch-switch.service を追加)
Wants=network-online.target remote-fs-pre.target iscsid.service openvswitch-switch.serivce
After=network-online.target iscsid.service openvswitch-switch.service
--ココまで

$ sudo systemctl daemon-reload

この状態で再起動して、刺さる現象が消えたかどうか…。
$ df
(iscsi領域がマウントされていること)
$ sudo systemctl reboot

とりあえずOK。
次は multipathd の導入かな?

networking.service の設定変更

さて、今度は sagittarius / aquarius の networking.service の設定変更だ。
構築中に色々いじっていて、2台の間で設定が合っていないかもしれないけど、とりあえずは networking.service が無効化されている前提で書く。

sagittarius / aquarius のどちらも同じ作業なので、合わせて書く。

再起動が入るので、仮想マシンは停止しておく。
$ virsh list --all
起動している仮想マシンがあったら停止しておく。

自動起動ネットワークの一部無効化。
$ sudo vi /etc/default/networking
--ココから
#EXCLUDE_INTERFACES=
↓
EXCLUDE_INTERFACES=extsw
--ココまで

$ sudo systemctl daemon-reload
$ sudo systemctl is-enabled networking.service
$ sudo systemctl enable networking.service
$ sudo systemctl is-enabled networking.service

$ sudo systemctl reboot

これで終了。
次は、シャットダウン時に刺さる問題(OpenvSwitch と open-iscsi の起動停止順の制御)だ。

2017年5月15日月曜日

aquarius の仮想スイッチ名称変更(br-external→extsw)

続いて、同じ作業を aquarius に施す。
デバイス名、IPアドレスが異なるだけで、作業内容はまったく一緒だ。

ネットワーク設定ファイルの準備
(aquarius) $ sudo -i
(aquarius) # cd /etc/network/interfaces.d
(aquarius) # cp -pi 0010.br-external /root/0010.extsw
(aquarius) # vi /root/0010.extsw
--一部書き換え
auto br-external
allow-ovs br-external
iface br-external inet static
address 192.168.55.131
network 192.168.55.0
netmask 255.255.255.0
broadcast 192.168.55.255
gateway 192.168.55.1
ovs_type OVSBridge
ovs_ports enp0s25

dns-nameservers 192.168.55.1
↓
auto extsw
allow-ovs extsw
iface extsw inet static
address 192.168.55.131
network 192.168.55.0
netmask 255.255.255.0
broadcast 192.168.55.255
gateway 192.168.55.1
ovs_type OVSBridge
ovs_ports enp0s25

dns-nameservers 192.168.55.1
--ココまで

(aquarius) # cp -pi 0110.enp0s25 /root/0110.enp0s25.new
(aquarius) # vi /root/0110.enp0s25.new
--一部書き換え
auto enp0s25
allow-br-external enp0s25
iface enp0s25 inet manual
ovs_bridge br-external
ovs_type OVSPort
↓
#auto enp0s25
allow-extsw enp0s25
iface enp0s25 inet manual
ovs_bridge extsw
ovs_type OVSPort
--ココまで

(aquarius) # exit

続いて、OpenvSwitch の設定変更用のコマンドを作っておく。
(aquarius) $ vi 0001_ovs-vsctl_show
--ココから
sudo ovs-vsctl show
--ココまで

(aquarius) $ vi 0002_ovs-vsctl_add-br_extsw
--ココから
sudo ovs-vsctl add-br extsw
--ココまで

(aquarius) $ ln -s 0001_ovs-vsctl_show 0003_ovs-vsctl_show
(aquarius) $ vi 0004_ovs-vsctl_del-port_br-external_enp0s25
--ココから
sudo ovs-vsctl del-port br-external enp0s25
--ココまで

(aquarius) $ ln -s 0001_ovs-vsctl_show 0005_ovs-vsctl_show
(aquarius) $ vi 0006_ovs-vsctl_add-port_extsw_enp0s25
--ココから
sudo ovs-vsctl add-port extsw enp0s25
--ココまで

(aquarius) $ ln -s 0001_ovs-vsctl_show 0007_ovs-vsctl_show

ネットワークの切断が発生するため、ゲストOSは全て停止しておこう。
(aquarius) $ virsh list --all
稼働しているゲストOSは片っ端から停止だ。

同様に、ネットワーク経由のファイルシステム等は全て切断だ。
(aquarius) $ sudo systemctl stop /etc/libvirt
(aquarius) $ sudo systemctl stop /var/lib/libvirt
(aquarius) $ sudo systemctl stop /var/log/libvirt
(aquarius) $ sudo systemctl stop /mnt/iso-os

(aquarius) $ sudo vgchange -a n vg-kvm

(aquarius) $ iscsiadm -m session
(aquarius) $ sudo systemctl stop open-iscsi.service
(aquarius) $ iscsiadm -m session

ここまで準備が整ったら、直接コンソールで作業だ。
(aquarius) $ ip address show
(aquarius) $ sudo mv /etc/network/interfaces.d/0010.br-external /root/
(aquarius) $ sudo mv /etc/network/interfaces.d/0110.enp0s25 /root/
(aquarius) $ sudo mv /root/0010.extsw \
/etc/network/interfaces.d/0010.extsw
(aquarius) $ sudo mv /root/0110.enp0s25.new \
/etc/network/interfaces.d/0110.enp0s25

(aquarius) $ bash 0001_ovs-vsctl_show
(aquarius) $ bash 0002_ovs-vsctl_add-br_extsw
(aquarius) $ bash 0003_ovs-vsctl_show
(aquarius) $ bash 0004_ovs-vsctl_del-port_br-external_enp0s25
(aquarius) $ bash 0005_ovs-vsctl_show
(aquarius) $ bash 0006_ovs-vsctl_add-port_extsw_enp0s25
(aquarius) $ bash 0007_ovs-vsctl_show

(aquarius) $ sudo systemctl daemon-reload
(aquarius) $ sudo systemctl reboot
--コンソール作業ココまで

これでまた、ssh でログイン出来るだ。
(aquarius) $ ip address show

ネットワーク経由のファイルシステム等の確認。
(aquarius) $ iscsiadm -m session
(aquarius) $ df

KVM仮想スイッチの定義を、今までの br-external から、新しい extsw に変更。
(aquarius) $ virsh net-list --all
(aquarius) $ virsh net-edit ovsbridge
--以下のように修正
<bridge name='br-external'/>
↓
<bridge name='extsw'/>
--ココまで

以前まで使っていた br-external は削除しよう。
(aquarius) $ sudo ovs-vsctl show
(aquarius) $ sudo ovs-vsctl del-br br-external
(aquarius) $ sudo ovs-vsctl show

これでいいはずだ。
念のためにもう一度 OS 再起動して確認しておこう。
(aquarius) $ sudo systemctl reboot
(aquarius) $ ip address show
(aquarius) $ systemctl status

必要に応じて、仮想マシンの起動停止も確認しておくこと。

これで aquarius での作業は完了。
次は、networking.service の修正だ。

sagittarius の仮想スイッチ名称変更(br-external→extsw)

というわけで最初の作業だ。
この作業は、既にココで記載しているのとほぼ同じやり方になるが、ちょっとやり方を変えることにする。

ネットワーク設定ファイルの準備
(sagittarius) $ sudo -i
(sagittarius) # cd /etc/network/interfaces.d
(sagittarius) # cp -pi 0010.br-external /root/0010.extsw
(sagittarius) # vi /root/0010.extsw
--一部書き換え
auto br-external
allow-ovs br-external
iface br-external inet static
address 192.168.55.130
network 192.168.55.0
netmask 255.255.255.0
broadcast 192.168.55.255
gateway 192.168.55.1
ovs_type OVSBridge
ovs_ports enp0s31f6

dns-nameservers 192.168.55.1
↓
auto extsw
allow-ovs extsw
iface extsw inet static
address 192.168.55.130
network 192.168.55.0
netmask 255.255.255.0
broadcast 192.168.55.255
gateway 192.168.55.1
ovs_type OVSBridge
ovs_ports enp0s31f6

dns-nameservers 192.168.55.1
--ココまで

(sagittarius) # cp -pi 0110.enp0s31f6 /root/0110.enp0s31f6.new
(sagittarius) # vi /root/0110.enp0s31f6.new
--一部書き換え
auto enp0s31f6
allow-br-external enp0s31f6
iface enp0s31f6 inet manual
ovs_bridge br-external
ovs_type OVSPort
↓
#auto enp0s31f6
allow-extsw enp0s31f6
iface enp0s31f6 inet manual
ovs_bridge extsw
ovs_type OVSPort
--ココまで

(sagittarius) # exit

続いて、OpenvSwitch の設定変更用のコマンドを作っておこう。
(sagittarius) $ vi 0001_ovs-vsctl_show
--ココから
sudo ovs-vsctl show
--ココまで

(sagittarius) $ vi 0002_ovs-vsctl_add-br_extsw
--ココから
sudo ovs-vsctl add-br extsw
--ココまで

(sagittarius) $ ln -s 0001_ovs-vsctl_show 0003_ovs-vsctl_show
(sagittarius) $ vi 0004_ovs-vsctl_del-port_br-external_enp0s31f6
--ココから
sudo ovs-vsctl del-port br-external enp0s31f6
--ココまで

(sagittarius) $ ln -s 0001_ovs-vsctl_show 0005_ovs-vsctl_show
(sagittarius) $ vi 0006_ovs-vsctl_add-port_extsw_enp0s31f6
--ココから
sudo ovs-vsctl add-port extsw enp0s31f6
--ココまで

(sagittarius) $ ln -s 0001_ovs-vsctl_show 0007_ovs-vsctl_show

ネットワークの切断が発生するため、ゲストOSは全て停止しておこう。
(sagittarius) $ virsh list --all
稼働しているゲストOSは片っ端から停止だ。

同様に、ネットワーク経由のファイルシステム等は全て切断だ。
(sagittarius) $ sudo systemctl stop /etc/libvirt
(sagittarius) $ sudo systemctl stop /var/lib/libvirt
(sagittarius) $ sudo systemctl stop /var/log/libvirt
(sagittarius) $ sudo systemctl stop /mnt/iso-os

(sagittarius) $ sudo vgchange -a n vg-kvm

(sagittarius) $ iscsiadm -m session
(sagittarius) $ sudo systemctl stop open-iscsi.service
(sagittarius) $ iscsiadm -m session

ここまで準備が整ったら、直接コンソールで作業だ。
(sagittarius) $ ip address show
(sagittarius) $ sudo mv /etc/network/interfaces.d/0010.br-external /root/
(sagittarius) $ sudo mv /etc/network/interfaces.d/0110.enp0s31f6 /root/
(sgaittarius) $ sudo mv /root/0010.extsw \
/etc/network/interfaces.d/0010.extsw
(sagittarius) $ sudo mv /root/0110.enp0s31f6.new \
/etc/network/interfaces.d/0110.enp0s31f6

(sagittarius) $ bash 0001_ovs-vsctl_show
(sagittarius) $ bash 0002_ovs-vsctl_add-br_extsw
(sagittarius) $ bash 0003_ovs-vsctl_show
(sagittarius) $ bash 0004_ovs-vsctl_del-port_br-external_enp0s31f6
(sagittarius) $ bash 0005_ovs-vsctl_show
(sagittarius) $ bash 0006_ovs-vsctl_add-port_extsw_enp0s31f6
(sagittarius) $ bash 0007_ovs-vsctl_show

(sagittarius) $ sudo systemctl daemon-reload
(sagittarius) $ sudo systemctl reboot
--コンソール作業ココまで

これでまた、ssh でログイン出来るはずだ。
(sagittarius) $ ip address show

ネットワーク経由のファイルシステム等の確認。
(sagittarius) $ iscsiadm -m session
(sagittarius) $ df

KVM仮想スイッチの定義を、今までの br-external から、新しい extsw に変更しよう。
(sagittarius) $ virsh net-list --all
(sagittarius) $ virsh net-edit ovsbridge
--以下のように修正
<bridge name='br-external'/>
↓
<bridge name='extsw'/>
--ココまで

以前まで使っていた br-external は削除しよう。
(sagittarius) $ sudo ovs-vsctl show
(sagittarius) $ sudo ovs-vsctl del-br br-external
(sagittarius) $ sudo ovs-vsctl show

これでいいはずだ。
念のためにもう一度 OS 再起動して確認しておこう。
(sagittarius) $ sudo systemctl reboot
(sagittarius) $ ip address show
(sagittarius) $ systemctl status

必要に応じて、仮想マシンの起動停止も確認しておくといいぞ。

これで sagittarius での作業は完了。
ちょっと長くなったので、aquarius は次回実施だ。

これまでを踏まえて、aquarius / sagittarius の手入れを

gemini / cancer を用いて、かなりの検証が出来た。
で、その内容はホストである aquarius / sagittarius に反映させておきたい。

一体いくつの変更/修正点があるのだろうか…
  1. openvswitch の仮想スイッチ名の変更(br-external→extsw)
  2. 自動起動ネットワークの手直し(/etc/default/networking)
  3. OpenvSwitch と open-iscsi の起動停止順の制御
  4. multipathd の導入
  5. corosync / dlm / gfs2 の導入とセットアップ
  6. CLVM の導入とセットアップ
  7. 仮想マシン領域の gfs2 化
え?コレだけ?結構色々検証したと思ったけど、まとめてみるとこの程度か…。
結構時間がかかったんだな…。

というわけで、次回から上記に従って進めていくことにする。

2017年5月12日金曜日

dlmのフェンシング(その4:fence_all /bin/true)

続いて、enable_fencing は 1 だけど、fence_all を /bin/true にする形を検証する。
前回と同様、gemini / cancer の /etc/dlm/dlm.conf を書き換えるところから。

(gemini) $ sudo vi /etc/dlm/dlm.conf
--ココから
enable_fencing=0
↓1に書き戻す
enable_fencing=1

1行追加する。
fence_all /bin/true
--ココまで

cancer も同様に。
(cancer) $ sudo vi /etc/dlm/dlm.conf
--ココから
enable_fencing=0
↓1に書き戻す
enable_fencing=1

1行追加する
fence_all /bin/true
--ココまで

どうも、dlm.service の再起動が上手く行かなったので、leo を停止し、gemini / cancer は再起動する。
(leo) $ sudo systemctl poweroff
(gemini) $ sudo systemctl reboot
(cancer) $ sudo systemctl reboot

状態確認だ。
(gemini) $ dlm_tool status
(cancer) $ dlm_tool status
(gemini) $ dlm_tool ls
(cancer) $ dlm_tool ls

前回のテスト前半部分はすっ飛ばして、leo を起動してテストする。

既に gemini 上で leo が動いていると思うので、前回の後半部分、仮想マシンの起動からテストする。
(gemini) $ virsh list --all
(gemini) $ virsh start leo
(gemini) $ virsh list --all

leo にログインし、ping を打ち続ける。
(leo) $ ping 192.168.55.130

leo を cancer へ移動。(今回は sagittarius から実行する。対象ホストに注意。)
(sagittarius) $ virsh -c qemu+ssh://192.168.55.136/system list --all
(sagittarius) $ virsh -c qemu+ssh://192.168.55.137/system list --all
(sagittarius) $ virsh -c qemu+ssh://192.168.55.136/system \
migrate --live \
--domain leo \
--desturi qemu+ssh://192.168.55.137/system \
--migrateuri tcp://192.168.55.137/
(sagittarius) $ virsh -c qemu+ssh://192.168.55.136/system list --all
(sagittarius) $ virsh -c qemu+ssh://192.168.55.137/system list --all

gemini を強制再起動
(sagittarius) $ virsh reset gemini
(cancer) $ dlm_tool status
(cancer) $ dlm_tool ls

(gemini の再起動が確認できたら) leo を gemini に移動。
(sagittarius) $ virsh -c qemu+ssh://192.168.55.136/system list --all
(sagittarius) $ virsh -c qemu+ssh://192.168.55.137/system list --all
(sagittarius) $ virsh -c qemu+ssh://192.168.55.137/system \
migrate --live \
--domain leo \
--desturi qemu+ssh://192.168.55.136/system \
--migrateuri tcp://192.168.55.136/
(sagittarius) $ virsh -c qemu+ssh://192.168.55.136/system list --all
(sagittarius) $ virsh -c qemu+ssh://192.168.55.137/system list --all

問題無いな…。
というわけで、この設定をそのまま採用しよう。

と思ったけど、dlm_controld がダウンする現象が発生した。
多分、その他のフェンシング設定が関係している気がする…。
enable_fencing=0 の方では発生しないっぽい…。

ちょっと調べたけど分からなかったので、当面は「その3」で記載した方法で進めていくことにする。
将来的に pacemaker を使う時に、もう一度検討することになると思う。