「世の中には難しいことが多い!」と感じることが多い私が、様々な用語を、初学者向けにわかりやすく全力で解説します。
今回解説する用語
プライマリIPアドレス(プライマリIPアドレス範囲)とセカンダリIPアドレス(セカンダリIPアドレス範囲)について解説します。Google Cloudの公式ドキュメントを読んでいるとよく登場するため、Google Cloudのサービスを例として説明をします。
プライマリIPアドレスとセカンダリIPアドレスとは?
複数のIPアドレスを割り当てる際に、メインで割り当てをするIPアドレスをプライマリIPアドレスと呼びます。プライマリIPアドレスはクラウドを使用していれば、皆さん良く使われていると思います。
セカンダリIPアドレスはその名前の通り、サブで割り当てるIPアドレスになります。セカンダリIPアドレスを使用することによって、1つのネットワークインターフェースに複数のIPアドレスを割り当てることが出来ます。
セカンダリIPアドレスの用途は様々ですが、コンテナで使用されることが多いため、Google CloudのコンテナサービスであるGoogle Kubernetes Engine(GKE)を例として具体的に説明をします。
セカンダリIPアドレスはサブネットとして払い出すことが出来る
Google CloudではサブネットにプライマリIPアドレス範囲とセカンダリIPアドレス範囲を払い出すことができます。プライマリIPアドレス範囲はサブネットを作成する際に払い出されるIPアドレスの範囲になります。つまり、セカンダリIPアドレス範囲を作成しなければ、サブネットのIPアドレス範囲=プライマリIPアドレス範囲となるのです。セカンダリIPアドレス範囲を作成したら、紛らわしくないようにプライマリIP範囲と呼ぶようになります。
上記のプライマリIPアドレス範囲 10.1.0.0/16
とセカンダリIPアドレス範囲 10.2.0.0/20
ともにサブネットの一部として構成されます。サブネットについてよくわからない場合は以下の記事を読んでみてください。
セカンダリIPアドレスのGKEでの使用例
GKEを例として、セカンダリIPアドレスの使い道を具体的に説明します。
GKEとはコンテナという技術を使用したアプリケーションの実行環境になります。Podというものでアプリケーションが稼働しています。また、PodのまとまりをNodeと呼びます。Podをたくさん作成することでアプリケーションの負荷分散が出来るのがコンテナのすごいところです。
下の図のように、NodeへのアクセスをServiceがPod(アプリケーション)へ振り分けることで負荷分散を行います。
よくわからない場合は「Podというものにアプリケーションがあり、そのまとまりをNodeと呼ぶんだな~」くらいの理解でOKです。
NodeにはIPアドレスが割り当てられます。NodeにIPアドレスを割り当てる場合は、プライマリIPアドレス範囲から割り当てられます。
PodにもIPアドレスが割り当てられます。PodにIPアドレスを割り当てる場合は、セカンダリIPアドレス範囲から割り当てられます。
以下の図のように、サブネットからNodeとPodにIPアドレスを割り当てられます。
NodeとPodは自動的に増減します。例えば、ユーザーからたくさんのアクセスが来た場合はPodは増やすことが出来ますし、アクセスが減った場合はPodを減らすことが出来ます。増減する際に「IPアドレスをここから割り当ててね!」というのがセカンダリIPアドレス範囲なのです。そのためPodはセカンダリIPアドレス範囲の数でしか増減することが出来ません。
まとめ
このようにセカンダリIPアドレスはプライマリIPアドレスのサブ的な役割で使用されます。今回はGKEをもとに説明しましたが用途は様々です。2つの異なるIPアドレス範囲からIPアドレスを割り当てたいときにセカンダリIPアドレス範囲を作成して使用します。