« TreeCellEditor 設定 | トップページ | コードヘルパー »

2010年2月 6日 (土)

サーバダウン時の対応

  • 二重化は難しそうなのでしていない。
  • 毎日診療終了後,メインマシンの Xen の仮想サーバ(dom-U)をバックアップマシンに丸ごとバックアップしている。
  • メインマシンが故障した場合,バックアップマシンで dom-U を立ち上げると,昨日診療終了時の状態でサーバが立ち上がり,クライアント側では設定変更をせずに,すぐに診療を続けることができる。クライアント側で一切設定変更をしなくて済むのがこの方式の利点。
  • 一度,メインマシンのメモリが壊れたが,その時は壊れたまま1日の診療を終了できた。そして,翌日新しいメモリを手に入れて交換するまで,バックアップマシンを使用した。幸い,データ喪失なしにメインマシンの故障に対応できた。
  • しかし,診療途中にメインマシンが故障してバックアップに切り替えた場合,その日の診療開始から故障するまでの診療内容の記録は失われてしまう。
  • 多分,その日の診療終了後に時間をかけて復旧すれば,データを救い出せるとは思うが,ハードディスクがどうやっても全く読めない最悪の事態もあり得る。
  • データを救い出せない場合,失われたデータは入力し直しになるが,その際,受付ノートと処方箋があれば,問診票や過去カルテを見ながら診療内容を思い出して再現できる自信はある。
  • そこで,処方箋と領収書を打ち出す際に,pdf ファイルとしてバックアップマシンにコピーを保存するように設定した。これで,メインマシンのハードディスクが全く読めないという事態になっても,サブマシン側に処方箋と領収書は残る。

印刷時に pdf ファイルをバックアップマシンにコピーする

  • lp ユーザの $HOME を調べて,.ssh を作成し,公開鍵認証でバックアップマシンとパスワードなしで通信できるように設定しておく。
    root@orca # su - lp
    lp@orca $ echo $HOME (lp のホームディレクトリを確認)
    /var/spool/lpd
    lp@orca $ exit
    root@orca # mkdir /var/spool/lpd/.ssh
    root@orca # cp 秘密鍵 /var/spool/lpd/.ssh (秘密鍵の設定)
    root@orca # chmod 600 /var/spool/lpd/.ssh/秘密鍵
    root@orca # chown -R lp:lp /var/spool/lpd/.ssh (.ssh ディレクトリを lp がアクセスできるように設定)
    root@orca # su - lp
    lp@orca $ slogin -i .ssh/秘密鍵 -l backup backup-machine
    The authenticity of host '[backup-machine]: ([192.168.1.xxx]:22)' can't be established.
    RSA key fingerprint is 5b:46:eb:d1:b8:f9:8f:f7:71:95:0a:11:6d:58:a6:dc.
    Are you sure you want to continue connecting (yes/no)? yes
    
    Linux backup 2.6.18-6-686 #1 SMP Tue Jun 17 21:31:27 UTC 2008 i686
    
    The programs included with the Debian GNU/Linux system are free software;
    the exact distribution terms for each program are described in the
    individual files in /usr/share/doc/*/copyright.
    
    Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
    permitted by applicable law.
    Last login: Fri Aug 22 05:11:42 2008 from 192.168.1.xxx
    backup@backup-machine $
    
  • /usr/lib/cups/backend/pdf を作る。実行属性を与えるのを忘れずに。
    #!/bin/sh
    #
    # lp が書き込みできるディレクトリ,何でもいい
    PDFDIR=/var/spool/cups-pdf/ANONYMOUS
    
    # pdf ファイルの名前
    PDFNAME=`date +%Y%m%d-%H%M%S`
    
    # ps ファイルを pdf に変換するコマンド
    PS2PDF="/usr/bin/ps2pdf -sPAPERSIZE=a5"
    
    # pdf ファイルをコピーするマシン
    BACKUPDIR="backup@backup-machine:pdf"
    
    # 公開鍵認証
    KEY=/var/spool/lpd/.ssh/秘密鍵
    
    # ここの設定が,cups でプリンタ登録する際にデバイス欄に現れる
    # pdf1 のところを pdf2 などとして別ファイルを作ればプリンタを増やせる
    if [ $# -eq 0 ]; then
    echo "direct pdf1:/ \"customized backend\" \"PDF Writing\""
    exit 0
    fi
    
    # まず,実際の印刷処理を行う
    lp -d lp1 $6 (領収書,処方箋は lp1 で印刷している)
    
    # ps ファイルを pdf に変換
    $PS2PDF $6 $PDFDIR/$PDFNAME.pdf
    chmod 666 $PDFDIR/$PDFNAME.pdf
    
    # 出来上がった pdf をバックアップマシンに転送
    scp -i $KEY $PDFDIR/$PDFNAME.pdf $BACKUPDIR
    
    # 転送終了後消去
    rm $PDFDIR/$PDFNAME.pdf
    
    exit 0
    
  • cups にアクセスして,pdf という名前でプリンタを新しく作る。デバイスは PDF Writing,モデル/ドライバは何も選択せずにプリンタの追加をクリック,メーカーは Raw,モデルは Raw Queue (en) を選択。
  • ORCA の「出力先プリンタ割り当て情報」(システム管理マスタ)で,出力先を,上で登録したプリンタ名 pdf にする。

« TreeCellEditor 設定 | トップページ | コードヘルパー »

サーバ」カテゴリの記事