Category Archives: tech

IDCFクラウド DNS冗長化 nginx編

中外の出し分けをするbindをどのように冗長化させるかという話。LVSを使うと接続ソースが全てLVSサーバになってしまうため、振り分けも2系統、bind側のIPアドレスも2系統にしてmatch-destinationsで出し分けるしかなかった。もちろんこれで期待した動作は実現できるんだけど構造が複雑なのが不満。もっとシンプルな構成で実現できないかを模索する中で、改めてnginxによるtcp/udp proxyを検討してみる事にした。... 続きを読む

GlusterFS の Split-Brain 障害対応

導入以来、想像以上にタフに動いてくれているglusterfs。当初はcephfsとの選択を迷う時期もあったが、現時点ではglustefsが自分の環境にはフィットしている。2ノードの3TBディスク8本の構成なので、分散FSとしての性能はまったく期待していない。8本の中でRAID10的なdistributed-replicateを構成しており、その冗長性とネットワーク経由でのファイルシステムの共有に大きな価値を見出している。ファイルシステムレベルで冗長性を確保できたことによって、多くのミドルウェアの冗長性を気にする必要がなくなり、構成管理が非常にシンプルにすることができた。あくまで個人管理の趣味システムを前提とした話だが。... 続きを読む

IDCFクラウド DNS冗長化 LVS編

IDCFクラウド上のnameサーバは中外兼用のbind。外向きには自分所有のドメインのゾーンを返して、中向きにはローカルゾーンも含めて答える。ダウンタイムは小さくしたいので2台で冗長化させておきたい。IDCFクラウドの仮想ルータはUDPのロードバランスが出来ないので自前で行う必要がある。枯れたやり方としてはLVSを使うことだろう。LVSで2台のbindをロードバランスしてみたところ、外からの問い合わせも中向けの処理が対応するようになってしまった。bindのmatch-clientsで処理分けしていたのだが、外からのものも含めて全てのリクエストソースがLVSサーバになってしまったからである。... 続きを読む

IDCFクラウド cloudstack-api で LVS NAT

IDCFクラウドに少しずつ環境を構築していっている。何よりもまずDNS環境を既存環境から移行させてしまいたい。クラウド上の2台のサーバにbindで立てたDNSをインターネット上からも問い合わせ出来るようにする。仮想ルータでのラウンドロビンはUDPに対応していないため設定できない。2台間のロードバランスはLVSに任せる。そのLVSのVIPにNATする形でインターネットからのアクセスを設定する。しかし、仮想ルータによるNATは仮想サーバのNICにアサインされているIPアドレスにしか繋げることが出来ない。なので、IDCFクラウドのAPIを利用してVIPに対するNATを設定する必要がある。... 続きを読む

IDCFクラウド LVS で負荷分散

IDCFクラウド上でLVSを使う分には、参考になる記事もあってそれほど難しくなさそうに思った。ただ、自分の環境の場合、仮想サーバ内でブリッジ接続したLXCコンテナ上でLVSを利用、あるいは仮想サーバ上でLVSを利用して、LXCコンテナに振り分けるといった構成を取りたい。まずはLXCコンテナ上でのLVS運用を検証してみた。コンテナ上では、kernelモジュールやパラメータを変更することはできない。ホストOSのそれを継承するだけなので、とりあえずホストOS側にipvsadmをインストールする。振り分けに必要なkernelパラメータ2つも有効化する。CentOS7だとnet.ipv4.ip_forwardは最初から有効。net.ipv4.vs.conntrackはipvsadmを動かさないと設定できなかったので、一旦ipvsadmを起動してから有効化した。... 続きを読む

IDCFクラウド LVS+ansible で kickstart 環境構築

IDCFクラウド上での環境構築を着々と進めている。構成管理ツールをansibleに切り替えてから、初めてのクラウド環境対応なので、わりと細かいところから修正している。そもそも自宅環境とクラウド環境をVPNで繋いで、仮想的なプライベート・ネットワークを作るかどうかも悩んだ。現時点ではクラウドの独立性を優先して、それぞれ個別に環境を作っている。chefではリッチなサーバ環境を安価なクラウドで用意できなかったので、この辺りはansibleの軽量さに感謝している。ansibleの処理そのものを別管理にするのはコストが大きいので、同じgitで管理してhostsファイルを自宅環境とクラウド環境で違える形を取った。処理ロジックの中では、ansible_domainを使って処理分岐や変数の変更を行っている。例えば、こんな感じ。... 続きを読む

パブリック クラウド 比較 GMO vs IDCF 機能編

最初のクラウドとして、それなりに要件を満たしていたGMOクラウドALTUSを9ヶ月ほど使ってきた。しかし、その間にサーバ運用の価値観が大きく変わり、別のクラウドも触ってみたくなってきた。価値観の変化というのはマルチマスターの便利さ。スケールアウトによって更新処理が犠牲になるマルチマスターを避けてきたが、glusterfsの利用による構成管理の単純化に大きく心変わりした。同様にDBもmariadbのマルチマスターに変更して、wordpressのスケールアウトを可能にしたい。性能面でのスケールアウトはまるで必要ないが、運用面で複数台運用ができるとローテーションによる再構築やメンテがし易くなるので実用的。... 続きを読む

分散FS 比較 cephfs vs glusterfs (3) 再検証編

前回試した際に、動作が不安定だったために具体的な検証すら見送ったcephfs。実は4月にcephfsのstable版を含むcephのメジャーリリースがあった。評価してみたいなあと思いつつも、ファイルサーバ用途としてはglusterfsが充分な機能を持っていたので、今の今まで後回しにしていた。ansibleとか録画サーバとかいじってたからだけど。そんな満足度の高いglusterfsだけど、唯一の欠点がopen()が異常に遅い事。大きいファイルを置くだけで、参照も更新も少ないファイルサーバくらいならいいんだけど、頻繁に更新が伴うような用途には向かない。例えば、lxcで作るコンテナの配置先とか。... 続きを読む

ansible gather_facts チューニング

前回、chefからansibleへの移行記事をまとめたが、その際にさらっとgather_factsの高速化に時間を使ったと触れた。そもそも素でansibleを使うとデフォルトで処理前段にgather_factsの処理が入る。これが何をしているかというと、各ノードのOSやスペック、ネットワーク情報などの収集だ。ansibleはサーバサイド・プッシュな動きをするので、ansible-playbookを実行すると対象ノード全てに処理を行う。gather_factsの処理も同様で対象ノード数に比例して処理時間が伸びていく。1ノードならまだしも、10ノードを超えだすとその待ち時間は耐え難いものに。chefサーバの場合はサーバプロセスが存在したので、その中でこの手の情報をキャッシュしてくれていたのだろうが、ansibleにはサーバプロセスが存在しないため、毎回律儀に各ノードから取得する羽目になる。 ... 続きを読む

構成管理ツール比較 chef vs ansible

自分のevernoteを見返すと3年前からchefを使っているようだ。当初からchef server構成を使っていたため、冗長化の方法に何かと頭を悩ましてきた。個人で使う分にはそれほど更新頻度は高くないので、定期的にrsyncしていれば何とかなるのだが、それでも切替のときには一旦止めてreconfigureして再起動のようなコールドスタンバイくらいしか方法がなかった。また、chef server上ではelastics searchやpostgresqlなど、多くのミドルウェアが動いてしまうため、独立ノードで使う事になってしまう。貧弱なクラウド環境での動作は性能的にイマイチなので、クラウド環境と自宅環境をopenvpnで繋いで、自宅でchef serverを動かす形を取っていた。... 続きを読む

ひかりTV IPv6問題 再発

ひかりTVのIPv6問題とは言っても、最も影響の大きい無線機器は別経路になっているので、特に性能問題が起きると言う訳ではない。ひかりTVのマルチキャスト放送波はMLDスヌーピングの機能があれば専用チューナー(ST-3200)のみに送られる事になる。うちの場合は、根元のブロードバンドルータと中継するスイッチ(EHB-SG2A08)がMLDスヌーピングに対応しており、マルチキャストが他のノードに溢れる事はない。が、今までもEHB-SG2A08のIPアドレスを変更したりすると、何故か放送波が届かなくなったりと不穏な兆候はあった。設定し直すと回復するので、だましだまし使っていたのだが、マルチセッション障害の対応でブロードバンドルータがPR-400NEに変更となってから、ひかりTVの放送波がまったくチューナーに届かなくなってしまった。... 続きを読む

wordpress 修正のプラグイン化

wordpressの細かい修正を割りとラフにハードコーディングしてきたんだけど、さすがに量も増えてきたし、バージョンアップも多いし、毎回直すのが億劫になってきた。という訳で、いい加減バージョンアップに影響を受けない修正方法を検討する。何となく想像は付いていて、専用のプラグインを作り、コアモジュール以外の部分で修正を行えるように準備する。そのプラグインの中でwidget作ったり、パラメータを上書きしたり、実現したいカスタマイズを実装していく。... 続きを読む

ドコモ光 マルチセッション 完結編

先月、散々振り回されたPR-S300SEでのマルチセッション。諸々交渉した挙げ句、結局は別機種のルータを手配してもらえる事に。あれから早一ヶ月、新ルータの調子はというとすこぶる快調。PR-S300SEのときは1週間後に不具合が再発したことがあったので、今回はゆっくりと様子を見た。新たに準備してもらったルータは『PR-400NE』という機種。幾つかある選択肢の中で、旧機種にUIが似ているというのでそれを理由に。逆に同種の不具合が、という一抹の不安がよぎらなくもなかったが。。。... 続きを読む

分散FS 比較 cephfs vs glusterfs (2) glusterfs編

前回その不安定さからcephfsの利用を見送ったので、今回はglusterfsを評価してみる。glusterfsの特徴は他の分散ファイルシステムに比してシンプルである事。管理ノードみたいなものは存在せず、メンバー全員が公平にファイルを管理してくれる。全く同じノードを幾つも作って、それが一体的に動いてくれるので、運用管理効率は高いと言える。自宅環境のような多くても数台程度のクラスター管理であれば、cephよりglusterfsの方が合っているように思う。... 続きを読む

分散FS 比較 cephfs vs glusterfs (1) ceph編

自宅の超重要データはdropboxに同期したので一安心。しかし、それ以外にも5TB超の有象無象のデータがある。中身は過去のメールのバックアップやPCのディスクイメージ、CDやらDVDのiso、果てはPSPやらPS2のisoまで。もはや必要かどうかすら怪しいが、消すのも面倒なので貯まっているようなものたち。3TBx4本のraid5を2つ作って運用してきたんだけど、有効容量が8分の3という非効率さ。加えて、同期用のcronがしばらく消えていた。cronの仕込みをchefで管理していたんだけど、recipeの修正ミスでした。... 続きを読む

dropbox で DR対策

自宅環境で最も頭を悩ましている問題が家族の写真と動画の管理。これはロストすると痛い上に、既に500GBに到達しているため、メディアに書き出すのも億劫。以前もraid5がどうとかこうとうか記事にしたこともあるんだけど、所詮自宅内でいくら冗長化したって火事一発でデータは消えてしまう。災害対策として、どこか別の拠点にデータをバックアップできないか検討し続けていた。例えば、実家にサーバ置いてしまうとか。... 続きを読む

ドコモ光 マルチセッション 再発編

マルチセッションでNATしてると数時間でフリーズしていたルータが一週間弱安定していたため復旧と判断したが、またもフリーズ病が再発。その後は悪夢の6時間インターバルでのフリーズに逆戻り(フリーズというかハング?)。以前はUDPのNAT利用時のみ起きてた問題が、TCPのNATでも普通に起きるようになってしまった。今まで調べてきた法則は一瞬でなかった事に。状況証拠だけの問題特定は所詮この程度の精度か。。。 ... 続きを読む

ドコモ光 マルチセッション 試行編

大分遠回りをしたが、やっと本来のマルチセッションについての検証。ルータはひかり電話用のPR-S300SEで、メインセッションをドコモnet(動的IP)に、セッション2をi-revo(固定IP)に繋げている状態。セッション2の接続ルール設定で自宅内サーバを送信元アドレスに設定し、ssh/dns/vpnをNATする。もう少し正確に言うとTCPが22と53を、UDPが53と1149をNATしている。vpnはGMOクラウド側にいるopenvpnクライアントと常時接続。... 続きを読む

ドコモ光 マルチセッション 障害編

前回、ドコモ光でマルチセッションを実現しようとしたら、それ自体でも問題起きたんだけど、レンタルしてるブロードバンドルータが逝ってしまったという話。ブロードバンドルータはひかり電話対応のPR-S300SE。マルチセッションの設定入れてると数時間で応答不能になってしまうので、その度に電源ケーブルの抜き差しで再起動していたんだけど、繰り返しているうちに電源入れてもルータが起動しなくなってしまった。... 続きを読む

ドコモ光 マルチセッション 設定編

ドコモ光のプロバイダオプションはタイプA/Bと単独型がある。単独型はタイプAに比べて200円安い代わりに自由にプロバイダを選べる。私は今までこの単独型でi-revoというISPを利用していた。このISPは月額500円で固定IPを付与してくれるという太っ腹。ただ、ピーク時の通信速度は値段相応と考える必要がある。更に問題なのはアップロードのデータサイズ上限で1日5GBまで。家族の画像や動画をクラウドストレージにバックアップしようと思うと、この上限はきつくなる。... 続きを読む