tags: CentOS

今日は自宅サーバにUPSを取り付けた

残念ながら地震の影響で福島原発を含む東京電力の発電能力がかなり低下してしまうようだ。対策を見ていると、どうも近々に復旧の見込みは無いようで、電力が足りないことが長期間続くことになる。政府が節電の呼びかけとともに、輪番停電を実施することを予告している。 確かに節電はやりたい。被災された方には心からお見舞いしたいし、時間の許す限り貢献したいと思う。人によってはこんな時に自宅サーバなんてもってのほかという人もいるだろう。でも現時点で家の中の全てのデータ、メール、インフラの制御を全て自宅サーバにやらせている俺としてはサーバは可能な限り落としたくないものだ。なのでUPSを買って、停電時には自動的にシャットダウンし、復電時には自動的に稼働を開始することにした。 UPSはCyberPower社のBackup CR900(型番: CP900SW JP)を買った。ヨドバシカメラで22,000円程度。出力も540Wと値段にしては非常に大きい。Linuxに対応していることも選択のポイントであった。ただ、実際に試験していると100Wほどの負荷であるのにバッテリの減衰は思った以上に速い。10分保てば御の字、といったところ。それでもその間に正しくシャットダウンし電源を停止すれば、データは守られる。 電源の接続自体はなんのことはない。ソフトウェアはホームページからLinux(32bit/64bitあり)をダウンロードすることができる。俺の場合はtarballをダウンロードしCentOS5.5に入れた。USBケーブルでUPSとサーバを接続する。特に問題なく動作する。(素晴らしい!) UPS運用のキモは自動シャットダウンと復電後の自動起動だと思う。各ハードウェアのBIOS設定(復電時に自動的に電源を入れるようにする)、各VMの起動、起動後のサービス動作確認など、スクリプトを作り込み細かな調整をして何度も試験すべき。最終的に電源を抜いて正常シャットダウン、電源を刺して各サービスまで含めて正常起動するようスクリプトを作り込んだ。停電時、サービス復旧時にはSMSでiPhoneにメールも飛ぶようにした。 こちらの準備はOKだ。いざ停電のある世界へ!

今日はkvmの仮想マシンのバックアップ方法を確認した

先週kvmマシンのHDDがクラッシュし、OS+3つのVMを再インストールするはめになった。毎回やるのもダルいので、せめてVMは一発復旧させたいなあといろいろ調べて、なんか確立したっぽいので以下にメモ。 一応我が家はこれで動いているようですがat your own riskでお願いします。復元できなかったりなんか不具合あっても責任取れません ### バックアップ方法

VMを静止した状態で、設定ファイル、メモリイメージ、仮想ディスクをコピーしておけばいい。ディスクイメージの種類はrawでも、qcow2でもいい。具体的なコマンドにすると以下のような感じ

virsh dumpxml > # virsh save # cp ### リストア方法

OSインストール後以下のような感じにする

cp # virsh define # virsh restore いろいろ調べたけど、kvmの場合Live Backupはできないみたいなんだよね・・・。もちろんVMの中でバックアップ動かすのはありだけど。なんかダルいし。花粉症だし。

今日はLinuxのCUPSプリントサーバをAirPrintサーバにして、iPhoneからAirPrintで印刷するとPDFファイルが生成されるようにしてみた

ほぼここ(Ryan Finnie’s Blog: AirPrint and Linux)の邦訳になってしまうけど、やってみて、動いたのでやり方を書く。環境はCentOS5.5。 ### 1. まずcups-pdfをインストールする。

rpm -Uvh http://download.fedora.redhat.com/pub/epel/5/i386/epel-release-5-4.noarch.rpm # yum -y install cups-pdf 後で使うのでavahi-daemonも入ってなかったら入れておく。

2. CUPSサーバをネットワーク共有するようにして、印刷できる所まで確認する

iptables使っている場合は631/tcp, 631/udpを解放してアクセスできるようにする

/etc/cups/cupsd.confを編集して、ローカルホスト以外からアクセスできるようにする。編集箇所は赤字で記述。

# “$Id: cupsd.conf.in 7199 2008-01-08 00:16:30Z mike $” # # Sample configuration file for the Common UNIX Printing System (CUPS) # scheduler. See “man cupsd.conf” for a complete description of this # file. # MaxLogSize 2000000000 # Log general information in error_log - change “info” to “debug” for # troubleshooting… LogLevel info # Administrator user group… SystemGroup sys root # Only listen for connections from the local machine. # Listen localhost:631 Listen saba.mydomain:631 Listen /var/run/cups/cups.sock # Show shared printers on the local network. Browsing On BrowseOrder allow,deny # (Change ‘@LOCAL’ to ‘ALL’ if using directed broadcasts from another subnet.) BrowseAllow @LOCAL # Default authentication type, when authentication is required… DefaultAuthType Basic # Restrict access to the server… Order allow,deny Allow 192.168.1.0/24 # Restrict access to the admin pages… <Location /admin> Encryption Required Order allow,deny Allow 192.168.1.0/24 # Restrict access to configuration files… <Location /admin/conf> AuthType Default Require user @SYSTEM Order allow,deny Allow 192.168.1.0/24 できたらcupsを動かして、管理ページが見えるか確認。

chkconfig cups on # service cups start http://saba.mydomain:631/をブラウザで開いて、以下のような管理ページが見えればOK。

ターミナルに戻って、CUPS管理ページが使うSSL証明書を作成する。どうも本来は自動的に作成されるみたいだけど、CentOSのデフォルトでは作成しようとしてハングアップしてしまうみたい。ここを参照して、以下のような感じに作成した。

openssl req -new -x509 -keyout /etc/cups/ssl/server.key -out /etc/cups/ssl/server.crt -days 365 -nodes -config /etc/pki/tls/openssl.cnf Generating a 1024 bit RSA private key ..++++++ ………………..++++++ writing new private key to ‘/etc/cups/ssl/server.key’ —– You are about to be asked to enter information that will be incorporated into your certificate request. What you are about to enter is what is called a Distinguished Name or a DN. There are quite a few fields but you can leave some blank For some fields there will be a default value, If you enter ‘.’, the field will be left blank. —– Country Name (2 letter code) [GB]:JP State or Province Name (full name) [Berkshire]:Tongking Locality Name (eg, city) [Newbury]:Setaganya Organization Name (eg, company) [My Company Ltd]:orenocompany Organizational Unit Name (eg, section) []: Common Name (eg, your name or your server’s hostname) []:saba.mydomain Email Address []:root@saba.mydomain 再度ブラウザに戻って、プリンタを作成していなければ作成する。最終的に以下のような感じになっていればいいと思う。デフォルトプリンタにするかどうかは関係ないっぽい。

ここまでできたら他のPCから印刷できるかどうか確認する。ここではMac(Mac OS X 10.6.6)を使った。

3. AirPrint対応のプリンタを作成する

ここまででCUPSで作成したプリンタをPCで共有できるようになったので、そのプリンタをiPhoneのAirPrint対応にする。

AirPrintはマルチキャストDNS(mDNS。BonjourとかAvahiとか)でプリンタを発見するようだ。CUPSもAvahi経由でmDNS経由でプリンタとして見えてはいるが、そのままではAirPrintが見つけてくれないので、若干設定を追加してやる必要がある。

まずはmDNSで見えるプリンタの情報を取得するために、avahi-discoverを使う。CentOSの場合はavahi-toolsを入れれば使えるようになる。

yum -y install avahi-tools で、avahi-discoverを起動する。Xのウィンドウが出てくる。

avahi-discover

eth0 IPv4 -> local -> Internet Printer の下に、作成したプリンタがある。これをクリックする。

表示が変わるが、これだと後で加工しにくいので、ターミナルに出ている文字の方を使う。以下のような感じ。(適宜改行を入れてます)

Service data for service ‘CUPS-PDF Printer @ saba.mydomain’ of type ‘_ipp._tcp’ in domain ’local’ on 2.0: Host cups.local (192.168.2.5), port 631, TXT data: [ ‘org.freedesktop.Avahi.cookie=3326001564’, ‘pdl=application/pdf,application/postscript,application/vnd.cups-raster,application/octet-stream,image/png’, ‘Duplex=T’, ‘Color=T’, ‘Binary=T’, ‘Transparent=T’, ‘printer-type=0x301E’, ‘printer-state=3’, ‘product=(PostScript Printer)’, ’note=saba.mydomain’, ’ty=Generic PostScript Printer Foomatic/Postscript (recommended)’, ‘rp=printers/pdfprinter’, ‘qtotal=1’, ’txtvers=1’] 上記の出力を参考にして、/etc/avahi/services/<名前>.serviceを作る。<名前>の部分はなんでもいい。以下のような感じ。

注意点としては

  • txt-recordを書く順番はavahi-discoverの出力順の逆
  • txt-recordの最後にURF=noneを入れる

service avahi-daemon restart そうしたらiPhoneからプリンタが見えてるかどうか確認して、印刷!

Enjoy!

今日でkvm環境への移行が完了した

いままでOpenSolaris+VirtualBox環境でやってたけど、2個以上VM立てると時計が進まなくなったりしてたので、ストレージはOpenIndiana、いろんなサーバはCentOS,KVMでやってみることにして、今日ほぼ元の状態まで戻した。KVM超いい。3つほどVM立ててもメモリぜんぜん食わないし時計はちゃんと進むし.iSCSIでやってみたかったけどなんかよくわかんないので今後の課題かな・・・。あとはOpenIndianaでSambaがちゃんと動けばパフォーマンスもいいのでちょっと動向をウォッチしつつとりあえず放置かなあ・・・。