SSブログ

CentOS 6.8へのアップデート後にshutdownでエラーメッセージが表示される [CentOS]

1. 発生事象


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]

CentOS 6.7 から 6.8 へのアップデート後、以下の不具合が発生するようになってしまった。
・現時点では原因は不明
・対応を検討中

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]

1. 発生事象


/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 のバージョン
・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]

CentOS 7 の初期設定状態では、ntpd に替わり chronyd が使用される。
そこで、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]

systemd を使用している環境では、ハードウェアクロック(RTC) のシステムクロックとの同期(システムクロックに合わせる処理) が行われないようである。このため、現在使用中の環境について、状況と対処方法をまとめてみた。
詳細は、以下の通りである。

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]

Linux において、共有ディスクを使用しない HA クラスタ環境の構築について検討するため、DRBD を試用してみた。
詳細は、以下の通りである。

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]

Pacemaker を使用したクラスタ環境の構築を検討しており、手順の確認等のため、実際に環境を構築してみた。
詳細は、以下の通りである。

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


[備考]


この広告は前回の更新から一定期間経過したブログに表示されています。更新すると自動で解除されます。