3ノード構成の導入準備

3ノードのクラスタに Standard Edition をインストールする前に、環境の準備を行ってください。

注: 以下のセクションに記載されている準備コマンドは、root ユーザー向けです。 root ユーザーでない場合は、以下のコマンドを実行できます sudo

追加のディスクを準備する

「ストレージ要件」 セクションで、データ・ディレクトリーごとに追加したディスクを準備する必要があります。

これらのタスクを実行するためのコマンドは、ご使用の環境、選択するファイル・システム、および追加するディスクのタイプによって異なります。

以下のセクションのコマンドは単なる例であり、使用するディスクを準備するための要件を示すことを目的としています。 ご使用の環境で機能するコマンドを使用する必要があります。

ホスト上のディスクを特定する

ご使用のシステムで使用可能なデバイスを確認するには、 node0 および node1:

lsblk
 

以下に、 node0の出力例を示します。

NAME                      MAJ:MIN RM   SIZE RO TYPE MOUNTPOINTS
loop0                       7:0    0  63.5M  1 loop /snap/core20/2015
loop1                       7:1    0    87M  1 loop /snap/lxd/27037
loop3                       7:3    0 111.9M  1 loop /snap/lxd/24322
loop4                       7:4    0  63.9M  1 loop /snap/core20/2182
loop5                       7:5    0  40.9M  1 loop /snap/snapd/20290
loop6                       7:6    0  40.4M  1 loop /snap/snapd/20671
vda                       252:0    0   250G  0 disk
├─vda1                    252:1    0     1M  0 part
└─vda2                    252:2    0   248G  0 part
   └─ubuntu--vg-ubuntu--lv 253:0    0   248G  0 lvm  /
vdb                       252:16   0  1000G  0 disk
 

node1の出力例を以下に示します。

NAME                      MAJ:MIN RM   SIZE RO TYPE MOUNTPOINTS
loop0                       7:0    0  63.5M  1 loop /snap/core20/2015
loop1                       7:1    0    87M  1 loop /snap/lxd/27037
loop3                       7:3    0 111.9M  1 loop /snap/lxd/24322
loop4                       7:4    0  63.9M  1 loop /snap/core20/2182
loop5                       7:5    0  40.9M  1 loop /snap/snapd/20290
loop6                       7:6    0  40.4M  1 loop /snap/snapd/20671
vda                       252:0    0   250G  0 disk
├─vda1                    252:1    0     1M  0 part
└─vda2                    252:2    0   248G  0 part
   └─ubuntu--vg-ubuntu--lv 253:0    0   248G  0 lvm  /
vdb                       252:16   0  1000G  0 disk
vdc                       252:32   0   500G  0 disk
vdd                       252:48   0   1200G  0 disk
 

ファイルシステムを作成する

node0 および node1で追加したディスクごとに、ファイル・システムを作成する必要があります。

ディスクに適した任意のファイル・システムを使用できます。 Ext4 と XFS は、2 つの一般的な Linux ファイル・システムです。 Ext4 と XFS のどちらを選択するかは、ユーザーの好みとシステムの具体的なニーズによって異なります。 ほとんどのシステムでは Ext4 を選択することをお勧めしますが、より信頼性の高いファイル・システムが必要な場合は、XFS を使用することをお勧めします。

  • ここでは、 ext4 ファイル・システムの使用例を示します。

    • node0 (instana-0) では、以下のコマンドを使用して単一のファイル・システムを作成できます。

      for disk in vdb ; do
          echo "make filesystem for $disk"
          mkfs.ext4 -m 0 -E lazy_itable_init=0,lazy_journal_init=0,discard /dev/$disk
      done
       
    • node1 (instana-1) では、以下のコマンドを使用して 3 つのファイル・システムを作成できます。

      for disk in vdb vdc vdd ; do
          echo "make filesystem for $disk"
          mkfs.ext4 -m 0 -E lazy_itable_init=0,lazy_journal_init=0,discard /dev/$disk
      done
       
  • ここでは、 xfs ファイル・システムの使用例を示します。

    • node0 (instana-0) では、以下のコマンドを使用して単一のファイル・システムを作成できます。

      for disk in vdb; do
          echo "make filesystem for $disk"
          mkfs.xfs -f -i size=1024 -L $disk /dev/$disk
      done
       
    • node1 (instana-1) では、以下のコマンドを使用して 3 つのファイル・システムを作成できます。

      for disk in vdb vdc vdd; do
          echo "make filesystem for $disk"
          mkfs.xfs -f -i size=1024 -L $disk /dev/$disk
      done
       

ディレクトリーを作成する

ホスト上で、必ず 4 つのディレクトリーを作成してください。 ハードウェア要件を参照してください。

以下のコマンド例では、デフォルトのディレクトリー・パスを使用しています。 任意の場所にディレクトリーを作成することができます。 ただし、ディレクトリーをマウントするときには、必ず正しいパスを使用してください。

  • node0 (instana-0) で、 objects ディレクトリーを作成します。

    mkdir -p /mnt/instana/stanctl/objects
     
  • node1 (instana-1) で、以下の 3 つのディレクトリーを作成します。

    mkdir -p /mnt/instana/stanctl/data
    mkdir -p /mnt/instana/stanctl/metrics
    mkdir -p /mnt/instana/stanctl/analytics
     

マウントパスを追加する

作成したディレクトリーにマウント・パスを追加する必要があります。 ホスト上のディスクを特定するで、デバイスの一覧を確認できます。

まず、 node0 (instana-0) および node1 (instana-1) にあるファイルシステムテーブル(fstab)ファイル内のデバイス名を、それぞれのUUID(一意の識別子)に置き換えてください。

再起動後、特に複数のディスクを接続している場合、デバイス名が変更されることがあります。 このような状況では、ディスクと元のマウントパスとの間に不一致が生じる可能性があります。 これらの問題を回避するには、ファイル fstab 内のデバイス名をUUID(一意の識別子)に置き換えてください。

fstab ファイルを UUID で更新する

fstab を更新するには、以下の手順を実行してください:

  1. ストレージ容量に基づいて、各ディレクトリに使用するデバイスを特定してください。 デバイス名に注意してください。
  2. すべてのデバイスのUUIDを取得します。
    blkid
     
    以下のコマンド例と出力をご覧ください:
    $ blkid /dev/sdb
    /dev/sdb: UUID="86ceb289-ba28-448d-b41f-71e647fc4536" BLOCK_SIZE="4096" TYPE="ext4"
     
  3. ファイルシステムテーブル(fstab)ファイルを、デバイスのUUIDで更新します。
    1. お好みのテキストエディタでファイル /etc/fstab を開いてください。
    2. UUIDを. /etc/fstabに追加します。 各デバイスについて、次の例のようにUUIDを追加してください:
      UUID=<device_uuid>    /mnt/instana/stanctl/data       ext4    discard,defaults,nofail        0 0
      UUID=<device_uuid>    /mnt/instana/stanctl/metrics    ext4    discard,defaults,nofail        0 0
      UUID=<device_uuid>    /mnt/instana/stanctl/analytics  ext4    discard,defaults,nofail        0 0
      UUID=<device_uuid>    /mnt/instana/stanctl/objects    ext4    discard,defaults,nofail        0 0
       
    3. ファイルを保存します。

その後、予防措置として、マウント・パスを作成する前に fstab ファイルのバックアップを取ってください。 node0 (instana-0) および node1 (instana-1) で以下のコマンドを実行します。

cp /etc/fstab /etc/fstab.backup
 

以下のコマンド例では、デフォルトのマウント・パスと、前のセクションで例として使用したディスクを使用しています。 コマンドは、ご使用の環境によって異なる場合があります。 また、カスタム・パスに ディレクトリーを作成 した場合は、必ずそれらのパスを使用してください。

注: カスタムマウントパスを作成した場合は、 Self-Hosted Standard Edition をインストールする際、コマンド stanctl up --multi-node-enable にフラグ --volume-<directory-name> を追加するようにしてください。 たとえば、マウントパスとして を /data/analytics 指定した場合は、 を使用します stanctl up --multi-node-enable --volume-analytics /data/analytics
  • Ext4 コマンドの例。

    • node0 (instana-0) のコマンド
      echo "UUID=<device_vdb_uuid>  /mnt/instana/stanctl/objects    ext4    discard,defaults,nofail        0 0" >> /etc/fstab
       
    • node1 (instana-1) のコマンド
      echo "UUID=<device_vdb_uuid>  /mnt/instana/stanctl/analytics  ext4    discard,defaults,nofail        0 0" >> /etc/fstab
      echo "UUID=<device_vdc_uuid>  /mnt/instana/stanctl/metrics    ext4    discard,defaults,nofail        0 0" >> /etc/fstab
      echo "UUID=<device_vdd_uuid>  /mnt/instana/stanctl/data       ext4    discard,defaults,nofail        0 0" >> /etc/fstab
       
  • XFS サンプル・コマンド。

    • node0 (instana-0) のコマンド
      echo "UUID=<device_vdb_uuid>  /mnt/instana/stanctl/objects    xfs   discard,defaults,nofail    0 0" >> /etc/fstab
       
    • node1 (instana-1) のコマンド
      echo "UUID=<device_vdb_uuid>  /mnt/instana/stanctl/analytics  xfs   discard,defaults,nofail    0 0" >> /etc/fstab
      echo "UUID=<device_vdc_uuid>  /mnt/instana/stanctl/metrics    xfs   discard,defaults,nofail    0 0" >> /etc/fstab
      echo "UUID=<device_vdd_uuid>  /mnt/instana/stanctl/data       xfs   discard,defaults,nofail    0 0" >> /etc/fstab
       

マウントパスを確認してください

ディレクトリーが正しいディスクにマウントされていることを確認してください。 デバイス名を取得するには、 追加ディスクの準備 を参照してください。

lsblk <device name>
 

ファイルシステムをマウントする

すべてのファイル・システムをマウントします。 node0 (instana-0) および node1 (instana-1) で以下のコマンドを実行します。

mount -a
 

カーネル・パラメーター

Instana バックエンドを正常にインストールするには、すべてのノードで以下のカーネルパラメータを正しく設定する必要があります。

vm.swappiness

アプリケーションのページがスワップ領域に移動されないように 0vm.swappiness 設定します。

sh -c 'echo vm.swappiness=0 >> /etc/sysctl.d/99-stanctl.conf' && sysctl -p /etc/sysctl.d/99-stanctl.conf
 

fs.inotify.max_user_instances

システムが最大8192個のinotifyインスタンスを許可するように 8192fs.inotify.max_user_instances 設定してください。

sh -c 'echo fs.inotify.max_user_instances=8192 >> /etc/sysctl.d/99-stanctl.conf' && sysctl -p /etc/sysctl.d/99-stanctl.conf
 

透過型巨大ページ

メモリ管理のため、Transparent Huge Pages(THP)を恒久的に無効にします。

  • Ubuntu または Debian のホストをお持ちの場合は、以下のコマンドを実行してください:
    sed -i "s/\(GRUB_CMDLINE_LINUX=\".*\)\"/\1 transparent_hugepage=never\"/" "/etc/default/grub"
    update-grub
     
  • Red Hat® Enterprise Linux®、 CentOS Stream、 Amazon Linux、または Oracle Linux のホストをお持ちの場合は、次のコマンドを実行してください:
    grubby --args="transparent_hugepage=never" --update-kernel ALL
     
  • SUSE Linux Enterprise Server (SLES)ホストをお持ちの場合は、以下のコマンドを実行してください:
    sed -i "s/\(GRUB_CMDLINE_LINUX=\".*\)\"/\1 transparent_hugepage=never\"/" "/etc/default/grub"
    grub2-mkconfig -o /boot/grub2/grub.cfg
     

これらの変更を有効にするには、システムの再起動が必要です。

再起動後、THPが無効になっていることを確認してください。

cat /sys/kernel/mm/transparent_hugepage/enabled
 

以下の出力は、THPが無効になっていることを示しています。

always madvise [never]
 

パッケージと環境変数

一部のホストでは、欠落しているパッケージをインストールするか、必要な環境変数とパスを設定する必要があります。

クラスター内のすべてのノードでタスクが完了していることを確認します。

Amazon Linux 2023年のホスト

Amazon Linux 2023 では、 container-selinux および k3s-selinux パッケージが見つかりません。 これらの設定は、 Standard Edition インストーラーが Instana を中断することなくインストールするために必要です。

  • パッケージ container-selinux をインストールしてください。

    dnf install -y container-selinux
     
  • パッケージ k3s-selinux をインストールしてください。

    dnf install -y https://rpm.rancher.io/k3s/stable/common/centos/8/noarch/k3s-selinux-1.6-1.el8.noarch.rpm
     

Red Hat Enterprise Linux および CentOS Stream のホスト

Red Hat Enterprise Linux および CentOS Stream のホストでは、デフォルトでは /usr/local/bin ディレクトリは 環境 PATH 変数に含まれません。 Standard Edition のインストーラーは、インストール中にいくつかのコマンドを実行するために、この PATH ディレクトリを必要とします。

ディレクトリを環境 /usr/local/binPATH 変数に追加するには、以下の手順を実行してください:

  1. コマンド export PATH を または .bash_profile ファイル .bashrc に追加します。

    echo 'export PATH=$PATH:/usr/local/bin' >> ~/.bashrc
     

    OR

    echo 'export PATH=$PATH:/usr/local/bin' >> ~/.bash_profile
     
  2. 変更を適用します。 前のコマンドで更新したファイル名を使用してください。

    source ~/.bashrc
     

    OR

    source ~/.bash_profile
     
  3. ディレクトリ /usr/local/bin が環境変数 PATH に含まれていることを確認してください。

    echo $PATH
     

パスの更新が成功すると、出力に /usr/local/bin が表示されます。

入居者名および部屋番号

Instana のインストール時には、テナント名とユニット名を指定する必要があります。

Instana をインストールした後、テナント名やユニット名は変更できません。

テナント名およびユニット名については、以下の制限が適用されます:

  • 名前は、以下の正規表現パターンに一致する必要があります:
    ^[a-z][a-z0-9]*$
     
  • 名前は15文字以内にしてください。
  • 名前はアルファベットで始まる必要があります。
  • 名前は英数字のみで構成されている必要があります。
  • すべての文字は小文字で入力してください。

たとえば、 test はユニット名であり、 marketing はテナント名です。

入居者や物件に関する詳細については、 units.instana.io をご覧ください。

ネットワーキングの要件

Instana ドメインおよびクラスター内のホストは、オンプレミス環境の外からアクセス可能である必要があります。 ホスト上で、 ドメインネームシステム( DNS ) の設定を更新し、 ファイアウォールのルールを設定してください。

DNS 設定

Instana 環境用に、ドメイン名と DNS ゾーンが設定されていることを確認してください。 次に、以下のドメインについて、ゾーンに DNS のAレコードを追加してください:

表 1. DNS 設定
ドメイン 説明 名前の例
基本ドメイン <base_domain> Instana にアクセスするために使用できる完全修飾ドメイン名(FQDN)。 ホストのIPアドレスを指定します。 instana.example.com
エージェント受容体サブドメイン agent-acceptor.<base_domain> Instana エージェントのトラフィック用のドメイン名。 ホストのIPアドレスを指定します。 agent-acceptor.instana.example.com
OpAMP アクセプターサブドメイン opamp-acceptor.<base_domain> OpenTelemetry のコレクター管理トラフィック用のドメイン名。 ホストのIPアドレスを指定します。 opamp-acceptor.instana.example.com
OTLP HTTP アクセプターサブドメイン otlp-http.<base_domain> OpenTelemetryOTLP/HTTP のコレクターへのトラフィック用のドメイン名。 ホストのIPアドレスを指定します。 otlp-http.instana.example.com
OTLP gRPC アクセプターサブドメイン otlp-grpc.<base_domain> OpenTelemetryOTLP/gRPC のコレクターへのトラフィック用のドメイン名。 ホストのIPアドレスを指定します。 otlp-grpc.instana.example.com
テナントおよびユニットのサブドメイン <unit-name>-<tenant-name>.<base_domain> ユニットとその入居者のドメイン名。 ホストのIPアドレスを指定します。 test-marketing.instana.example.com

DNS のAレコードを追加する詳細な手順については、ご利用のドメイン登録業者のドキュメントをご参照ください。

注: Ingressのすべてのトラフィックに単一 <base_domain> のドメインのみを使用したい場合は、「単一ドメインでの設定」を参照してください。
注: 3ノードのクラスタでは、ベースドメインは node0 のIPアドレスを指します(instana-0)。IPアドレスの要件に関する詳細については、 「IPアドレス」 を参照してください。

ファイアウォール規則

特定の Linux ディストリビューションでは、ファイアウォールによって競合や制限が課される可能性があります。 これらの競合は、インストールに必要なネットワーク通信およびサービス・ディスカバリーに影響を与える可能性があります。 したがって、ファイアウォールが開いている場合は、必要なポートそしてそれにルールを課します。

外部ファイアウォールを使用している場合は、ポートを開く方法についてはファイアウォールのドキュメントを参照してください。

Amazon Web Services ( AWS )での Standard Edition のデプロイにおいては、ファイアウォールが無効になっている場合でも、セキュリティグループのすべてのポートを開く必要があります。

必要なポートを開くには、次の手順を実行します。

  • の上Ubuntuホストの場合は、すべてのノードで次のコマンドを実行します。 コマンドではノードの IP アドレスを使用します。

    ufw allow 22/tcp
    ufw allow 80/tcp
    ufw allow 443/tcp
    ufw allow 8443/tcp
    ufw allow from <node0 (instana-0) IP> to any port 22 proto tcp
    ufw allow from <node0 (instana-0) IP> to any port 6443,10250,2379,2380,5001,9443,53 proto tcp
    ufw allow from <node0 (instana-0) IP> to any port 8472,53 proto udp
    ufw allow from <node1 (instana-1) IP> to any port 6443,10250,2379,2380,5001,9443,53 proto tcp
    ufw allow from <node1 (instana-1) IP> to any port 8472,53 proto udp
    ufw allow from <node2 (instana-2) IP> to any port 6443,10250,2379,2380,5001,9443,53 proto tcp
    ufw allow from <node2 (instana-2) IP> to any port 8472,53 proto udp
    ufw allow from 10.42.0.0/16 to any
    ufw allow from 10.43.0.0/16 to any
    ufw allow in on lo
    ufw allow out on lo
    ufw reload
     
  • Debian、 Red Hat Enterprise Linux、 CentOS Stream、 Amazon Linux、 Oracle Linux、および SUSE Linux Enterprise Server (SLES) ホストでは、すべてのノードで以下のコマンドを実行してください。 コマンドではノードの IP アドレスを使用します。

    firewall-cmd --permanent --add-port=22/tcp
    firewall-cmd --permanent --add-port=80/tcp
    firewall-cmd --permanent --add-port=443/tcp
    firewall-cmd --permanent --add-port=8443/tcp
    firewall-cmd --new-zone=internal-access --permanent
    firewall-cmd --permanent --zone=internal-access --add-source=<node0 (instana-0) IP>
    firewall-cmd --permanent --zone=internal-access --add-source=<node1 (instana-1) IP>
    firewall-cmd --permanent --zone=internal-access --add-source=<node2 (instana-2) IP>
    firewall-cmd --permanent --zone=internal-access --add-port=22/tcp
    firewall-cmd --permanent --zone=internal-access --add-port=6443/tcp
    firewall-cmd --permanent --zone=internal-access --add-port=10250/tcp
    firewall-cmd --permanent --zone=internal-access --add-port=2379/tcp
    firewall-cmd --permanent --zone=internal-access --add-port=2380/tcp
    firewall-cmd --permanent --zone=internal-access --add-port=5001/tcp
    firewall-cmd --permanent --zone=internal-access --add-port=8472/udp
    firewall-cmd --permanent --zone=internal-access --add-port=9443/tcp
    firewall-cmd --permanent --zone=internal-access --add-port=53/udp
    firewall-cmd --permanent --zone=internal-access --add-port=53/tcp
    firewall-cmd --permanent --zone=trusted --add-source=10.42.0.0/16
    firewall-cmd --permanent --zone=trusted --add-source=10.43.0.0/16
    firewall-cmd --permanent --zone=trusted --add-interface=lo
    firewall-cmd --reload
     

ポートを確認する

「必要なポート」 に指定されているポートが開いているか確認してください。

Ubuntu ホスト

ファイアウォールによってブロックされているポートを確認するには、次のコマンドを使用します。 ファイアウォールが有効になっている場合、このコマンドはブロックされているポートを一覧表示します。

 ufw status verbose
 

ポートを開くには、次のコマンドを実行してください:

ufw allow <port_number>
 
Debian、 Red Hat Enterprise Linux、 CentOS Stream、 Amazon Linux、 Oracle Linux、および SLES

ポートがファイアウォールによってブロックされているかどうかを確認するには、次のコマンドを使用します:

firewall-cmd --query-port=<port_number>/tcp
 

コマンドの出力が の場合 no、指定されたポートは閉じられています。

ポートを開くには、次のコマンドを実行してください:

firewall-cmd --zone=public --add-port=<port_number>/tcp --permanent
firewall-cmd --reload
 

HTTP プロキシの設定

HTTP_PROXYHTTPS_PROXY、および NO_PROXY 環境変数を定義します。

Standard Edition をインストールするコマンド stanctl up --multi-node-enable を実行すると、インストール処理では自動的に現在のシェルから環境変数の値が読み込まれます。

次のコマンドを使用して、環境変数を設定してください:

HTTP_PROXY=http://your-proxy.example.com:<port_number>
 
HTTPS_PROXY=http://your-proxy.example.com:<port_number>
 
NO_PROXY=127.0.0.0/8,10.0.0.0/8,172.16.0.0/12,192.168.0.0/16
 

RHEL および CentOS Stream ホスト上の nm-cloud-setup ユーティリティ

Red Hat Enterprise Linux および CentOS Stream ホストにおいて、が有効になっている nm-cloud-setup 場合は、各ノードでこれを無効にし、ノードを再起動する必要があります。

以下のコマンドを使用します。

  1. が有効になっている nm-cloud-setup か確認してください。

    systemctl is-enabled nm-cloud-setup.service
     

    サービスが無効になっている場合、コマンドは を返します disabled。そうでない場合は を返します enabled

  2. が無効になっている nm-cloud-setup 場合は、次のセクションに進んでください。 が有効になっている nm-cloud-setup 場合は、無効にしてください。

    systemctl disable nm-cloud-setup.service nm-cloud-setup.timer
     
  3. ノードをリブートします。

    systemctl reboot
     

TLS 証明書と鍵

Instana ( Standard Edition )には、トランスポート層セキュリティ( TLS )の証明書と鍵が必要です。

証明書は、「 DNS 」 の設定セクションで指定されたドメインに対して発行される必要があります。

証明書を指定したくない場合は、インストール時に生成される自己署名証明書を使用できます。

SSH 構成

セキュア・シェル (SSH) 構成は、マルチノード・クラスターでのみ必要です。

Instana をインストールするには、ユーザーは instana-0 から instana-1 および instana-2 へ、パスワードを入力せずに SSH を使用して接続する必要があります。

  • rootユーザーは、3つのノードすべてに対してパスワード不要のSSHアクセス権を持っている必要があります。
  • 非rootユーザーは、3つのノードすべてに対してパスワード不要のSSHアクセス権を持ち、各ノードでsudo権限を持っている必要があります。

ユーザーは、root として、または sudo 権限を持つユーザーとして stanctl コマンドを実行できます。

以下のステップを実行して、SSH 鍵を生成し、それらを 3 つのノード間で共有します。

  1. クラスターに SSH 鍵が存在しない場合は、 node0 (instana-0) で SSH 鍵ペアを生成します。

    ssh-keygen -t rsa
     
  2. 公開鍵の内容を node1 (instana-1) および node2 (instana-2) の $HOME/.ssh/authorized_keys ファイルにコピーします。

  3. もし、sshdサービスnode1 (instana-1 ) そしてnode2 (instana-2 )デフォルトのSSHポート22の代わりに別のポートでリッスンする場合は、$HOME/.ssh/configでnode0 (instana-0 ) をクリックしてそのポートを使用します。

    cat <<EOF | sudo tee -a ~/.ssh/config
    Host *
        port <alternate_port_number>
    EOF
     
  4. node0 (instana-0) ノードと他の 2 つのノードの間の SSH 接続をテストします。

    ssh <username>@<node_ip>
     

SSH 接続が成功すると、次のコマンドの入力を求めるプロンプトが表示されます。 「許可が拒否されました」というエラーが表示された場合は、公開鍵をノード上の正しいユーザー・アカウントにコピーしたことを確認してください。