投稿日: | 最終更新日:
ConoHaのプライベートネットワークを利用する(DBサーバを分散)
ConoHaVPSのDBサーバを利用します。フロントサーバとバックエンドサーバを別々にしますが、今回はVPSとDBサーバを接続設定します。
プライベートネットワーク機能
前回は、アプリケーションを設置するVPSサーバとは別にDBサーバを立ち上げました。
プライベートネットワークを利用することで複数台のサーバをインターネットから切り離し、独自のネットワークを構成します。独自のプライベートネットワークを作れば、ネットワークを介して公開Webサーバと非公開のデータベースサーバを接続することができます。
準備
以下の準備を行います。
①ConoHaをレンタルします。
②ConoHaにroot以外のユーザを作ります。
③ConoHaにSSH接続するための設定を行います。
④ConoHaへのrootログインを禁止します。
⑤ConoHaのportを22から変更します。
⑥データベースサーバを用意し、データベースを作成します。また、DBサーバー接続用ネットワークを設定します。
ConoHaVPSの環境
アプリケーションサーバ OS | CentOS7.4 |
---|
クライアントPC
操作開発用のクライアントPCを用意します。windowsでもmacでも可能ですが、今回はubuntuを利用します。
OS | Ubuntu 16.04.1 LTS 64bit |
---|
ネットワークの設定情報を確認
VPSからDBサーバーに接続するためのネットワーク情報を確認します。
①ConoHaの管理画面へログインします。
②[サーバー]へ移動し、停止していた対象のVPSを起動します。
③VPSのネームタグをクリックします。VPSの詳細画面から「ネットワーク情報」にネットワークの設定情報が表示されます。
④「表示NIC」から「shared」となっているNICを選択します。
sharedとなっているNICが、DBサーバー接続用ネットワークにつながっているインターフェイスです。選択すると、IPアドレス、ネットマスク、ゲートウェイの情報が表示されます。これらの情報は、サーバーのネットワークインターフェイスに設定する情報になります。
⑤サーバー一覧からDBサーバーを選択します。
⑥データベースリストから接続先のデータベースをクリックします。すると詳細が表示されます。プライベートネットワークと表示されている部分が接続先ホスト名です。このホスト名はMySQLクライアントなどに渡します。
VPSの設定
データベースサーバーのプライベートネットワークの情報を元に、VPSからDBサーバーにアクセスできるように設定を行います。
CentOS6までは、NICインタフェースを設定するために、「/etc/sysconfig/network-scripts/ifcfg-ethX」を編集する必要がありました。しかし、CentOS7ではこの方法が非推奨になりました。CentOS7からは、ネットワークを設定するためのコマンドとして、NetworkManagerに付属するnmcliまたはnmtuiの使用が推奨されます。
①コントロールパネルのコンソールを使うか、SSHなどでVPSにログインします。
eth1デバイスの接続名変更
①デバイスを確認します。「eth1」を設定したいのですが、少し問題があります。CentOS7インストール後にNICを追加すると、デバイス「eth1」の接続が「Wired connection 1」になっています。
# nmcli d デバイス タイプ 状態 接続 eth0 ethernet 接続済み eth0 eth1 ethernet 接続中(IP 設定を取得中) Wired connection 1 lo loopback 管理無し --
※3つのインタフェース(「eth0」「eth1」「lo」)が表示されています。
②「Wired connection 1」という名前のデバイスを本来のデバイス名と同じ「eth1」にします。そのため、「connection.interface-name」と「connection.id」を変更します。
sudo nmcli c m "Wired connection 1" connection.interface-name eth1 connection.id eth1
再度デバイス確認すると、接続がeth1に変更されたことがわかります。
# nmcli d デバイス タイプ 状態 接続 eth0 ethernet 接続済み eth0 eth1 ethernet 接続中(IP 設定を取得中) eth1 lo loopback 管理無し --
eth1デバイスのipアドレス・ゲートウェイ
①ipアドレスを設定します。ipアドレスは、「ネットワークの設定情報を確認」の③で確認したipアドレスです。
sudo nmcli c m eth1 ipv4.method manual ipv4.addresses 172.xx.xx.xx/24 connection.autoconnect yes
②ゲートウェイを設定します。ゲートウェイは、「ネットワークの設定情報を確認」の③で確認したゲートウェイです。
sudo nmcli c modify eth1 ipv4.gateway 172.xx.xxx.x
静的ルーティン変更
①このネットワーク用の静的ルーティングを設定します。ルーティングはリージョン毎に異なっており、以下のネットワークアドレスを設定します。
- 東京リージョン: 172.21.74.0/23
- アメリカリージョン: 172.21.92.0/23
- シンガポールリージョン: 172.21.110.0/23
以下のコマンドを実行します。
ip route add [リージョンのIP] via [ゲートウェイのIP] dev [インタフェース名(例:eth1)]
例)
ip route add 172.21.74.0/23 via 172.21.138.1 dev eth1
②デバイスを再起動します。「systemctl restart network」コマンドでネットワークを再起動しますが、たまに関係ないnicまでコケることがあります。ですので、必要最低限のnicのみリスタートします。
sudo ifdown eth1 sudo ifup eth1
③「eth1」の詳細を確認します。
# nmcli d show eth1 GENERAL.デバイス: eth1 GENERAL.タイプ: ethernet GENERAL.ハードウェアアドレス: xx:xx:xx:xx:xx:xx GENERAL.MTU: 1500 GENERAL.状態: 70 (接続中(IP 設定を取得中)) GENERAL.接続: eth1 GENERAL.CON パス: /org/freedesktop/NetworkManager/ActiveConnection/4190 WIRED-PROPERTIES.キャリア: オン
pingで接続確認
①ネットワークが正しく設定されていることを確認するため、pingが通るか試します。
# ping -c 3 private.***.tyo1.database-hosting.conoha.io PING private.unit01.database-hosting.tyo1.conoha.io (172.xx.xx.xx) 56(84) bytes of data. 64 bytes from 172.xx.xx.xx (172.xx.xx.xx): icmp_seq=1 ttl=63 time=0.472 ms 64 bytes from 172.xx.xx.xx (172.xx.xx.xx): icmp_seq=2 ttl=63 time=0.220 ms 64 bytes from 172.xx.xx.xx (172.xx.xx.xx): icmp_seq=3 ttl=63 time=0.258 ms --- private.unit01.database-hosting.tyo1.conoha.io ping statistics --- 3 packets transmitted, 3 received, 0% packet loss, t
次回
次回はmysqlクライアントを使って、VPSからDBサーバのmariaDBに接続します。
- Python 113
- 制作 54
- RaspberryPi 41
- Django 40
- WordPress 40
- Linux 27
- VPS 22
- JavaScript 21
- PHP 20
- HTML・CSS 19
- AWS 16
- 仮想環境 15
- レスポンシブデザイン 13
- マイコン 11
- WEB全般 11
- 動画製作 9
- Webサービス 8
- 統合開発環境 8
- PyCharm 7
- jQuery 7
- 機械学習 7
- AfterEffects 7
- 起業・設立 7
- Django REST framework 6
- C# 6
- デザイン 6
- SEO 6
- pydata 6
- Visual Studio 5
- 数学 5
- 携帯サイト 5
- heroku 5
- Mac 5
- illustrator 5
- node.js 5
- Anaconda 5
- Nginx 4
- Jupyter Notebook 4
- インフラ 4
- symfony 4
- Webスクレイピング 3
- photoshop 3
- Go言語 3
- PC 3
- Google Colaboratory 3
- ツール 3
- Docker 3
- facebook 3
- 作業効率化 3
- データベース 3
- Cloud9 3
- コマンド 2
- micro:bit 2
- Kali Linux 2
- Webサーバー 2
- MariaDB 2
- ドローン 2
- コンテナ 2
- DaVinci Resolve 2
- ネットワーク 2
- Java 2
- movie 2
- PCDJ 2
- 音楽 2
- XSERVER 2
- Ansible 1
- Vue.js 1
- JSON 1
- Bootstrap 1
- バージョン管理システム 1
- SSL 1
- S3 1
- ムームードメイン 1
- ネットワーク 1
- アニメーション 1
- D3.js 1
- Rhino 1
- アニメ 1
- git 1
- windows 1
- アクセス解析 1
- スマートフォン 1
- アフィリエイトノウハウ 1
- 知識 1
- TypeScript 1
- 役立つ本・書籍 1
- データサイエンス 1
- ESP32 1
- AI 1
- ownCloud 1
- API 1