5.3. 冗長構成での導入手順

Ericom Shieldは機能ごとにコンポーネントを分離してインストールすることが可能です。 そうすることで、必要な冗長性を担保したり、リソースが必要なブラウザノードを水平に追加するなどの柔軟な構成が可能となります。

この章では冗長の基本構成を組む手順をご紹介します。

shield-component10

構成としては上記のように、クラスタマネージメントとシステムコンポーネント、ファームサービスが3台、ブラウザーファームがN台という構成になります。

5.3.1. セットアップスクリプトの実行

下記コマンドによりshield-setup.shをダウンロードし、実行します。 これはRancherを配置するノードでのみ実施します。

$ curl -O https://ericom-tec.ashisuto.co.jp/shield/shield-setup.sh
$ chmod +x shield-setup.sh
$ ./shield-setup.sh

実行時点で日本国内で提供されているバージョンの一覧が表示されるので、利用するバージョンの番号を選択してください。(最新版を推奨します。)

<表示例>

###### START ###########################################################
==================================================================
現在インストールされているバージョン: N/A
==================================================================
どのバージョンをセットアップしますか?
1: Rel-19.07.554
2: Rel-19.07.553

番号で指定してください:1
Rel-19.07.554 をセットアップします。
BRANCH: Rel-19.07.1
~略~

初めてのインストール時は、実行ユーザをdockerグループに参加させるため、一度ログオフを行う必要があります。 下記メッセージが表示されたら一度ログオフを行い、再度shield-setup.shを実行してください。

[start] check group
=================================================================================
実行ユーザをdockerグループに追加する必要があります。
追加後、セットアップスクリプトは中断します。
一度ログオフした後、ログインをしなおして、スクリプトを再度実行してください。
=================================================================================
[start] add group
[end] add group
###### DONE ############################################################

スクリプトを再度実行して暫くすると、入力を求めて一旦停止します。 Rancherサーバにログインするデフォルトの管理者ユーザ(admin)のパスワードを設定してください。 確認のために、同じものを2回入力してください。

=================================================================================
Rancher の admin ユーザのパスワードを新しくセットしてください。 :
確認の為もう一度入力してください。 :

次に、クラスタ名を入力するように求められます。任意のクラスタ名称を入力してください。(英字、数字、ハイフンのみ)

=================================================================================
クラスタ名を設定してください。(任意の名前) :
続いて、下記のメッセージが表示され、スクリプトを実行しているノードに、どの役割をインストールするかを選択します。
ここでは、「1」を選択してください。
★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★
※この選択の後、複数台構成にする場合に他のノードで実行するコマンドが画面に表示されます。
※必要に応じてコピーの上、他ノードで実行してください。
★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★

このノードに何をセットアップしますか?
1) 全て (Rancher, Cluster Management および Ericom Shield)
2) Rancher and Cluster Management (Ericom Shield を除く)
3) Rancher のみ

番号で選んでください:1

下記のように他のノードで実行すべきコマンドが表示されますので、コピーして実行してください。 表示される内容は毎回異なります。必ず表示されたものを利用してください。 クラスタマネジメントが含まれるノードか、shiledが実行されるノード(workerノード)かにより実行するコマンドが異なります。

今回の例では、クラスタマネジメントが含まれるノードでは 1ブロック目 を。 ブラウザファームのみのノードでは 3ブロック目 をそれぞれ実行してください。

<実行例>

下記のコマンドがこのノードで実行されます。(確認用。実行の必要はありません。)

sudo docker run -d --privileged --restart=unless-stopped --net=host -v /etc/kubernetes:/etc/kubernetes -v /var/run:/var/run rancher/rancher-agent:v2.2.6 --server https://IPアドレス:8443 --token ランダム値 --ca-checksum ランダム値 --etcd --controlplane --worker

------------------------------------------------------------
そして、 ★★★ このブロックを実行する ★★★
(【必要に応じて】 下記コマンドを他のオールインワンノード(Cluster Management + Worker)で実行してください。)

curl -s -O https://raw.githubusercontent.com/EricomSoftwareLtd/Shield/Rel-19.09.4/Kube/scripts/configure-sysctl-values.sh

chmod +x configure-sysctl-values.sh

sudo ./configure-sysctl-values.sh


curl -s -O https://raw.githubusercontent.com/EricomSoftwareLtd/Shield/Rel-19.09.4/Kube/scripts/install-docker.sh

chmod +x install-docker.sh

./install-docker.sh

sudo usermod -aG docker "$USER"


sudo docker run -d --privileged --restart=unless-stopped --net=host -v /etc/kubernetes:/etc/kubernetes -v /var/run:/var/run rancher/rancher-agent:v2.2.6 --server https://IPアドレス:8443 --token ランダム値 --ca-checksum ランダム値 --etcd --controlplane --worker

------------------------------------------------------------
または、
(【必要に応じて】 下記コマンドを他の Cluster Management ノードで実行してください。)

curl -s -O https://raw.githubusercontent.com/EricomSoftwareLtd/Shield/Rel-19.09.4/Kube/scripts/configure-sysctl-values.sh

chmod +x configure-sysctl-values.sh

sudo ./configure-sysctl-values.sh


curl -s -O https://raw.githubusercontent.com/EricomSoftwareLtd/Shield/Rel-19.09.4/Kube/scripts/install-docker.sh

chmod +x install-docker.sh

./install-docker.sh

sudo usermod -aG docker "$USER"


sudo docker run -d --privileged --restart=unless-stopped --net=host -v /etc/kubernetes:/etc/kubernetes -v /var/run:/var/run rancher/rancher-agent:v2.2.6 --server https://IPアドレス:8443 --token ランダム値 --ca-checksum ランダム値 --etcd --controlplane

------------------------------------------------------------
または、 ★★★ このブロックを実行する ★★★
(【必要に応じて】 下記コマンドを他の Worker ノードで実行してください。)

curl -s -O https://raw.githubusercontent.com/EricomSoftwareLtd/Shield/Rel-19.09.4/Kube/scripts/configure-sysctl-values.sh

chmod +x configure-sysctl-values.sh

sudo ./configure-sysctl-values.sh


curl -s -O https://raw.githubusercontent.com/EricomSoftwareLtd/Shield/Rel-19.09.4/Kube/scripts/install-docker.sh

chmod +x install-docker.sh

./install-docker.sh

sudo usermod -aG docker "$USER"


sudo docker run -d --privileged --restart=unless-stopped --net=host -v /etc/kubernetes:/etc/kubernetes -v /var/run:/var/run rancher/rancher-agent:v2.2.6 --server https://IPアドレス:8443 --token ランダム値 --ca-checksum ランダム値 --worker

★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★

他ノードでのコマンド実行が完了したら、続けて「y」を入力して処理を進めます。

<実行例>

=================================================================================
それぞれのノードでコマンドの実行は完了しましたか?
先に進んでもよろしいですか? [y/N]:y

クラスタのステータスがActiveになるまで待ってください。

[waiting] Cluster to active
Waiting for state to become active.: provisioning
Waiting for state to become active.: provisioning
Waiting for state to become active.: provisioning
Waiting for state to become active.: waiting
Waiting for state to become active.: waiting
Waiting for state to become active.: active

つづいて、それぞれのノードににShiledのどのコンポーネントを配置するか選択します。 ここでは表示される ホスト名 を参考に、該当ノードにどのコンポーネントを配置するかを決定してください。追加したノードの数だけ繰り返し確認されますので、それぞれで指定してください。

表示される ホスト名 を確認し、それぞれで番号を選択してください。

  • システムコンポーネントを稼働させる側のノードでは 2 を選択してください。
  • ブラウザファームを稼働させる側のノードでは 3 を選択してください。
    <実行例>

    =================================================================================

    *** {ホスト名} ***

    上記ノードにどのShieldコンポーネントを配置しますか?

0) Cluster Management のみ
---------------------------------------------------------
【System ComponentとBrowserを分ける場合】
---------------------------------------------------------
2) 2) System Component + Farm-service (management, proxy, elk, farm-services)
3) 3) Browser のみ (remort-browsers)
---------------------------------------------------------
99) Advanced Option

    番号で選択してください:1

このあと、実際にShieldの展開が開始されます。完了するまで暫くお待ち下さい。

<実行例>

[start] deploy shield
[start] deploieng shield
Hang tight while we grab the latest from your chart repositories...
...Skip local chart repository
...Successfully got an update from the "shield-repo" chart repository
...Successfully got an update from the "stable" chart repository
Update Complete.
Latest Version : 19.07.554
Current Version:
***************             Deploying Ericom Shield 19.07.554 ...
***************             Deploying Shield Farm Services *******************************

~略~

[end] deploieng shield
[end] deploy shield
[start] get Default project id
DEFPROJECTID: c-fj49p:p-qw4xg
[end] get Default project id
[start] Move namespases to Default project
move namespases to Default project/ management
move namespases to Default project/ proxy
move namespases to Default project/ elk
move namespases to Default project/ farm-services
[end] Move namespases to Default project

【※確認※】 Rancher UI https://xxx.xxx.xxx.xxx:8443 をブラウザで開き、全てのワークロードが Acriveになることをご確認ください。

###### DONE ############################################################

5.3.2. Rancherからの起動確認

最後の表示された Rancher UI のアドレスをブラウザに入力し、Rancherの管理画面にアクセスしてください。

IDは admin で、パスワードはセットアップ中に指定したものです。

shield-howto-all-r1

作成したクラスタを上部から選択し、Workload を開きます。全てのワークロードが Active となるまで待って下さい。

shield-howto-all-r2

shield-howto-all-r3

5.3.3. 設定値保存JSONファイル 保管場所の設定

管理コンソールで設定した値はシステムコンポーネントにおいて保持されていますが、この値は揮発的です。 並行して、設定値はJSONファイルに出力されており、これが永続的な設定値として利用されます。 JSONファイルは、管理コンソールで設定変更を行う度に出力される他、バックアップを目的に定期的に出力されます。本項目では、このJSONファイルの保存先の設定を行います。

システムをstop/startすると、Ericom Shieldは ここに保管された最新のJSONファイルを利用して起動します。

冗長構成の場合、全てのシステムコンポーネントサーバが同じデータを読み書きできる場所に保管する必要があります。このための方法は3つ提供されています。

  • NFSサーバの共有領域をマウントする
  • SFTPサーバに転送する
  • AWS S3バケットに転送する

ここでは簡易導入であるため、NFSサーバがローカルにある前提で、簡易的な説明を行います。 NFSサーバの構築およびNFSクライアントとして必要な設定については、それぞれのOSにおいてご確認願います。

NFS共有領域のマウント

全てのシステムコンポーネントサーバにおいて、同一のPATHに同一のNFS共有領域をマウントしてください。

マウントの設定はfstabを利用し、永続化されることを推奨します。 下記例では server/remote/export/local/directory にマウントします。

fstab記載例:
        server:/remote/export /local/directory nfs options 0 0

JSON保存先の設定

セットアップを実行した、Rancherサーバが動作しているシステムコンポーネントにおいて、 custom_management.yaml ファイルを編集します。

【編集前】

consulBackup:
  enabled: "yes"
  # Local Path (Uncomment to use a specific local folder for backup):
  #localPath: /home/ericom/shield/backup/

【編集後】

consulBackup:
  enabled: "yes"
  # Local Path (Uncomment to use a specific local folder for backup):
  localPath: /local/directory/

システムの再起動

保存先の設定を行ったら、Ericom Shieldの再起動を行います。下記のコマンドにより、stop/startを行ってください。

$ ./ericomshield/shield-stop.sh
$ ./ericomshield/shield-start.sh

5.3.4. ライセンスのアクティベーション

ブラウザを起動し、Shieldの管理コンソールにアクセスします。( https://***.***.***.***:30181/ ) 今回の例ではRancherサーバと別に用意したShieldサーバのアドレスを指定します。

デフォルトのIDとパスワードを入力し、ログインしてください。(ID:admin / パスワード:ericomshield

shield-howto-all-1

ライセンスアクティベーション については 展開ガイド - 管理コンソール - ライセンス をご参照ください。

警告

アクティベーションを行う前に行った設定は再起動により初期化されてしまいます。必ず最初にアクティベーションを実施してください。

5.3.5. DNSの設定 / 上位プロキシの設定

アクティベーションと同時に、DNSの設定と、ご利用の場合には上位プロキシの設定を実施してください。上位プロキシはご利用でない場合は設定不要です。

DNSの設定

展開ガイド - 管理コンソール - 設定 - DNS をご確認いただき、内部DNSおよび外部DNSのアドレスを設定してください。内部DNSでインターネットの名前解決が行える場合、両方で同じDNSサーバを指定していただいても問題ありません。

shield-howto-all-2

上位プロキシの設定

展開ガイド - 管理コンソール - 設定 - プロキシ & インテグレーション をご確認いただき、Shieldの上位プロキシとなるサーバの情報を設定してください。

基本的にはいずれも同じプロキシサーバのアドレスを指定します。

shield-howto-all-3n-ext

shield-howto-all-3n-int

5.3.6. クライアントからのアクセス

アクティベーションが完了すると、デフォルトの設定状態ですぐにShieldをご利用いただけます。ご利用にあたってはクライアントPCで下記2点(Internet Explorerをクライアントとして利用している場合は3点)の設定が必要となります。

ルート証明書のインストール

HTTPS通信をシールドするためにクライアントPCにルート証明書をインストールする必要があります。証明書は企業独自の証明書を利用することも可能ですし、配布の方法も様々ありますが、 ここではビルドインのEricom社の自己署名の証明書を各ブラウザに導入する手順をご案内します。

展開ガイド - インストール後の手順 - 証明書の設定 を参照し、クライアントPCに証明書を導入してください。

プロキシ設定の変更

実際にクライアントのWebアクセスをShield経由にするために、プロキシサーバとしてShieldのアドレスを指定します。 指定の方法は様々ありますが、ここではブラウザ毎に直接設定を行う方法をご案内します。

展開ガイド - インストール後の手順 - プロキシの構成 を参照し、設定を行ってください。

(IEのみ) WebSocket接続の上限数変更

Internet Explorerをクライアントとして利用した場合、WebSocket接続の上限数が少ないことでSSLエラーが発生することがあります。下記を参照し、接続数の上限を変更してください。

  1. [ファイル名を指定して実行] より、gpedit.msc と入力します。
../../_images/iewebsocket01.jpg
  1. [コンピュータの構成] - [管理用テンプレート] - [Windowsコンポーネント] - [Internet Explorer] - [セキュリティの機能] - [AJAX] を開きます。
../../_images/iewebsocket02.jpg
  1. [サーバーあたりの最大WebSocket接続数を設定する] を選択します。
../../_images/iewebsocket03.jpg
  1. [有効]にチェックを入れ、最大接続数を変更します。
../../_images/iewebsocket04.jpg

参考

WebSocketの接続数につきましては、レジストリの値を変更することにより上限数を上げることも可能です。 参考までにご確認ください。

WebSocket Maximum Server Connections
https://docs.microsoft.com/en-us/previous-versions/windows/internet-explorer/ie-developer/general-info/ee330736(v=vs.85)?redirectedfrom=MSDN#websocket-maximum-server-connections.

以上で最低限の設定は完了です。