Cockpit (Linux サーバ管理ツール) で複数サーバを管理する方法を検証してみた

★★★ お知らせ ★★★

◆ 6月のPS Liveは決済サービスStripeのデモ!◆
決済サービスのStripeでサブスクリプションの支払い機能を作ってみた
Stripeの機能の一部を切り出して、簡単なサブスクリプションを作るとどうなるのかを、デモをまじえてご紹介します。
⇒ 詳細はこちらから

◆【セミナー開催】 可視化ツールGrafana~初めてのダッシュボード作成◆
デモンストレーション付き!
本セミナーでは、売上データを用いて、4種類のパネル作成方法をお見せします。
⇒ お申込みはこちらから

◆ エンジニア業務環境アンケート結果 ◆
エンジニアが自分の働き方にどういったことで満足していて、不満を感じているのか、働きたい会社像として何を求めているのか、業務環境調査を実施しました。ぜひご覧ください。
⇒ アンケート結果はこちらから

こんにちは。サイオステクノロジー OSS サポート担当 Y です。

今回は Linux サーバの管理ツールである Cockpit を使って、複数の Linux サーバを管理する方法について検証してみました。(※以下の内容は CentOS 7.6/Cockpit 195 にて検証しています。)

■はじめに

前回の記事では、Cockpit を利用し Web UI から 1台の Linux サーバを管理する方法を検証しましたが、Cockpit では複数台の Linux サーバを一括で (1つの Web UI 上で) 管理することが可能です。

今回は、以下の様な構成 (Primary server である cockpit-0 の Web UI から、Secondary sever 2台を含む計 3台の Linux サーバを管理する構成) で複数台の Linux サーバを管理する方法を検証してみました。

環境構成

                                +---> [cockpit-1 (Secondary server)]
[cockpit-0 (Primary server)] ---+
                                +---> [cockpit-2 (Secondary server)]

■cockpit-0 (Primary server) でのインストール

まずはインストールです。cockpit-0 (Primary server) にて、前回の記事で紹介したインストール方法を参考にしながら Cockpit をインストールします。

ただし、今回はリモートサーバの監視に必要な cockpit-dashboard というパッケージも cockpit-0 に追加でインストールします。

[root@cockpit-0 ~]# yum install -y cockpit cockpit-dashboard

~(中略)~

========================================================================================================
 Package                     アーキテクチャー バージョン                         リポジトリー      容量
========================================================================================================
インストール中:
 cockpit                     x86_64           195.1-1.el7.centos.0.1             extras            48 k
 cockpit-dashboard           x86_64           195.1-1.el7.centos.0.1             extras           183 k
依存性関連でのインストールをします:
 cockpit-bridge              x86_64           195.1-1.el7.centos.0.1             extras           552 k
 cockpit-system              noarch           195.1-1.el7.centos.0.1             extras           1.6 M
 cockpit-ws                  x86_64           195.1-1.el7.centos.0.1             extras           806 k
 libssh                      x86_64           0.7.1-7.el7                        extras           195 k

トランザクションの要約
========================================================================================================

~(中略)~

インストール:
  cockpit.x86_64 0:195.1-1.el7.centos.0.1       cockpit-dashboard.x86_64 0:195.1-1.el7.centos.0.1      

依存性関連をインストールしました:
  cockpit-bridge.x86_64 0:195.1-1.el7.centos.0.1     cockpit-system.noarch 0:195.1-1.el7.centos.0.1    
  cockpit-ws.x86_64 0:195.1-1.el7.centos.0.1         libssh.x86_64 0:0.7.1-7.el7                       

完了しました!
[root@cockpit-0 ~]# 
[root@cockpit-0 ~]# systemctl enable --now cockpit.socket
Created symlink from /etc/systemd/system/sockets.target.wants/cockpit.socket to /usr/lib/systemd/system/cockpit.socket.
[root@cockpit-0 ~]# 

また、Web UI にアクセス可能にするために、cockpit-0 では Firewalld で Cockpit の通信を許可する設定を実施します。

[root@cockpit-0 ~]# firewall-cmd --permanent --zone=public --add-service=cockpit
success
[root@cockpit-0 ~]# 
[root@cockpit-0 ~]# firewall-cmd --reload
success
[root@cockpit-0 ~]# 

■cockpit-1, cockpit-2 (Secondary server) でのインストール

次に管理対象のサーバ (cockpit-1, cockpit-2) へのインストールです。こちらについても、前回の記事で紹介したインストール方法を参考にしながら Cockpit をインストールします。

[root@cockpit-1 ~]# yum install -y cockpit

~(中略)~

========================================================================================================
 Package                   アーキテクチャー  バージョン                         リポジトリー       容量
========================================================================================================
インストール中:
 cockpit                   x86_64            195.1-1.el7.centos.0.1             extras             48 k
依存性関連でのインストールをします:
 cockpit-bridge            x86_64            195.1-1.el7.centos.0.1             extras            552 k
 cockpit-system            noarch            195.1-1.el7.centos.0.1             extras            1.6 M
 cockpit-ws                x86_64            195.1-1.el7.centos.0.1             extras            806 k

トランザクションの要約
========================================================================================================

~(中略)~

インストール:
  cockpit.x86_64 0:195.1-1.el7.centos.0.1                                                               

依存性関連をインストールしました:
  cockpit-bridge.x86_64 0:195.1-1.el7.centos.0.1     cockpit-system.noarch 0:195.1-1.el7.centos.0.1    
  cockpit-ws.x86_64 0:195.1-1.el7.centos.0.1        

完了しました!
[root@cockpit-1 ~]# 
[root@cockpit-1 ~]# systemctl enable --now cockpit.socket
Created symlink from /etc/systemd/system/sockets.target.wants/cockpit.socket to /usr/lib/systemd/system/cockpit.socket.
[root@cockpit-1 ~]# 
[root@cockpit-2 ~]# yum install -y cockpit

~(中略)~

========================================================================================================
 Package                   アーキテクチャー  バージョン                         リポジトリー       容量
========================================================================================================
インストール中:
 cockpit                   x86_64            195.1-1.el7.centos.0.1             extras             48 k
依存性関連でのインストールをします:
 cockpit-bridge            x86_64            195.1-1.el7.centos.0.1             extras            552 k
 cockpit-system            noarch            195.1-1.el7.centos.0.1             extras            1.6 M
 cockpit-ws                x86_64            195.1-1.el7.centos.0.1             extras            806 k

トランザクションの要約
========================================================================================================

~(中略)~

インストール:
  cockpit.x86_64 0:195.1-1.el7.centos.0.1                                                               

依存性関連をインストールしました:
  cockpit-bridge.x86_64 0:195.1-1.el7.centos.0.1     cockpit-system.noarch 0:195.1-1.el7.centos.0.1    
  cockpit-ws.x86_64 0:195.1-1.el7.centos.0.1        

完了しました!
[root@cockpit-2 ~]# 
[root@cockpit-2 ~]# systemctl enable --now cockpit.socket
Created symlink from /etc/systemd/system/sockets.target.wants/cockpit.socket to /usr/lib/systemd/system/cockpit.socket.
[root@cockpit-2 ~]# 

以上でインストール作業は完了です。管理対象側のサーバ (cockpit-1, cockpit-2) の Web UI に直接アクセスしない場合は、Firewalld の設定は不要です。

■SSH 公開鍵認証準備

Cockpit の Primary Server (cockpit-0) と Secondary Server (cockpit-1 及び cockpit-2) の間の通信は SSH を利用して行われるため、cockpit-0 にて SSH の公開鍵認証で利用するキーペアを作成し、cockpit-1 及び cockpit-2 に公開鍵を登録しておきます。

[root@cockpit-0 ~]# ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa): 
Created directory '/root/.ssh'.
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:vCVK8Y1DOdB9PutdgRfmD+1NB8LDaBIMt2btTdv1wmU root@cockpit-0.example.com
SHA256:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX root@cockpit-0.example.com
The key's randomart image is:
+---[RSA 2048]----+
|      XXXX X     |
|       XXXX X XX |
|      X XXXXXXXXX|
|       X X XXXXXX|
|      XXX X XXXXX|
|     X X X  X  XX|
|      X X  X X X |
|            X X  |
|                 |
+----[SHA256]-----+
[root@cockpit-0 ~]# 
[root@cockpit-0 ~]# ssh-keyscan -H 10.1.3.30 >> ~/.ssh/known_hosts
# 10.1.3.30:22 SSH-2.0-OpenSSH_7.4
# 10.1.3.30:22 SSH-2.0-OpenSSH_7.4
# 10.1.3.30:22 SSH-2.0-OpenSSH_7.4
[root@cockpit-0 ~]# 
[root@cockpit-0 ~]# ssh-keyscan -H 10.1.2.157 >> ~/.ssh/known_hosts
# 10.1.2.157:22 SSH-2.0-OpenSSH_7.4
# 10.1.2.157:22 SSH-2.0-OpenSSH_7.4
# 10.1.2.157:22 SSH-2.0-OpenSSH_7.4
[root@cockpit-0 ~]# 
[root@cockpit-0 ~]# ssh-copy-id root@10.1.3.30
/usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: "/root/.ssh/id_rsa.pub"
/usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed
/usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys
root@10.1.3.30's password: 

Number of key(s) added: 1

Now try logging into the machine, with:   "ssh 'root@10.1.3.30'"
and check to make sure that only the key(s) you wanted were added.

[root@cockpit-0 ~]# 
[root@cockpit-0 ~]# ssh-copy-id root@10.1.2.157
/usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: "/root/.ssh/id_rsa.pub"
/usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed
/usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys
root@10.1.2.157's password: 

Number of key(s) added: 1

Now try logging into the machine, with:   "ssh 'root@10.1.2.157'"
and check to make sure that only the key(s) you wanted were added.

[root@cockpit-0 ~]# 
[root@cockpit-0 ~]# ssh root@10.1.3.30
Last login: Mon Oct 21 14:27:10 2019 from cockpit-0.labs.sios.com
[root@cockpit-1 ~]# 
[root@cockpit-1 ~]# hostname
cockpit-1.example.com
[root@cockpit-1 ~]# 
[root@cockpit-1 ~]# exit
ログアウト
Connection to 10.1.3.30 closed.
[root@cockpit-0 ~]# 
[root@cockpit-0 ~]# ssh root@10.1.2.157
Last login: Mon Oct 21 14:27:18 2019 from cockpit-0.labs.sios.com
[root@cockpit-2 ~]# 
[root@cockpit-2 ~]# hostname
cockpit-2.example.com
[root@cockpit-2 ~]# 
[root@cockpit-2 ~]# exit
ログアウト
Connection to 10.1.2.157 closed.
[root@cockpit-0 ~]# 

次に、上記の手順で作成した秘密鍵が Cockpit から利用可能になっているかを確認します。

https://cockpit-0.example.com:9090/ にアクセス及びログインし、画面右上のユーザ名が表示されているプルダウンから「認証」を選択します。

001_auth

すると、以下の様な画面が表示されます。この画面で、先程作成した秘密鍵 “id_rsa” が “オン” になっていることを確認します。

002_auth_on

もし、秘密鍵 “id_rsa” が “オフ” になっている場合は、この画面で “オン” に設定を変更しておきます。

003_auth_off

004_auth_turn_on

005_auth_turn_on_2

これで、SSH 接続に必要なキーペアの準備は完了です。

■管理対象のサーバ追加

次に、Cockpit (cockpit-0) にて、管理対象のサーバ (cockpit-1, cockpit-2) の追加作業を実施します。

Multiple Machines のドキュメントの内容を参考に、cockpit-0 の /etc/cockpit/machines.d/ 配下に 05-mymachine.json ファイルを作成し、05-mymachine.json 内に以下の様な設定を記載します。

{
  "10.1.3.30" : {
    "visible" : true,
    "color" : "rgb(211, 158, 0)",
    "address" : "10.1.3.30"
  },
  "10.1.2.157" : {
    "visible" : true,
    "color" : "rgb(0, 211, 159)",
    "address" : "10.1.2.157"
  }
}
[root@cockpit-0 ~]# touch /etc/cockpit/machines.d/05-mymachine.json
[root@cockpit-0 ~]# 
[root@cockpit-0 ~]# cat << EOF > /etc/cockpit/machines.d/05-mymachine.json
> {
>   "10.1.3.30" : {
>     "visible" : true,
>     "color" : "rgb(211, 158, 0)",
>     "address" : "10.1.3.30"
>   },
>   "10.1.2.157" : {
>     "visible" : true,
>     "color" : "rgb(0, 211, 159)",
>     "address" : "10.1.2.157"
>   }
> }
> EOF
[root@cockpit-0 ~]# 
[root@cockpit-0 ~]# cat /etc/cockpit/machines.d/05-mymachine.json 
{
  "10.1.3.30" : {
    "visible" : true,
    "color" : "rgb(211, 158, 0)",
    "address" : "10.1.3.30"
  },
  "10.1.2.157" : {
    "visible" : true,
    "color" : "rgb(0, 211, 159)",
    "address" : "10.1.2.157"
  }
}
[root@cockpit-0 ~]# 

設定ファイル作成後、設定を反映させるために cockpit.socket を再起動します。(※再起動時に接続が切断されるため、既に Web UI にログインしている場合は、再度 Web UI にてログインする必要があります。)

[root@cockpit-0 ~]# systemctl restart cockpit.socket
[root@cockpit-0 ~]# 

これで、管理対象のサーバ (cockpit-1, cockpit-2) の追加作業は完了です。

■Web UI への接続

再起動実施後に改めて Web UI にログインしてみると、以下の様に追加したサーバ (cockpit-1, cockpit-2) がプルダウンから選択できるようになっています。

006_list_of_servers

各サーバを選択後、端末からホスト名を確認すると、それぞれのサーバに接続できていることが確認できます。

007_terminal_0

008_terminal_1

009_terminal_2

これで、前回の記事で紹介した各種管理操作を、各サーバで実行することが可能です。

更に、画面左のリストから “ダッシュボード” タブを選択すると、各サーバの CPU 使用率等の情報を見ることもできます。

010_dashboard_1

010_dashboard_2

また、前述した方法では設定ファイルを作成していますが、このダッシュボード画面から管理対象のサーバを追加することも可能です。

サーバ欄の “Add Server” を選択し、追加するサーバの IP アドレスを入力すると、管理対象のサーバを追加できます。

011_add_server_1

 

011_add_server_2-2

011_add_server_3

■最後に

今回は Linux サーバの管理ツールである Cockpit で複数サーバを管理する方法を検証してみました。

台数が増えてくると管理が難しくなりそうですが、数台程度であれば Cockpit を使うことでちょっとした管理作業をお手軽に Web UI から実施できそうです。

Cockpit では、追加のモジュールをインストールすることで Web UI から Docker コンテナの操作を実施することも可能であるため、次回はその機能の検証を実施してみようと思います。

アバター画像
About サイオステクノロジーの中の人 41 Articles
サイオステクノロジーで働く中の人です。
ご覧いただきありがとうございます! この投稿はお役に立ちましたか?

役に立った 役に立たなかった

1人がこの投稿は役に立ったと言っています。


ご覧いただきありがとうございます。
ブログの最新情報はSNSでも発信しております。
ぜひTwitterのフォロー&Facebookページにいいねをお願い致します!



>> 雑誌等の執筆依頼を受付しております。
   ご希望の方はお気軽にお問い合わせください!

Be the first to comment

Leave a Reply

Your email address will not be published.


*


質問はこちら 閉じる