LXD で OVN をセットアップするには#

スタンドアロンのネットワークとしてまたは小さな LXD クラスタとして基本的な OVN ネットワークをセットアップするには以下の項を参照してください。

スタンドアロンの OVN ネットワークをセットアップする#

外向きの接続のために LXD が管理する親のブリッジネットワーク (例: lxdbr0) に接続するスタンドアロンの OVN ネットワークを作成するには以下の手順を実行してください。

  1. ローカルサーバーに OVN ツールをインストールします。

     sudo apt install ovn-host ovn-central
    
  2. OVN の統合ブリッジを設定します。

     sudo ovs-vsctl set open_vswitch . \
       external_ids:ovn-remote=unix:/var/run/ovn/ovnsb_db.sock \
       external_ids:ovn-encap-type=geneve \
       external_ids:ovn-encap-ip=127.0.0.1
    
  3. OVN ネットワークを作成します。

     lxc network set <parent_network> ipv4.dhcp.ranges=<IP_range> ipv4.ovn.ranges=<IP_range>
     lxc network create ovntest --type=ovn network=<parent_network>
    
  4. ovntest ネットワークを使用するインスタンスを作成します。

     lxc init ubuntu:22.04 c1
     lxc config device override c1 eth0 network=ovntest
     lxc start c1
    
  5. lxc list を実行してインスタンスの情報を表示します。

    user@host:~$ lxc list
    +------+---------+---------------------+----------------------------------------------+-----------+-----------+| NAME |  STATE  |        IPV4         |                     IPV6                     |   TYPE    | SNAPSHOTS |+------+---------+---------------------+----------------------------------------------+-----------+-----------+| c1   | RUNNING | 192.0.2.2 (eth0)    | 2001:db8:cff3:5089:216:3eff:fef0:549f (eth0) | CONTAINER | 0         |+------+---------+---------------------+----------------------------------------------+-----------+-----------+

OVN 上に LXD クラスタをセットアップする#

OVN ネットワークを使用する LXD クラスタをセットアップするには以下の手順を実行してください。

LXD と同様に、 OVN の分散データベースは奇数のメンバーで構成されるクラスタ上で動かす必要があります。 以下の手順は最小構成の 3 台のサーバーを使います。 3 台のサーバーでは OVN の分散データベースと OVN コントローラの両方を動かします。 さらに LXD クラスタに OVN コントローラのみを動かすサーバーを任意の台数追加できます。 4 台のマシンを使う完全なチュートリアルは上にリンクした YouTube の動画を参照してください。

  1. OVN の分散データベースを動かしたい 3 台のマシンで次の手順を実行してください。

    1. OVN ツールをインストールします。

      sudo apt install ovn-central ovn-host
      
    2. マシンの起動時に OVN サービスが起動されるように自動起動を有効にします。

       systemctl enable ovn-central
       systemctl enable ovn-host
      
    3. OVN を停止します。

      systemctl stop ovn-central
      
    4. マシンの IP アドレスをメモします。

      ip -4 a
      
    5. /etc/default/ovn-central を編集します。

    6. 以下の設定をペーストします (<server_1>, <server_2> and <server_3> をそれぞれのマシンの IP アドレスに、 <local> をあなたがいるマシンの IP アドレスに置き換えてください)。

      • 最初のマシン

        OVN_CTL_OPTS=" \
             --db-nb-addr=<local> \
             --db-nb-create-insecure-remote=yes \
             --db-sb-addr=<local> \
             --db-sb-create-insecure-remote=yes \
             --db-nb-cluster-local-addr=<local> \
             --db-sb-cluster-local-addr=<local> \
             --ovn-northd-nb-db=tcp:<server_1>:6641,tcp:<server_2>:6641,tcp:<server_3>:6641 \
             --ovn-northd-sb-db=tcp:<server_1>:6642,tcp:<server_2>:6642,tcp:<server_3>:6642"
        
      • 2番目と3番目のマシン

        OVN_CTL_OPTS=" \
              --db-nb-addr=<local> \
             --db-nb-cluster-remote-addr=<server_1> \
             --db-nb-create-insecure-remote=yes \
             --db-sb-addr=<local> \
             --db-sb-cluster-remote-addr=<server_1> \
             --db-sb-create-insecure-remote=yes \
             --db-nb-cluster-local-addr=<local> \
             --db-sb-cluster-local-addr=<local> \
             --ovn-northd-nb-db=tcp:<server_1>:6641,tcp:<server_2>:6641,tcp:<server_3>:6641 \
             --ovn-northd-sb-db=tcp:<server_1>:6642,tcp:<server_2>:6642,tcp:<server_3>:6642"
        
    7. OVN を起動します。

      systemctl start ovn-central
      
  2. 残りのマシンでは ovn-host のみインストールし、自動起動を有効にしてください。

    sudo apt install ovn-host
    systemctl enable ovn-host
    
  3. 全てのマシンで Open vSwitch (変数は上記の通りに置き換えてください) を設定します。

    sudo ovs-vsctl set open_vswitch . \
       external_ids:ovn-remote=tcp:<server_1>:6642,tcp:<server_2>:6642,tcp:<server_3>:6642 \
       external_ids:ovn-encap-type=geneve \
       external_ids:ovn-encap-ip=<local>
    
  4. 全てのマシンで lxd init を実行して LXD クラスタを作成してください。 最初のマシンでクラスタを作成します。 次に最初のマシンで lxc cluster add <machine_name> を実行してトークンを出力し、他のマシンで LXD を初期化する際にトークンを指定して他のマシンをクラスタに参加させます。

  5. 最初のマシンでアップリンクネットワークを作成し設定します。

    lxc network create UPLINK --type=physical parent=<uplink_interface> --target=<machine_name_1>
    lxc network create UPLINK --type=physical parent=<uplink_interface> --target=<machine_name_2>
    lxc network create UPLINK --type=physical parent=<uplink_interface> --target=<machine_name_3>
    lxc network create UPLINK --type=physical parent=<uplink_interface> --target=<machine_name_4>
    lxc network create UPLINK --type=physical \
       ipv4.ovn.ranges=<IP_range> \
       ipv6.ovn.ranges=<IP_range> \
       ipv4.gateway=<gateway> \
       ipv6.gateway=<gateway> \
       dns.nameservers=<name_server>
    

    必要な値を決定します。

    アップリンクネットワーク

    アクティブな OVN シャーシがクラスタメンバー間で移動できるようにするため、ハイアベイラビリティな OVN クラスタには共有されたレイヤー 2 ネットワークが必須です (これにより OVN のルータの外部 IP が実質的に別のホストから到達可能にできます)。

    そのため管理されていないブリッジインタフェースまたは使用されていない物理インタフェースを OVN アップリンクで使用される物理ネットワークの親として指定する必要があります。 以下の手順は手動で作成した管理されていないブリッジを使用する想定です。 このブリッジをセットアップする手順は ネットワークブリッジの設定 を参照してください。

    ゲートウェイ

    ip -4 route show defaultip -6 route show default を実行してください。

    ネームサーバー

    resolvectl を実行してください。

    IP の範囲

    割り当てられた IP を元に適切な IP の範囲を使用してください。

  6. 引き続き最初のマシンで LXD を OVN DB クラスタと通信できるように設定します。 そのためには /etc/default/ovn-central 内の ovn-northd-nb-db の値を確認し、以下のコマンドで LXD に指定します。

     lxc config set network.ovn.northbound_connection <ovn-northd-nb-db>
    
  7. 最後に (最初のマシンで) 実際の OVN ネットワークを作成します。

     lxc network create my-ovn --type=ovn
    
  8. OVN ネットワークをテストするには、インスタンスを作成してネットワークが接続できるか確認します。

     lxc launch images:ubuntu/22.04 c1 --network my-ovn
     lxc launch images:ubuntu/22.04 c2 --network my-ovn
     lxc launch images:ubuntu/22.04 c3 --network my-ovn
     lxc launch images:ubuntu/22.04 c4 --network my-ovn
     lxc list
     lxc exec c4 bash
     ping <IP of c1>
     ping <nameserver>
     ping6 -n www.linuxcontainers.org