AlmaLinux 9にConsulサーバーをインストールする方法
このページで
- 前提条件
システムの設定
- Firewalldの設定
- SELinuxを許可モードに変更する
領事クラスタとの対話
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を実装できます。