この記事では、Ubuntu16.04LTSでのConsulサーバーのインストールと構成について説明します。完全に分散され、可用性が高く、複数のデータセンターにまたがる数千のノードとサービスに拡張できる、サービス検出および構成管理システムのソリューションを検討してください。これは、データベース、電子メール、キューなどのサービスアプリケーション要件の検索、Webサーバーのメンテナンスモードの有効化やヘルスチェックサービスなどのサービスの構成に役立ちます。データを安全に保ち、最大のインフラストラクチャで動作し、最新のプラクティスを採用し、既存のDevOpsツールに対応します。 Consulは、インフラストラクチャに関する一貫した利用可能な情報を提供するための多くの機能を提供します。サービスディスカバリについて話すとき、Consulのクライアントはapiやhttpなどのサービスを提供でき、他のクライアントはConsulを使用して、DNSまたはMySQLのいずれかを使用して、特定のサービスのプロバイダーを検出できます。アプリケーションは、依存するサービスを簡単に見つけることができます。
Ubuntu 16.04にConsul、Consul Web-UI、ConsulTemplateをインストールする方法を見てみましょう。ただし、いくつかの変更を加えて、他のLinuxディストリビューションにも同じ手順を実装できます。
前提条件
この記事では、ベースOSがインストールされたUbuntu 16.04の単一インスタンスを使用していますが、サーバー障害が発生した場合のデータ損失を回避するために、推奨事項に従って各データセンターで実行されている複数の領事サーバーを使用できます。これらは、サービスやキー/値情報に関する情報を処理し、保存するコンポーネントです。
領事アプリケーションを調べる前に、rootまたはsudo特権ユーザーを使用してサーバーにログインし、プロセス中に使用されるいくつかの基本パッケージをインストールします。実行可能ファイルを抽出してローカルシステムのパッケージキャッシュを更新し、以下の「apt」コマンドを使用してパッケージをインストールするには、解凍する必要があります。
$ sudo apt-get update
$ sudo apt-get install unzip
また、複数の仮想コンソールを多重化するために使用できる「tmux」をインストールする必要があります。これにより、ユーザーは単一のターミナルウィンドウまたはリモートターミナルセッション内で複数の個別のターミナルセッションにアクセスできます。
$ sudo apt-get install tmux
領事のWebUIパッケージを使用して領事にアクセスするには、Webサーバーをインストールする必要があります。この目的のために、Nginxを使用します。以下のコマンドを使用して、UbuntuサーバーにNginxをインストールできます。
$ sudo apt-get install nginx
これらは基本的なシステム要件です。次に、UbuntuにConsulをインストールするための主題に移りましょう。
Ubuntu16.04にConsulをインストールする方法
領事パッケージはUbuntuのデフォルトのリポジトリでは利用できませんが、領事のWebページからダウンロードできるソースパッケージからインストールできます。最新バージョンを選択し、そのソースの場所をコピーしてから、以下の「wget」コマンドを使用して、サーバーの「bin」ディレクトリにパッケージをインストールします。
$ cd /usr/local/bin
$ sudo wget https://releases.hashicorp.com/consul/0.8.0/consul_0.8.0_linux_amd64.zip
ダウンロード後、パッケージを解凍し、以下のコマンドを使用してzip形式のパッケージを削除します。
$ sudo unzip consul_0.8.0_linux_amd64.zip
$ sudo rm -rf consul_0.8.0_linux_amd64.zip
これで、領事館の同じWebページから、Webコンソールを開いてWebページからすべてのサービスを管理するために使用できるWebUIページが見つかります。ユーザーのホームディレクトリに新しいディレクトリを作成した後、次のコマンドを実行してWeb-UIパッケージをダウンロードしましょう。
$ mkdir consul-ui
$ cd consul-ui
$ wget https://releases.hashicorp.com/consul/0.8.0/consul_0.8.0_web_ui.zip
ダウンロード後、パッケージを解凍し、zipファイルを削除します。
$ unzip consul_0.8.0_web_ui.zip
$ rm -rf consul_0.8.0_web_ui.zip
次に、ConsulサーバーとそのWeb UIを構成して、Webブラウザーからアクセスできるようにする必要があります。
領事サーバーの構成方法
次の新しいディレクトリに新しいファイル「config.json」を作成し、その中に次の構成パラメータを配置します。
ディレクトリに次の設定を入れます。ここで、P.P.P.PはインスタンスのプライベートIPです
$ cd ~
$ mkdir -p consul-config/server
次に、以下のコマンドを使用して、コマンドラインエディターを使用して新しいファイルを作成し、次の構成を配置します。
~$ vim consul-config/server/config.json
{
"bootstrap": true,
"server": true,
"log_level": "DEBUG",
"enable_syslog": true,
"datacenter": "server1",
"addresses" : {
"http": "0.0.0.0"
},
"bind_addr": "XX.XX.XX.XX",
"node_name": "XX.XX.XX.XX",
"data_dir": "/home/k/consuldata",
"ui_dir": "/home/k/consul-ui",
"acl_datacenter": "server1",
"acl_default_policy": "allow",
"encrypt": "5KKufILrf186BGlilFDNig=="
}
この構成ファイルでは、最初の構成パラメーターはブートストラップ用です。複数の領事サーバーのクラスターをセットアップする場合は、この構成ファイルを領事サーバーの1つだけに配置するか、すべてのサーバーに配置して、ブートストラップのオプションを増やしてください。構成ファイルは単純なJSONで保存されるため、管理が非常に簡単です。
次に、領事が使用するウィスパープロトコルに暗号化を実装しました。共有秘密システムを使用してこの機能が組み込まれています。シークレットは、16ビットのbase-64エンコード文字列である必要があります。ターミナルでは、consulコマンドを使用して、必要な長さとエンコーディングのキーを生成できます。
$ consul keygen
5KKufILrf186BGlilFDNig==
bind_addrとnode_nameを独自のサーバーのIPまたはFQDNで更新してください。必要な変更を加えたら、「:wq!」を使用してエディターを保存して閉じます。次の手順に進んで、Webサーバーを構成します。
次のコンテンツを含むNginxWebサーバーの構成ディレクトリの下に配置する新しい構成ファイルを作成します。
$ sudo vim /etc/nginx/conf.d/consul.conf
server
{
listen 80 ;
server_name XX.XX.XX.XX;
root /home/k/consul-ui;
location / {
proxy_pass http://127.0.0.1:8500;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header Host $http_host;
}
}
構成ファイルを保存して閉じますが、必ず「XX」をドメイン名またはサーバーのIPアドレスに置き換えてください。その後、以下のコマンドを実行してNginxサービスを再起動します。
$ sudo systemctl restart nginx.service
Nginxサービスを再起動した後、領事サーバーを起動します。
Consulサーバーの起動と使用方法
Consulサーバーを構成した後、以下のコマンドを使用して、「tmux」ターミナルでサービスを開始します。
$ tmux
$ consul agent -config-dir ~/consul-config/server -ui-dir ~/consul-ui -bootstrap true -client=0.0.0.0
次に、以下に示すように、tmuxセッションで実行する必要がある領事プロセスを作成します。
「ctrl+bthand」を使用してプロセスを実行したままにして領事館をバックグラウンドで実行すると、tmuxセッションが切り離されます。
次に、サーバーのIPまたはFQDNとポート「8500」に従ってWebブラウザーを開き、Webブラウザーから領事サーバーを管理します。
http://localhost:8500
これで、このインターフェイスを使用してサーバーの状態を確認し、サービスとインフラストラクチャの概要を取得できます。 Web UIを使用したくない場合は、SSHトンネルを閉じるか、psコマンドとgrepを使用してプロセスのpid番号を検索し、転送したポート番号「8500」を検索してプロセスを強制終了できます。
結論
この記事では、Ubuntu16.04にconsulサーバーとそのweb-uiを正常にインストールしてセットアップしました。データセンターに対応するように構築されており、複雑な構成なしで任意の数のリージョンをサポートできます。 ConsulはLinux、Mac OS X、およびWindowsで実行されますが、ConsulサーバーはLinuxでのみ実行することをお勧めします。