6/22 追記:
サポートに問い合わせたところ、チュートリアルページの説明が変更されました。新しい設定については、時間があるときに確認したいと思います。
新 ConoHa には「アプリケーションサーバー」機能が追加され、MySQL 互換のデータベースサーバーが利用できます。
現在、ConoHa の API に関する記事を書くといいことがありますが(キャンペーンページ)、今回は API を利用しない内容です。
また、こちらのリンクから ConoHa に登録していただくと、1000円分のクーポンがもらえますので是非こちらから登録してみてください。
具体的なサーバーの追加手順については、ConoHa のチュートリアルをご覧ください。
ここまでは順調にできたのですが、詰まったのは VPS と DB サーバーを専用のプライベートネットワークで接続する設定です。
ちなみに、接続する VPS サーバーの設定はこの通りです。
リージョン:東京
イメージタイプ:アプリケーション
アプリケーション:LAMP(PHP)
バージョン:latest-64bit
VPS の起動後、バージョンを確認してみました。
$ cat /etc/redhat-release CentOS release 6.6 (Final) $ php -v PHP 5.6.8 (cli) (built: Apr 16 2015 20:00:59) Copyright (c) 1997-2015 The PHP Group Zend Engine v2.6.0, Copyright (c) 1998-2015 Zend Technologies $ mysql -u root --password==(パスワード) Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 3 Server version: 5.1.73 Source distribution
下記のチュートリアルページを参考に、「DBサーバー接続用ネットワークを作成する」と「ネットワークの設定情報を確認する」までは確認できましたが、最後の「VPSの設定を行う」で、ヘルプ通りにできませんでした。
チュートリアルは CentOS 6.6で東京リージョンの設定を紹介しており、こちらの環境も同じ設定です。
ネットワークインターフェイス(eth1)の設定を行います。
$ cd /etc/sysconfig/network-scripts/ $ vi ifcfg-eth1
ifcfg-eth1の内容は以下のようにします。
DEVICE=eth1 TYPE=Ethernet ONBOOT=yes NM_CONTROLLED=yes BOOTPROTO=static IPADDR=172.21.***.*** NETMASK=255.255.254.0
ここの IPADDR は、VPS のネットワーク情報→shared から始まる NIC の IP アドレスです。
ここで、間違ってゲートウェイアドレスを書いてしまわないよう気を付けてください。(一回やってしまいました)
途中ですが、設定の反映とその確認をします。
$ service network restart (略) $ ifconfig eth1 eth1 Link encap:Ethernet HWaddr (略) inet addr:172.21.***.*** Bcast:172.21.***.255 Mask:255.255.254.0 (以下略)
正しく反映されました。
次に、このネットワーク用の静的ルーティングを設定します。ルーティングはリージョン毎に異なっており、東京リージョンは 172.21.74.0/23 を設定します。
$ vi route-eth1
ifcfg-eth1の内容は以下のようにします。(以下は東京リージョンの場合)
172.21.74.0/23 via 172.21.74.1 dev eth1
公式ドキュメントの方には「172.21.140.0/23 via 172.21.140.1 dev eth1」と書かれていますが、すぐ上には 172.21.74.0/23 と書かれていますし、VPS の設定画面でも 140 は出てこないので間違いでしょう。
設定の反映と ネットワークが正しく設定されていることを確認するため、DBサーバーにpingを送信してみます。
$ service network restart $ ping -c 3 private.***.tyo1.database-hosting.conoha.io PING private.unit01.database-hosting.tyo1.conoha.io (172.21.74.**) 56(84) bytes of data. --- private.unit01.database-hosting.tyo1.conoha.io ping statistics --- 3 packets transmitted, 0 received, 100% packet loss, time 11999ms
??? エラーが出てしまいました。
もちろん、データベースにもアクセスできません。
$ mysql -u [接続ユーザー名] -h private.***.tyo1.database-hosting.conoha.io -p [データベース名] ERROR 2003 (HY000): Can't connect to MySQL server on 'private.***.tyo1.database-hosting.conoha.io' (110)
ルーティングテーブルを確認すると、追加されていないことが分かったので、routeコマンドで追加してみました。
$ netstat -rn Kernel IP routing table Destination Gateway Genmask Flags MSS Window irtt Iface 133.130.54.0 0.0.0.0 255.255.254.0 U 0 0 0 eth0 172.21.138.0 0.0.0.0 255.255.254.0 U 0 0 0 eth1 0.0.0.0 133.130.54.1 0.0.0.0 UG 0 0 0 eth0 $ route add -net 172.21.74.0 netmask 255.255.254.0 gw 172.21.74.1 eth1 SIOCADDRT: No such process
エラーメッセージで検索するとこのページを見つけました。
この中で気になったのが、この部分。
あまり今まで考えたことが無かったのですが、GW と dev を一緒にするとこのエラーになるようです。
man で見た例でも一緒に使用している例は無いようです。
gw の部分を削り、設定してみました。
$ route add -net 172.21.74.0 netmask 255.255.254.0 eth1 $ netstat -rn Kernel IP routing table Destination Gateway Genmask Flags MSS Window irtt Iface 133.130.54.0 0.0.0.0 255.255.254.0 U 0 0 0 eth0 172.21.138.0 0.0.0.0 255.255.254.0 U 0 0 0 eth1 <strong>172.21.74.0 0.0.0.0 255.255.254.0 U 0 0 0 eth1</strong> 0.0.0.0 133.130.54.1 0.0.0.0 UG 0 0 0 eth0
とりあえず、登録できましたが、ゲートウェイの部分が設定されていません。これでもいいのかなと思いつつ接続テストを行いました。
$ ping -c 3 private.***.tyo1.database-hosting.conoha.io PING private.unit01.database-hosting.tyo1.conoha.io (172.21.74.**) 56(84) bytes of data. 64 bytes from 172.21.74.**: icmp_seq=1 ttl=63 time=0.451 ms 64 bytes from 172.21.74.**: icmp_seq=2 ttl=63 time=0.406 ms 64 bytes from 172.21.74.**: icmp_seq=3 ttl=63 time=0.310 ms --- private.unit01.database-hosting.tyo1.conoha.io ping statistics --- 3 packets transmitted, 3 received, 0% packet loss, time 2002ms rtt min/avg/max/mdev = 0.310/0.389/0.451/0.058 ms $ mysql -u [接続ユーザー名] -h private.***.tyo1.database-hosting.conoha.io -p [データベース名] Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 4488694 Server version: 5.5.5-10.0.19-MariaDB-log MariaDB Server
接続できました!しかし、毎回ルーティングを追加するのも困りますので、ファイルに設定します。
$ cd /etc/sysconfig/network-scripts/ $ vi route-eth1 # 172.21.74.0/23 dev eth1 $ service network restart
ファイルの書き換え後は、再起動を行っても問題なく接続できるようになりました。
まとめ
ConoHa チュートリアルの /etc/sysconfig/network-scripts/route-eth1 は
172.21.140.0/23 via 172.21.140.1 dev eth1
では動作しない。
→ 東京リージョンの場合 172.21.74.0/23 dev eth1 で動作する。
この内容を、ConoHa のサポートに問い合わせてみたいと思います。
ネットワーク関係に詳しい方で、この記事におかしい点がありましたらコメントをいただけると幸いです。
最後に、こちらのリンクから ConoHa に登録していただくと、1000円分のクーポンがもらえますので是非こちらから登録してみてください。