emilienm.routed_lb
ansible-role-routed-lb
これは、FRR(BGPを使用)でルーティングされたVIPを管理できる高度なロードバランサーをデプロイします。また、HAproxyを使用してトラフィックをロードバランシングします。
仮に、ウェブサービスをホスティングしているとしましょう。そのサービスは、1つまたは複数の仮想IP(VIP)で公開されています(必ずしも必要ではありません)。BGPプロトコルを使ってこのVIPをインフラ内でルーティングしたいと考えています。
この役割は以下のことを行います:
- 設定にBGPネイバーが提供されている場合、FRRをデプロイし、BGPネイバーとピア接続します。ノード上にVIPが作成されている場合、それらはインフラ内でルーティングされます。
- HAproxyをデプロイし、サービスのロードバランシングと監視を行います。
- 設定にVIPが提供されている場合、バックエンドが特定のサービスに対して健康である最低数が見つかった場合にのみVIPが作成され、FRRがデプロイされていればBGPでルーティングされます。
- 特定のサービスに対して健康なバックエンドが見つからなかった場合、VIPは削除され、FRRがデプロイされている場合はBGPでルーティングされません。
- LB設定で
strict_vips
が true に設定されている場合、そのVIPを使用するすべてのサービスは健康でなければならず、さもなくばVIPは作成されません。デフォルトはfalse
です。
したがって、複数のロードバランサーをホスティングしている場合、ウェブトラフィックは次のようになります:
- FRRがデプロイされている場合、BGPによってルーティングされます。
- FRRがデプロイされている場合、BGPを通じてVIPレベルでロードバランシングと高可用性が提供されます。
- HAproxyを使用して健康なバックエンド間でロードバランシングされます。
要件
現在、このモジュールはCentOS 9 Streamでテストされています。
インストール
ansible-galaxy install emilienm.routed_lb
ansible-galaxy collection install ansible.posix ansible.utils
役割の変数
configs
は辞書としてのみ設定する必要があります:
configs:
lb1:
haproxy_stats: true # URL http://lb-ip:8404/stats でHAproxy statsを有効にする
bgp_asn: <BGP ASN>
bgp_neighbors: # 任意、設定されていない場合FRRはデプロイされません
- ip: <BGPルーターのIP>
password: <BGPパスワード>
strict_vips: true
services:
- name: <サービス名(例:api)>
vips:
- <フロントエンドでそのサービスにアクセスするために使用されるVIP>
min_backends: <そのサービスのためにVIPが作成されるための最低限の健康なバックエンドの数>
healthcheck: <HAproxyバックエンドコマンド>
balance: <LBアルゴリズム>
frontend_port: <サービス用のHAproxyフロントエンドポート>
haproxy_monitor_port: <サービス用のHAproxy監視ポート>
backend_opts: <各バックエンドのHAproxyオプション>
backend_port: <HAproxyバックエンドポート>
backend_hosts:
- name: <バックエンドのホスト名>
ip: <バックエンドのIP>
完全な例については tests/vars.yml
をご覧ください。
依存関係
ansible.posix
例のPlaybook
playbook.yml
という名前のファイルを作成してください:
---
- hosts: lb1
vars:
config: lb1
tasks:
- name: テスト用の変数を含める
ansible.builtin.include_vars: vars.yml
- name: 役割を実行する
include_role:
name: emilienm.routed_lb
次に、Ansibleインベントリ用に inventory
という名前のファイルを作成します:
all:
hosts:
lb1:
ansible_host: 192.168.10.2 # ロードバランサーのIPアドレス
ansible_user: cloud-user
ansible_become: true
次に実行します:
ansible-playbook playbook.yml -i inventory
あなたのロードバランサーは稼働中のはずです!
ライセンス
Apache-2.0
プロジェクトについて
Ansible role to deploy a Load-Balancer capable of managing VIPs routed with BGP
インストール
ansible-galaxy install emilienm.routed_lb
ライセンス
Unknown
ダウンロード
553
所有者
Software Engineer working on @kubernetes and @openstack at Red Hat.