Meta tags:
Headings (most frequently used words):
まとめ, qute, openshift, masterのセットアップ, jboss, eap, cd, for, テストアプリケーションのデプロイ, jgroupsのdns_ping機能, dnsサーバのセットアップ, originのインストール, nodeのセットアップ, quarkusがビルド時に自動生成するクラス, インストール後の初期セットアップ, hello, world, 繰り返し, each, 条件分岐, if, quarkusでスレッドダンプ, エラーメッセージのカスタマイズ, quarkusとは何か, origin, quarkusのテンプレートエンジン, galleonを使ってwildflyのイメージサイズを小さくする, resteasy, beanvalidationエラーメッセージのカスタマイズ, quarkusのスレッドプール設定, quarkus入門, openshiftでjbossクラスタを構成する仕組み, agetsumaの日記, 9のインストール, 背景, テンプレートエンジン, を実際に試す, galleonを使う, galleonが生まれた背景, openshiftにgalleonで作ったwildflyをデプロイする, resteasyデフォルトの振る舞い, dns_pingの仕組み,
Text of the page (most frequently used words):
#class (78), #wildfly (75), #test (73), eap (67), #openshift (58), quarkus (52), #session (52), jboss (41), #cluster (39), com (38), #ping (38), #name (36), dns (31), java (29), s2i (27), example (26), galleon (26), app (24), import (22), local (21), cloudprofile (20), svc (20), 192 (18), org (18), final (18), json (18), 168 (18), 2019 (18), build (17), none (17), type (17), etc (16), the (16), qute (15), https (15), service (15), クラスタ (14), docker (14), api (14), javax (13), systemctl (13), bin (13), resteasy (13), for (12), ansible (12), jax (12), 読者になる (12), validation (12), customer (12), master (12), tcp (12), mediatype (12), srv (12), 2014 (12), yum (12), template (11), maven (11), public (11), jpajaxrscdijta (11), latest (11), interface (11), core (11), thread (11), enp0s3 (11), dnsmasq (11), 2018 (11), item (10), host (10), image (10), sample (10), git (9), address (9), builder (9), install (9), version (9), hello (9), github (9), get (9), 2015 (9), cloud (9), function (9), path (9), runtime (9), private (8), count (8), profile (8), status (8), k8s (8), node01 (8), and (8), 8888 (8), xml (8), cloudapps (8), n_agetsuma (8), required (8), inject (8), 2013 (8), services (7), server (7), txt (7), cookie (7), basic (7), jpa (7), tools (7), 広告を非表示にする (7), 130 (7), もっと読む (7), コメントを書く (7), sun (7), nio (7), from (7), exception (7), _tcp (7), ago (7), platform (7), port (6), network (6), return (6), vldx2 (6), 2017 (6), fd149e20 (6), string (6), stream (6), pom (6), templates (6), utils (6), dhcp (6), items (6), ssh (6), default (6), selectorimpl (6), list (6), response (6), wiring (5), 8080 (5), clusterip (5), container (5), inflating (5), dependency (5), classes (5), properties (5), create (5), package (5), yml (5), 2012 (5), ソースコード (5), employeeservice_subclass (5), cdi (5), まとめ (5), jboss_home (5), pod (5), centos7 (5), hat (5), preview (5), route (5), debug (5), minutes (5), source (5), current (5), message (5), マルチキャスト (5), curl (5), run (5), true (5), standalone (5), opt (5), red (5), conf (4), templateinstance (4), scope (4), price (4), which (4), only (4), each (4), http (4), bom (4), you (4), add (4), html (4), insecure (4), cli (4), artifactid (4), raw (4), githubusercontent (4), images (4), スクリプト (4), groupid (4), lang (4), persistent (4), epollarraywrapper (4), resteasyviolationexceptionmapper (4), resources (4), ブロッキング (4), employeeresource (4), uber (4), util (4), new (4), this (4), protocol (4), age (4), jfdenise (4), created (4), レプリケーション (4), post (4), errors (4), max (4), all (4), entity (4), config (4), registry (4), enterprise (4), ディレクト (4), unzip (4), net (4), bash (4), apache (4), installed (4), 2016 (4), agetsumaの日記 (4), hostname (4), epel (4), svm (3), linux (3), jdk (3), helloworld (3), produces (3), vim (3), sysconfig (3), notblank (3), 172 (3), scripts (3), oracle (3), jgroups (3), kill (3), employeeresource_bean (3), employeeservice (3), b0cd (3), 4590c759 (3), uuid (3), bootproto (3), root (3), enable (3), 31m (3), 従来の (3), ethernet (3), ifcfg (3), can (3), update (3), restart (3), community (3), node (3), start (3), weeks (3), project (3), chained (3), redhat (3), application_name (3), 通常の (3), agetsu (3), user (3), ice (3), cake (3), chocolate (3), output (3), wildcard (3), cdi1 (3), snapshot (3), imagestream (3), 閉じる (3), universe (3), plugin (3), ワイルドカード (3), expose (3), 5000 (3), title (3), tag (3), creating (3), deploymentconfig (3), 4dc2 (3), origin (3), quarkus入門 (3), dns1 (3), not (3), stack (3), layers (3), clean (3), mvn (3), hosts (3), ipaddr (3), data (3), here (3), domains (3), ready (3), onboot (3), context (3), hostnamectl (3), pool (3), modules (3), threads (3), zip (3), running (3), src (3), prefix (3), main (3), application (3), yes (3), set (3), kind (3), etcd (3), 9f43 (3), target (3), 779201c6593c (3), device (3), arc (3), xmlns (3), command (3), 127 (3), group (3), application_json (3), spec (3), hibernateormprocessor (3), glassfish (3), feature (3), gateway (3), ejb (3), iptables (2), bind (2), resolved (2), packs (2), wide (2), dockerのインストール (2), resource (2), image_stream_namespace (2), wget (2), bridge (2), bytes (2), restarts (2), 必要パッケージのインストール (2), eap72 (2), openjdk11 (2), rhel8 (2), readme (2), channel (2), channels (2), 29m (2), desired (2), property (2), transport (2), プラグイン (2), dns_ping (2), apps (2), reboot (2), completed (2), メンバを見つけています (2), dir (2), _home (2), 122 (2), tags (2), psacct (2), termination (2), license (2), sos (2), kexec (2), jar (2), completion (2), amq (2), jgroupsの (2), mongodb (2), violation (2), undertowbuildstep (2), beanvalidation (2), responsebuilder (2), loggingresourceprocessor (2), provider (2), agroalprocessor (2), collectors (2), deployment (2), isacceptjson (2), datasourceproducer_bean (2), osev3 (2), resteasyviolationexception (2), meta (2), masters (2), nodes (2), accepts (2), creationalcontext (2), spi (2), application_json_type (2), gettype (2), equals (2), getsubtype (2), jsf2 (2), hibernate (2), を追加します (2), value (2), spring (2), コンパイル (2), quarkus0 (2), sleeper (2), sleep (2), native (2), playbook (2), playbooks (2), executor (2), employeeservice_bean (2), generated (2), quarkusのテンプレートエンジン (2), 実装依存 (2), galleonを使ってwildflyのイメージサイズを小さくする (2), beanvalidationエラーメッセージのカスタマイズ (2), narayanajtaproducers_producermethod_transactionsynchronizationregistry_ad29dd72d7aa0c9be8f98e90052c29fc262ea31a_bean (2), jaxrs (2), narayanajtaproducers_producermethod_transactionmanager_9989455b3b53ac81c17ca945c636473b7202fe4e_bean (2), jta (2), dependencies (2), quarkusのスレッドプール設定 (2), requestscopedentitymanagerholder_bean (2), lsample (2), arg0 (2), mysql (2), size (2), nip (2), の12 (2), この記事は (2), will (2), world (2), copy (2), launch (2), minishift (2), repository (2), advent (2), artifacts (2), quay (2), access (2), テストアプリケーションのデプロイ (2), pub (2), done (2), galleon_provision_server (2), postgresql (2), 赤帽エンジニア (2), calendar (2), parameter (2), error (2), constrainttype (2), parameterviolations (2), tid (2), prio (2), location (2), posixjavathreads (2), javathreads (2), workerthread (2), xnio (2), select (2), epollselectorimpl (2), openshift_node_labels (2), region (2), zone (2), linuxepoll (2), posix (2), state (2), 読者をやめる (2), フレームワーク (2), でコードが書ける (2), exposed (2), buildconfig (2), sql (2), double (2), below (2), more (2), line (2), xsi (2), support (2), technology (2), xsd (2), click (2), web (2), disable (2), ipアドレス (2), firewalld (2), one (2), getsnacks (2), include (2), archive (2), 0900 (2), listen (2), head (2), body (2), engine (2), tmp (2), then (2), headless (2), failed (2), found (2), 読者です (2), sed (2), want (2), force (2), サーバ (2), arrays (2), ports (2), release (2), www (2), apiversion (2), repo (2), clone (2), text_html (2), nslookup (2), 999 (2), packages (2), artifact (2), interfaces (2), バージョンを999 (2), snapshotに書き換える (2), 14a2d9 (2), yaml (2), enabled (2), with (2), work (2), 100 (2), デバッグ, していませんが動作しません, バリデーションエラー時にはhttpレスポンスヘッダに, 実装のresteasyの場合, null, クラスをオーバーライドするとメッセージフォーマットのカスタマイズができます, を含むと共に, のように, wildfly17で動作します, もっとシンプルに以下のようなエラーメッセージのリストを返すことを考えます, やquarkusが内蔵する, utf, 実際には改行は含まれません, 見やすいように改行を含めていますが, doctype, media, boolean, charset, shiro, htmlを配置します, コード例は以下の通りです, に以下のようなhello, returnvalueviolations, extends, エラーメッセージのカスタマイズ, resteasyviolationexceptionmapperクラスでは後で拡張できるように, 1では原因は詳しく, 以下はテンプレート部分です, いくつかのメソッドのスコープがprotectedに設定されています, classviolations, シンプルな機能のみを提供しており, override, propertyviolations, fieldviolations, protected, サーバを作成してみます, 例として以下のバリデーションを実行を考えます, 以下のようなフォーマットのメッセージを返します, を生成するプロビジョニングツールです, エラー原因を返すことのみが規定されており, メッセージのフォーマット自体は, 以下の例のように繰り返しやifなどの最低限の機能は満たされています, yen, thorntail, announcement, galleonの目的はコンテナイメージサイズの削減です, jarではなく, リ構成や使い勝手を維持しながらスリム化します, follows, over, galleonは欲しい機能だけを含んだ, インスタンス, 繰り返し, books, bloch, joshua, effective, int, 側のコードは以下の通りです, iterable, ではまだgalleonに対応していませんが, mapのentryset, chef, 今後のバージョンで対応するように検討が行われています, が設定できるようになっています, のitはループ中の現在の要素を示しており, でitemクラスのnameプロパティにアクセスしています, beanvalidationのバリデーションエラー時には, specでは, 各プロパティはバリデーションの種類を示しています, のエンドポイント実装からテンプレートを解決したhtmlを応答したい場合は, queryparam, この記事ではresteasyの場合にどのようにメッセージフォーマットをカスタマイズするか言及します, の拡張子を除いた, resteasyデフォルトの振る舞い, 以降にサンプルを紹介します, に合わせる, 以下のように書きます, reporting, consumes, valid, customerresource, にメッセージが含まれています, 例の場合はメソッドパラメータでバリデーションしているため, 第2引数はテンプレートに適用する値, 第1引数はテンプレートにかかれたキー, specification, 条件分岐, beyond, heapstats, format, content, exact, however, describing, cases, コードの説明はコメントの通りで, シンプルに扱えることがわかります, should, helloresource, implementations, 限定公開記事のため引用できません, で囲まれた部分をテンプレートとして置き換えます, javaone, quteはquarkus向けに新たに開発された, 今年の4月に, daemon, 実際の開発で使うならば欲しいと思った機能が2つありました, 0を触りながら, os_prio, 0x00007f966b09b000, nid, 0x5c03, waiting, condition, 0x00007000112da000, ユーザ会に向けてquarkus0, このスレッドの実態はスレッドダンプを取得すると, として確認できます, スレッドプールの最大数, method, threadsに相当するパラメータは, タスク, quarkusで実行される, が複雑になるほど, として設定します, propertiesにおいて, 中のapplication, でtask, 未設定時のデフォルトは論理プロセッサ数x8, を直接書きたいユーザは多い, プロフィール, スキーマ, 未設定時のデフォルトは1, スレッドプールのアイドルスレッド数, sleeping, 今日は日本, servlet, 後日追記予定, statusのcpus_allowedの値からコア数算出する, クラスを使っているため, この広告は, java8のマイナーバージョンに関わらずcgroupsが反映されます, common, cpu, processorinfo, 11分の記事です, quarkusの実装, cpuset, について紹介します, cpus, デフォルト値が小さい, ではtask, スライドに入りきらなかった, ユーザグループでquarkus入門について話しましたが, 次のページ, timed_waiting, pid, タスクを動かすならばチューニングした方が良いです, 1の時点では公式ドキュメントに言及がないですが, スレッドプールのチューニングはquarkus0, jdbc, o待ちですぐに枯渇します, threadsは論理プロセッサ数, による, 8です, 1では論理プロセッサ数, スライドはこちらです, 今日の記事では, 16ですが, 従来のapサーバと同様にランタイム内部で管理されるスレッドプールにより実行されます, 以外のdbアクセスの選択できること, graal, collect, ちょっとした社内システムにそこまでフロントエンド必要なのかなと思っていま, なアプリではサーバサイドテンプレートでも十分機能するのでは, violationexceptionmapper, buildviolationreportresponse, elk, header, validation_header, getaccept, openjdk, getviolations, map, 近年はフロントエンドは別に作り込まれる方が一般的になってきている一方で, getmessage, もう一つのテンプレートエンジンは, kafka, 1には含まれていません, のnative, imageコマンドによるネイティブビルドに対応したテンプレートエンジンです, quarkusのmasterブランチにマージされましたが, まだ最新のリリース版であるquarkus1, anymatch, tostring, テンプレートエンジン, text_plain, createarraybuilder, createobjectbuilder, echo, tolist, ごめんなさいクライアントサイドも勉強します, エンタープライズ, 最新記事, thymeleafのようなサーバサイドで使えるテンプレートエンジン, 仕様ではbeanvalidationエラー時のメッセージフォーマットは規定されておらず, 独自フォーマットのメッセージを返す, を含み, エラー時にはhttpレスポンスに, resteasyの場合, の継承クラスを作る, アーキテクチャ, メッセージフォーマットのカスタマイズには, このブログについて, chapter, resteasyドキュメント, javaee, clients, ext, が導入され, elastic, dbアクセスについては, quarkus自体の, がvert, xベースになったことにより, スライドでも言及している, パッケージにクラスパスが通るように, reactive, カテゴリー, 注目記事, 元々はノン, なdbアクセスを目的とする機能ですが, がjdbctemplateに似てるのでこれで良いなと, provided, author, cream, このアプリケーションでは, サーバを作る, のコンテナイメージはどうしてもサイズが大きくなります, s2iツール群など含んだ, apサーバと, 940mb, cbc9919e54f5, だけ含んだサイズの小さな, galleonはwildfly16から対応した, 最新のイメージでは940mbと大きなイメージです, pull, が複数起動している場合はディスクサイズをそれなりに消費します, 別バージョンの, しかし, が同一のワーカーノードで起動している場合はdockerによるイメージレイヤの共有が期待できます, 全て最新の同一バージョンの, eap7の場合, 前述のcloud, jmx, jarではない, は従来の, galleonによって使われないサブシステムを削除しても, このため, と同じようにapサーバとしての使い勝手で使える, アプリケーションで使われている機能をデプロイ処理で検知して必要な機能だけロードして余分なmetaspaceを消費しないようにする仕組みが備わっています, thorntailのような, サブシステムをクラスロードするなど, profileの場合, から使わない機能を削ってdockerイメージサイズを小さくする, statelessが付与されたコードがデプロイされてから, よく使う, ヒープメモリのフットプリント削減の効果は手元で計測する限りでは10mb程度です, と比較しても起動直後の, dockerイメージのアプリのレイヤだけ別で, モノリス, メモリ削減にはあまり効果は期待できません, galloenを使った, リポジトリ, quarkus1, に書かれています, テンプレートの使い方などの詳しいドキュメントは, で配布されています, コンテナをデプロイするためのテンプレートやimagestreamは, ブログを報告する, をデプロイする, 0おめでとう, で囲った部分をテンプレートして置換します, quteはquarkusにこれから盛り込まれる予定のネイティブ, に対応したテンプレートエンジンです, に置いたコードでは, バイナリを生成します, openshiftにgalleonで作った, 必要な機能だけ, なapサーバから使わない機能を削ってイメージサイズをなるべく小さくすることがgalleonの目的です, にまとめられていますが, 自体にもコンテナ環境ではあまり使わない機能が含まれています, のバイナリを作るためのプロビジョニングツールです, サーバなど, web管理コンソールやリモート, アーカイブ, 詳細については, galleonにより以下が実現できます, に含める考え方はthorntailでも実現できていましたが, としてもイメージサイズ削減に手を打っています, news, towards, thorntailは今後メジャーバージョンアップせずにメンテナンスモードとなる, quarkusの登場に伴い, galleonで作った小さな, galleonを使う, のgalleonを動かして小さな, copyright, dirは作成した, サーバの出力先です, downloads, galleonによって生成された機能がそぎ落とされた, powered, 自体の動作に必要なサーバのコア機能のみ持つことを示します, logging, bat, jarが含まれていません, mkdir, client, を起動させるinit, サーバの構成を確認すると一見して同じような, 実装に加えて, ダウンロードしたツールを任意の, product, まずは早速galleonで, のバージョンはこの記事を書いている時点で最新の17, 初回実行時は数分かかる場合もあります, layersにはサーバに含める機能を指定するオプションで, を組み立てるため, 経由で必要なサブシステムをダウンロードして, pack, リ構造に見えます, configurations, などのよく使われる, サブシステムを削ることで小サイズ化を実現しています, と同じ構成を保ったまま, jarに必要な機能をまとめるのではなく, galleonはthorntailのように, のos起動時に, shや, コンテナのイメージサイズの削減がgalleonの目的です, を使ったアプリケーションをデプロイしたいので, を削って, 固有の機能, に使われる, jmsサーバ接続やリモート, やremotingサブシステム, galleonによって, 例として, を作ることが考えられます, このブログを書いた時点の最新バージョンは4, finalです, galleonが生まれた背景, galloenのリポジトリ, 実際に使ってみる方がイメージが湧きやすいので, 使い方から紹介します, 欲しい機能だけ持つ, framework, を使ったことがある人なら違和感を感じると思います, galleonは, の中身を見ると, layersに, サーバを生成したい場合は, を含んだ, リに展開します, binに含まれていた, これらの, ユースケース, コミュニティで開発されているツールですが, にはバンドルされておらず, からダウンロードします, に解説があります, guideの, admin, 他にもどんなlayerがあるかは, の修正は既に盛り込まれています, buildconfigによるイメージのビルド時に, のエンドポイントにアクセスすると, テンプレートのパラメータ, 小さいなアプリケーションイメージは568mbと約3分の1となりました, 63gbに対し, イメージのサイズは従来のアプリケーションイメージが1, 568, 436, がgalleonに渡すパラメータで, c449eca1cc04, quickstarts, 6983f22f7f32, 引用するにはまずログインしてください, 月別アーカイブ, ログイン, にサンプルコードが他の機能と同様に用意されるはずです, この例では, 再度お試しください, 試すためにはquarkusのmasterブランチを自分でビルドします, ビルド時に生成される, に書き換えます, quarkusio, mvnw, dskiptests, quteはまだリリースされていないため, テストをスキップするとgraalvmを用意しなくてもopenjdk8でビルド可能です, h2インメモリdbを示す, を実際に試す, 上に上記のコードを置いています, 本日時点はまだないですが, その他のパラメータは前述のreadmeに言及があります, を指定します, 正式版がリリースされているときには, a18f05787add, m2生成されていません, load, batch, 対象の, through, containers, other, balanced, deployed, 120, getter, wildfly17, setter, under, 43b73a0, を使ってインメモリのh2データベースから本情報を取り出しています, success, itemresource, テンプレートを実行しただけではイメージがビルドされるだけなので, 引用をストックできませんでした, 43b73a025880, getall, aslist, 作ったイメージをデプロイします, outside, old, 8778, your, view, commands, executing, 200, 自分でビルドしたquarkusでは, blog, のs2iビルダイメージでは, ただレイヤを重ねてビルダイメージよりも大きくなるだけです, 本体を含んだビルダイメージquay, このためs2iのツール群や, ストック一覧を見る, 2001, xmlschema, 元々のコンテナイメージのレイヤのサイズは小さくならず, 本体やs2iツール群を削って, をビルドしても, 単純にs2iビルド時にgalleonで, 絵にすると以下のようなイメージです, ランタイムイメージにマージしたサイズの小さなアプリケーションイメージを生成するbuildconfigです, リを抜き取って, 生成されたアプリケーションイメージからgalleonで生成した, latestと, から書き換える, にビルダイメージと, の他にも, pluginがあり, これでローカル環境で, のgalleon, でビルドして試せるようになりました, proc, galleonには前述の, 引用をストックしました, 上記については, latestの2種類のコンテナイメージが配布されています, に言及があります, 公式ガイド, のみ含められたランタイムイメージquay, と便利, をインプットに従来と同等のアプリケーションイメージを作成するbuildconfigと, 1つは, bomはローカル上の, において, 自分でビルドしたmasterブランチのquarkus, バージョン999, プロジェクトの作成, imagestreamとtemplateのロード, をアプリケーションで利用するときに少し注意が必要です, で生成したひな型プロジェクトでは, がbomが参照されていますが, hatena, templateによるイメージのビルド, テンプレートwildfly, git_repo, 前述ののビルドではquarkus, git_context_dir, nagetsum, minishiftで実際に試してみます, chown, テンプレートには2つのbuildconfigが含まれています, paths, の内容をランタイムイメージにコピーしています, アプリケーションイメージの, 具体的には以下のようにbuildconfigを定義して, instance, 抜き取る, dockerfile, sourcepath, schemalocation, destinationdir, imagestreamtag, cmd, rwx, chmod, self, undertowarcintegrationbuildstep, 依存せず, ディスカバリ向けのserviceを登録しています, レコードに登録する仕組み, 内部の, serviceに関連づけられたpodのホスト名とserviceが公開しているポート番号を, serviceがデプロイされた場合, ipを持たない, ロードバランシング用のcluster, の機能として, 以下のような, nominated, httpアクセスのためのserviceとは別に, eap64やeap71のイメージにおいても, 向けだけに止まらず, openshiftのテンプレートでは, sessionaffinity, selector, targetport, があります, xmqpc, nodeのセットアップ, icmp_seq, サーバの, はopenshift上の, してみます, ホスト名のようなものが出てくるため, ttl, 41m, time, fqdn, とわかります, はpodの, レコードで取得できた, で確認すると, nodeサーバのネットワーク設定, metadata, 実際にレコードを内容を見てみると想像が付きやすいので, weight, は負荷分散ではなく単純に, 負荷分散の重み付けのために使う情報です, レコードを読み取るクライアントが, priorityとweightは, レコードは以下のような情報を含んでいます, ホスト名, ポート番号, priority, を使っていないため, fedoraproject, noarch, rpm, と同じです, ユニキャストベースの, その後fdとfd_allで定期的にヘルスチェックを行い障害検知を行うのは, ディスカバリにしか, 現時点での実装では重み付け情報は使っていません, checkout, レコードです, もう一度nslookupの例に戻ります, openshift3, 命名規則, レコードが追加されます, 9のダウンロード, 今のような, のserviceを追加すると, の追加によって登録された, レコードのポート番号も現時点での実装では使っていません, 前述のservice, nslookupのクエリ対象である, namespace, プロジェクト名, service名, serviceのprotocol, が使われます, 間通信にはデフォルトで7600ポート, レコードの仕組みを使って, openshift上の任意のノードに, メンバの情報を取得しています, これではセッション, 同じpodにアクセスし続けます, openshiftのrouterはデフォルトでソースipベースのスティッキーセッションが有効化されているため, podのレプリカを2に増やしても, replicas, fhvjs, delete, scale, レプリカ数を2に増やした後, podをdeleteした時点でセッションは失われていたでしょう, がなければ, セッション, httpセッションは継続しています, 別のホストにアクセスしましたが, メンバの探索を行なっています, の仕組みを使って, が動いているかわからないため, 元々アクセスしていたpodを削除してみます, メンバを静的に定義することもしていません, 229, complete, 5b856c7, duration, started, masterと同じパッケージをインストール, triggered, revision, 133, external, replicationcontroller, アプリケーションの動作確認, 毎回同じホスト名が返されます, ではpodのレプリカ数は1で起動するため, アクセスされたホスト名を返しています, アクセスカウンタと共に, テストアプリケーションでは, テンプレートでデプロイすると, テンプレートの中ではstatefulsetを使ってホスト名を固定し, ログインしてnslookupしてみます, へのアクセスを許可する, socket, use_ip_addrs, merge3, rest, ではopenshift側の設定は不要なためシンプルに使えます, が必要ですが, アプリケーションから, urn, を動作させようとすると, openshift上でkube_, サーバに同じラベルを持つpodのリストを問い合わせて, はざっくり言うと, kube_, の仕組み, ここからが今日のタイトルの話です, ここまで長くなりましたが, binding, domain, は飛びません, がデフォルトでstandalone, openshiftのデフォルトでは, preparation, kube_ping, に上書きします, テンプレートを利用するとコンテナ起動時にデフォルトで, に設定されていますが, コンテナイメージとしてはkube_, subsystem, の2種類の機能があります, ディスカバリの実装として, 向けの, jgroupsには, が含まれます, 以下のようにjgroupsサブシステムの設定にopenshift, configuration, 一度メンバの探索ができたら, レコードから, updated, give, specify, than, repeat, eth0, 254636300880053, make, loopback, 1527315221, specified, 105, 103, f83, fe36, 60ff, 20d, _not_, except, use, listening, when, even, binds, systems, tftp, following, above, remember, shown, find, configure, handler, provide, 114, 112, fe80, thekelleys, discards, 後述のansibleによるインストール時に以下のエラーが発生したため, openshift公式ドキュメントの, の通りにインストールすると, diff, トのポート53へのアクセス許可はfirewalldを切って対処, ここではあくまでローカルの実験用環境のため, サーバの起動, stop, dns2はwebアクセス用の, dns1はopenshift用に起動した内部ネットワーク用のdnsmasqサーバ, サーバのネットワーク設定, unzipのインストールを追加している, dns2, masterのセットアップ, masterサーバのネットワーク設定, base, 447080188, too, localnet, addresses, ipv6, sure, any, send, extract, file, usr, gtar, answered, are, these, queries, could, handle, 609040878, some, confの編集, このようにjgroupsは, instllationに必要なパッケージのインストール, enablerepo, pyopenssl, advanced, を構成しています, レコードの参照により, serviceによる, と呼ばれる, が使えない環境のために, openshiftは従来の, 慣れないうちはテンプレートを使うのがおすすめです, お楽しみに, orimanabuさんです, 明日は, task, unarchive, cert, administration, openshiftの最新版をopenshiftで利用するためには前述の通りimagestreamとtemplateの更新をします, と比較してインクリメンタルなモデルでリリースしている, networking, 今回のテンプレート, protocols, は以下にあります, テンプレートを使う方がハマりにくいです, 慣れないと中身で何やっているかわからない不安はありますが, テンプレートでは必要な関連リソースを一緒にデプロイしてくれるため, s2iのように, repos, テンプレート作成に着手した方が近道だと思います, コンテナイメージ形式リリースのバイナリです, まずは既存のテンプレートで慣れてから, プロジェクト固有のテンプレートが必要な場合, serviceのデプロイに思い当たる人はなかなかいないと思います, テンプレートなしでjgroups向けのheadless, をopenshiftにデプロイするときに, おそらく初めて, のため評価検証向けです, 今のところtechnology, tarball, managing, クエリ要求に応答する, 名前解決を行う, route経由でopenshift, openshift用, virtualbox, のブリッジネットワーク上に構成, ゲストマシンのosは全てcentos7, サーバのセットアップ, dnsmasqのインストール, hostsを設定ファイルとして読み込み, が必要であり, dnsmasqは, hostsのの追記, ドメイン, を設定, サーバ機能の無効化, ト待ち受けのネットワークインタフェース, route用の, の設定, sdnネットワーク外からアクセスするために, openshiftの利用に, は使える, を参照, openshiftの場合デフォルトから設定変えると, portal, fatal, changed, false, features, msg, の詳細は, サーバは必須, kubernetes, pods, 9のインストール, 9のセットアップ手順メモ, 前提条件は以下の通り, が解決できない, routerの, hostsに書くのみでは, 1m53s, edge, availableprocessor, datasourceproducer_clientproxy, default_componentsprovider, setup, runtimebeanproducers, runtimebean, lifecycleeventrunner_bean, activaterequestcontextinterceptor_bean, datasourceproducer_producermethod_createdefaultdatasource_7c487e3ef869f878aa871e917c94f4d26d5d5c56_bean, deploy_cluster, arcannotationprocessor, datasourceproducer, openshiftインストールの実行, agroal, resourcereferenceprovider, componentsprovider, inf, tree, steps, configbuildstep, スライド中で言及している以下のようなコードの, defaultentitymanagerproducer_producerfield_entitymanager_bean, narayanajtaproducers_producermethod_transactionsynchronizationregistry_ad29dd72d7aa0c9be8f98e90052c29fc262ea31a_clientproxy, narayanajtaproducers_producermethod_transactionmanager_9989455b3b53ac81c17ca945c636473b7202fe4e_clientproxy, narayanajtaproducers_bean, narayana, transactionentitymanagers_bean, requestscopedentitymanagerholder_clientproxy, jpaconfig_bean, defaultentitymanagerproducer_bean, lifecycleeventsbuildstep, panacheentity, panache, orm, installing, threadpoolsetup, runtimebeanprocessor, resteasyscanningprocessor, narayanajtaprocessor, injectの解決の場合, children, transactionalinterceptormandatory_bean, quarkusでスレッドダンプ, バイトコード, と比較して高速に起動しています, jarでも従来のthorntail, graalvmによってネイティブバイナリを生成しなくても, 事前に可能な処理はビルド時に実行するため, 生成で行うのではなく, これらのクラスをデプロイしてから動的, が投げられるとhotspotjvmと異なりプロセスが終了します, memory_availability, sigquit, imageコマンドで生成された実行バイナリでは, editionのnative, graalvm, signalhandler, misc, を使って実装しています, 内部的には, javap, openshift_disable_check, に値を設定するクラスファイルが自動生成されている様子が確認できます, putfield命令でシンプルにフィールド名, にインジェクション実装が含まれており, ljavax, field, putfield, openshift_master_default_subdomain, checkcast, aload_3, acc_public, flags, descriptor, vars, ansible_ssh_user, openshift_deployment_type, interceptor, transactionalinterceptornever_bean, quarkusではシグナルハンドラを独自に実装しており, ここからは, microprofile, とにかく起動が高速な, は手間が掛かると言われる課題を解決しています, goのようなシングルバイナリによる起動の方が便利で, は起動が遅い, 当日話そうと思っていたけど忘れていた内容をまとめます, スライドに入らなかった内容や, 続きについてはスライドを参照してください, スライド中でも言及していますが, agetsuma, norito, quarkusがビルド時に自動生成するクラス, インストール後の初期セットアップ, ランタイム自体のクラスファイルが生成されている様子がわかります, だけでなく, アプリケーションのパッケージ, ベースの, graalvmのnative, jarの中に含めるような動きをします, 勉強会, 環境の場合はコア数算出にruntime, 8になる, 絞られたcpu数, コンテナレイヤで論理プロセッサ数を絞っている場合は, dockerの, japan, imageコマンドによってネイティブ, users, 話そうと思っていたけれどもスライドに入らなかったことをブログで補足してみます, について紹介しました, quarkusとは何か, crud, アプリケーションが起動します, で構成される, すると100ミリを切るスピードで, のサンプルアプリケーションの場合, にquarkusがビルド時にクラスファイルを展開して, transactionalinterceptornotsupported_bean, runtimeconfig, persistencecontext_shared_annotationliteral, persistence, produces_shared_annotationliteral, activaterequestcontext_shared_annotationliteral, control, runtimedefaultconfigsource, runtimeconfigroot, buildtimeconfigroot, transactional_shared_annotationliteral, buildtimeconfig, generatedmain, autofeature, applicationimpl1, runner, transactionalinterceptorsupports_bean, transactionalinterceptorrequiresnew_bean, transactionalinterceptorrequired_bean, transaction, employeeservice_clientproxy, すると, startupevent17, build3, configureruntimeproperties6, build10, validateconfigproperties11, build8, build9, startpersistenceunits14, setuploggingruntimeinit5, prerequisites, setuploggingstaticinit1, build4, setupinjection12, build2, createexecutor7, integraterequestcontext13, boot16, build15, 3を実行プロセスに投げるとコンソールにスレッドダンプを出力します, accept, redirect, replace, 4時点では, に登録します, cd向けの最新のimagestreamとtemplateをプロジェクト名, はじめに, ログイン時の対話型パスワード入力の抑止, masterサーバ上で以下を実行する, originのインストール, recovery, cd向けのimagestreamとtemplateの登録, party, third, sso, テンプレートによるアプリケーションのデプロイ, テスト用のアプリケーションをデプロイします, 14です, openshiftの環境があることを前提に, テンプレート, が入っているので, 類でstandalone, に含まれる, コンテナ起動時に, であり, デフォルトのプロファイルは, を見てみてください, との差分については, イメージには, テストアプリケーションのデプロイをします, 手元のdockerで起動してイメージの中身を確認できます, openshiftがなくても, exec, tech, id_rsa, の動作確認用アプリです, 簡単なセッション, にある, を使ってセッション, source_repository_url, で色々置換して設定を作成する仕組みになっています, ビルドしたwarファイルを, openshiftのように, にpush, openshiftの内部, アプリケーションイメージを作成し, に含めた, deployments, openshiftイメージの, deploymentconfigの設定に沿ってアプリケーションイメージをpodとして起動, のようなビルドツールが入っているコンテナイメージを, アプリケーションイメージのビルドが完了した後, テンプレートによって展開されます, アプリケーションの動作に必要なリリースを個別に設定する必要はなく, serviceやrouteなど, 以下のリソースが展開されます, アプリケーションイメージのpod起動が完了すると, 以下のコマンドで確認してください, テンプレートの中身やパラメータの一覧を確認したい場合は, のランタイムと, openshiftではbuilder, source_repository_ref, cloneして, context_dir, 以下のような処理が行われます, テンプレートを実行すると, を利用してwarファイルをビルド, openshiftイメージに入っている, を転送した上で, openshiftイメージに, をgit, imageと呼んでいて, レジストリ, 色々なbuilder, imageと呼んでいます, podとして起動するイメージをapplication, imageにビルド済みのwarファイルを追加して, 一方でbuilder, が公開されています, catalogでは, と異なり, 0x7f6cb77e9700, editionでは現状ヒープダンプを取得することはできません, hostsの設定, dump, keygen, 915z, 21t14, graalvmレイヤ, 無償で利用可能なgraalvm, primary, で実現されています, editionにより, ヒープダンプはgraalvm, jakarta, ぜひ試してみるのはいかがでしょうか, quarkusのような新しい試みが行われています, で実装したり, microprofile仕様の一部を, runnable, headers, 473, 326, 269, 101, 532, 193, epoll_wait, pthreadstartroutine, threadstartroutine, lockanddoselect, disk_availability, doselect, poll, epollwait, infra, eeへの移管に伴い標準仕様の観点では変化がゆっくりになっていましたが, 系コミュニティ由来との製品としては, zip版はリリースされておらず, のバイナリです, がリリースされるモデルとなっています, 従来の同様にフルサポートされる, 4つのリリースを組み合わせて, cdの3, 新機能を先行して試す検証用を目的としています, 今後導入される予定の, 今のところはtechnology, openshift環境向けの, ディスカバリの仕組み, 4ヶ月単位でリリースされている, 2018年4月から3, openshiftとは, delivery, continuous, catalog, コンテナイメージをダウンロードする方式のみ提供されています, を通じて, cdってなんぞやから, について順を追って紹介します, 高速起動の, 4分の記事です, quarkusはmicroprofileベースの, openshiftでjbossクラスタを構成する仕組み, 自由に勉強メモを書いてみます, calendarなので, 自由なadvent, のサポートエンジニアをしています, が使えないネットワークの方が多いです, catalogで公開されているopenshift向けの, の環境が一般的になると, を使ってきましたが, メンバの探索に従来, のようなapサーバは, を組んでいるかメモします, がどのように, コンテナイメージ, 90日以上更新していないブログに表示しています,
Text of the page (random words):
sample quarkus jpajaxrscdijta path public class employeeresource inject private employeeservice service wiring classes sample quarkus jpajaxrscdijta employeeresource_bean class にインジェクション実装が含まれており putfield命令でシンプルにフィールド名 service に値を設定するクラスファイルが自動生成されている様子が確認できます javap v wiring classes sample quarkus jpajaxrscdijta employeeresource_bean class public sample quarkus jpajaxrscdijta employeeresource create javax enterprise context spi creationalcontext descriptor ljavax enterprise context spi creationalcontext lsample quarkus jpajaxrscdijta employeeresource flags acc_public 30 aload_3 31 checkcast 57 class sample quarkus jpajaxrscdijta employeeservice 34 putfield 61 field sample quarkus jpajaxrscdijta employeeresource service lsample quarkus jpajaxrscdijta employeeservice これらのクラスをデプロイしてから動的 バイトコード 生成で行うのではなく 事前に可能な処理はビルド時に実行するため graalvmによってネイティブバイナリを生成しなくても java jarでも従来のthorntail wildfly と比較して高速に起動しています quarkusでスレッドダンプ graalvm community editionのnative imageコマンドで生成された実行バイナリでは kill 3 sigquit が投げられるとhotspotjvmと異なりプロセスが終了します quarkusではシグナルハンドラを独自に実装しており kill 3を実行プロセスに投げるとコンソールにスレッドダンプを出力します 内部的には sun misc signalhandler を使って実装しています 2019 05 21t14 22 58 915z thread dump follows xnio 1 accept 22 prio 5 tid 0x7f6cb77e9700 java lang thread state runnable at com oracle svm core posix headers linux linuxepoll epoll_wait linuxepoll java at sun nio ch epollarraywrapper epollwait epollarraywrapper java 326 at sun nio ch epollarraywrapper poll epollarraywrapper java 269 at sun nio ch epollselectorimpl doselect epollselectorimpl java 93 at sun nio ch selectorimpl lockanddoselect selectorimpl java 86 at sun nio ch selectorimpl select selectorimpl java 97 at sun nio ch selectorimpl select selectorimpl java 101 at org xnio nio workerthread run workerthread java 532 at com oracle svm core thread javathreads threadstartroutine javathreads java 473 at com oracle svm core posix thread posixjavathreads pthreadstartroutine posixjavathreads java 193 ヒープダンプはgraalvm enterprise editionにより graalvmレイヤ で実現されています 無償で利用可能なgraalvm community editionでは現状ヒープダンプを取得することはできません まとめ quarkusはmicroprofileベースの api でコードが書ける 高速起動の フレームワーク です jboss 系コミュニティ由来との製品としては java ee から jakarta eeへの移管に伴い標準仕様の観点では変化がゆっくりになっていましたが microprofile仕様の一部を wildfly で実装したり quarkusのような新しい試みが行われています ぜひ試してみるのはいかがでしょうか n_agetsuma 2019 05 22 20 27 読者になる 広告を非表示にする もっと読む コメントを書く 2018 12 04 openshiftでjbossクラスタを構成する仕組み jboss openshift この記事は 赤帽エンジニア advent calendar 2018 の12 4分の記事です red hat で jboss eap のサポートエンジニアをしています 自由なadvent calendarなので 自由に勉強メモを書いてみます jboss のようなapサーバは クラスタ メンバの探索に従来 マルチキャスト を使ってきましたが openshift 1 や k8s の環境が一般的になると マルチキャスト が使えないネットワークの方が多いです red hat container catalogで公開されているopenshift向けの jboss コンテナイメージ jboss eap cd for openshift がどのように クラスタ を組んでいるかメモします eap cdってなんぞやから テストアプリケーションのデプロイ クラスタ ディスカバリの仕組み dns _ ping について順を追って紹介します jboss eap cd for openshift jboss eap continuous delivery for openshiftとは 2018年4月から3 4ヶ月単位でリリースされている openshift環境向けの eap のバイナリです 今のところはtechnology preview 2 で 今後導入される予定の eap 新機能を先行して試す検証用を目的としています eap cdの3 4つのリリースを組み合わせて 従来の同様にフルサポートされる eap がリリースされるモデルとなっています 従来の eap と異なり zip版はリリースされておらず red hat container catalog を通じて コンテナイメージをダウンロードする方式のみ提供されています デフォルトのプロファイルは standalone openshift xml であり コンテナ起動時に opt eap bin launch に含まれる スクリプト 類でstandalone openshift xml を sed で色々置換して設定を作成する仕組みになっています openshiftがなくても 手元のdockerで起動してイメージの中身を確認できます イメージには bash が入っているので 通常の eap との差分については opt eap を見てみてください docker run name eap cd p 8080 8080 registry access redhat com jboss eap 7 tech preview eap cd openshift 14 0 4 docker exec it eap cd bin bash cd opt eap テストアプリケーションのデプロイ openshiftの環境があることを前提に テストアプリケーションのデプロイをします eap debug session test at master n agetsu eap debug github にある 簡単なセッション レプリケーション の動作確認用アプリです eap cd向けのimagestreamとtemplateの登録 はじめに eap cd向けの最新のimagestreamとtemplateをプロジェクト名 openshift に登録します 12 4時点では eap cd 14です oc project openshift for resource in eap cd image stream json eap cd amq persistent s2i json eap cd amq s2i json eap cd basic s2i json eap cd https s2i json eap cd mongodb persistent s2i json eap cd mongodb s2i json eap cd mysql persistent s2i json eap cd mysql s2i json eap cd postgresql persistent s2i json eap cd postgresql s2i json eap cd sso s2i json eap cd third party db s2i json eap cd tx recovery s2i json do oc replace force f https raw githubusercontent com jboss container images jboss eap 7 openshift image eap cd templates resource done テンプレートによるアプリケーションのデプロイ テンプレート eap cd basic s2i を使ってセッション レプリケーション テスト用のアプリケーションをデプロイします oc new app template eap cd basic s2i p image_stream_namespace openshift p source_repository_url https github com n agetsu eap debug p source_repository_ref master p context_dir session test p application_name session test テンプレートを実行すると 以下のような処理が行われます https github com n agetsu eap debug をgit cloneして eap cd openshiftイメージに ソースコード を転送した上で eap cd openshiftイメージに入っている maven を利用してwarファイルをビルド ビルドしたwarファイルを eap cd openshiftイメージの opt eap standalone deployments に含めた アプリケーションイメージを作成し openshiftの内部 レジストリ にpush eap cd openshiftのように eap のランタイムと maven のようなビルドツールが入っているコンテナイメージを openshiftではbuilder imageと呼んでいて red hat container catalogでは 色々なbuilder image が公開されています 一方でbuilder imageにビルド済みのwarファイルを追加して podとして起動するイメージをapplication imageと呼んでいます アプリケーションイメージのビルドが完了した後 deploymentconfigの設定に沿ってアプリケーションイメージをpodとして起動 アプリケーションイメージのpod起動が完了すると 以下のリソースが展開されます serviceやrouteなど アプリケーションの動作に必要なリリースを個別に設定する必要はなく テンプレートによって展開されます oc get all name ready status restarts age pod session test 1 build 0 1 completed 0 31m pod session test 1 vldx2 1 1 running 0 29m name desired current ready age replicationcontroller session test 1 1 1 1 29m name type cluster ip external ip port s age service session test clusterip 172 30 133 229 none 8080 tcp 31m service session test ping clusterip none none 8888 tcp 31m name revision desired current triggered by deploymentconfig apps openshift io session test 1 1 1 config image session test latest name type from latest buildconfig build openshift io session test source git master 1 name type from status started duration build build openshift io session test 1 source git 5b856c7 complete 31 minutes ago 1m53s name docker repo tags updated imagestream image openshift io session test docker registry default svc 5000 cluster test session test latest 29 minutes ago name host port path services port termination wildcard route route openshift io session test session test cluster test cloudapps example com session test all edge redirect none テンプレートの中身やパラメータの一覧を確認したい場合は 以下のコマンドで確認してください sh oc get template eap cd basic s2i o yaml n openshift アプリケーションの動作確認 テストアプリケーションでは アクセスカウンタと共に アクセスされたホスト名を返しています eap cd basic s2i ではpodのレプリカ数は1で起動するため 毎回同じホスト名が返されます curl insecure c cookie txt https session test cluster test cloudapps example com session test count count 1 host session test 1 vldx2 curl insecure b cookie txt https session test cluster test cloudapps example com session test count count 2 host session test 1 vldx2 curl insecure b cookie txt https session test cluster test cloudapps example com session test count count 3 host session test 1 vldx2 podのレプリカを2に増やしても openshiftのrouterはデフォルトでソースipベースのスティッキーセッションが有効化されているため 同じpodにアクセスし続けます これではセッション レプリケーション が動いているかわからないため レプリカ数を2に増やした後 元々アクセスしていたpodを削除してみます oc scale dc session test replicas 2 oc delete pod session test 1 vldx2 curl insecure b cookie txt https session test cluster test cloudapps example com session test count count 4 host session test 1 fhvjs 別のホストにアクセスしましたが httpセッションは継続しています セッション レプリケーション がなければ podをdeleteした時点でセッションは失われていたでしょう openshiftのデフォルトでは マルチキャスト は飛びません テンプレートの中ではstatefulsetを使ってホスト名を固定し クラスタ メンバを静的に定義することもしていません テンプレートでデプロイすると jgroupsの dns_ping の仕組みを使って クラスタ メンバの探索を行なっています jgroupsの dns _ ping 機能 jgroupsには k8s 向けの クラスタ ディスカバリの実装として kube_ping と dns _ ping の2種類の機能があります コンテナイメージとしてはkube_ ping がデフォルトでstandalone openshift xml に設定されていますが テンプレートを利用するとコンテナ起動時にデフォルトで dns _ ping に上書きします opt eap standalone configuration standalone openshift xml には 以下のようにjgroupsサブシステムの設定にopenshift dns _ ping が含まれます subsystem xmlns urn jboss domain jgroups 6 0 channels default ee channel name ee stack tcp channels stack name tcp transport type tcp socket binding jgroups tcp property name use_ip_addrs true property transport protocol type openshift dns_ping protocol protocol type merge3 kube_ ping はざっくり言うと k8s の api サーバに同じラベルを持つpodのリストを問い合わせて クラスタ メンバを見つけています openshift上でkube_ ping を動作させようとすると アプリケーションから k8s の rest api へのアクセスを許可する 設定 が必要ですが dns _ ping ではopenshift側の設定は不要なためシンプルに使えます dns _ ping の仕組み ここまで長くなりましたが ここからが今日のタイトルの話です dns _ ping はopenshift上の dns サーバの srv レコードの仕組みを使って クラスタ メンバを見つけています 実際にレコードを内容を見てみると想像が付きやすいので openshift上の任意のノードに ssh ログインしてnslookupしてみます nslookup type srv _tcp session test ping cluster test svc cluster local server 192 168 122 2 address 192 168 122 2 53 _tcp session test ping cluster test svc cluster local service 10 50 8888 fd149e20 session test ping cluster test svc cluster local _tcp session test ping cluster test svc cluster local service 10 50 8888 14a2d9 session test ping cluster test svc cluster local ホスト名のようなものが出てくるため ping してみます ping fd149e20 session test ping cluster test svc cluster local ping fd149e20 session test ping cluster test svc cluster local 10 130 0 11 56 84 bytes of data 64 bytes from 10 130 0 11 10 130 0 11 icmp_seq 1 ttl 64 time 1 51 ms oc get pod o wide で確認すると srv レコードで取得できた fqdn fd149e20 session test ping cluster test svc cluster local はpodの ipアドレス 10 130 0 11 とわかります oc get pod o wide name ready status restarts age ip node nominated node session test 1 build 0 1 completed 0 1h 10 130 0 9 node01 openshift example com none session test 1 vldx2 1 1 running 0 1h 10 130 0 11 node01 openshift example com none session test 1 xmqpc 1 1 running 0 41m 10 130 0 12 node01 openshift example com none k8s の機能として ロードバランシング用のcluster ipを持たない clusterip none headless serviceがデプロイされた場合 serviceに関連づけられたpodのホスト名とserviceが公開しているポート番号を k8s 内部の dns の srv レコードに登録する仕組み 3 があります openshiftのテンプレートでは eap cd eap cd basic s2i 向けだけに止まらず eap64やeap71のイメージにおいても httpアクセスのためのserviceとは別に 以下のような クラスタ ディスカバリ向けのserviceを登録しています oc get svc session test ping o yaml apiversion v1 kind service metadata spec clusterip none ports name ping port 8888 protocol tcp targetport 8888 selector deploymentconfig session test sessionaffinity none type clusterip もう一度nslookupの例に戻ります nslookup type srv _tcp session test ping cluster test svc cluster local _tcp session test ping cluster test svc cluster local service 10 50 8888 fd149e20 session test ping cluster test svc cluster local _tcp session test ping cluster test svc cluster local service 10 50 8888 14a2d9 session test ping cluster test svc cluster local nslookupのクエリ対象である _tcp session test ping cluster test svc cluster local は 前述のservice session test ping の追加によって登録された dns レコードです k8s のserviceを追加すると 今のような 命名規則 で srv レコードが追加されます serviceのprotocol service名 プロジェクト名 namespace svc cluster local srv レコードは以下のような情報を含んでいます priorityとweightは srv レコードを読み取るクライアントが 負荷分散の重み付けのために使う情報です dns _ ping は負荷分散ではなく単純に クラスタ ディスカバリにしか srv を使っていないため 現時点での実装では重み付け情報は使っていません srv レコードのポート番号も現時点での実装では使っていません クラスタ 間通信にはデフォルトで7600ポート tcp が使われます service 10 50 8888 fd149e20 session test ping cluster test svc cluster local priority weight ポート番号 ホスト名 このようにjgroupsは srv レコードから クラスタ メンバの情報を取得しています 一度メンバの探索ができたら その後fdとfd_allで定期的にヘルスチェックを行い障害検知を行うのは 従来の tcp ユニキャストベースの クラスタ と同じです この dns _ ping の ソースコード は以下にあります github jboss openshift openshift ping jgroups ping protocols for openshift 今回のテンプレート eap cd basic s2iのように テンプレートでは必要な関連リソースを一緒にデプロイしてくれるため 慣れないと中身で何やっているかわからない不安はありますが テンプレートを使う方がハマりにくいです おそらく初めて eap をopenshiftにデプロイするときに テンプレートなしでjgroups向けのheadless serviceのデプロイに思い当たる人はなかなかいないと思います プロジェクト固有のテンプレートが必要な場合 まずは既存のテンプレートで慣れてから テンプレート作成に着手した方が近道だと思います まとめ jboss eap cd for openshiftは従来の eap と比較してインクリメンタルなモデルでリリースしている コンテナイメージ形式リリースのバイナリです 今のところtechnology preview のため評価検証向けです jboss eap cd for openshiftの最新版をopenshiftで利用するためには前述の通りimagestreamとtemplateの更新をします マルチキャスト が使えない環境のために dns _ ping と呼ばれる headless serviceによる srv レコードの参照により クラスタ を構成しています 慣れないうちはテンプレートを使うのがおすすめです 明日は orimanabuさんです お楽しみに 1 openshiftの場合デフォルトから設定変えると マルチキャスト は使える managing networking cluster administration openshift container platform 3 11 2 technology preview の詳細は technology preview features support scope red hat customer portal を参照 3 dns for services and pods kubernetes n_agetsuma 2018 12 04 00 00 読者になる 広告を非表示にする もっと読む コメントを書く 2018 06 10 openshift origin 3 9のインストール openshift openshift origin 3 9のセットアップ手順メモ 前提条件は以下の通り openshift用 dns サーバ dnsmasq openshift master 1台 node 1台 route経由でopenshift sdnネットワーク外からアクセスするために ワイルドカード dns が必要であり openshiftの利用に dns サーバは必須 etc hostsに書くのみでは ワイルドカード dns cloudapps example com 192 168 11 11 routerの ipアドレス が解決できない virtualbox のブリッジネットワーク上に構成 ゲストマシンのosは全てcentos7 dns サーバのセットアップ dnsmasqのインストール yum install y dnsmasq etc hostsのの追記 dnsmasqは etc hostsを設定ファイルとして読み込み 名前解決を行う 192 168 11 10 dns dns openshift example com 192 168 11 11 master master openshift example com 192 168 11 12 node01 node01 openshift example com etc dnsmasq confの編集 dns クエリ要求に応答する ドメイン の設定 local route用の ワイルドカード dns address dns リク エス ト待ち受けのネットワークインタフェース interface dhcp サーバ機能の無効化 no dhcp interface を設定 diff u etc dnsmasq conf org etc dnsmasq conf etc dnsmasq conf org 2018 05 26 12 08 03 447080188 0900 etc dnsmasq conf 2018 05 26 15 02 48 609040878 0900 72 11 72 13 add local only domains here queries in these domains are answered from etc hosts or dhcp only local localnet local openshift example com add domains which you want to force to an ip address here the example below send any host in double click net to a local web server address double click net 127 0 0 1 address cloudapps example com 192 168 11 11 address and server work with ipv6 addresses too address www thekelleys org uk fe80 20d 60ff fe36 f83 103 7 105 7 specified interfaces and the loopback give the name of the interface eg eth0 here repeat the line for more than one interface interface interface enp0s3 or you can specify which interface _not_ to listen on except interface or which to listen on by address remember to include 127 0 0 1 if 112 7 114 7 if you want dnsmasq to provide only dns service on an interface configure it as shown above and then use the following line to disable dhcp and tftp on it no dhcp interface no dhcp interface enp0s3 on systems which support it dnsmasq binds the wildcard address even when it is listening on only some interfaces it then discards dns サーバの起動 ここではあくまでローカルの実験用環境のため dns リク エス トのポート53へのアクセス許可はfirewalldを切って対処 systemctl stop firewalld systemctl disable firewalld systemctl enable dnsmasq systemctl start dnsmasq dns サーバのネットワーク設定 dns1はopenshift用に起動した内部ネットワーク用のdnsmasqサーバ dns2はwebアクセス用の dns サーバ vim etc sysconfig network scripts ifcfg enp0s3 type ethernet bootproto none name enp0s3 uuid 4590c759 b0cd 4dc2 9f43 779201c6593c device enp0s3 onboot yes ipaddr 192 168 11 10 prefix 24 gateway 192 168 1 1 dns1 127 0 0 1 dns2 192 168 11 1 hostnamectl set hostname dns openshift example com systemctl restart network masterのセットアップ masterサーバのネットワーク設定 vim etc sysconfig network scripts ifcfg enp0s3 type ethernet bootpr...
|