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

◆ Live配信スケジュール ◆
サイオステクノロジーでは、Microsoft MVPの武井による「わかりみの深いシリーズ」など、定期的なLive配信を行っています。
⇒ 詳細スケジュールはこちらから
⇒ 見逃してしまった方はYoutubeチャンネルをご覧ください
【5/21開催】Azure OpenAI ServiceによるRAG実装ガイドを公開しました
生成AIを活用したユースケースで最も一番熱いと言われているRAGの実装ガイドを公開しました。そのガイドの紹介をおこなうイベントです!!
https://tech-lab.connpass.com/event/315703/

こんにちは。サイオステクノロジー 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.


*


質問はこちら 閉じる