Categories: Oracle

まだbondingで消耗しているの?HAIPでインターコネクト冗長化の時代が来たよ!

JPOUG Advent Calendar 2017 22日目の投稿です。

21日目はYohei Azekatsu様のOracle Database のベンチマークツール SLOB(The Silly Little Oracle Benchmark) を使ってみるでした。

本当はRACとDataGuardのことを書きたかったのですが、上司の雲行きがグレーな感じだったため、RAC関連のネタとしてHAIPについてひとつ共有致します。

HAIPとは

HAIPは複数のインターコネクト用のNICをいい感じにまとめて冗長化してくれる機能です。

マニュアルによると以下のように記載されています。
Cf: 冗長なインターコネクトの使用

冗長なインターコネクトの使用に対して複数のインタフェースを定義できます。このようにすると、定義したインタフェースの数に応じて1つから4つの高可用性IP(HAIP)アドレスがOracle Clusterwareによって作成され、Oracle DatabaseおよびOracle ASMインスタンスは、これらのアドレスを使用して高可用性のロード・バランスされた通信を実現します。

つまり、bondingやチーミングなどをしなくてもOracle側でよしなに制御してくれるという代物です。

とっても便利じゃないかと思いつつも、ちゃんと動き的にロードバランスしてくれたり、フェイルオーバーてきなことをしてくれるのかが気になったので動きを検証してみました。

HAIPの動きの検証

環境

環境は以下の環境で実施しました。

OS:RedHat 7.3
Oracle: 12.1.0.2 2node RAC(SE)

NICは以下のようにインターコネクトを4つ用意しました。

# oifcfg getif
enp0s16  192.168.11.0  global  cluster_interconnect
enp0s17  192.168.12.0  global  cluster_interconnect
enp0s18  192.168.13.0  global  cluster_interconnect
enp0s3  192.168.250.0  global  public
enp0s9  192.168.10.0  global  cluster_interconnect

※中途半端にenp0s10が葉抜きになってて途中わかりにくくなりますがいい感じに読み取ってください。すみません。

検証方法

以下のようにテスト的なテーブルを作成します。

create table hoge (id number) tablespace users;
create sequence seq_hoge start with 1 nomaxvalue order  increment by 1 nocache nocycle;

あとはこのテーブルに対してシーケンスを使って2ノードからひたすらINSERTするだけの簡単なお仕事。

begin
 for i in 1..5000
 loop
     insert into hoge values (seq_hoge.nextval);
    commit;
 end loop;
end;
/

1ノードであればすぐ終わるのですが、2ノードで同時実行するとちゃんとお互いのノードで順序を取得しあうため、キャッシュフュージョンが大量に発生してインターコネクトを使うことがわかるはずです。

※普通はキャッシュフュージョンが発生しないようにするために、シーケンスを作る際はキャッシュをある程度確保してシーケンスを作成します。今回はインターコネクトを使わせるためにnocacheでシーケンスを作ってますが、実際の環境ではキャッシュさせるように気をつけてください。

インサート中はsarコマンドを用いて各NICの通信量を観測してみます。
以下のコマンドは60秒間、NIC通信量を計測します。

sar -n DEV 1 60

実際の動きの検証

では実際にやってみましょう。

最初に、sarコマンドを各ノードで実行しておきます。

1号機の様子。

[root@ora01 15:28:09 ~]# sar -n DEV 1 60
Linux 3.10.0-514.el7.x86_64 (ora01)     2017年12月20日  _x86_64_        (2 CPU)
15時28分13秒     IFACE   rxpck/s   txpck/s    rxkB/s    txkB/s   rxcmp/s   txcmp/s  rxmcst/s
15時28分14秒    enp0s3      0.00      0.00      0.00      0.00      0.00      0.00      0.00
15時28分14秒    enp0s8      0.00      0.00      0.00      0.00      0.00      0.00      0.00
15時28分14秒    enp0s9      5.00      4.00      1.35      0.65      0.00      0.00      0.00
15時28分14秒        lo     37.00     37.00     27.56     27.56      0.00      0.00      0.00
15時28分14秒 virbr0-nic      0.00      0.00      0.00      0.00      0.00      0.00      0.00
15時28分14秒    virbr0      0.00      0.00      0.00      0.00      0.00      0.00      0.00
15時28分14秒   enp0s10      0.00      0.00      0.00      0.00      0.00      0.00      0.00
15時28分14秒   enp0s16      2.00      5.00      0.29      1.63      0.00      0.00      0.00
15時28分14秒   enp0s18      5.00      4.00      0.97      0.85      0.00      0.00      0.00
15時28分14秒   enp0s17      2.00      1.00      0.56      0.14      0.00      0.00      0.00
...

2号機の様子。

[root@ora02 15:28:13 ~]# sar -n DEV 1 60
Linux 3.10.0-514.el7.x86_64 (ora02)     2017年12月20日  _x86_64_        (2 CPU)

15時28分14秒     IFACE   rxpck/s   txpck/s    rxkB/s    txkB/s   rxcmp/s   txcmp/s  rxmcst/s
15時28分15秒    enp0s3      0.00      0.00      0.00      0.00      0.00      0.00      0.00
15時28分15秒    enp0s8      0.00      0.00      0.00      0.00      0.00      0.00      0.00
15時28分15秒    enp0s9     14.00     15.00      3.61      4.47      0.00      0.00      0.00
15時28分15秒        lo      3.00      3.00      0.50      0.50      0.00      0.00      0.00
15時28分15秒 virbr0-nic      0.00      0.00      0.00      0.00      0.00      0.00      0.00
15時28分15秒    virbr0      0.00      0.00      0.00      0.00      0.00      0.00      0.00
15時28分15秒   enp0s16     10.00     11.00      2.91      2.81      0.00      0.00      0.00
15時28分15秒   enp0s18     12.00     54.00      3.75     65.57      0.00      0.00      0.00
15時28分15秒   enp0s10      0.00      0.00      0.00      0.00      0.00      0.00      0.00
15時28分15秒   enp0s17     21.00     33.00     18.22     33.69      0.00      0.00      0.00
...

インターコネクト側には全然大した通信量はありませんね。

ここで、2ノードに同時にINSERTを実施します。

すると、各ノードでインターコネクトがメキメキと消費しはじめました。

1号機

15時28分17秒     IFACE   rxpck/s   txpck/s    rxkB/s    txkB/s   rxcmp/s   txcmp/s  rxmcst/s
15時28分18秒    enp0s3      2.00      0.00      0.12      0.00      0.00      0.00      0.00
15時28分18秒    enp0s8      0.00      0.00      0.00      0.00      0.00      0.00      0.00
15時28分18秒    enp0s9    631.00    624.00    387.06    377.78      0.00      0.00      0.00
15時28分18秒        lo    221.00    221.00     37.12     37.12      0.00      0.00      0.00
15時28分18秒 virbr0-nic      0.00      0.00      0.00      0.00      0.00      0.00      0.00
15時28分18秒    virbr0      0.00      0.00      0.00      0.00      0.00      0.00      0.00
15時28分18秒   enp0s10      1.00      1.00      0.06      1.18      0.00      0.00      0.00
15時28分18秒   enp0s16    666.00    627.00    419.06    376.14      0.00      0.00      0.00
15時28分18秒   enp0s18    631.00    611.00    375.93    365.59      0.00      0.00      0.00
15時28分18秒   enp0s17    567.00    637.00    316.79    383.79      0.00      0.00      0.00
...

2号機

15時28分17秒     IFACE   rxpck/s   txpck/s    rxkB/s    txkB/s   rxcmp/s   txcmp/s  rxmcst/s
15時28分18秒    enp0s3      0.00      0.00      0.00      0.00      0.00      0.00      0.00
15時28分18秒    enp0s8      0.00      0.00      0.00      0.00      0.00      0.00      0.00
15時28分18秒    enp0s9    663.00    767.00    338.36    475.02      0.00      0.00      0.00
15時28分18秒        lo    168.00    168.00     28.22     28.22      0.00      0.00      0.00
15時28分18秒 virbr0-nic      0.00      0.00      0.00      0.00      0.00      0.00      0.00
15時28分18秒    virbr0      0.00      0.00      0.00      0.00      0.00      0.00      0.00
15時28分18秒   enp0s16    703.00    652.00    389.66    325.71      0.00      0.00      0.00
15時28分18秒   enp0s18    708.00    698.00    395.46    380.20      0.00      0.00      0.00
15時28分18秒   enp0s10      1.00      1.00      0.06      1.18      0.00      0.00      0.00
15時28分18秒   enp0s17    691.00    654.00    361.78    326.08      0.00      0.00      0.00
...

さらに、インサート中に1号機側のNIC(enp0s16)をダウンさせてみます。

すると、一瞬通信量が下がった後、enp0s9にフェイルオーバーしたようで、enp0s9の通信量が倍近く膨れ上がりました。

15時28分19秒     IFACE   rxpck/s   txpck/s    rxkB/s    txkB/s   rxcmp/s   txcmp/s  rxmcst/s
15時28分20秒    enp0s3      0.00      0.00      0.00      0.00      0.00      0.00      0.00
15時28分20秒    enp0s8      0.00      0.00      0.00      0.00      0.00      0.00      0.00
15時28分20秒    enp0s9    357.00    326.00    242.43    202.13      0.00      0.00      0.00
15時28分20秒        lo    138.00    138.00     23.18     23.18      0.00      0.00      0.00
15時28分20秒 virbr0-nic      0.00      0.00      0.00      0.00      0.00      0.00      0.00
15時28分20秒    virbr0      0.00      0.00      0.00      0.00      0.00      0.00      0.00
15時28分20秒   enp0s10      3.00      2.00      0.26      1.32      0.00      0.00      0.00
15時28分20秒   enp0s16    339.00    336.00    214.44    220.26      0.00      0.00      0.00
15時28分20秒   enp0s18    330.00    324.00    204.94    205.24      0.00      0.00      0.00
15時28分20秒   enp0s17    336.00    356.00    215.35    233.43      0.00      0.00      0.00

15時28分20秒     IFACE   rxpck/s   txpck/s    rxkB/s    txkB/s   rxcmp/s   txcmp/s  rxmcst/s
15時28分21秒    enp0s3      0.00     15.00      0.00     10.56      0.00      0.00      0.00
15時28分21秒    enp0s8      0.00      0.00      0.00      0.00      0.00      0.00      0.00
15時28分21秒    enp0s9     58.00     49.00     45.31     26.80      0.00      0.00      0.00
15時28分21秒        lo    159.00    159.00     36.83     36.83      0.00      0.00      0.00
15時28分21秒 virbr0-nic      0.00      0.00      0.00      0.00      0.00      0.00      0.00
15時28分21秒    virbr0      0.00      0.00      0.00      0.00      0.00      0.00      0.00
15時28分21秒   enp0s10      1.00      1.00      0.06      1.18      0.00      0.00      0.00
15時28分21秒   enp0s16     44.00     40.00     23.78     23.09      0.00      0.00      0.00
15時28分21秒   enp0s18      0.00      0.00      0.00      0.00      0.00      0.00      0.00
15時28分21秒   enp0s17     32.00     39.00     13.43     16.28      0.00      0.00      0.00

15時28分21秒     IFACE   rxpck/s   txpck/s    rxkB/s    txkB/s   rxcmp/s   txcmp/s  rxmcst/s
15時28分22秒    enp0s3      0.00     24.00      0.00      8.50      0.00      0.00      0.00
15時28分22秒    enp0s8      0.00      0.00      0.00      0.00      0.00      0.00      0.00
15時28分22秒    enp0s9     28.00     32.00      8.52     14.13      0.00      0.00      0.00
15時28分22秒        lo    193.00    193.00     18.89     18.89      0.00      0.00      0.00
15時28分22秒 virbr0-nic      0.00      0.00      0.00      0.00      0.00      0.00      0.00
15時28分22秒    virbr0      0.00      0.00      0.00      0.00      0.00      0.00      0.00
15時28分22秒   enp0s10      2.00      3.00      0.12      1.50      0.00      0.00      0.00
15時28分22秒   enp0s16     22.00     27.00      6.22     10.08      0.00      0.00      0.00
15時28分22秒   enp0s18      0.00      0.00      0.00      0.00      0.00      0.00      0.00
15時28分22秒   enp0s17     27.00     24.00     11.78     12.82      0.00      0.00      0.00

15時28分22秒     IFACE   rxpck/s   txpck/s    rxkB/s    txkB/s   rxcmp/s   txcmp/s  rxmcst/s
15時28分23秒    enp0s3      1.00      0.00      0.06      0.00      0.00      0.00      0.00
15時28分23秒    enp0s8      0.00      0.00      0.00      0.00      0.00      0.00      0.00
15時28分23秒    enp0s9    132.00    119.00    108.60     78.96      0.00      0.00      0.00
15時28分23秒        lo     35.00     35.00     13.39     13.39      0.00      0.00      0.00
15時28分23秒 virbr0-nic      0.00      0.00      0.00      0.00      0.00      0.00      0.00
15時28分23秒    virbr0      0.00      0.00      0.00      0.00      0.00      0.00      0.00
15時28分23秒   enp0s10      1.00      1.00      0.06      1.18      0.00      0.00      0.00
15時28分23秒   enp0s16     82.00     54.00     71.39     31.09      0.00      0.00      0.00
15時28分23秒   enp0s18      0.00      0.00      0.00      0.00      0.00      0.00      0.00
15時28分23秒   enp0s17     61.00     56.00     43.83     33.82      0.00      0.00      0.00

15時28分23秒     IFACE   rxpck/s   txpck/s    rxkB/s    txkB/s   rxcmp/s   txcmp/s  rxmcst/s
15時28分24秒    enp0s3      0.00      0.00      0.00      0.00      0.00      0.00      0.00
15時28分24秒    enp0s8      0.00      0.00      0.00      0.00      0.00      0.00      0.00
15時28分24秒    enp0s9   1166.00   1135.00    771.74    720.93      0.00      0.00      0.00
15時28分24秒        lo    237.00    237.00     63.26     63.26      0.00      0.00      0.00
15時28分24秒 virbr0-nic      0.00      0.00      0.00      0.00      0.00      0.00      0.00
15時28分24秒    virbr0      0.00      0.00      0.00      0.00      0.00      0.00      0.00
15時28分24秒   enp0s10      1.00      1.00      0.06      1.18      0.00      0.00      0.00
15時28分24秒   enp0s16    617.00    609.00    417.10    418.14      0.00      0.00      0.00
15時28分24秒   enp0s18      0.00      0.00      0.00      0.00      0.00      0.00      0.00
15時28分24秒   enp0s17    593.00    592.00    403.44    400.53      0.00      0.00      0.00
...

2号機

15時28分22秒     IFACE   rxpck/s   txpck/s    rxkB/s    txkB/s   rxcmp/s   txcmp/s  rxmcst/s
15時28分23秒    enp0s3      7.00      0.00      1.83      0.00      0.00      0.00      0.00
15時28分23秒    enp0s8      0.00      0.00      0.00      0.00      0.00      0.00      0.00
15時28分23秒    enp0s9     49.00     58.00     27.01     55.18      0.00      0.00      0.00
15時28分23秒        lo     73.00     73.00     15.80     15.80      0.00      0.00      0.00
15時28分23秒 virbr0-nic      0.00      0.00      0.00      0.00      0.00      0.00      0.00
15時28分23秒    virbr0      0.00      0.00      0.00      0.00      0.00      0.00      0.00
15時28分23秒   enp0s16     40.00     43.00     22.83     23.63      0.00      0.00      0.00
15時28分23秒   enp0s18      0.00     32.00      0.00     16.11      0.00      0.00      0.00
15時28分23秒   enp0s10      1.00      1.00      0.06      1.18      0.00      0.00      0.00
15時28分23秒   enp0s17     44.00     34.00     21.45     14.29      0.00      0.00      0.00

15時28分23秒     IFACE   rxpck/s   txpck/s    rxkB/s    txkB/s   rxcmp/s   txcmp/s  rxmcst/s
15時28分24秒    enp0s3     21.00      0.00      7.75      0.00      0.00      0.00      0.00
15時28分24秒    enp0s8      0.00      0.00      0.00      0.00      0.00      0.00      0.00
15時28分24秒    enp0s9     32.00     27.00     14.19      8.00      0.00      0.00      0.00
15時28分24秒        lo    267.00    267.00     24.63     24.63      0.00      0.00      0.00
15時28分24秒 virbr0-nic      0.00      0.00      0.00      0.00      0.00      0.00      0.00
15時28分24秒    virbr0      0.00      0.00      0.00      0.00      0.00      0.00      0.00
15時28分24秒   enp0s16     26.00     34.00      9.73     22.72      0.00      0.00      0.00
15時28分24秒   enp0s18      0.00     29.00      0.00     13.70      0.00      0.00      0.00
15時28分24秒   enp0s10      1.00      1.00      0.06      1.18      0.00      0.00      0.00
15時28分24秒   enp0s17     19.00     26.00      7.65     11.14      0.00      0.00      0.00

15時28分24秒     IFACE   rxpck/s   txpck/s    rxkB/s    txkB/s   rxcmp/s   txcmp/s  rxmcst/s
15時28分25秒    enp0s3      1.00      0.00      0.06      0.00      0.00      0.00      0.00
15時28分25秒    enp0s8      0.00      0.00      0.00      0.00      0.00      0.00      0.00
15時28分25秒    enp0s9    132.00    134.00     96.76    109.06      0.00      0.00      0.00
15時28分25秒        lo     45.00     45.00     13.51     13.51      0.00      0.00      0.00
15時28分25秒 virbr0-nic      0.00      0.00      0.00      0.00      0.00      0.00      0.00
15時28分25秒    virbr0      0.00      0.00      0.00      0.00      0.00      0.00      0.00
15時28分25秒   enp0s16     54.00     70.00     31.09     54.89      0.00      0.00      0.00
15時28分25秒   enp0s18      0.00      9.00      0.00      2.27      0.00      0.00      0.00
15時28分25秒   enp0s10      1.00      1.00      0.06      1.18      0.00      0.00      0.00
15時28分25秒   enp0s17     57.00     61.00     34.12     43.87      0.00      0.00      0.00

15時28分25秒     IFACE   rxpck/s   txpck/s    rxkB/s    txkB/s   rxcmp/s   txcmp/s  rxmcst/s
15時28分26秒    enp0s3      0.00      0.00      0.00      0.00      0.00      0.00      0.00
15時28分26秒    enp0s8      0.00      0.00      0.00      0.00      0.00      0.00      0.00
15時28分26秒    enp0s9   1169.00   1215.00    737.39    810.71      0.00      0.00      6.00
15時28分26秒        lo    120.00    120.00     20.16     20.16      0.00      0.00      0.00
15時28分26秒 virbr0-nic      0.00      0.00      0.00      0.00      0.00      0.00      0.00
15時28分26秒    virbr0      0.00      0.00      0.00      0.00      0.00      0.00      0.00
15時28分26秒   enp0s16    635.00    636.00    437.98    426.93      0.00      0.00      0.00
15時28分26秒   enp0s18      0.00      0.00      0.00      0.00      0.00      0.00      0.00
15時28分26秒   enp0s10      1.00      1.00      0.06      1.18      0.00      0.00      0.00
15時28分26秒   enp0s17    603.00    608.00    403.96    412.04      0.00      0.00      0.00
...

ちなみにフェイルオーバーすると、2号機側でもちゃんと認識してフェイルオーバーしているようです。

[root@ora01 15:52:36 ~]# ifconfig
enp0s3: flags=4163  mtu 1500
        inet 192.168.250.81  netmask 255.255.255.0  broadcast 192.168.250.255
        inet6 fe80::a00:27ff:febf:736a  prefixlen 64  scopeid 0x20
        ether 08:00:27:bf:73:6a  txqueuelen 1000  (Ethernet)
        RX packets 7443  bytes 1021129 (997.1 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 4137  bytes 1390996 (1.3 MiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

enp0s3:1: flags=4163  mtu 1500
        inet 192.168.250.83  netmask 255.255.255.0  broadcast 192.168.250.255
        ether 08:00:27:bf:73:6a  txqueuelen 1000  (Ethernet)

enp0s3:3: flags=4163  mtu 1500
        inet 192.168.250.85  netmask 255.255.255.0  broadcast 192.168.250.255
        ether 08:00:27:bf:73:6a  txqueuelen 1000  (Ethernet)

enp0s8: flags=4163  mtu 1500
        inet 192.168.56.81  netmask 255.255.255.0  broadcast 192.168.56.255
        inet6 fe80::a00:27ff:fe4a:fec  prefixlen 64  scopeid 0x20
        ether 08:00:27:4a:0f:ec  txqueuelen 1000  (Ethernet)
        RX packets 0  bytes 0 (0.0 B)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 0  bytes 0 (0.0 B)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

enp0s9: flags=4163  mtu 1500
        inet 192.168.10.11  netmask 255.255.255.0  broadcast 192.168.10.255
        inet6 fe80::a00:27ff:fe68:3b24  prefixlen 64  scopeid 0x20
        ether 08:00:27:68:3b:24  txqueuelen 1000  (Ethernet)
        RX packets 445141  bytes 313774671 (299.2 MiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 422265  bytes 274980358 (262.2 MiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

enp0s9:1: flags=4163  mtu 1500
        inet 169.254.5.151  netmask 255.255.192.0  broadcast 169.254.63.255
        ether 08:00:27:68:3b:24  txqueuelen 1000  (Ethernet)

enp0s9:2: flags=4163  mtu 1500  ←★enp0s9:2でフェイルオーバーしている!
        inet 169.254.246.226  netmask 255.255.192.0  broadcast 169.254.255.255
        ether 08:00:27:68:3b:24  txqueuelen 1000  (Ethernet)

enp0s10: flags=4163  mtu 1500
        inet 192.168.20.81  netmask 255.255.255.0  broadcast 192.168.20.255
        inet6 fe80::a00:27ff:fe88:89fa  prefixlen 64  scopeid 0x20
        ether 08:00:27:88:89:fa  txqueuelen 1000  (Ethernet)
        RX packets 5269  bytes 601246 (587.1 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 4525  bytes 1453246 (1.3 MiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

enp0s16: flags=4163  mtu 1500
        inet 192.168.11.11  netmask 255.255.255.0  broadcast 192.168.11.255
        inet6 fe80::a00:27ff:fe0a:c8b0  prefixlen 64  scopeid 0x20
        ether 08:00:27:0a:c8:b0  txqueuelen 1000  (Ethernet)
        RX packets 388371  bytes 261666122 (249.5 MiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 377013  bytes 247732229 (236.2 MiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

enp0s16:1: flags=4163  mtu 1500
        inet 169.254.100.74  netmask 255.255.192.0  broadcast 169.254.127.255
        ether 08:00:27:0a:c8:b0  txqueuelen 1000  (Ethernet)

enp0s17: flags=4163  mtu 1500
        inet 192.168.12.11  netmask 255.255.255.0  broadcast 192.168.12.255
        inet6 fe80::a00:27ff:fe39:6feb  prefixlen 64  scopeid 0x20
        ether 08:00:27:39:6f:eb  txqueuelen 1000  (Ethernet)
        RX packets 385219  bytes 258880806 (246.8 MiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 379709  bytes 248541827 (237.0 MiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

enp0s17:1: flags=4163  mtu 1500
        inet 169.254.180.184  netmask 255.255.192.0  broadcast 169.254.191.255
        ether 08:00:27:39:6f:eb  txqueuelen 1000  (Ethernet)

lo: flags=73  mtu 65536
        inet 127.0.0.1  netmask 255.0.0.0
        inet6 ::1  prefixlen 128  scopeid 0x10
        loop  txqueuelen 1  (Local Loopback)
        RX packets 293455  bytes 221377626 (211.1 MiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 293455  bytes 221377626 (211.1 MiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

virbr0: flags=4099  mtu 1500
        inet 192.168.122.1  netmask 255.255.255.0  broadcast 192.168.122.255
        ether 52:54:00:26:fe:cd  txqueuelen 1000  (Ethernet)
        RX packets 0  bytes 0 (0.0 B)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 0  bytes 0 (0.0 B)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

2号機側のNIC情報

[root@ora02 15:53:25 ~]# ifconfig
enp0s3: flags=4163  mtu 1500
        inet 192.168.250.82  netmask 255.255.255.0  broadcast 192.168.250.255
        inet6 fe80::a00:27ff:fe9d:6e76  prefixlen 64  scopeid 0x20
        ether 08:00:27:9d:6e:76  txqueuelen 1000  (Ethernet)
        RX packets 7421  bytes 1250808 (1.1 MiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 3935  bytes 1052253 (1.0 MiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

enp0s3:1: flags=4163  mtu 1500
        inet 192.168.250.84  netmask 255.255.255.0  broadcast 192.168.250.255
        ether 08:00:27:9d:6e:76  txqueuelen 1000  (Ethernet)

enp0s8: flags=4163  mtu 1500
        inet 192.168.56.81  netmask 255.255.255.0  broadcast 192.168.56.255
        inet6 fe80::a00:27ff:feaf:1f4d  prefixlen 64  scopeid 0x20
        ether 08:00:27:af:1f:4d  txqueuelen 1000  (Ethernet)
        RX packets 0  bytes 0 (0.0 B)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 0  bytes 0 (0.0 B)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

enp0s9: flags=4163  mtu 1500
        inet 192.168.10.12  netmask 255.255.255.0  broadcast 192.168.10.255
        inet6 fe80::a00:27ff:fed3:6f5d  prefixlen 64  scopeid 0x20
        ether 08:00:27:d3:6f:5d  txqueuelen 1000  (Ethernet)
        RX packets 423388  bytes 275561500 (262.7 MiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 446767  bytes 336269694 (320.6 MiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

enp0s9:1: flags=4163  mtu 1500
        inet 169.254.63.77  netmask 255.255.192.0  broadcast 169.254.63.255
        ether 08:00:27:d3:6f:5d  txqueuelen 1000  (Ethernet)

enp0s9:2: flags=4163  mtu 1500 ←★enp0s9:2でフェイルオーバーしている!
        inet 169.254.195.238  netmask 255.255.192.0  broadcast 169.254.255.255
        ether 08:00:27:d3:6f:5d  txqueuelen 1000  (Ethernet)

enp0s10: flags=4163  mtu 1500
        inet 192.168.20.82  netmask 255.255.255.0  broadcast 192.168.20.255
        inet6 fe80::a00:27ff:fed3:dc30  prefixlen 64  scopeid 0x20
        ether 08:00:27:d3:dc:30  txqueuelen 1000  (Ethernet)
        RX packets 2166  bytes 223814 (218.5 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 2110  bytes 941925 (919.8 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

enp0s16: flags=4163  mtu 1500
        inet 192.168.11.12  netmask 255.255.255.0  broadcast 192.168.11.255
        inet6 fe80::a00:27ff:fe7f:f98c  prefixlen 64  scopeid 0x20
        ether 08:00:27:7f:f9:8c  txqueuelen 1000  (Ethernet)
        RX packets 377504  bytes 247983410 (236.4 MiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 389122  bytes 262148953 (250.0 MiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

enp0s16:1: flags=4163  mtu 1500
        inet 169.254.104.255  netmask 255.255.192.0  broadcast 169.254.127.255
        ether 08:00:27:7f:f9:8c  txqueuelen 1000  (Ethernet)

enp0s17: flags=4163  mtu 1500
        inet 192.168.12.12  netmask 255.255.255.0  broadcast 192.168.12.255
        inet6 fe80::a00:27ff:fe40:df68  prefixlen 64  scopeid 0x20
        ether 08:00:27:40:df:68  txqueuelen 1000  (Ethernet)
        RX packets 380253  bytes 248890781 (237.3 MiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 385982  bytes 259375636 (247.3 MiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

enp0s17:1: flags=4163  mtu 1500
        inet 169.254.152.104  netmask 255.255.192.0  broadcast 169.254.191.255
        ether 08:00:27:40:df:68  txqueuelen 1000  (Ethernet)

enp0s18: flags=4163  mtu 1500
        inet 192.168.13.12  netmask 255.255.255.0  broadcast 192.168.13.255
        inet6 fe80::a00:27ff:fe89:b939  prefixlen 64  scopeid 0x20
        ether 08:00:27:89:b9:39  txqueuelen 1000  (Ethernet)
        RX packets 332630  bytes 214403547 (204.4 MiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 345364  bytes 230318647 (219.6 MiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

lo: flags=73  mtu 65536
        inet 127.0.0.1  netmask 255.0.0.0
        inet6 ::1  prefixlen 128  scopeid 0x10
        loop  txqueuelen 1  (Local Loopback)
        RX packets 124391  bytes 96114530 (91.6 MiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 124391  bytes 96114530 (91.6 MiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

virbr0: flags=4099  mtu 1500
        inet 192.168.122.1  netmask 255.255.255.0  broadcast 192.168.122.255
        ether 52:54:00:26:fe:cd  txqueuelen 1000  (Ethernet)
        RX packets 0  bytes 0 (0.0 B)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 0  bytes 0 (0.0 B)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

ちなみに、NICを落としたとしても処理は中断せず、きちんとインサートされていることが確認できました。

1号機

15:27:12 SYS@ORCL1> begin
15:28:15   2   for i in 1..5000
15:28:15   3   loop
15:28:15   4    insert into hoge values (seq_hoge.nextval);
15:28:15   5    commit;
15:28:15   6   end loop;
15:28:15   7  end;
15:28:15   8  /

PL/SQL procedure successfully completed.

2号機

15:27:14 SYS@ORCL2> begin
15:28:16   2   for i in 1..5000
15:28:17   3   loop
15:28:17   4    insert into hoge values (seq_hoge.nextval);
15:28:17   5    commit;
15:28:17   6   end loop;
15:28:17   7  end;
15:28:17   8  /

PL/SQL procedure successfully completed.

Elapsed: 00:00:46.86

件数もきっちり2ノード分雁首揃えて1万件入ってました。

15:53:31 SYS@ORCL1> select count(*) from hoge;

  COUNT(*)
----------
     10000

Elapsed: 00:00:00.12

まとめ

今回の検証により、bondingやチーミングなどを使わなくてもOracle側でアクティブ・アクティブにインターコネクト通信をロードバランスしてくれて、自動的にフェイルオーバーもしてくれて、いい感じに処理してくれることがわかりました。

みなさんも今後はインターコネクトを使う際は是非HAIPをお使いください!

mogmet

View Comments

Share
Published by
mogmet
Tags: Oracle