Webは用いる人のリテラシーで決まる 文学部卒・30代でエンジニアに転向して経験した業界裏話や技術ノート
Twitter Facebook
TOP > BLOG > IT記事

さくらVPSで2つのサーバーをローカル接続する方法エンジニア向け

早川朋孝 早川朋孝
Webエンジニア
業界15年
LINUX(CentOS)

アプリの部分ばかりいじって、サーバーの設定や環境構築に関わったことのないウェブエンジニアがいるかもしれない。そんなことでは、ある日突然サーバーの環境構築を任されたら困るだろう。VPSなど安価なサービスでいろいろ経験しておくと、提案の幅が広がる。

ここでは、さくらVPSで2つのサーバーをローカル接続をする方法をまとめた。ローカル接続すると2つのサーバー間のデータ通信が高速となり負荷分散には欠かせない。また、STGと本番、あるいはバックアップ用の冗長構成のような場面でもローカル接続という環境構築は役に立つ。

複数のさくらVPSをローカル接続する手順

  1. 2台以上のサーバーを同じリージョンで契約する
  2. さくらVPSのコントロールパネルでサーバーのスイッチ接続をする
  3. ローカルIPを決める
  4. 各サーバーでethの設定をする
  5. pingで疎通確認
  6. データのやりとりはローカルIPを指定

2台以上のサーバーを同じリージョンで契約する

ローカル接続したい複数のサーバーを契約する際は同じリージョンで契約する必要がある。異なるリージョン同士でも接続は可能だが、それをするにはさくらクラウドの契約が必要で、設定も少し面倒となる。そのためこの記事では同一リージョンで揃えることを前提とする。またサーバーのOSはCentOS7系を前提とする。

まずはさくらVPSのコントロールパネルでスイッチの設定をする

接続したい2台以上のサーバーを用意したら、まずはさくらVPSのコントロールパネルでネットワーク接続をする。これは公式ページに手順があるのでそれを参照されたし。
https://manual.sakura.ad.jp/vps/network/localnetwork.html

サービス設計によるが、例えばDBサーバーをセキュアーにするためにhttpアクセスを禁止する場合は、eth0のネットを切断するといい。http通信ができなくなり、ウェブサーバーからしかアクセスできなくなる。顧客情報などを扱う場合はこういう設定はしたほうがいい。

また、サーバーをシャットダウンする必要があるので、稼働中のサーバーの場合は注意が必要。案件によっては慎重な対応が必要な場合もあるだろう。

スイッチ接続したethの番号を控えておこう。ここではeth1に設定するものとする。

ローカルIPを決める

次に各VPSのローカルのIPを決めましょう。仮に2台なら、192.168.1.1と192.168.1.2としておきましょう。別にこの通りのIPである必要はないのだけれど、IPが重複しないように要注意です。

各サーバーでethの設定をする

次にethに決めたローカルIPをそれぞれのサーバーに設定しよう。コンパネでスイッチ接続したeth1に設定をするのだが、まずは状況を確認する。

$cat /etc/sysconfig/network-scripts/ifcfg-eth1
DEVICE=”eth1″
ONBOOT=”no”
TYPE=“Ethernet”

ONBOOTをyesにして、ローカルIPとネットマスクを接続する。設定に関してはさくら以下のページを参照されたし。
https://manual.sakura.ad.jp/vps/support/technical/3-dr.html

1つめのサーバーには、ここでは以下のように設定する。

$ cat ifcfg-eth1
DEVICE=”eth1″
ONBOOT=”yes”
TYPE=”Ethernet”
IPADDR=”192.168.1.1″
NETMASK=“255.255.255.0″

当たり前だがサーバー1とサーバー2はIPをわけないといけない。くれぐれも、うっかり同じローカルIPをそれぞれのサーバーに設定するなんてことはしないように。IPが重複して面倒なことになるので。というか、この辺りの知識がない人はサーバーの環境構築なんてするわけないか。。。と信じたい。

ethの設定をしたら、ステータス確認とサービス再起動をする。

#service network status
#service network restart

pingで疎通確認

2台のVPSを接続した場合、お互いのローカルIPにpingをするといい。以下のようにpingが通ればOK。100パケロスの場合はなにかがうまくいってない。

$ ping 192.168.1.1 -c 10
PING 192.168.1.1 (192.168.1.1) 56(84) bytes of data.
64 bytes from 192.168.1.1: icmp_seq=1 ttl=64 time=0.018 ms
64 bytes from 192.168.1.1: icmp_seq=2 ttl=64 time=0.032 ms
64 bytes from 192.168.1.1: icmp_seq=3 ttl=64 time=0.029 ms
64 bytes from 192.168.1.1: icmp_seq=4 ttl=64 time=0.029 ms
64 bytes from 192.168.1.1: icmp_seq=5 ttl=64 time=0.033 ms
64 bytes from 192.168.1.1: icmp_seq=6 ttl=64 time=0.027 ms
64 bytes from 192.168.1.1: icmp_seq=7 ttl=64 time=0.030 ms
64 bytes from 192.168.1.1: icmp_seq=8 ttl=64 time=0.035 ms
64 bytes from 192.168.1.1: icmp_seq=9 ttl=64 time=0.028 ms
64 bytes from 192.168.1.1: icmp_seq=10 ttl=64 time=0.030 ms

サーバー同士が接続されているかはこのコマンドで確認できる。コンパネだけでなく、サーバーのLAN設定をしていないと、下記のように切断と表示される。

$ nmcli device
DEVICE TYPE STATE CONNECTION
eth0 ethernet 接続済み System eth0
eth1 ethernet 切断済み —
eth2 ethernet 切断済み —
lo loopback 管理無し —

一方、接続がうまくいっている場合は、eth1の設定後はこんな感じ。

$ nmcli device
DEVICE TYPE STATE CONNECTION
eth0 ethernet 接続済み System eth0
eth1 ethernet 接続済み System eth1
eth2 ethernet 切断済み —
lo loopback 管理無し —

データのやりとりはローカルIPを指定

ではサーバー1からサーバー2へ、ローカルIPを指定してscpでデータの送信をしてみよう。IPをグローバルにしてhttp通信と比較すれば、http通信よりはるかに速くデータの送受信ができることを容易に確認できるだろう。

#scp /home/admin/filename admin@192.168.1.2:/home/admin

このブログを書いてる人
早川 朋孝

業界15年のウェブエンジニアです。文学部卒で20代はSEO、アクセス解析などフロントの運用を中心に経験しましたが、30代のある時、ひょんなことから一人情シスのような状況を経験することになり、流れでそのままエンジニアに転向しました。プログラムやサーバー管理、数学の勉強などをしなおして、いまではWebのことはフロントからバックエンドまでなんでもできます。

本が好きで月140時間は読書します。このブログではWeb業界で経験してきた業界の裏側、読書で学んだこと、技術ノートなどを書きます。ネコ好きなタバコ嫌いで、明治学院フランス文学科卒。

facebookへ
PAGE TOP