4
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

【OCI】1つのブロック・ボリュームを複数のUbuntuインスタンスでread/writeする

Last updated at Posted at 2022-03-18

複数のUbuntuインスタンスにブロック・ボリュームをマウントした備忘録を共有。
(OCI Linux向けのドキュメントは揃っていましたが、Ubuntu向けはなかったので)

参考

先人の力をお借りしました。

想定

  • Ubuntuインスタンス0(ブート・ボリューム 50GB)【以後、ins0と呼びます】
  • Ubuntuインスタンス1(ブート・ボリューム 50GB)【以後、ins1と呼びます】
  • ブロック・ボリューム 100GB
    • ブロック・ボリュームを使って、ストレージを拡張したい
    • ついでにファイルをインスタンス間で共有したい
  • 同一のVCNを使用

Step1. インスタンスとブロック・ストレージを起動

ドキュメントがたくさん公開されているので、ここでは省略。

Step2. インスタンスにブロック・ストレージをアタッチ

ins0とins1のそれぞれにブロック・ボリュームを接続します。
次の1つの注意点を除いて、一般的な手順で進めてください。

  • アクセスはどちらのインスタンスでも「読取り/書込み - 共有可能」を選択します。
    スクリーンショット 2022-03-18 17.56.09.png

各コンテナで3つのiSCSIコマンドを実行するところまで完了させてください。
※パーティションの作成以降はこのあとで

参考になる記事
https://zenn.dev/kotapon/articles/d887eef29914e8

Step3. 各インスタンスのローカルIPを確認 & 7777番ポートを開ける

Step2で注意メッセージが表示されたと思いますが、そのままで複数のインスタンスからアクセスすることはデータ破損を起こし危険です。
(また、各インスタンスでファイル情報を手動で更新しなければなりません。)

そこでOracleが提供しているOCFS2(Oracle Cluster File System Version 2)というクラスターファイルシステムサービスを利用します。
詳細を知りたい場合はここを参照してみてください。

OCFS2により、各インスタンス間は7777番ポートで通信するので環境を整えます。

ローカルIPとホスト名

まず、各インスタンスのローカルIPとホスト名を確認します。
各インスタンスの「インスタンスの詳細」を開き、プライマリVNICのプライベートIPアドレスとホスト名をメモしておきます。
このインスタンスは10.0.0.23とmainでした。
スクリーンショット 2022-03-18 18.08.53.png

イングレス・ルール

VCNのイングレス・ルールにより、ポート番号は制限されているため、
"ローカルからの7777番ポートへのアクセス"を解除します。

該当VCNの セキュリティ・リスト > Default Security List for * > イングレス・ルール と開き、イングレス・ルールの追加。
ソースCIDRに「10.0.0.0/16」を、宛先ポート範囲に「7777」を入力して追加する。
スクリーンショット 2022-03-18 18.14.04.png

iptables

またOCIの場合、Ubuntu側のファイアウォールでもポートが制限されているので解除します。
各コンテナで実行してください。

# iptablesで7777を許可
sudo iptables -I INPUT -p tcp --dport 7777 -j ACCEPT
# 永続化
sudo /etc/init.d/netfilter-persistent save
sudo /etc/init.d/netfilter-persistent reload

これでコンテナ間で7777番にアクセスできるようになりました。

Step4. OCFS2のインストールと実行

各コンテナで次の作業を行っていきます。

まずOCFS2をインストールします。

$ sudo apt-get update
$ sudo apt-get install ocfs2-tools

続いて、OCFS2の設定ファイルを作成します。

$ sudo o2cb add-cluster ociocfs2
# 対象のインスタンスの数だけ次を実行(実行順は全てのインスタンスで統一しておきます)
# sudo o2cb add-node ociocfs2 [ホスト名] --ip [ローカルIPアドレス]
$ sudo o2cb add-node ociocfs2 main --ip 10.0.0.15 
$ sudo o2cb add-node ociocfs2 sub --ip 10.0.0.16

マウント先のディレクトリを作成します。

# マウント先はご自由に
sudo mkdir /mnt/ocfs2

/etc/default/o2cbを編集して、OCFS2を有効にします。(falseをtrueに置換)

/etc/default/o2cb
︙
O2CB_ENABLED=true
︙

最後に起動します。

$ sudo systemctl restart o2cb

Step5. パーティションとフォーマット

ここでは任意の1つのインスタンスだけで実行します。
まずはパーティションの作成。

$ sudo fdisk /dev/sdb # sdbは環境により異なるかもしれません

Welcome to fdisk (util-linux X.XX).

Command (m for help): n
Select (default p): p
Partition number (1-4, default 1): 1
First sector (2048-209715199, default 2048):
Last sector, +/-sectors or +/-size{K,M,G,T,P} (2048-209715199, default 209715199):

︙

Command (m for help): w

︙

ocfs2でフォーマット。

$ sudo mkfs.ocfs2 /dev/sdb1 # ここも環境により少し異なるかもしれません

Step6. マウント

各インスタンスで次のようにマウントすれば晴れて完了です。

$ sudo mount -t ocfs2 /dev/sdb1 /mnt/ocfs2
# 念のため確認
$ df
4
0
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?