Download PDF
Download page PHP エージェントの TCP モード設定.
PHP エージェントの TCP モード設定
デフォルトでは、PHP エージェントと Java プロキシはプロセス間通信(IPC)を使用して相互に通信します。ただし、Transmission Control Protocol(TCP)通信を使用すると、次のような状況で役立ちます。
- Java プロキシと PHP エージェントを異なるホスト オペレーティング システムで実行する場合。
- コンテナ内(Docker や Kubernetes など)。すべてのコンテナに同じ容量を搭載できますが、推奨されません。
TCP 通信を有効にするには、-tcp-comm-port
を有効なポートに設定します。また、-
tcp-port-range
を有効なポート範囲(3000 ~ 3005)に設定します。PHP エージェントと Java プロキシは、TCP を使用して通信できるようになりました。
Java プロキシは、-
tcp-comm-port
を介してエージェントからの着信接続要求をリッスンします。各エージェントの通信は、次の 2 つの一意のポートを介して行われます。
- レポートポート
- リクエストポート
これらのポートは、エージェントのインストール時またはプロキシの設定時に設定できます。
TCP モードの環境変数
次の表に、TCP モード設定の環境変数を示します。
変数名 | 説明 | 構成に関する備考 |
---|---|---|
|
| これはオプションの変数です。デフォルトでは、 |
|
| この変数は定義する必要があります。 |
| プロキシがエージェントと通信するためにポート(リクエスト/レポート)を割り当てるポート範囲を定義します | この変数は定義する必要があります。 |
| エージェントとプロキシ間の転送をレポートするためのポートを定義します。 | これはオプションの変数です。定義されていない場合、プロキシは定義された範囲内のポートを割り当てます。 |
| エージェントとプロキシ間の要求および設定転送用のポートを定義します。 | これはオプションの変数です。定義されていない場合、プロキシは定義された範囲内のポートを割り当てます。 |
インストールコマンドの例
次に、TCP モードを有効にしてエージェントをインストールするサンプルコマンドを示します。
install.sh -a PHPCust@XC6v2n8m2$543 --tcp-comm-port=3000 --tcp-port-range=3000-3010 controller1.appdynamics.com 8818 myApp myTier myNode
エージェントとプロキシ間の通信を暗号化するための CurveZMQ のセットアップ
デフォルトでは、Java プロキシと PHP エージェント間の通信は暗号化されません。このセクションでは、CurveZMQ を使用してプロキシとエージェント間の通信を暗号化する方法について説明します。CurveZMQ は、ZeroMQ の認証および暗号化プロトコルです。曲線暗号化を有効にするには、エージェントのインストール時に -
curve-enabled
フラグを使用します。次に、CurveZMQ を有効にしてエージェントをインストールするサンプルコマンドを示します。
install.sh -a PHPCust@XC6v2n8m2$543 --tcp-comm-port=3000 —tcp-port-
range=3000-3010 —curve-enabled controller1.appdynamics.com 8818 myApp
個別のコンテナでのプロキシとエージェントの設定
- コンテナにエージェントを展開するには、次のサンプルコマンドを使用します。
./install.sh -a e2e-customer@59b661ac-720f-43ce-9b07-9d3bdf1cdb17 --auto-launch-proxy=0 —tcp-comm-host=PROXY_HOST --tcp-comm- port=3000 --tcp-port-range=3000-3010 --curve-enabled CONTROLLER_HOST_NAME CONTROLLER_PORT APP_NAME TIER_NAME NODE_NAME 8090
CODE - エージェントコンテナ以外のコンテナにプロキシを展開するには、次の手順を実行します。
- プロキシアーティファクトをダウンロードして解凍します。
runProxy.template
ファイルのコピーを作成して、runProxy
に名前を変更します。- 次のコマンドを実行します。
bash /proxy/runProxy /tmp/proxy.communication /tmp/agentLogs -Dappdynamics.proxy.curveenabled=yes -Dappdynamics.proxy.curvesecretfile=/home/appdynamics-php-agent- linux_x64/certs/secret/proxy.key_secret -Dappdynamics.proxy.curvepublicfile=/home/appdynamics-php-agent- linux_x64/certs/public/proxy.key -Dcommtcp=3000 -Dappdynamics.proxy.commtcphost=$(hostname -I) -Dappdynamics.proxy.commportrange=3000-3005 -Dappdynamics.agent.ssl.protocol=TLSv1.2
CODE
エージェントとプロキシが同じネットワークの一部であることを確認して、エージェントとプロキシの通信を許可します。これを実現するには、Docker Compose を使用します。
- Docker Compose を使用している場合は、プロキシホスト値をプロキシコンテナ名として設定できます。
Kubernetes クラスタでの共有プロキシを使用した PHP エージェントの展開
このセクションでは、Kubernetes で共有 Java プロキシを使用して PHP エージェントを展開する方法について説明します。
プロキシポッドの設定
プロキシ用にポッドを設定する際は、次の点に注意してください。
- プロキシとエージェント間の通信のために、プロキシサービスで連続したポート範囲を公開します。
- プロキシサービスの仕様タイプを
ClusterIP
に設定してプロキシポッドを実行します。 - TCP モードでプロキシを実行するには、次の環境変数を設定してください。
変数 | 値 | 必須 |
---|---|---|
APPDYNAMICS_TCP_COMM_PORT | プロキシの TCP ポート( | ○ |
APPDYNAMICS_TCP_COMM_HOST | エージェントが要求を行う TCP ホスト。 ポッドが実行されている IP アドレスに設定することをお勧めします。
CODE
| ○ |
APPDYNAMICS_TCP_PORT_RANGE | プロキシがリクエスト/レポートポートを割り当てるポート範囲を指定します。たとえば、 ポート範囲内に十分な数のポートを指定してください。ポートの総数は、少なくともエージェント数の 2 倍にする必要があります。 | ○ |
APPDYNAMICS_CURVE_ENABLED | CurveZMQ 暗号化を有効にするには、 | オプション |
- PHP エージェントを使用して実行するアプリケーションは、ポッドで実行する必要があります。PHP エージェントポッドをスケールアップまたはスケールダウンできます。
- プロキシは、単一の独立したポッドとして実行されます。サービスを介して PHP エージェントに公開されます。プロキシポッドをスケーリングまたは複製しないでください。
Kubernetes のプロキシ展開仕様の例
##Proxy Deployment
apiVersion: apps/v1
kind: Deployment
metadata:
name: proxy-deployment
spec:
replicas: 1
selector:
matchLabels:
app: proxy
template:
metadata:
labels:
app: proxy
spec:
containers:
- name: proxy
image: appdynamics/php-proxy-x64:latest
env:
- name: APPDYNAMICS_CURVE_ENABLED
value: "true"
- name: APPDYNAMICS_TCP_COMM_PORT
value: "3000"
- name: APPDYNAMICS_TCP_COMM_HOST
valueFrom:
fieldRef:
fieldPath: status.podIP
- name: APPDYNAMICS_TCP_PORT_RANGE
value: "3000-3010"
##Proxy Service
apiVersion: v1
kind: Service
metadata:
name: proxy-service
spec:
selector:
app: proxy
type: ClusterIP
ports:
- protocol: TCP
name: port-1
port: 3000
targetPort: 3000
- protocol: TCP
name: port-2
port: 3001
targetPort: 3001
- protocol: TCP
name: port-3
port: 3002
targetPort: 3002
- protocol: TCP
name: port-4
port: 3003
targetPort: 3003
ポッドにエージェントをインストールするためのサンプルコマンド
./install.sh -a e2e-customer@59b661ac-720f-43ce-9b07-9d3bdf1cdb17 --auto-launch-proxy=0 --tcp-comm-host=proxy-service.default --tcp-comm-port=3000 --tcp-port-range=3000-3010 --curve-enabled CONTROLLER_HOST_NAME CONTROLLER_PORT APP_NAME TIER_NAME NODE_NAME 8090
- Kubernetes を使用している場合は、エージェント インストール コマンドで
tcp comm host = proxy-service.default
パラメータを設定します。proxy-service
はプロキシサービスの名前、.default
はデフォルトの名前空間です。 - 単一のプロキシは、レポートするエージェントのアプリケーション名が同じ場合にのみ、コントローラにデータを送信できます。