server.propertiesファイルのカフカ
`` `Host.name```が起動し、内部IPにバインドされ、外部ネットワークアダプタにアクセスすることはできません。
設定値は、カフカのリスニングポートはすべてのカードに結合し、空です。しかし、外部のネットワークアクセスクライアントが遭遇した `` `java.nio.channels.ClosedChannelException```例外情報は、tcpdumpの分析を使用して、サーバー側は、クライアントマシンを経過したときにどこマシン名カフカの上に発見しました。findLeaderはメタ情報ではなく、IPのマシン名で返されたときにクライアントにブレークポイントがある場所を追跡します。クライアントは、その例外の前に現れたマシン名を解決できません。
server.properties内の別の引数は、この問題を解決するため、もあり advertised.host.name host.nameリターンを構成するために使用されるパラメータ値は、このパラメータは、外部ネットワークIPアドレスに設定されています。
このパラメータはデフォルトで有効にされていない場合、デフォルト値は、この値は、ホスト名が、戻りIPの値と等しくない、私のMac上java.net.InetAddress.getCanonicalHostNameリターンがあるが、この値は、Linux上のホスト名の値です。
外部ネットワークの必要性に対応するIP、ならびにポートは、ポートに加えて変更されます。以下は、位置を、対応するserver.propertiesファイルです。
#ホスト名ブローカーは生産者と消費者にアドバタイズします。設定されていない場合は、使用しています #「host.name」の値が設定されている場合。それ以外の場合は、から返された値を使用します。 #java.net.InetAddress.getCanonicalHostName()。 #advertised.host.name = <ホスト名ルーティング可能なクライアントから>
#ポートは、使用するクライアントのためのZooKeeperに公開します。これが設定されていない場合は、 #それは、ブローカーが結合するのと同じポートを公開します。 #advertised.port = <ポートクライアントがアクセス> |
カフカブローカーが起動したら、それはZKに自分のIPアドレスとポート番号を登録すると、クライアントはIPとポート番号を介して接続されます。
このAWSのIaaS環境では、ホスト名を取得するため、java.net.InetAddress.getCanonicalHostNameコールは、デフォルトはZK登録されているので、これだけネットワーク内で、ホスト名にアクセスすることができます似たIP-172-31-10-199ですネットワーク内のIPは、内部ネットワークのIPにアクセスします。
この時点で、指定された表示する必要が advertised.host.nameを、 advertised.listenersのパラメータは、IP ZKに登録できるネットワークIPの外にあります。
例えば、以下の三つのニーズに配置59.64.11.22 IP対応ブローカは、server.propertiesコンフィギュレーションファイルを大きくすることができます。
新しい設定
advertised.listeners = PLAINTEXT://59.64.11.22:9092 |
なぜ我々はそれを取得しないadvertised.listenersで、あまりにもIPとポート番号を設定するには、3つのパラメータを必要としますか?
その後、見つかった最新バージョン0.10.xのブローカ構成放棄さadvertised.host.nameとのconfigure advertised.listenersそれにadvertised.port 2つのすべての設定項目を。