CentOS 6.8へのアップデート後にshutdownでエラーメッセージが表示される [CentOS]
shutdown 時に、下記のファイルが存在しない旨のメッセージが出力される。
・/var/lib/alsa/asound.state
(補足)
・CentOS 6.7 から CentOS 6.8 へのアップデート後に発生するようになった。
・/etc/init.d/halt 内の alsactl により使用される。
・該当するパッケージ: alsa-utils-1.1.0-8.el6.i686
2. 原因
アップデートにより、alsactl が使用するファイルのパスが変わったためである。
・alsa-utils-1.0.22-9.el6_6.i686 の場合
/etc/asound.state
・alsa-utils-1.1.0-8.el6.i686 の場合
/var/lib/alsa/asound.state
3. 対処方法
下記の手順で、当該ファイルを作成する。
# cd /var/lib # mkdir alsa # chmod 755 alsa # cd alsa # touch asound.state # chmod 644 asound.state
CentOS 6.8の不具合 [CentOS]
・現時点では原因は不明
・対応を検討中
1. ノード名を付けて指定したディスプレイをオープンできない
% xterm -display localhost:0 xterm Xt error: Can't open display: localhost:0 % xterm -display `hostname`:0 xterm Xt error: Can't open display: xxx.xxx.xxx:0 % xterm -display `hostname -i`:0 xterm Xt error: Can't open display: 192.168.0.11:0
(補足)
・当該パッケージ: xorg-x11-server-Xorg-1.17.4-9.el6.centos.i686
・'xhost +' を実行しても状況に変化はない。
・ノード名を付けない場合(-display :0)には、オープンできる。
2. rsh-server が正常に機能しない
(1) 即座にクローズされる。
% rsh `hostname` … テストのためローカルノード上で実行 rlogin: connection closed.
(2) ログインできても、プロンプトが表示されない。
% rsh `hostname` /bin/bash … テストのためローカルノード上で実行 exit ... コマンドの実行は可能
(補足)
・当該パッケージ: rsh-server-0.17-64.el6.i686
・rsh-server のバージョンはアップデート前と同じである。
3. telnet-server が正常に機能しない
・プロンプトの 1 カラム目が表示されない。
・入力がエコーされない(ただし、コマンドの実行、実行結果の出力は可能)。
% telnet `hostname` … テストのためローカルノード上で実行 Trying 192.168.0.11... Connected to xxx.xxx.xxx. Escape character is '^]'. CentOS release 6.8 (Final) Kernel 2.6.32-71.29.1.el6.i686 on an i686 ogin: Password:
(補足)
・当該パッケージ: telnet-server-0.17-48.el6.i686
・telnet-server のバージョンはアップデート前と同じである。
CentOS 6.8へのアップデート後にlogrotateでエラーが発生 [CentOS]
/etc/cron.daily/logrotate の実行で、下記のエラーが発生する。
error: consolekit:1 duplicate log entry for /var/log/ConsoleKit/history error: found error in /var/log/ConsoleKit/history , skipping
(補足)
・CentOS 6.7 から CentOS 6.8 へのアップデート後に発生するようになった。
・該当するパッケージ: ConsoleKit-0.4.1-6.el6.i686
2. 原因
/etc/logrotate.d/ に ConsoleKit と consolekit が存在するため。
(補足)
バージョンアップの際に、consolekit が削除されなかったものと思われる。
・ConsoleKit-0.4.1-3.el6.i686: /etc/logrotate.d/consolekit を使用
・ConsoleKit-0.4.1-6.el6.i686: /etc/logrotate.d/ConsoleKit を使用
3. 対処方法
/etc/logrotate.d/consolekit を削除する。
Firefoxのアドオンの整理 [Linux]
その結果、下記のアドオンに絞り込んだ。
# Firefox のバージョン
・Firefox 38.8.0 ESR
・Firefox 45.1.1 ESR
1. Adblock Plus
不要な広告表示を抑止する。
2. Classic Theme Restorer
Firefox の UI をカスタマイズする。
(補足)
再起動ボタンの表示にも対応可能である。
3. Flashblock
Flash コンテンツの自動再生を抑止する。
4. gtranslate
Google 翻訳を使用した翻訳機能である。
翻訳の結果を見たいが、元のページを変更されたくないという方にはお薦めである。
5. Stylish
ユーザースタイルシートを管理する。
(補足)
Remove Google left sidebar for any country と自作のスタイルを使用している。
6. Tab Mix Plus
タブ機能を拡張する。
(補足)
タブが 1 個の場合には、タブを非表示にすることも可能である。
7. User Agent Switcher
User Agent を一時的に変更する。
(補足)
Linux 版 Firefox ではログインできないサイトへのログイン時に使用している。
8. Vacuum Places Improved
SQLite ファイルの最適化を行う。
9. YesScript
特定のページ(URL) において、JavaScript の使用を抑止する。
(補足)
通常は無効化しており、必要となった場合に有効化している。
10. 備考
Windows 版 Firefox では、さらに下記のアドオンを使用している。
(1) IE Tab v2
Firefox 上での Internet Explorer のレタリングエンジンの使用を可能にする。
(2) Video DownloadHelper
MP3 ファイルのダウンロード(作成)を行う。
通常は無効化しており、必要な時に有効化している。
ntpdとchronydの違い [CentOS]
そこで、ntpd と chronyd について、違いを調べてみた。
なお、以下はドキュメント・ベースでの情報である(chronyd を使用していないため)。
# ソフトウェアのバージョン
・chrony-2.1.1-1.el7.centos.x86_64
・ntp-4.2.6p5-22.el7.centos.1.x86_64
1. chronyd にのみある機能
(1) ハードウェアクロックを同期することができる。
# ハードウェアクロック(RTC) を同期する(11 分毎に実施)。 rtcsync
・/etc/chrony.conf の初期値として設定されている。
(2) step/slew モードの切り替えを細かく指定できる。
(例) # 時刻のズレが 10 秒よりも大きい場合、最初の 3 回は slew モードの代わりに # step モードを使用する。 makestep 10 3
・/etc/chrony.conf の初期値として設定されている。
(3) slew モードでの同期速度の指定ができる。
maxslewrate <rate>
・default: 83333.333 (msec/sec)
・ntpd の slew レートは 500 (msec/sec) 固定である。
(4) slew モードで同期できるズレの最大値を指定できる。
(例) # 最初のクロック更新後に 時刻のズレのチェックを 2 回無視し、その後の # チェックで 1000 秒よりもがズレが大きい場合に時刻同期を終了する。 maxchange 1000 1 2
(補足)
ntpd の場合には、下記の通りである。
・-x オプションの指定なしの場合: 128 (msec)
・-x オプションの指定ありの場合: 600 (sec)
(5) 使用するポートを指定できる。
port <port-number>
・default: 123
・ntpd での使用ポートは 123 固定である。
2. 備考
(1) CentOS 7 での ntpd の使用
chronyd を停止することにより、ntpd が使用可能となる。
# systemctl stop chronyd # systemctl disable chronyd # systemctl start ntpd # systemctl enable ntpd
(2) 参考情報
・access.redhat.com/documentation/
・chrony.tuxfamily.org/doc/
ハードウェアクロックのシステムクロックとの同期 [Linux]
詳細は、以下の通りである。
1. 状況と対処方法
(1) CentOS 6
シャットダウン、またはリブート時に実施される。
(/etc/init.d/halt)
(2) Debian 7
シャットダウン、またはリブート時に実施される。
(/etc/rc{0,6}.d/K08hwclock.sh -> /etc/init.d/hwclock.sh)
(3) Debian 8 (systemd、ntpd を使用)
実施されない(chronyd を使用する場合を除く)。
このため、下記の対応を実施する。
(a) /usr/sbin/halt.local というファイル名のシェルスクリプトの作成
halt-local.service で実行される。
(b) /usr/sbin/halt.local への設定
下記の設定を追加する。
# synchronize the hardware clock to the system time hwclock --systohc
(c) halt-local.service の自動起動の設定
自動起動が無効化されている(disabled と出力される)場合には、有効化する。
# systemctl status halt-local.service (または # systemctl list-unit-files halt-local.service) # systemctl enable halt-local.service
(4) CentOS 7 (systemd、ntpd を使用)
実施されない(chronyd を使用する場合を除く)。
このため、下記の対応を実施する。
(a) /usr/sbin/halt.local の作成
halt-local.service で実行される。
(b) /usr/sbin/halt.local への設定
下記の設定を追加する。
# synchronize the hardware clock to the system time hwclock --systohc
(c) halt-local.service の自動起動の設定
自動起動が無効化されている(disabled と出力される)場合には、有効化する。
# systemctl status halt-local.service (または # systemctl list-unit-files halt-local.service) # systemctl enable halt-local.service
2. 備考
ログ: /etc/adjtime
DRBDの試用 [CentOS]
詳細は、以下の通りである。
1. DRBD (Distributed Replicated Block Device) の機能
複数のノード間で、パーティションをミラーリングするソフトウェアである。
・TCP/IP ネットワークを利用して同期(ミラーリング)される。
・特別なハードウェアを必要としない。
・Linux 上で動作するオープンソース・ソフトウェアである。
・クラスタリングソフトと組み合わせて、Shared nothing 型の HA クラスタを構成できる。
2. システム要件
(1) ソフトウェアのバージョン
・OS: CentOS 6.7
・drbd84-utils-8.9.5-1.el6.elrepo.i686
・kmod-drbd84-8.4.7-1_1.el6.elrepo.i686
(2) 使用するノード
・vm1.private.net(192.168.0.21)
・vm4.private.net(192.168.0.24)
(3) 使用するデバイス
・パーティション: /dev/sdb1
・DRBD 用デバイス: /dev/drbd0
3. 導入手順
3-1. 手順-1
関係するすべてのノードで、下記の手順を実施する。
(1) ネットワーク環境の構築
(2) パッケージのインストール
(a) elrepo.org をリポジトリに追加
(b) パッケージのインストール
# yum install drbd84-utils kmod-drbd84
(3) DRBD の設定
(a) /etc/drbd.d/global_common.conf の編集
global { usage-count no; } common { handlers { } startup { wfc-timeout 60; } options { } disk { resync-rate 50M; } net { protocol C; csums-alg sha1; verify-alg sha1; } }
・usage-count: DRBD プロジェクトへの情報提供の有無(yes/no)
・wfc-timeout: 起動時の他ノードとの接続タイムアウト(sec)
・resync-rate: 再同期に使用する最大帯域幅(Byte/sec)
・protocol: 同期プロトコルのモード(A:非同期, B:メモリ同期, C:同期)
・csums-alg: 更新の検出に使用するアルゴリズム
・verify-alg: 照合に使用するアルゴリズム
(b) /etc/drbd.d/r0.res の編集
resource r0 { meta-disk internal; device /dev/drbd0; disk /dev/sdb1; on vm1.private.net { address 192.168.0.21:7788; } on vm4.private.net { address 192.168.0.24:7788; } }
・meta-disk: メタ情報の保存方法
・device: DRBD デバイス
・disk: DRBD デバイスを構成するパーティション
・address: ノードのアドレス、使用するポート
(c) メタデータの作成
# drbdadm create-md r0
(補足)
パーティション内にファイルシステムが存在する場合には、エラーとなる。
(その旨のエラーが出力される。)
この場合には、下記の手順により当該パーティションを 0 クリアする。
# dd if=/dev/zero of=<dev-path> bs=1M count=1
(4) リソースの有効化
(a) リソースの有効化
# drbdadm up r0
(b) 状態の確認
# cat /proc/drbd
正常終了した場合には、下記のように出力される。
cs:Connected ro:Secondary/Secondary ds:Inconsistent/Inconsistent
(5) drbd の自動起動の有効化
# chkconfig drbd on
3-2. 手順-2
該当するノードで、下記の手順を実施する。
(1) 初期同期
vm4.private.net(同期先) で下記の手順を実施する。
(a) 現在のデータの破棄
# drbdadm invalidate r0
(b) 状況の確認
# cat /proc/dbrd
同期完了後には、下記のように出力される。
cs:Connected ro:Secondary/Secondary ds:UpToDate/UpToDate
(2) ファイルシステムの作成
vm1.private.net(同期元) で下記の手順を実施する。
(a) Primary への移行
# drbdadm primary r0
(b) ファイルシステムの作成
# mke2fs -j /dev/drbd0
(補足)
同期されるため、他ノードでの実施は不要である。
4. DRBD デバイスの使用方法
Primary ノードにおいて、通常のデバイスと同様に扱うことができる。
(1) Primary または Secondary ノードへの移行
下記のコマンドを実施する。
ただし、同時に複数のノードが Primary ノードとなることはできない。
[Primary ノードへの移行の場合] # drbdadm primary[Secondary ノードへの移行の場合] # drbdadm secondary (例) # drbdadm primary r0 # drbdadm secondary r0
(2) 状況の確認
下記のコマンドを実施する。
# cat /proc/drbd
[Primary ノードの場合]
cs:Connected ro:Primary/Secondary と出力される。
[Secondary ノードの場合]
cs:Connected ro:Secondary/Primary と出力される。
5. 参考情報
・http://qiita.com/takehironet/items/13518725ee7c694efe90
・https://blog.3ware.co.jp/drbd-users-guide-8.4/drbd-users-guide.html
Pacemaker + Corosyncでのクラスタ環境の構築 [CentOS]
詳細は、以下の通りである。
1. 要件
(1) ソフトウエアのバージョン
・OS: CentOS 6.7
・pacemaker-1.1.12-8.el6_7.2.i686
・corosync-1.4.7-2.el6.i686
(2) システム要件
(a) インターコネクト用 LAN
サービス LAN を インターコネクト用としても使用する。
(192.168.0.0/24)
(b) クラスタを構成するノード
KVM の VM 上に構築した 2 個のノードでクラスタを構成する。
(c) 共有ディスク
共有ディスク用のディスクイメージを追加し、該当する VM 間で共有する。
(共有ディスク: /dev/sdb)
(d) クラスタリングの対象とするサービス
NFS サーバー
2. 実施手順
2-1. パッケージのインストール
すべてのノードで下記コマンドを実施する。
# yum install pacemaker corosync pcs
・corosync: クラスタ制御
・pacemaker: リソース制御
・pcs: Pacemaker 設定用のコマンドライン・ツール
2-2. Corosync の設定
いずれかのノードで下記の手順を実施し、当該ファイルを他のノードにコピーする。
(1) /etc/corosync/corosync.conf の作成
# cd /etc/corosync # cp -p corosync.conf.example corosync.conf
(2) /etc/corosync/corosync.conf の編集
# diff corosync.conf corosync.conf.example 25c25 < bindnetaddr: 192.168.0.0 --- > bindnetaddr: 192.168.1.0
192.168.0.0 をインターコネクト用 LAN として定義する。
2-3. サービスの起動
すべてのノードで下記の手順を実施する。
(1) サービスの起動
# /etc/init.d/corosync start # /etc/init.d/pacemaker start # chkconfig corosync on # chkconfig pacemaker on
(2) 状態の確認
# crm_mon Last updated: ... Last change: ... Stack: classic openais (with plugin) Current DC: vm2.private.net - partition with quorum Version: 1.1.11-97629de 2 Nodes configured, 2 expected votes 0 Resources configured Online: [ vm2.private.net vm3.private.net ]
(補足)
crm_mon コマンドの終了: Ctrl+C
2-4. クラスタ特性の設定
いずれかのノードで下記の手順を実施する。
(1) クラスタ特性の設定
# pcs property set stonith-enabled=false # pcs property set no-quorum-policy=ignore
(2) 設定状況の確認
# pcs property list
2-5. リソースの定義
2-5-1. VIP の定義
いずれかのノードで下記の手順を実施する。
(1) リソースの定義
# pcs resource create vip ocf:heartbeat:IPaddr2 \ ip=192.168.0.20 cidr_netmask=24 \ nic="eth0" \ op monitor interval=30s
192.168.0.20/24 をリソースとして定義する。
(2) 状態の確認
# pcs status resources vip (ocf::heartbeat:IPaddr2): Started vm2.private.net
2-5-2. VIPcheck の定義
スプリットブレイン対策として、いずれかのノードで下記の手順を実施する。
ただし、リソース・エージェントの追加はすべてのノードで実施する。
(1) リソース・エージェントの追加
(a) VIPcheck リソース・エージェントの入手
http://sourceforge.jp/projects/linux-ha/downloads/45456/VIPcheck/
(b) リソース・エージェントの追加
# cd /usr/lib/ocf/resource.d # mkdir additional # cd additional # cp -p VIPcheck . # chown root:root VIPcheck # chmod 755 VIPcheck # cd ../heartbeat # ln -s ../additional/VIPcheck .
(2) リソースの定義
# pcs resource create vip-check ocf:heartbeat:VIPcheck \ target_ip=192.168.0.20 count=1 wait=10 \ op start interval=0s timeout=90s on-fail=restart start-delay=4s # pcs constraint colocation add vip with vip-check INFINITY ... (注1) # pcs constraint order vip-check then vip ... (注2) (注1) 実行するノードの設定 (注2) 実行順序設定
(3) 状態の確認
# pcs constraint Location Constraints: Ordering Constraints: start vip-check then start vip (kind:Mandatory) Colocation Constraints: vip with vip-check (score:INFINITY)
2-5-3. ファイルシステムの定義
いずれかのノードで下記の手順を実施する。
(1) リソースの定義
# pcs resource create fs-nfs ocf:heartbeat:Filesystem \ device=/dev/sdb1 directory=/share fstype="ext3" # pcs constraint colocation add fs-nfs with vip INFINITY ... (注1) # pcs constraint order vip then fs-nfs ... (注2) (注1) VIP が割り当てられたノードでリソースを有効にするための設定 (注2) VIP が割り当てられた後にリソースを有効にするための設定
/dev/sdb1 をマウントした /share をリソースとして定義する。
(2) 状態の確認
# pcs constraint Location Constraints: Ordering Constraints: start vip-check then start vip (kind:Mandatory) start vip then start fs-nfs (kind:Mandatory) Colocation Constraints: vip with vip-check (score:INFINITY) fs-nfs with vip (score:INFINITY)
2-5-4. サービスの定義 (nfsd)
(1)〜(3) の手順をすべてのノードで実施する。
また、いずれかのノードで (4) 以降の手順を実施する。
(1) nfs の自動起動の無効化
# chkconfig nfs off
(2) ファイルシステムの export
(a) /etc/exports の作成
# cat /etc/exports /share 192.168.0.0/24(rw,no_root_squash,sync)
(b) exportfs の実行
# exportfs -av
(3) nfs のカスタマイズ
系切り替え後の待ち時間を短縮するために、/etc/sysconfig/nfs を編集する。
# cd /etc/sysconfig/ # diff nfs nfs.org 50,52c50,52 < NFSD_V4_GRACE=10 < NFSD_V4_LEASE=10 < NLM_GRACE_PERIOD=10 --- > #NFSD_V4_GRACE=90 > #NFSD_V4_LEASE=90 > #NLM_GRACE_PERIOD=90
(4) リソースの定義
# pcs resource create nfs-server ocf:heartbeat:nfsserver \ nfs_init_script="/etc/init.d/nfs" nfs_ip="192.168.0.20" \ op start interval="0s" timeout="120s" \ op monitor interval="10s" timeout="60s" on-fail="restart" \ op stop interval="0s" timeout="120s" # pcs constraint colocation add nfs-server with fs-nfs INFINITY ... (注1) # pcs constraint order fs-nfs then nfs-server ... (注2) (注1) fs-nfs が割り当てられたノードで nfsd を起動するための設定 (注2) fs-nfs が割り当てられた後に nfsd を起動するための設定
(5) 状態の確認
# pcs constraint Location Constraints: Ordering Constraints: start vip-check then start vip (kind:Mandatory) start vip then start fs-nfs (kind:Mandatory) start fs-nfs then start nfs-server (kind:Mandatory) Colocation Constraints: vip with vip-check (score:INFINITY) fs-nfs with vip (score:INFINITY) nfs-server with fs-nfs (score:INFINITY)
2-6. テスト
(1) テストの準備
・vm2.private.net、vm3.private.net をそれぞれ Active、Standby ノードにする。
・NFS クライアントで、192.168.0.20:/share をマウントする。
(2) テストの実施
(a) test-1
・vm2.private.net 上で nfsd を停止する。
(# /etc/init.d/nfs stop)
・vm2.private.net 上で nfsd が再起動されることを確認する。
(b) test-2
・vm2.private.net 上で pacemaker を停止する。
(# /etc/init.d/pacemaker stop)
・すべてのリソースが vm3.private.net 上に移動することを確認する。
・クライアントで 192.168.0.20:/share がマウントできることを確認する。
(c) test-3
・vm2.private.net 上で eth0 を停止する。
(# ifconfig eth0 down)
・test-2 と同じことを確認する。
(補足)
リソースの状態は、下記のコマンドで確認できる。
# crm_mon -A
2-7. logrotate の設定
下記ログのローテーションを行う設定を追加する。
・/var/log/pacemaker.log
・/var/log/cluster/corosync.log