猛暑の続く中、久しぶりに、家に引きこもってサーバこねくり回している、タイミング良く夏休みにした感が凄いしょっさんです。
最近のキュレーション系とか、おかしなニュースサイトとかで、この娘が使われてること多くて嘆いてるけど、カワイイから仕方ないよね。カワイイだけじゃなくて名前もいい。「ゆか」とか、素晴らしすぎる「河村友歌オフィシャルサイト」どうぞ。Twitter IDも出てきたけど、おっさんそこまで必死じゃない。
それにしても、被りすぎて、何の記事だか分からなくなりすぎてる。
目次
夏休みも半分終わりそうで
9連休とかいう話ですが、土日はいつもどおりの家事やら、休日ならではのお仕事があります。だから、夏休みとはいっても、実質5日しかないようなものです。切ない。そんな折り返しの今日、これまでにやったことをまとめておく必要があるなと感じたわけです。月・火と何をやったかというと、おおきく次の3つ。
- しょっさん家の屋内LANトポロジーの決定と、ルータ2個(VyOS)追加
- iSCSIサーバの FreeNASを 9.2.1.8 → 9.3-STABLE(20150629) へ更新
- 富士通サーバ(FUJITSU Server PRIMERGY TX1310 M1 タイプ一覧・価格 : 富士通)を追加購入して、すでに稼働している「PROXMOX」の仮想ホストとクラスタリング
1は我が家の秘密だから、公にはしないし、2は ISOからフツーに”upgrade”ってやったら、何も考えずにフツーに更新されたので、とくにまとめない。と言うことで、RedHat Clusterの事を何も知らない状況からの、Proxmox de Clustering やってみました。そのメモを残しておきます。
PROXMOX de 2ノードクラスタリングを実現するには
結構、要件と制約が厳密で、素人の家だとなかなかできないと思います。我が家は、たまたま FreeNASでストレージサーバを別に組んでおいたお陰で、構成できたまでです。
PROXMOX de 2ノードクラスタリングするための要求事項と制約条件
2台だけでクラスタをするためには、次の条件をクリアする必要があるようです。回避策はありそうですけど。
- 各仮想ホストが接続するためのネットワークは IP Multicast 可能であること [I]そんな機能のない安ハブの場合は、unicast も選択できるが、4台くらいまでにしとけ
- quorum disk [II]10MB以上のブロックデバイス。SANやiSCSIなど。NFS不許可 が、各仮想ホストから繋がっていること
- Fencing に対応していること [III]最悪、デバイスがなくても、fence join だけしておけば、なんとかなった
我が家の場合は苦肉の策で、次のような構成になりました。
- UDP unicast を利用した
- iSCSI デバイスとして 16MB の quorum disk を、各サーバへ公開した
- fence join だけしてごまかした
これらが実現できなかったとき、我が家では次のような挙動を示しました。
- この設定をする以前に、そもそもまちがっていたことがあったので、もしやするとMulticastでもうまくいったかもしれません。
- CMAN を起動できません
- Resource Group Manager が正常に起動しません
はじめにクラスタを作ります
このblogどおりにやれば、クラスタできたような気持ちになれます。
「proxmox 3.4 cluster | NixLAB Tech」
- お互いに root同士で ssh通信できるようにする
- お互いの /etc/hosts に通信する相手のIPアドレスとホスト名をいれておく [IV]DNS で名前解決できれば良いと思いますが、それができないときのためと思われ
- マスター側でクラスタを「pvecm create <クラスタ名>」で作成する
- スレーブ側から、マスターへ「pvecm add <マスター側のホスト>」でクラスタ入りしてもらう
これで思い通りになっていれば、思い残すことはないと思います。最初の 1. をやり忘れた所為で、実はうまく動きませんでした。
なぜかうまく繋がらなかったり、スレーブ側のWEB UIが使えなかったり
これが適合しました。
「web interface not working in Proxmox 3」
これのここ。
1 | # pvecm updatecerts |
どうも「”/etc/pve/local/pve-ssl.*”」が存在していないという、残念なコトになってました。多分、上記の 1. を実施忘れた所為だと勝手に思い込んでます。まぁ、ご参考に。
quorum disk をつくろう
クラスタリングにとって、「偶数構成」とくに「2台構成」は鬼門です。なぜかというと split brain になったときに困るからです。多くのHAシステムでは「Voting(投票)」を使って、どのサーバが生きているかどうかを判断します。各サーバに投票権があって、「ボク動いてる」と投票することで、その投票権の少ない人が「しんでる」と錯覚するわけです。その時、他サーバから該当サーバを切り離すための努力をします。2台だと何が問題かというと、お互いに接続できなくなった場合にA「ボク生きてる」B「ボク生きてる」と言い出すと、お互いに投票結果は 1同士になるので、いずれが生きているか死んでいるかを判断できません。偶数でも、4台以上であれば、この問題は発生しにくいのですが、世の中にはどういったワケか真っ二つに分断することがあります。そうすると、たとえ 4台でも生き死にが分からないときがやってきます。
そこで、お互いにネットワーク同士で確認しあっているのだから、ほかのディスクにも投票権付けてやろうぜと言うのが、このquorum diskの考え方です。多分。quorum disk があれば、「ネットワークでお互いには通じ合えてないけど、ストレージへの書き込みを見ると、相手は生きているようだぞ」と分かるわけです。すごい。
ということで、お互いのサーバから接続可能な「ブロックデバイス」が必要です。nfs ダメです。iSCSI や SANなどで共有されるストレージが必要です。我が家では、FreeNASの iSCSIサーバがあるので、これを使いました。作っておいて良かった、ストレージサーバ。
その作り方はこれです。
「Two-Node High Availability Cluster – Proxmox VE」
途中、CentOS さんで iSCSI ターゲットを作るところから始めているので、それもご参考にどうぞ。Proxmox仮想ホスト側での作業は、この流れです。
- iscsiadm で、quorum disk を認識させる
- マスター側で、パーティションの作成と、”mkqdisk”で quorum diskを作成する
- /etc/pve/cluster.conf に quorum disk の定義を入れる [V]実際には、/etc/pve/cluster.conf.new にコピーして、そっちを編集
- Web UI の “datacenter” → “HA” タブの「Activation」を実行する
- スレーブ側で、パーティションを認識させる
- rgmanager の停止 → cman の reload を、マスター→スレーブの順で実行
これで “clustat” を実行すると、quorum disk が登録されてるのが見えるはず
fencing の準備だけしておこう
この状態だと、なぜか rgmanager を起動させることができず、live migration とかできなくて、クラスタの意味が分からなくなる。
イロイロ調べていると、rgmanager は fence に join されていることが重要らしい表記を見つける。でも、fence に対応したデバイスがない → 困る
が、なんとなく、fence join だけすると、うまくいったので、次のを試してみると良いかもしれません。
これの「Enable fencing on all nodes」章だけ、やります。それ以後は知りません。
- “/etc/default/redhat-cluster-pve” 内の「FENCE_JOIN=”yes”」をactiveにする [VI]# を外す
- cman の再起動
- fence_tool join
- pve-cluster の再起動
これを、マスターとスレーブのいずれでもやってみてから “service rgmanager restart” やったら、なんと動きました。なんでやねん。よく分からん。
Fencing ってなんやねんと、「Red Hat Customer Portal」を読んでみたら、なんとなく分かったけど、今回の設定が何を意味するかは、よく理解できていません。
まとまらないまとめ
何も知らない割には、なんとなく動いたので、現時点ではこれで良しとします。HAの切替はたぶんできない気がしますが、Live Migrationできたことにいたく感動しています。
自宅でも、Live Migration ! しょっさんでした。