Midnightjapan

Tag: CentOS5.5

Heartbeat の安全な停止方法

by jun on 7月.26, 2011, under Linux, Mysql, PHP, Programing

1号機(プライマリー) 2号機(セカンダリー)として稼働中のDRBD+Heartbeat(HAクラスタシステム)を構築している。
これを安全に停止するための自己記録である。

まず2号機にログインして管理者になり[Heartbeat]を停止する。

[管理者@2号機] # /etc/rc.d/init.d/heartbeat stop

これで、2号機が停止したら1号機にログインして管理者になり[Heartbeat]を停止する。

[管理者@1号機] # /etc/rc.d/init.d/heartbeat stop

※ 深夜の気が向いたときしかやりたくないので、ついここで、rootにならずにやって、サブシステムがロックしているとか、よくわからないエラーがでてしまい、余計な時間がかかることがあるが、rootになっていれば問題はおきるわけがない。

つづいて、[Heartbeat]がとまったことでDRBDもこのようになっている。

[管理者@1号機] # /etc/rc.d/init.d/drbd status
drbd driver loaded OK; device status:
version: 8.3.8 (api:88/proto:86-94)
GIT-hash: ************************* build by mockbuild@builder10.centos.org, 2010-06-04 08:04:09
m:res  cs         ro                   ds                 p  mounted  fstype
0:r0   Connected  Secondary/Secondary  UpToDate/UpToDate  C

そこでこのようにプライマリーにしてマウントする

[管理者@1号機] # drbdadm primary all
[root@winsor ~]# /etc/rc.d/init.d/drbd status
drbd driver loaded OK; device status:
version: 8.3.8 (api:88/proto:86-94)
GIT-hash: ************************* build by mockbuild@builder10.centos.org, 2010-06-04 08:04:09
m:res  cs         ro                 ds                 p  mounted  fstype
0:r0   Connected  Primary/Secondary  UpToDate/UpToDate  C
[管理者@1号機] # mount /dev/drbd0 /マウントしたいパス

これで安全に停止してメンテナンスが可能です。

ささ、MySQLのバックアップやディスク容量の増加など完了しました。
今度はちゃんと元にもどしましょう。

まず1号機にログインして管理者になり[Heartbeat]を開始する。

[管理者@1号機] # /etc/rc.d/init.d/heartbeat start

つぎに2号機にログインして管理者になり[Heartbeat]を開始する。

[管理者@2号機] # /etc/rc.d/init.d/heartbeat start

そしたらあわてずに待つ。
1号機2号機どちらでもかまわないが[Heartbeat]のステータスを表示する。
一応プライマリーの1号機でみてみることにする。

[管理者@1号機] # crm_mon
Defaulting to one-shot mode
You need to have curses available at compile time to enable console mode

============
Last updated: Tue Jul -- --:--:-- ----
Current DC: NONE
2 Nodes configured.
1 Resources configured.
============

Node: 1号機.lan (***********************************************): OFFLINE
Node: 2号機.lan (***********************************************): OFFLINE

じっくりね。結構この状態が続いて、あせることがあるかもしれないけど、あわてない。
そして1分から2分後

[管理者@1号機] # crm_mon
Defaulting to one-shot mode
You need to have curses available at compile time to enable console mode

============
Last updated: Tue Jul -- --:--:-- ----
Current DC: 1号機.lan (***********************************************)
2 Nodes configured.
1 Resources configured.
============

Node: 1号機.lan (***********************************************): online
Node: 2号機.lan (***********************************************): online

Resource Group: group_1
    IPaddr2_1   (heartbeat::ocf:IPaddr2):       Started 1号機.lan
    MailTo_2    (heartbeat::ocf:MailTo):        Started 1号機.lan
    drbddisk_3  (heartbeat:drbddisk):   Started 1号機.lan
    Filesystem_4        (heartbeat::ocf:Filesystem):    Started 1号機.lan
    httpd_5     (lsb:httpd):    Started 1号機.lan
    mysqld_6    (lsb:mysqld):   Started 1号機.lan

ふぅ、一安心。たまにしかやらないから、余計ね。ご苦労様でした _(._.)_

コメントなし :, , more...

CentOS5.5(64bit)にPPTPサーバーを構築

by jun on 6月.09, 2011, under Linux

CentOS5.5(64bit)にPPTPサーバーを構築します。

あちこちの情報見ながらなので、正確でない情報があったらごめんなさい。

まずはPPTPDの最新版をとってきます。

# wget http://downloads.sourceforge.net/project/poptop/pptpd/pptpd-1.3.4/pptpd-1.3.4.tar.gz

「CentOS5の場合、pppのバージョンが2.4.4の為、このままパッケージ化してインストールすると下記のようなエラーが発生する。」
との情報を得たため、書いてある通りに修正する。
まずは解凍し、予めPPPの2.4.4で使用出来るようspecファイルを編集する必要がある。

# tar zxvf pptpd-1.3.4.tar.gz
# vi pptpd-1.3.4/pptpd.spec

57行目付近を下記のように編集する。

(echo '#undef VERSION'; echo '#define VERSION "2.4.3"') >> plugins/patchlevel.h
      ↓
(echo '#undef VERSION'; echo '#define VERSION "2.4.4"') >> plugins/patchlevel.h

編集後再度アーカイブする

# tar zcvf pptpd-1.3.4.tar.gz pptpd-1.3.4

アーカイブからRPMパッケージを作成

# rpmbuild -ta --target x86_64 pptpd-1.3.4.tar.gz
# mv /usr/src/redhat/RPMS/x86_64/pptpd-* . (出来上がったパッケージを移動)

ここまででCentOS5.5用 64bit PPTPサーバーのRPMパッケージが完成。

PPTPとPPPパッケージをインストールする

# yum install ppp dkms -y
# rpm -ivh pptpd-1.3.4-1.x86_64.rpm

ひと段落したら、設定ファイルを編集します。

設定ファイル1:etc/pptpd.conf

# vi /etc/pptpd.conf

最終行に下記を入力する

localip サーバのIP
remoteip PPTPクライアントに割り当てるスコープ
例:
localip 192.168.0.254
remoteip 192.168.0.100-110

設定ファイル2:/etc/ppp/options.pptpd

# vi /etc/ppp/options.pptpd

18行目付近にあるname項目を編集する

name
↓
name 任意の文字列(ホスト名等)
例:
name pptpserver

設定ファイル3:/etc/ppp/chap-secrets

# vi /etc/ppp/chap-secrets

ユーザ名とパスワードを設定する

# Secrets for authentication using CHAP
# client        server  secret                  IP addresses
####### redhat-config-network will overwrite this part!!! (begin) ##########
midnightjapan      pptpserver      "*****"       *
####### redhat-config-network will overwrite this part!!! (end) ############

設定ファイル4:/etc/sysctl.conf

# vi /etc/ppp/chap-secrets

ip_forwardを許可する

# Kernel sysctl configuration file for Red Hat Linux
#
# For binary values, 0 is disabled, 1 is enabled.  See sysctl(8) and
# sysctl.conf(5) for more details.

# Controls IP packet forwarding
net.ipv4.ip_forward = 0 →これを1に変更

sysctl.confの変更を適用する

# vi /etc/ppp/chap-secrets

設定ファイル5:/etc/modprobe.conf の設定

# vi /etc/modprobe.conf 

pppオプションを設定する

# PPTPD Setting
alias char-major-108 ppp_generic
alias tty-ldisc-3 ppp_async
alias tty-ldisc-14 ppp_synctty
alias ppp-compress-18 ppp_mppe
alias ppp-compress-21 bsd_comp
alias ppp-compress-24 ppp_deflate
alias ppp-compress-26 ppp_deflate
alias net-pf-47 ip_gre

設定ファイル6:iptablesなどのファイアウォールを開通させる

iptables -A INPUT -p tcp --dport 1723 -j ACCEPT
iptables -A INPUT -p gre -j ACCEPT
iptables -A INPUT -i ppp+ -j ACCEPT
iptables -A FORWARD -i ppp+ -j ACCEPT

設定ここまで


ひと段落したら起動して起動確認

PPTP起動

# /etc/init.d/pptpd start
# chkconfig pptpd on

もちろん、ルーターからのアクセスをなんとかしなければね。
私はポートフォワードで対応しましたよ。

コメントなし :, , more...

可搬性疑似仮想アプライアンスサーバーシステム構想

by jun on 4月.23, 2011, under Blog, Linux, MacBook Air

4月がもうすぐ終わろうとしているが、いまだに放射能の問題や電力不足問題や余震の恐怖。

システム開発を行う私としては、計画停電は致命的な問題である。

今後発生する可能性がある消費税の増税に伴う、システムのリビルド等。課題は山積みである。

これからの不安定な社会を乗り切るためには、システムの海外への移動か可搬性を持たせるなど危険なアイデアを試みる必要があると考えた。

海外への移設は順次進めている。

残念ながらこのサーバーは移転しません。団体利用のため移転しません。あしからず。

構想?「電力を確保する」

・ガソリン式の発電機を購入すれば数時間の電力は賄えるが、コストと設置場所を考えると個人向けではない。ましてガソリンを運ぶ携行缶なども購入しておく必要もあり、ガソリンを補完する場所や火事の危険を考慮しないといけないわけです。

・無停電電源バッテリーを活用する。しかしこれは活用できなかった。理由は蓄電量がわずかでシステム開発を行えるほど電力はない。

・車のダイナモからの電力を使って停電時間中を凌ぐ。これであればガソリンを保管するのが車の中のため安全だ。しかし肝心の電力が問題でダイナモからのノイズと不安定電力の安定化のため、高価なコンバーターが必要となる。これもおしいアイデアであった。

この結果、いかにノートパソコンの性能がすごいかわかってきた。

わたしが持っているMacBookAirは3時間余裕で稼働してしまう。

画面サイズなど考えれば、いままでどおりの開発環境とはいかないが、これを活用しない手はない。

しかしサーバーとクライアント環境を整えるためには複数台購入し数十万払う必要がある。

これは現実的ではない。

そこで、

構想?MacBookAir内の仮想環境を活用する。

実際には

構想?「海外クラウドシステム GoogleApps,AmazonEC2を活用する」などもあったが、どれも面倒で実現は難しかった。

わたしはマルチプラットフォーム(Mac/Win)のWEBシステムが現在開発中のシステムであるためMac/Winのブラウザチェック、Windows開発環境、Linuxサーバー環境が必要である。

これを仮想化する。仮想化は各種あるが私は下記に決めた。

Oracle VirtualBox Ver.4.0.6(無料)

しかしれだけではMac・Win・Linuxサーバーを乱立する必要があり、MacBookAirでもスペックがきびしい。

いろいろな仮想化問題も考えないといけないため、今回はVDIファイルをBootcampの使ってMac/Winをどちらのプラットフォームでも利用可能にしてしまえばLinuxサーバーを仮想化するだけで済む。

よしこれだ。

BootcampでMac/Winに分割して、これをParallelsDesktop6を使ってMacからBootcamp内のWindowsを起動して利用することも考えたが動作が異常できびしいと判断。

しかたなくMac/Win環境は切り替えて利用しVirtualBoxでLinux仮想サーバーを構築する際に、USBメモリ内に構築を行う。

こうすればBootcamp切り替えでも利用することができる。

ここで考えなければいけないのが、仮想ディスクをUSBメモリに配置する場合にFAT32では4GBの壁を越えることができない。そのためVirtualBoxで固定サイズディスクイメージにすると、4GBを超えた時点でコピーできなくなる。

可変長で利用してみたところLinuxでは異常に大変であることがわかった。

CentOS 5.6-64bit 可変長:4GB/実サイズ2.7GBで構築 =>運用1週間で空き容量0になる。

これを拡張するために、Gpartedを使ってみた。

残念・・・GPartedはVolumeGroupには対応していない・・Orz

そこで、大きいサイズの新仮想ディスク8GBで作成し、下記のように既存の4GBで構成したシステムを8GBに移し返してみた。

Microsoft Windows [Version 6.1.7601]
Copyright (c) 2009 Microsoft Corporation.  All rights reserved.

// VirtualBoxインストールフォルダーに移動
C:\Users\mynane>cd c:\Program Files\Oracle\VirtualBox

// VirtualBoxイメージを複製する
C:\Users\mynane>VBoxManage clonehd [旧仮想ディスク].vdi [上記で作成した新仮想ディスク].vdi --existing

0%...10%...20%...30%...40%...50%...60%...70%...80%...90%...100%

Clone hard disk created in format 'VDI'. UUID: d12672e3-e555-4f6c-8867-636f163ae816

※ VirtualboxのイメージファイルはUUIDで管理されているんため、複製しても利用できない。そのためコマンドを使うが、下記の通りである。
・新たにイメージを複製

VBoxManage clonehd [旧仮想ディスク].vdi [上記で作成した新仮想ディスク].vdi

・別のイメージに複製(たとえば容量を増やす場合はこっち)

VBoxManage clonehd [旧仮想ディスク].vdi [上記で作成した新仮想ディスク].vdi --existing

これで構築したVDIを複製できるので、USBメモリの中にこれをコピーする。

しかし!これでも空きが0・・・Orz・・・理由はハードディスクが拡大されても、VolumeGroupは大きくなったわけではない。

仮想の中のファイルシステムパーティションを拡張しなければいけない。Windows等はGpartedを利用すると便利だが、Linux等で利用されているLVMボリュームには対応していないので、下記のように行う。

Linux上のVolumeGroupを拡張する

1. 現在の状態の確認

# /sbin/fdisk /dev/sda
このディスクのシリンダ数は 5221 に設定されています。
間違いではないのですが、1024 を超えているため、以下の場合
に問題を生じうる事を確認しましょう:
1) ブート時に実行するソフトウェア (例. バージョンが古い LILO)
2) 別の OS のブートやパーティション作成ソフト
   (例. DOS FDISK, OS/2 FDISK)

コマンド (m でヘルプ): m
コマンドの動作
   a   ブート可能フラグをつける
   b   bsd ディスクラベルを編集する
   c   dos 互換フラグをつける
   d   領域を削除する
   l   既知の領域タイプをリスト表示する
   m   このメニューを表示する
   n   新たに領域を作成する
   o   新たに空の DOS 領域テーブルを作成する
   p   領域テーブルを表示する
   q   変更を保存せずに終了する
   s   空の Sun ディスクラベルを作成する
   t   領域のシステム ID を変更する
   u   表示/項目ユニットを変更する
   v   領域テーブルを照合する
   w   テーブルをディスクに書き込み、終了する
   x   特別な機能 (エキスパート専用)

コマンド (m でヘルプ): p

Disk /dev/sda: 42.9 GB, 42949672960 bytes
255 heads, 63 sectors/track, 5221 cylinders
Units = シリンダ数 of 16065 * 512 = 8225280 bytes

デバイス Boot      Start         End      Blocks   Id  System
/dev/sda1   *           1          13      104391   83  Linux
/dev/sda2              14        2610    20860402+  8e  Linux LVM

2. /dev/sda3 を作る

コマンド (m でヘルプ): n
コマンドアクション
   e   拡張
   p   基本領域 (1-4)
p
領域番号 (1-4): 3
最初 シリンダ (2611-5221, default 2611):
Using default value 2611
終点 シリンダ または +サイズ または +サイズM または +サイズK (2611-5221, default 5221):
Using default value 5221

3. /dev/sda3 の確認

コマンド (m でヘルプ): p

Disk /dev/sda: 42.9 GB, 42949672960 bytes
255 heads, 63 sectors/track, 5221 cylinders
Units = シリンダ数 of 16065 * 512 = 8225280 bytes

デバイス Boot      Start         End      Blocks   Id  System
/dev/sda1   *           1          13      104391   83  Linux
/dev/sda2              14        2610    20860402+  8e  Linux LVM
/dev/sda3            2611        5221    20972857+  83  Linux

4. /dev/sda3 のパーティションタイプを 8e (Linux LVM) に変更する

コマンド (m でヘルプ): t
領域番号 (1-4): 3
16進数コード (L コマンドでコードリスト表示): 8e
領域のシステムタイプを 3 から 8e (Linux LVM) に変更しました

コマンド (m でヘルプ): p

Disk /dev/sda: 42.9 GB, 42949672960 bytes
255 heads, 63 sectors/track, 5221 cylinders
Units = シリンダ数 of 16065 * 512 = 8225280 bytes

デバイス Boot      Start         End      Blocks   Id  System
/dev/sda1   *           1          13      104391   83  Linux
/dev/sda2              14        2610    20860402+  8e  Linux LVM
/dev/sda3            2611        5221    20972857+  8e  Linux LVM

5. 変更内容を書き込む

コマンド (m でヘルプ): w
領域テーブルは交換されました!

ioctl() を呼び出して領域テーブルを再読込みします。

警告: 領域テーブルの再読込みがエラー 16 で失敗しました: デバイスもしくはリソースがビジー状態です。
カーネルはまだ古いテーブルを使っています。
新しいテーブルは次回リブート時に使えるようになるでしょう。
ディスクを同期させます。

6.再起動する

# shutdown -r now

7.PV (Physical Volume) の作成

# pvcreate /dev/sda3
Physical volume "/dev/sda3" successfully created

8.作成した PV を VG (Volume Group) に参加させるためPV確認

# vgdisplay -v
 --- Volume group ---
 VG Name               VolGroup00
 System ID
 Format                lvm2

 (中略)

 --- Logical volume ---
 LV Name                /dev/VolGroup00/LogVol00
 VG Name                VolGroup00  

 (中略)

 --- Logical volume ---
 LV Name                /dev/VolGroup00/LogVol01
 VG Name                VolGroup00 

 (中略)

 --- Physical volumes ---
 PV Name               /dev/sda2
 PV UUID               JjcZe9-l3Ss-8B5H-mPc9-R76G-XRti-DzOZu3
 PV Status             allocatable
 Total PE / Free PE    636 / 0

9.VolGroup00 に /dev/sda3 を追加

vgextend VolGroup00 /dev/sda3
Volume group "VolGroup00" successfully extended

10.結果確認

# vgdisplay -v 

 (中略)

 --- Physical volumes ---
 PV Name               /dev/sda2
 PV UUID               JjcZe9-l3Ss-8B5H-mPc9-R76G-XRti-DzOZu3
 PV Status             allocatable
 Total PE / Free PE    636 / 0

 PV Name               /dev/sda3
 PV UUID               bGR4XI-Nz0Q-XceM-dBor-3XYs-UVJR-tgspv4
 PV Status             allocatable
 Total PE / Free PE    640 / 640 ←これを記録

11./dev/VolGroup00/LogVol00 に VolGroup00 で未割り当ての 640 PE を追加する

#lvextend -l +640 /dev/VolGroup00/LogVol00
 Extending logical volume LogVol00 to 37.91 GB
 Logical volume LogVol00 successfully resized

12./dev/VolGroup00/LogVol00 のファイルシステム (ext3) の容量を拡張する †

# resize2fs /dev/VolGroup00/LogVol00
resize2fs 1.39 (29-May-2006)
Filesystem at /dev/VolGroup00/LogVol00 is mounted on /; on-line resizing required
Performing an on-line resize of /dev/VolGroup00/LogVol00 to 9936896 (4k) blocks.
The filesystem on /dev/VolGroup00/LogVol00 is now 9936896 blocks long.

これで拡大完了!ちなみに上記の例は

「CentOS LVMの拡張(VMWare仮想ディスクの拡張)」を参考にさせていただきました。

これほど面倒くさいので、できるだけ固定で必要最低限足りると思う容量で構築するのがベストでしょう。

USBメモリ内での運用など今までなら完全否定で危険しかないと思われたものなので

いまさらUSBメモリの危険性を指摘いただいても困る。

十分わかっているつもりである。

そのうえで私は人柱になり、安全許容範囲を模索するつもりである。

かくして、機材を購入して運用を開始した。

これは実務と並行するため、記事の更新は二の次にさせていただきます。

コメントなし :, , , , , , , more...

CentOS5.5 64bitに改竄検知システム「Tripwire2.4.2」を導入

by jun on 11月.26, 2010, under Linux

以前CentOS5.3やら5.4上でTripwireを構築したときは2.4.1だったせいか64bitじゃなかったせいか、わからないが普通には進まなかったので

ひっかかったところ、つまずいたところを対処メモすることにした。

# wget http://jaist.dl.sourceforge.net/sourceforge/tripwire/tripwire-2.4.2-src.tar.bz2
# tar jxvf tripwire-2.4.2-src.tar.bz2 ← tripwire展開
# chown -R root:root tripwire-2.4.2-src ← 権限をRootへ
# cd tripwire-2.4.2-src ←フォルダー内へ
# patch -p1 < ../tripwire-version.patch ← 下記のパッチを参照

残念ながらこのままコンパイルしてもエラーがでるので、いくつかインストールの必要がある。

入っていないと怒られるものは下記のとおり

1)automake コンパイルするとエラーがでてaclocal1.9が必要だ!と怒られるため「automake1.9」に入っているものを使う。configureの1904行目「am__api_version=”1.8″」になってる場合もあるらしいです。OSによって慎重に扱ってください。今回の構成ではパッチをつかって対応します。

# rpm -ql automake ← automakeがインストールされているか確認
# yum -y install automake ← automakeインストール

2)C++コンパイラがないと怒られるのでこれも必要。

# yum remove gcc-c++ ← 削除
# yum -y install gcc-c++ ← 再インストール

3)さらにconfigureにsendmailのパスを追加設定する必要があります。ソースなんで仕方ないですね。

# vi install/install.cfg
 if [ -z "$path_to_sendmail" ] ; then
# TWMAILPROGRAM=""
TWMAILPROGRAM="/usr/sbin/sendmail" ← sendmailへのフルパスを記述
else
TWMAILPROGRAM="${path_to_sendmail} -oi -t"
fi

4)意味があるかないか不明だけど、一応CentOS5.5では効果があるらしい。「tripwire-version.patch

*configure関連のファイルを修正するとMakefileの再構成を行うようです
*aclocal, automakeが呼び出されますが、設定が古いので修正しています
*CentOS5.5ではaclocal-1.9,automake-1.9が使われています
*manのversion設定は修正していません

以上が終わったらコンパイルします。

# cd tripwire-2.4.1.2-src ← tripwire展開先ディレクトリへ移動
# ./configure --prefix=/usr/local/tripwire sysconfdir=/etc/tripwire && make && make install

あとは、神様の通りです。

CentOSで自宅サーバー構築 ファイル改竄検知システム導入(Tripwire)

コメントなし :, , , more...



何かお探しですか?

以下にキーワードを入力してサイト内検索が可能です:

Still not finding what you're looking for? Drop a comment on a post or contact us so we can take care of it!