2016年11月4日金曜日

LIO Cluster [LIO, DRBD, Pacemaker による冗長化 iSCSI Target] (その3)クラスタ関連パッケージのインストール


LIO Cluster (冗長化 iSCSI Target) を動作させるために必要となるクラスタ関連パッケージをインストールします。

Pacemaker & Corosync のパッケージについては、以下の3種類のうちから選択することになります。
・rhel7 アドオンパッケージに含まれるもの
・Linux-HA Japan が配布しているもの
・Linbit 社が配布しているもの

今回の方針として、Oracle 社のサポートを最大限利用できるようにするために、rhel7 アドオンパッケージに含まれるものを利用します。Oracle Linux のサブスクリプションを購入した場合、別料金なしで利用可能です。rhel では別料金です。サポート不要の場合、Oracle Linux は無償利用可能です。インストーラ内の別リポジトリに含まれています。
このパッケージでは、pcs の利用が必須で、crmsh が配布されていません。また、マニュアルで明示的に、手作業での corosync.conf、CIB ファイルの編集を禁じている点に注意が必要です。
その他の2種については、crmsh を利用して操作します。Linux-HA Japan では pcs も配布していますが、利用は非推奨ということみたいです。
Linux-HA Japan のパッケージ集には、拡張リソース・エージェントが含まれており、非常に便利だと思います。
Linbit 社が配布しているものは、契約しないと入手不能です。オプションとしてサポート範囲に含まれる契約をする必要があります。

DRBD のカーネル・モジュールについては、以下の3種類のうちから選択することになります。
・Oracle Linux の UEK に含まれるもの
・ELRepo が配布しているもの
・Linbit 社が配布しているもの

今回は、UEK4 に含まれるカーネル・モジュールを利用します。カーネルパッケージに含まれているので、カーネルのバージョンとの整合性は気にしなくてもよいです。
ELRepo のものは、カーネルパッケージのマイナーバージョンが変わっても自動的に利用できるようになっています。
Linbit 社のものは、カーネルパッケージのマイナーバージョン毎に配布されるパッケージを入手して利用する必要があります。Linbit 社が配布しているものは、契約しないと入手不能です。

DRBD の管理ツールについては、以下の2種類のうちから選択することになります。
・ELRepo が配布しているもの
・Linbit 社が配布しているもの

今回は前者を利用します。Oracle 社のサポート外となるパッケージです。
Linbit 社が配布しているものは、契約しないと入手不能です。


インストール・メディアに含まれている標準パッケージ、インストール・メディアに含まれていない標準パッケージ、標準外パッケージの順にインストールしていきます。

インストーラを DVD ドライブにセットし、マウントします。


sudo mount /dev/cdrom /mnt


インストール・メディアに含まれる標準パッケージをインストールします。


sudo yum -y --disablerepo=\* --enablerepo=media,media-ha install \
 lvm2 \
 snapper \
 iscsi-initiator-utils \
 targetcli \
 pacemaker \
 pcs \
 resource-agents


iSCSI イニシエータ関連サービスの自動起動を無効化します。利用予定はありませんが、テストで使う可能性を考慮してインストールしたものです。


sudo systemctl disable iscsi.service
sudo systemctl disable iscsid.socket
sudo systemctl disable iscsiuio.socket


インターネットと接続可能な端末で以下のコマンドを実行する等して、必要なパッケージを収集します。


curl -O http://public-yum.oracle.com/repo/OracleLinux/OL7/UEKR4/x86_64/getPackage/kernel-uek-4.1.12-61.1.16.el7uek.x86_64.rpm
curl -O http://public-yum.oracle.com/repo/OracleLinux/OL7/UEKR4/x86_64/getPackage/kernel-uek-firmware-4.1.12-61.1.16.el7uek.noarch.rpm
curl -O http://public-yum.oracle.com/repo/OracleLinux/OL7/UEKR4/x86_64/getPackage/xfsprogs-3.2.3-1.0.2.el7.x86_64.rpm
curl -O http://public-yum.oracle.com/repo/OracleLinux/OL7/latest/x86_64/getPackage/linux-firmware-20160604-44.git57b649d9.0.2.el7.noarch.rpm
curl -O http://public-yum.oracle.com/repo/OracleLinux/OL7/latest/x86_64/getPackage/dracut-033-360.0.3.el7_2.1.x86_64.rpm
curl -O http://public-yum.oracle.com/repo/OracleLinux/OL7/latest/x86_64/getPackage/dracut-config-rescue-033-360.0.3.el7_2.1.x86_64.rpm
curl -O http://public-yum.oracle.com/repo/OracleLinux/OL7/latest/x86_64/getPackage/dracut-network-033-360.0.3.el7_2.1.x86_64.rpm
curl -O http://elrepo.org/linux/elrepo/el7/x86_64/RPMS/drbd84-utils-8.9.6-1.el7.elrepo.x86_64.rpm


収集したパッケージを管理者用一般ユーザのホームディレクトリにコピーします。

コピーされたファイルを確認します。


ls -l *.rpm
-rw-rw-r-- 1 admin admin   318348 Oct 29 19:10 dracut-033-360.0.3.el7_2.1.x86_64.rpm
-rw-rw-r-- 1 admin admin    50588 Oct 29 19:10 dracut-config-rescue-033-360.0.3.el7_2.1.x86_64.rpm
-rw-rw-r-- 1 admin admin    91800 Oct 29 19:10 dracut-network-033-360.0.3.el7_2.1.x86_64.rpm
-rw-rw-r-- 1 admin admin   410308 Oct 29 19:10 drbd84-utils-8.9.6-1.el7.elrepo.x86_64.rpm
-rw-rw-r-- 1 admin admin 44036196 Oct 29 19:16 kernel-uek-4.1.12-61.1.16.el7uek.x86_64.rpm
-rw-rw-r-- 1 admin admin  2097548 Oct 29 19:16 kernel-uek-firmware-4.1.12-61.1.16.el7uek.noarch.rpm
-rw-rw-r-- 1 admin admin 32092728 Oct 29 19:10 linux-firmware-20160604-44.git57b649d9.0.2.el7.noarch.rpm
-rw-rw-r-- 1 admin admin   879456 Oct 29 19:10 xfsprogs-3.2.3-1.0.2.el7.x86_64.rpm

file *.rpm
dracut-033-360.0.3.el7_2.1.x86_64.rpm:                     RPM v3.0 bin i386/x86_64 dracut-033-360.0.3.el7_2.1
dracut-config-rescue-033-360.0.3.el7_2.1.x86_64.rpm:       RPM v3.0 bin i386/x86_64 dracut-config-rescue-033-360.0.3.el7_2.1
dracut-network-033-360.0.3.el7_2.1.x86_64.rpm:             RPM v3.0 bin i386/x86_64 dracut-network-033-360.0.3.el7_2.1
drbd84-utils-8.9.6-1.el7.elrepo.x86_64.rpm:                RPM v3.0 bin i386/x86_64 drbd84-utils-8.9.6-1.el7.elrepo
kernel-uek-4.1.12-61.1.16.el7uek.x86_64.rpm:               RPM v3.0 bin i386/x86_64 kernel-uek-4.1.12-61.1.16.el7uek
kernel-uek-firmware-4.1.12-61.1.16.el7uek.noarch.rpm:      RPM v3.0 bin noarch kernel-uek-firmware-4.1.12-61.1.16.el7uek
linux-firmware-20160604-44.git57b649d9.0.2.el7.noarch.rpm: RPM v3.0 bin noarch linux-firmware-20160604-44.git57b649d9.0.2.el7
xfsprogs-3.2.3-1.0.2.el7.x86_64.rpm:                       RPM v3.0 bin i386/x86_64 xfsprogs-3.2.3-1.0.2.el7


UEK4 カーネルをインストールします。


sudo yum -y --disablerepo=\* --enablerepo=media localinstall \
 kernel-uek-*.rpm \
 xfsprogs-*.rpm \
 linux-firmware-*.rpm \
 dracut-*.rpm


drbd 管理ツールをインストールします。


sudo yum -y --disablerepo=\* --enablerepo=media localinstall drbd84-utils-*.rpm


インストーラをアンマウントし、DVD ドライブから取り外します。


sudo umount /mnt


追加インストールしたパッケージの設定をバックアップします。


sudo cp -a /etc{,~}/bash_completion.d/drbdadm
sudo cp -a /etc{,~}/bash_completion.d/pcs
sudo cp -a /etc{,~}/corosync
sudo cp -a /etc{,~}/cron.daily/snapper
sudo cp -a /etc{,~}/cron.hourly/snapper
sudo cp -a /etc{,~}/dbus-1/system.d/corosync-signals.conf
sudo cp -a /etc{,~}/dbus-1/system.d/org.opensuse.Snapper.conf
sudo cp -a /etc{,~}/drbd.conf
sudo cp -a /etc{,~}/drbd.d
sudo cp -a /etc{,~}/ha.d
sudo cp -a /etc{,~}/iscsi
sudo cp -a /etc{,~}/ld.so.conf.d/kernel-4.1.12-61.1.16.el7uek.x86_64.conf
sudo cp -a /etc{,~}/logrotate.d/corosync
sudo cp -a /etc{,~}/logrotate.d/iscsiuiolog
sudo cp -a /etc{,~}/logrotate.d/pacemaker
sudo cp -a /etc{,~}/logrotate.d/pcsd
sudo cp -a /etc{,~}/logrotate.d/snapper
sudo cp -a /etc{,~}/lvm
sudo cp -a /etc{,~}/nanorc
sudo cp -a /etc{,~}/NetworkManager/dispatcher.d/04-iscsi
sudo cp -a /etc{,~}/pam.d/pcsd
sudo cp -a /etc{,~}/snapper
sudo cp -a /etc{,~}/sysconfig/corosync
sudo cp -a /etc{,~}/sysconfig/corosync-notifyd
sudo cp -a /etc{,~}/sysconfig/pacemaker
sudo cp -a /etc{,~}/sysconfig/pcsd
sudo cp -a /etc{,~}/sysconfig/snapper
sudo cp -a /etc{,~}/systemd/system/sockets.target.wants
sudo cp -a /etc{,~}/systemd/system/sysinit.target.wants
sudo cp -a /etc{,~}/target
sudo cp -a /etc{,~}/xen
sudo cp -a /etc/passwd   /etc~/passwd_$(date +%Y%m%d_%H%M%S)
sudo cp -a /etc/passwd-  /etc~/passwd-_$(date +%Y%m%d_%H%M%S)
sudo cp -a /etc/shadow   /etc~/shadow_$(date +%Y%m%d_%H%M%S)
sudo cp -a /etc/shadow-  /etc~/shadow-_$(date +%Y%m%d_%H%M%S)
sudo cp -a /etc/group    /etc~/group_$(date +%Y%m%d_%H%M%S)
sudo cp -a /etc/group-   /etc~/group-_$(date +%Y%m%d_%H%M%S)
sudo cp -a /etc/gshadow  /etc~/gshadow_$(date +%Y%m%d_%H%M%S)
sudo cp -a /etc/gshadow- /etc~/gshadow-_$(date +%Y%m%d_%H%M%S)
sudo cp -a /etc/resolv.conf /etc~/resolv.conf_$(date +%Y%m%d_%H%M%S)
sudo cp -a /etc/chrony.keys /etc~/chrony.keys_$(date +%Y%m%d_%H%M%S)


カーネルパラメータを設定します。


cat << 'EOF' | sudo tee /etc/sysctl.d/tgt.conf
net.core.netdev_max_backlog = 250000
net.core.optmem_max = 16777216
net.core.rmem_default = 16777216
net.core.rmem_max = 16777216
net.core.wmem_default = 16777216
net.core.wmem_max = 16777216
net.ipv4.tcp_mem = 39363 209944 314904
net.ipv4.tcp_rmem = 8192 87380 16777216
net.ipv4.tcp_wmem = 8192 65536 16777216
net.ipv4.tcp_no_metrics_save = 1
net.ipv4.tcp_sack = 0
net.ipv4.tcp_timestamps = 0
EOF


※ 再起動前に設定したかったので、ここで行います。

※ 設定をすぐに反映したい場合には、「sysctl -p」ではなく、「sysctl --system」を実行します。

再起動します。


sudo reboot


0 件のコメント:

コメントを投稿