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

注意

セットアップする際は下記の点にご注意ください。

  • sudo可能な一般ユーザでインストールを実施する(rootユーザでのインストールも可能 ※1)
  • 「ericom」という名称のユーザ以外でインストールを実施する ※2
  • sudoは付けないでスクリプトを実行する
  • インストール後は、インストールユーザで運用する

※1 rootになる際、"sudo su -" での実行は可能です。"sudo -s" での実行は、一般ユーザのカレントディレクトリや環境変数が引き継がれてしまうため不可となります。

※2 「ericom」という名称のユーザは、セットアップ処理内で作成し内部処理で利用されるため不可となります。

  • 上位ネットワーク機器でSSL復号化(SSLデコード)やURLフィルタリング、アンチウィルスを実施している環境の場合、Shieldインストール処理にてインターネット上より必要なデータをダウンロードして処理を行う関係で、通信エラーによりインストールが失敗する場合があります。Shieldインストール処理が失敗する場合には、上位ネットワーク機器の設定を確認ください。具体的にShieldインストール時や運用利用時に許可する必要がある通信ドメインを確認されたい場合には、サポートセンターへお問い合わせください。

  • 下位ネットワーク機器でShield通信をSSL復号化(SSLデコード)して利用する環境の場合には、以下のShield内部通信のために利用しているドメインをフィルタリング除外対象に登録する必要があります。

    • Ver 21.11以前
      icap-server.service.consul
      es-proxyless.farm-services.svc
    • Ver 22.08以降
      icap-server.service.consul
      es-proxyless.farm-services.svc.cluster.local

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-20.07_Build:667
2: Rel-20.05_Build:649
3: Rel-20.03_Build:639
4: Rel-20.01.2_Build:622
5: Rel-19.12.1_Build:606
6: Rel-19.11_Build:590
7: Rel-19.09.5_Build:579
8: Rel-19.09.1_Build:570


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

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

[start] check group
=================================================================================
実行ユーザをdockerグループに追加する必要があります。
追加後、セットアップスクリプトは中断します。
一度ログオフした後、ログインをしなおして、スクリプトを再度実行してください。
=================================================================================
[start] add group
[end] add group
###### DONE ############################################################
続いて、下記のメッセージが表示され、スクリプトを実行しているノードに、どの役割をインストールするかを選択します。
ここでは、「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.3.7 --server https://IPアドレス:8443 --token ランダム値 --ca-checksum ランダム値 --etcd --controlplane --worker

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

curl -s -O https://ericom-tec.ashisuto.co.jp/shield/clean-rancher-agent.sh

chmod +x clean-rancher-agent.sh


curl -s -OL https://ericom-tec.ashisuto.co.jp/shield/delete-all.sh

chmod +x delete-all.sh



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

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

curl -s -O https://ericom-tec.ashisuto.co.jp/shield/clean-rancher-agent.sh

chmod +x clean-rancher-agent.sh


curl -s -OL https://ericom-tec.ashisuto.co.jp/shield/delete-all.sh

chmod +x delete-all.sh



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

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

curl -s -O https://ericom-tec.ashisuto.co.jp/shield/clean-rancher-agent.sh

chmod +x clean-rancher-agent.sh


curl -s -OL https://ericom-tec.ashisuto.co.jp/shield/delete-all.sh

chmod +x delete-all.sh



sudo docker run -d --privileged --restart=unless-stopped --net=host -v /etc/kubernetes:/etc/kubernetes -v /var/run:/var/run rancher/rancher-agent:v2.3.7 --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

暫くすると、確認のメッセージが表示されるので、メッセージに従い、ステータスの確認を行い、処理を進めてください。Rancher UI https://IPアドレス:8443のIDとパスワードはID:admin / パスワード:ericomshield です。

<実行例>

=================================================================================
【※確認※】 Rancher UI https://IPアドレス:8443 をブラウザで開き、
追加したノードが全てActiveになっていることを確認してください。
先に進んでもよろしいですか? [y/N]:y

つづいて、それぞれのノードにに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

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

このあと、実際に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://IPアドレス:8443 をブラウザで開くか、
          /home/ubuntu/ericomshield/shield-status.sh 実行し、
          全てのワークロードが Acriveになることをご確認ください。

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

5.3.2. Rancherからの起動確認

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

IDとパスワードを入力し、ログインしてください。(ID:admin / パスワード:ericomshield)

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:
  # Local Path (change to use a specific local folder for backup):
  localPath: /home/ericom/ericomshield/consul-backup/

【編集後】

consulBackup:
  # Local Path (change to use a specific local folder for backup):
  localPath: /local/directory/ericomshield/consul-backup/

ELK実行先の設定

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

【編集前】

elasticsearch:
elasticsearchDataPath: "/var/elk"
elasticsearchSnapshotPath: "/var/elk/snapshots"

【編集後】

elasticsearch:
elasticsearchDataPath: "/local/directory/elk"
elasticsearchSnapshotPath: "/local/directory/elk/snapshots"

システムの再起動

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

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

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

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

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

shield-howto-all-1

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

5.3.5. Shield管理コンソールの設定

Shield管理コンソールにて次の設定を実施してください。

上位プロキシへのルート証明書インポート

Ericom Shieldの上位にプロキシが存在する場合、その上位プロキシの証明書が必要な場合は下記対応を実施してください。

Shield管理コンソールでの設定方法

[設定] - [SSL] - [上位プロキシのルート証明書のアップロード]にて、登録するルート証明書を選択して、[保存]をクリックします。

※ ポリシーで「許可」に設定されたドメインにアクセスする場合、Shieldブラウザを経由しないため、インポートした証明書は利用されません。必要に応じてクライアントPCにも上位プロキシのルート証明書のインポートを実施してください。

5.3.6. 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.7. クライアントからのアクセス

アクティベーションが完了すると、デフォルトの設定状態ですぐに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.

ブラウザのPDFドキュメントを開く際の挙動について設定を変更

EricomShieldでの印刷動作の仕様として、Shield(仮想)ブラウザ上でWebページをPDF化した後に、クライアントPC側ブラウザで受信して印刷を行う動きとなっている関係で、ブラウザ側の設定で「PDFをダウンロードする」設定となっている場合に、印刷プレビューが表示されずに印刷ができない問題が発生します。

ご利用のブラウザ設定にてPDFドキュメントを「ブラウザで開く」設定となっているか確認を行い必要に応じて変更を行ってください。

  • Chromeでの該当設定

    chrome://settings/content/pdfDocuments

  • Edgeでの該当設定

    edge://settings/content/pdfDocuments

※ FireFoxでの該当設定に関するドキュメント

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