ウェブサイト検索

AlmaLinux 9にConsulサーバーをインストールする方法


このページで

  1. 前提条件
  2. システムの設定

    1. Firewalldの設定
    2. SELinuxを許可モードに変更する
  3. DNFを使用してConsulをインストールする
  4. Consulの設定
  5. 領事クラスタとの対話

    1. 領事クラスターの確認
    2. ConsulにKV(キー-バリュー)ストアを追加する
    3. ConsulでのDNSとの対話
    4. コンスルWeb UI(ユーザーインターフェース)にアクセスする
  6. 結論

Consulは、DNSおよびHTTPインターフェースを介してサービスを登録できるサービスディスカバリのための現代的なプラットフォームです。また、TLSを介した安全な接続を可能にし、サービス間の認可を提供するサービスメッシュ機能も提供しています。その上、Consulはサービスへのアクセスを管理するためのAPIゲートウェイと、サービス構成を保存するためのKV(キー/バリュー)ストアも提供しています。

このガイドでは、AlmaLinux 9で複数のサーバーを使用したConsulクラスターのインストールをステップバイステップで説明します。

前提条件

このガイドを完成させるには、次のものを用意してください。

  • 同じネットワーク内の2台以上のAlmaLinuxサーバー。
  • 管理者権限を持つ非ルートユーザー。

システムの設定

この最初のステップでは、ConsulのインストールのためにAlmaLinuxサーバーを準備します。これには次のものが含まれます:

  • Firewalldを設定してポートを開く。
  • SELinuxを許可モードに設定します。

Firewalldの設定

パッケージをインストールする前に、Consulサーバーでポートを開く必要があります。RHELベースのオペレーティングシステムについては、Firewalldを使用してポートを開きます。

以下のコマンドを実行して、AlmaLinuxサーバーでポート8300、8301、8302、8400、8500、8600を開いてください。成功した場合、成功のような出力が得られるはずです。

sudo firewall-cmd --permanent --zone=public --add-port={8300,8301,8302,8400,8500,8600}/tcp

次に、以下のコマンドを使用してfirewalldを再読み込みし、効果を適用します。

sudo firewall-cmd --reload

最後に、次のコマンドを使用してfirewalldのルールを確認してください。ポート8300、8301、8302、8400、8500、8600がfirewalldで利用可能であることを確認してください。

sudo firewall-cmd --zone=public --list-all

SELinuxを許可モードに変更する

firewalldを設定した後、デフォルトのSELinuxモードを許可モードに変更します。これにより、アクションをブロックすることなく、SELinuxにエラーログが生成されます。

SELinuxモードを許可モード<&47;strong>に変更するには、次のコマンドを実行してください。

sudo setenforce 0
sudo sed -i 's/^SELINUX=.*/SELINUX=permissive/g' /etc/selinux/config

次に、効果を得るためにサーバーを再起動してください。

sudo reboot

すべてのAlmaLinuxサーバーを設定したので、Consulのインストールを開始できます。

DNFを使用してConsulをインストールする

Consulは複数のオペレーティングシステムをサポートするサービスネットワーキングプラットフォームです。また、ConsulはRHELベースのディストリビューションを含むLinuxディストリビューション用のパッケージリポジトリを提供しています。このステップでは、DNFを介してConsulリポジトリからConsulをインストールします。

まず、次のコマンドを実行して基本的なパッケージをインストールします。インストールを続行するにはy<&47;strong>と入力してください。

sudo dnf install dnf-plugins-core nano

次に、以下のDNFコマンドを実行して、Alma LinuxサーバーにConsulリポジトリを追加します。その後、各サーバーで利用可能なリポジトリのリストを確認してください。

sudo dnf config-manager --add-repo https://rpm.releases.hashicorp.com/RHEL/hashicorp.repo
sudo dnf repolist

以下の出力は、あなたがHashiCorpリポジトリをシステムに追加したことを証明しています。

次に、以下のコマンドを実行してConsulをインストールします。Consulのインストールを続行するにはyと入力してください。

sudo dnf install consul

インストールが完了したら、次のコマンドを実行してコンスルのバイナリファイルを見つけ、そのバージョンを確認してください。

which consul
consul version

以下の出力は、コンスルのバイナリファイルが&47;bin&47;consul,<&47;em>に存在し、現在のコンスルのバージョンが1.17<&47;strong>であることを確認しています。

Consulの設定

この時点で、すべてのAlmaLinuxサーバーにConsulがインストールされています。さっそく、複数のサーバーを使用してConsulクラスターの設定を始めましょう。例として、3台のAlmaLinuxサーバーを使用します。

|  Hostname  |    IP Address   |
| ---------  |  -------------- |
|  consul1   |  192.168.10.41  |
|  consul2   |  192.168.10.42  |
|  consul3   |  192.168.10.43  |

まず、以下のコマンドを実行してすべてのサーバーでコンソルサービスを停止します。

sudo systemctl stop consul

consul1サーバーに移動し、以下のコマンドを実行してConsulクラスターの新しいキーを生成します。生成されたキーは必ず保管してください。

consul keygen

すべてのConsulサーバーで、次のnanoエディタコマンドを使用してデフォルトのConsul設定&47;etc&47;consul.d&47;consul.hcl<&47;em>を開いてください。

sudo nano /etc/consul.d/consul.hcl

以下の内容でデフォルト設定を変更し、以下のいくつかのパラメータに注意してください。

  • サーバー<&47;strong>: Trueは、ノードがConsulサーバーとして機能することを意味します。
  • advertise_addr<&47;strong>: これをConsulサーバーのそれぞれのIPアドレスに変更してください。
  • bootstrap_expect<&47;strong>: あなたのクラスターには何台のサーバーがありますか?
  • encrypt: すべてのサーバーは同じキーを持っている必要があります。
  • retry_join<&47;strong>: このパラメータにConsulクラスターのIPアドレスを入力してください。
# Full configuration options can be found at https://www.consul.io/docs/agent/config
# datacenter
datacenter = "kitty-dc1"
# data_dir
# This flag provides a data directory for the agent to store state. 
data_dir = "/opt/consul"
# client_addr
# The address to which the Consul will bind client interfaces, including the HTTP and DNS
# servers.
client_addr = "0.0.0.0"
# ui
# Enables the built-in web UI server and the required HTTP routes.
ui_config{
  enabled = true
}
# default domain
domain = "consul"
# enable dns_config
dns_config{
  enable_truncate = true
  only_passing = true
}
# server
# This flag is used to control if an agent is in server or client mode. When provided,
# an agent will act as a Consul server. Each Consul cluster must have at least one
# server and ideally no more than 5 per datacenter. All servers participate in the Raft
# consensus algorithm to ensure that transactions occur in a consistent, linearizable
# manner. Transactions modify cluster state, which is maintained on all server nodes to
# ensure availability in the case of node failure. Server nodes also participate in a
# WAN gossip pool with server nodes in other datacenters. Servers act as gateways to
# other datacenters and forward traffic as appropriate.
server = true
# Advertise addr - if you want to point clients to a different address than bind or LB.
advertise_addr = "192.168.10.41"
# bootstrap_expect
# This flag provides the number of expected servers in the datacenter.
bootstrap_expect=3
# encrypt
# Specifies the secret key to use for encryption of Consul network traffic.
encrypt = "jFtV8jj4h1hnXGqTllWH+sOqLo/tw9xnnfDHcVxVnYg="
# retry_join
retry_join = ["192.168.10.41", "192.168.10.42", "192.168.10.43"]

作業が完了したら、ファイルを保存して終了してください。

次に、以下のコマンドを実行してConsulの設定を確認します。正しい構文であれば、'設定は有効です<&47;strong>'という出力が得られるはずです。

sudo consul validate /etc/consul.d/

以下のコマンドを実行して、コンスルサービスを開始および有効にしてください。

sudo systemctl start consul
sudo systemctl enable consul

次に、サービスが実行されていることを確認するために、次のコマンドを使用して領事を確認してください。

sudo systemctl status consul

次の出力では、Consulがconsul1サーバーで実行されているのが表示されるはずです。

次の出力では、Consulがconsul2サーバーで実行されているのがわかるはずです。

次の出力では、Consulがconsul3サーバーで実行されているのが表示されるはずです。

領事クラスタとの対話

AlmaLinuxサーバーにConsulクラスターが設定されたので、consulコマンドラインを介してConsulクラスターを確認し、操作できます。

領事クラスターの確認

クラスター内の利用可能なConsulサーバーを確認するには、以下のコマンドを実行してください。

consul members

この例では、Consulクラスターは3つのサーバー、consul1、consul2、consul3で構成されています。

以下のコマンドを使用して、クラスター上のピアのリストを確認することもできます。

consul operator raft list-peers

以下に、ID、状態、投票者、およびRaftプロトコルのバージョンを含む各コンスルサーバーの詳細情報を示します。

ConsulにKV(キー-バリュー)ストアを追加する

次に、以下のコンスールコマンドを実行して新しいキー・バリューデータベースを作成します。この例では、新しいキーdb_nameを値testdbで作成します。

consul kv put consul/configuration/db_name testdb

以下のコマンドを実行して、db_name<&47;strong>の値を取得してください。

consul kv get consul/configuration/db_name

次のようにtestdbの値を取得する必要があります:

ConsulでのDNSとの対話

このガイド内で、Consul DNSを有効にしました。Consul DNSの設定を確認するには、以下のdigコマンドを使用してください。

dig @127.0.0.1 -p 8600 consul.service.consul

この例では、クラスター内に同じドメイン名のconsulを持つConsulサーバーを構成しました。次の内容は、Aレコード192.168.10.41、192.168.10.42、192.168.10.43を持つドメインconsul.service.consulを確認します。

コンスルWeb UI(ユーザーインターフェース)にアクセスする

最後に、ウェブブラウザを開き、ポート8500のConsulサーバーのIPアドレスにアクセスします。例: http://192.168.10.41:8500/ui/ でConsulのウェブ管理ダッシュボードにアクセスします。

以下に、Consulクラスター内の利用可能なサーバーが表示されます。

今、各サーバーの詳細情報を取得するには、ノードメニューをクリックしてください。

次に、Key&47;Value<&47;strong>メニューをクリックして、Consulサーバーで利用可能なKVのリストを取得します。

結論

まとめると、あなたは3台のAlmaLinuxサーバーを使用してConsulクラスターの段階的なインストールを完了しました。クラスター内でConsul Web UIとConsul DNSを有効にしました。最後に、Consulクラスター、キー・バリューストア、およびDNSと対話するための基本的なコマンドも学びました。

ここから、ACL(アクセス制御リスト)を有効にし、Consulサーバーとクライアント間の接続にTLSを実装できます。