0
0

More than 3 years have passed since last update.

BIG-IP Virtual Editionを使ってみる。(その6:Ansibleによる冗長化設定準備)

Last updated at Posted at 2021-02-28

はじめに

前回までで、1台構成の場合の負荷分散設定をAnsibleで行ってみましたが、今回はAnsibleで2台構成で冗長設定を行ってみようと思います。

BIG-IPの冗長化設定

BIG-IP LTMで冗長設定を行う場合、以下の様な設定を行う必要があります。

  1. Device Connectivityの設定
  2. Trust Domainの設定
  3. Device Groupの設定
  4. HA Groupの設定
  5. Traffic Groupの設定

上記のうち、1、4、5は冗長構成をとる機器全て、2~3はマスターとなる機器で設定を行います。

BIG-IP_HA.png

今回の構成

今回は以下の様なネットワーク構成の設定を行っていきます。

BIG-IP_Address.png

前準備:概要

今回は冗長化の設定を行うため、冗長化の設定を行う前に以下の前準備を行っておきます。

  • 1台目のVLAN割り当て解除
  • 2台目のBIG-IPの準備
  • bigip_setup-initconfの修正
  • 2台目用ホスト変数ファイルの作成
  • HA通信用インタフェースの追加
  • ノード設定ロールをマスター側機器のみで実行するように変更
  • プール設定ロールをマスター側機器のみで実行するように変更
  • バーチャルサーバ設定ロールをマスター側機器のみで実行するように変更

後ほど行うBIG-IPHA Group設定を行うためにはTrunk(リンクアグリゲーション)の設定を行う必要がありますが、すでにインタフェースにVLANが割り当てられていると、Trunk設定時にVLANの割り当てができないため、前回の記事でVLANをインタフェースに割り当てている場合は割り当てを外します。

また、前回作成した負荷分散用設定は、冗長化設定を行う場合、最終的にマスター側機器から同期される設定となるため、バックアップ側機器では設定しないようにロールを編集します。

前準備1:インタフェースとVLANの割り当て解除

インタフェース1.1に割り当てたVLAN名externalとインタフェース1.2に割り当てたVLAN名internalの割り当てを解除するにはBIG-IPから以下コマンドで解除できます。

インタフェースとVLANの割り当て解除コマンド
tmsh modify net vlan external interfaces delete { 1.1 }
tmsh modify net vlan internal interfaces delete { 1.2 }

前準備2:2台目のBIG-IPの準備

2台目用に仮想マシンのセットアップやライセンスなどを準備して作成しておきましょう。

また、マネジメントポートのIPアドレスですが、冗長化設定完了直後やDevice Groupのメンバーが存在しないような状況の場合、マネジメントポートのIPアドレスが大きいアドレスのホストがActiveとして選ばれるため、2号機には1号機よりも小さい数のIPアドレスを割り当てるのが良いと思います。

とはいえ、冗長化設定を行った後、Device Groupの機器が同時に落ちたりすることも少ないと思いますので、特に気にしないようなら任意のアドレス設定で問題ありません。

前準備3:bigip_setup-initconfの修正

以前の記事で設定を入れ忘れていたので、bigip_setup-initconfallow_serviceの設定項目を追加しておきます。

allow_serviceの設定は、Port Lockdownという設定を行う定義となり、BIG-IPのセルフIPへの受信側アクセスを制御するセキュリティ設定となります。

独自に許可するプロトコルを設定することもできますが、全許可設定のAllow All、全拒否設定のAllow None(デフォルト)、一部通信のみ許可するAllow Defaultがあります。

セルフIPは負荷分散用のアドレスとは異なり、BIG-IP自身のアドレスとなるため、通常はデフォルトの全拒否設定で問題ありませんが、後述する冗長化の制御用通信も拒否してしまうため、設定追加を行います。

尚、Allow Default設定の場合、以下の通信が許可されます。

K17333: Overview of port lockdown behavior (12.x - 16.x)

許可プロトコル ポート サービス名
IGMP - -
OSPF - -
PIM - -
TCP 4353 iQuery
UDP 4353 iQuery
TCP 443 HTTPS
TCP 161 SNMP
UDP 161 SNMP
TCP 22 SSH
TCP 53 DNS
UDP 53 DNS
UDP 520 RIP
UDP 1026 network failover

以下のロールの設定と、ホスト変数も修正しておきます。

roles/setup_bigip-initconf/tasks/main.yml
(抜粋)
- name: BIG-IP Self IPの作成
  bigip_selfip:
    name: "{{ item.name }}"
    address: "{{ item.address }}"
    netmask: "{{ item.netmask }}"
    vlan: "{{ item.vlan }}"
    allow_service: "{{ item.allow_service }}"    ←追加
    state: "present"
    provider: "{{ bigip_provider }}"
  delegate_to: "{{ bigip_delegate_to }}"
  notify: save_config
  loop: "{{ bigip_selfip }}"
host_vars/bigip01.yml
(抜粋)
bigip_selfip:
  - { name: "10.1.0.1", address: "10.1.0.1", netmask: "255.255.255.0", vlan: "external", allow_service: "none" }
  - { name: "10.2.0.1", address: "10.2.0.1", netmask: "255.255.255.0", vlan: "internal", allow_service: "none" }

前準備4:2台目用ホスト変数ファイルの作成

1台目のホスト変数ファイルを参考に2台目用のホスト変数ファイルを作成します。

host_vars/bigip02.yml
---
bigip_license: XXXXX-XXXXX-XXXXX-XXXXX-XXXXXXX
bigip_server: [BIG-IPのIPアドレス]
bigip_fqdn: bigip02.example.com

bigip_selfip:
  - { name: "10.1.0.2", address: "10.1.0.2", netmask: "255.255.255.0", vlan: "external", allow_service: "none" }
  - { name: "10.2.0.2", address: "10.2.0.2", netmask: "255.255.255.0", vlan: "internal", allow_service: "none" }

前準備5:HA通信用インタフェース追加

コンフィグ同期や冗長監視などで使用するHA通信用インタフェースをホスト変数ファイルのbigip_selfipの変数を指定した個所に追加しておきます。

HA通信用のインタフェースで、冗長制御用の通信をやり取りするので、HA通信用のセルフIPはallow_serviceをデフォルトにしておきます。

host_vars/bigip01.yml
(抜粋)
bigip_selfip:
  - { name: "10.1.0.1", address: "10.1.0.1", netmask: "255.255.255.0", vlan: "external", allow_service: "none" }
  - { name: "10.2.0.1", address: "10.2.0.1", netmask: "255.255.255.0", vlan: "internal", allow_service: "none" }
  - { name: "10.3.0.1", address: "10.3.0.1", netmask: "255.255.255.252", vlan: "ha", allow_service: "default" }
host_vars/bigip02.yml
(抜粋)
bigip_selfip:
  - { name: "10.1.0.2", address: "10.1.0.2", netmask: "255.255.255.0", vlan: "external", allow_service: "none" }
  - { name: "10.2.0.2", address: "10.2.0.2", netmask: "255.255.255.0", vlan: "internal", allow_service: "none" }
  - { name: "10.3.0.2", address: "10.3.0.2", netmask: "255.255.255.252", vlan: "ha", allow_service: "default" }

前準備6:負荷分散設定用ロールにフラグ追加

前回作成したsetup_bigip-nodesetup_bigip-poolsetup_bigip-virtual-servertasksに以下の条件式を追加しておきます。

roles/setup_bigip-xxx/tasks/main.yml
(途中省略)
  when: ha_flag == "master"

以下setup_bigip-nodeha_flagを追加した場合の例なので、他のロールにも追加するようにして下さい。

roles/setup_bigip-node/tasks/main.yml
---
# tasks file for setup_bigip-node
- name: BIG-IP 負荷分散ノードの作成
  bigip_node:
    name: "{{ item.name }}"
    description: "{{ item.description }}"
    host: "{{ item.host }}"
    monitors: "{{ item.monitors }}"
    ratio: "{{ item.ratio }}"
    connection_limit: "{{ item.connection_limit }}"
    rate_limit: "{{ item.rate_limit }}"
    state: "present"
    provider: "{{ bigip_provider }}"
  delegate_to: "{{ bigip_delegate_to }}"
  when: ha_flag == "master"    ←追加
  notify: save_config
  loop: "{{ bigip_node }}"

後ほど変数を追加しますが、上記設定追加により、ha_flagmasterの場合のみ処理が実行されるようになります。(いわゆるif文のような動作)

おわりに

今回は、冗長設定を行う前の準備を行いました。

次回は冗長化設定を行うためのロール作成を行っていきます。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0