さくらのVPSでWebサーバーとDBサーバーの2台構成の環境をスイッチを使ってローカルネットワークで構築する

さくらのVPSでWebサーバーとDBサーバーを分けた2台構成の環境を構築してみたいと思います。その際にさくらのVPSではスイッチが使えるようになっているので、これを使ってローカルネットワーク経由で接続できる状態まで持って行こうと思います。

ローカルネットワークの構築

スイッチへの接続

スイッチを作って、2台のサーバーのeth1を作成したスイッチに接続します。スイッチへの接続は一旦サーバーを停止します。接続が完了したら随時起動してOKです。(さくらのVPSのGUIの操作についてはさくらのインターネットのヘルプを参考にしてください。)

今回は分かりやすくeth1で両方設定していますが、DBサーバーを外部公開しない場合はeth0に接続するなど設定はシーンによって使い分けられます。

IPアドレスの設定

起動が完了したらifconfigコマンドで設定します。

Webサーバー側は192.168.0.1とします。

ifconfig eth1 192.168.0.1/24

DBサーバー側は192.168.0.2とします。

ifconfig eth1 192.168.0.2/24

疎通の確認

Webサーバー側からDBサーバー側へ接続できるか確認します。

$ ping 192.168.0.2
PING 192.168.0.2 (192.168.0.2) 56(84) bytes of data.
64 bytes from 192.168.0.2: icmp_seq=1 ttl=64 time=0.400 ms
64 bytes from 192.168.0.2: icmp_seq=2 ttl=64 time=0.331 ms
64 bytes from 192.168.0.2: icmp_seq=3 ttl=64 time=0.526 ms
64 bytes from 192.168.0.2: icmp_seq=4 ttl=64 time=0.328 ms

DBサーバー側からWebサーバー側へ接続できるか確認します。

$ ping 192.168.0.1
PING 192.168.0.1 (192.168.0.1) 56(84) bytes of data.
64 bytes from 192.168.0.1: icmp_seq=1 ttl=64 time=0.541 ms
64 bytes from 192.168.0.1: icmp_seq=2 ttl=64 time=0.354 ms
64 bytes from 192.168.0.1: icmp_seq=3 ttl=64 time=0.323 ms

疎通が確認できました。

設定の永続化

/etc/sysconfig/network-scripts/ifcfg-eth1を編集してサーバー自動起動時に今回と同じ設定で起動するようにします。

Webサーバーの設定ファイルを編集

DEVICE=eth1
BOOTPROTO=static
ONBOOT=yes
TYPE="Ethernet"
NETMASK=255.255.255.0
IPADDR=192.168.0.1

DBサーバーの設定ファイルを編集

DEVICE=eth1
BOOTPROTO=static
ONBOOT=yes
TYPE="Ethernet"
NETMASK=255.255.255.0
IPADDR=192.168.0.2

以上でローカルネットワークの設定は完了です。

外部接続可能なDBサーバーの構築

デフォルトではlocalhostとか127.0.0.1などからしかDBに設定できなくなっているかと思います。ローカルネットワークからも接続できるようにするには別途設定が必要です。

外部接続できるようにする

MySQLサーバーに直接接続したら以下のコマンドを実行します。これはroot@192.168.%で接続してきた人を許可します。また全権限も付与しています。

GRANT ALL PRIVILEGES ON *.* TO root@'192.168.%' identified by 'password' with grant option;

設定を行ったらMySQLを再起動して設定を反映します。

systemctl restart mariadb

ちなみに今まで外部接続していなかった場合はMySQLのポートである3306がfirewalldによって開いていない場合があると思うので、以下のようにして公開しておきましょう。

firewall-cmd --add-service=mysql --zone=public --permanent
systemctl restart firewalld

外部から接続のテスト

Webサーバーに接続したら以下のようにしてMySQLに接続できるか確認します。

mysql -h 192.168.0.2 -u root -p

接続できたら成功です。

備考

上記で付与した権限を全て削除する場合は以下のようにします。

REVOKE ALL PRIVILEGES, GRANT OPTION FROM root@'192.168.%';

接続自体させるのを止める場合は以下のようにします。

DROP USER root@'192.168.%';

与えた権限などを確認する場合は以下のようにします。

SHOW GRANTS FOR root@'192.168.%' \G

参考

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

CAPTCHA