サクサク読めて、アプリ限定の機能も多数!
トップへ戻る
CES 2025
nekop.hatenablog.com
更新: Red Hat Enterprise Linux 7.6でOpenJDK 11が追加されました。現在のサポート期間は2024/10までです。 【JDK 11 リリース直前】各ベンダーのJDKリリースモデル特集!というイベントがあってRed Hatさんもどうですか、ってお誘いが来たんですが予定が入っており参加できなかったのでエントリを書いておきます。 Red Hat Enterprise Linux (RHEL)には商用サポートされるOpenJDKパッケージが含まれています。RHELのサブスクリプション費用に含まれており、OpenJDKのサポートには追加の費用はかかりません。yum install java-1.8.0-openjdkのようにパッケージをインストールすれば使えます。 OpenJDKのサポート期間についてはOracle社の影響が大きいという側面があり、RHELのサポート
いま子供が6才と4才と1才なんだけど、幼児はショッピングモールなどの人混みやちょっと大きい公園に行ったりすると、大人ができる限り気を付けていてもちょくちょく居なくなってしまう。最近近隣で知り合いの迷子事例もいくつかあり、これは気をつけるというレベルでどうにかできる問題ではなさそうなので、技術的なアプローチをとってみることにした。 キャリアが提供しているGPSとSIM付きのキッズケータイが恐らく一番良いのだろうけど、幼児にはオーバースペックだ。ということでとりあえず一番ポピュラーなBluetooth trackerのTile Mateを持たせてみた。いわゆる忘れ物防止タグ。 Tileを持たせてみる、とはいっても幼児は基本的にモノをすぐ失くしてしまうので、生で持たせるのは問題外だ。カバンやケータイは動くのに邪魔になる大きさなので遊ぶのに外してしまう可能性がある。もっとぴたっと身につけるもの、腕
OpenShift Origin(OKD)に、Node.jsアプリケーションをデプロイしていろいろ試すというエントリで「コンテナに引数を設定してみる」でargsを利用しているところで「ですがまあ、これは不正解な気がします。」と書いていてソース方面を見にいくという方法を取っていますが、それをOpenShift上できちんと裏付け調査する方法について書いておきます。 アプリケーションは以下のサンプルを利用しています。手元の環境ではOCP 3.9を利用していますがokd 3.10でも一緒です。 oc new-app https://github.com/sclorg/nodejs-ex 現在のコンテナで何が実行されるかはコンテナイメージメタデータのEntrypointとCmdを見る必要があります。コンテナイメージメタデータはImageStreamに入っていてImageStreamTagというvir
Kubernetes/OpenShiftのバージョンアップをどのようにするか、およびクラスタをどのように分けるかという問題はk8s関連のmeetupでよく出る話題です。昨日のレッドハット on Cloud Dayでも出たので、現時点での自分が知っている情報や考えを書いておきます。 現時点で自分が一番しっくりくるそれなりな規模の構成はdev, testing, staging, prodの4種類を2クラスタずつ用意、8クラスタの構成です。規模によってはtesting, stagingは一つにしてしまってもいいと思います。 各ステージのクラスタ、たとえばprod1, prod2はBlue-green deploymentのような形で利用します。たとえばprod1はk8s 1.7, prod2は一つ新しいk8s 1.8となっていて、新規のデプロイは全てバージョンの新しいほうであるprod2に行い
Container SIG Meet-up 2018 SummerでKubernetes Service, Ingress and OpenShift Routerというお題でお話しました。 資料は以下に置いています。 slide.com: https://redhat.slides.com/tkimura/k8s-service-ingress/?token=cenh3zy- PDF: https://drive.google.com/file/d/1ZuJiUY2MppzzTLjHRMF3L93-Emd5Yh5V/view slide.comはRed Hatのコーポレートアカウントを使っているのですが、設定が変わったようでpublicの設定ができないようになっていて、token付きのexternalのURL共有でなんか微妙な感じに。slide.comはプレゼンテーション用に画像でインポ
よく聞かれるトピックでブログに書いてたと思ってたんだけど実は書いてなかったようだ。Amazon EBSとかGCEPersistentDiskとかAzureDiskとかGluster Block Storageとかを利用するReadWriteOnceのvolumeのお話。 https://kubernetes.io/docs/concepts/storage/persistent-volumes/#access-modes access modeがReadWriteOnceというvolumeはいわゆるブロックデバイスタイプのvolumeであり、複数のホストから同時に同一のvolumeを利用することはできない(もし実際に複数ホストから同時に書き込まれるとデータが壊れる)。複数のホストから同時に利用できないので、ReplicaSetでスケールさせた場合にpodを複数ホストに分散させることはできな
OpenShift 全部俺 Advent Calendar 2017 最初はどのように指定したらいいかわかりづらいという質問がよくあるKubernetesのResource requestとlimitです。 https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/ Podにはこのような定義でResource request, limit (リソース要求、制限)を記述します。 resources: requests: cpu: 100m memory: 64Mi limits: memory: 64Mi CPUもメモリもrequestsを記述しないと、CPUはゼロ割り当てでまったく動かなくても構わない、メモリについてはいつメモリ不足で終了されても構わない、という意味になります。そ
OpenShift 全部俺 Advent Calendar 2017 OpenShift上で動作するコンテナにはOpenShift側で採番されたUIDが割り当てられて、そのUIDで動作します。そのため、rootや特定のUIDでファイルにアクセスしたりすることを期待しているコンテナは動作しません。 とはいえ、DockerfileでUSER指定されているふつうのコンテナを動かしたいときもあります。そんなときにはSCCのnonrootを利用します。 https://docs.openshift.org/3.11/admin_guide/manage_scc.html このOpenShiftのSCC (Security Context Constraints)はKubernetesのPSP (Pod Security Policies)のベースとなっています。何度見てもプレイステーションポータブル
OpenShift 全部俺 Advent Calendar 2017 OpenShiftにはKubernetesに無いImageStreamというオブジェクトがあります。ImageStreamは内部的にタグに対応するDockerレジストリを管理し、それに追加で機能を提供します。ImageStreamは大きく以下の三つの機能を提供しています。 Dockerレジストリのタグにpushされたイメージのバージョン履歴(Stream)を保持する機能 実際にはImageStreamのタグは「Dockerレジストリのタグ」だけではなく任意のコンテナイメージ履歴をトラックできる、後述のイメージプロモーションなど Dockerレジストリにpushなど、ImageStreamのタグが更新されたら自動的にアクションを起動できるImageChange更新トリガーの提供 OpenShift内部レジストリとの連携、イ
OpenShift 全部俺 Advent Calendar 2017 OpenShiftやKubernetes上でリソース制限を設定したコンテナでJavaを動かすとき、デフォルト設定のままだとパフォーマンスが悪くなったり、oom-killerに殺されたりします。これはコンテナのcgroupsの制限をJavaが考慮しないためです。 Javaはデフォルトでホストのメモリの1/4を最大Javaヒープメモリに設定し、Java VM本体、スタック、Metaspaceなどの非Javaヒープ領域を含めると最終的にその倍程度のメモリを利用します。たとえば16GBのマシンだと8GBくらいです。これを4GBなどの制限で動作させるとメモリが確保できずエラー終了もしくはoom-killerに殺されます。また、GCThreadsなども効率を最大化するためにCPUコア数とスレッド数を同一に設定します(厳密には8コア超
OpenShift 全部俺 Advent Calendar 2017 OpenShiftにはKubernetesで言うところのIngress, Ingress ControllerであるRouteとRouterが標準で利用できます。Kubernetes 1.0のころにはIngressが無かったので、独自に実装されました。 https://docs.openshift.org/3.11/architecture/networking/haproxy-router.html https://docs.openshift.org/3.11/architecture/networking/routes.html OpenShift RouterはフロントエンドロードバランサとしてHAProxyを利用しています。また、HAProxyを起動したり、設定を更新したり、リロードしたりするopenshift
OpenShift 全部俺 Advent Calendar 2017 よくわかりにくいと言われがちなOpenShift / KubernetesのRBACについて書いてみましょう。RBACは元々OpenShiftで実装され、それを元にKubernetes側へ実装された経緯があり、OpenShiftのclusterroleというリソースオブジェクトとKubernetesのclusterroleリソースの短縮名が衝突してしまっています。そのため、OpenShift側ではclusterrole.rbacという名前でリソースを指定する必要があります。ちなみに省略しないリソース名はそれぞれclusterrole.authorization.openshift.ioとclusterrole.rbac.authorization.k8s.ioです。 さて本題。事前に定義されているロールの一覧はoc ge
OpenShiftを利用するにあたって、最初に覚えておいたほうが良いいくつかのコマンドがあります。例えばoc get allとoc get eventです。うまくいかないときなどは大抵この2つを参照することになります。 ocコマンドはヘルプが充実しているので、わからないことがあったらまず-hオプションを付与するクセをつけましょう。oc -hの出力を末尾にのせておきます。 利用頻度順にいくつか紹介します。 oc get all oc get event oc logs POD_NAME oc rsh POD_NAME oc debug DC_NAME oc explain oc get all とりあえず状況を見るのに便利なのがoc get allです。-o wideオプションを付けるとノード名表示などちょっと情報が増えるので基本的につけたほうが良いです。 $ oc get all -o w
先週の金曜日のイベントCROSS 2017でそのコンテナ、どうやって運用する? コンテナ管理プラットフォームのススメというセッションで登壇してきました。 Docker 便利 全開発者にインストールとかイメージ作成とかDockerfileの書き方とか学習させるコストは少しつらい Dockerfileびみょう なぜコンテナ管理プラットフォーム マイクロサービス化などシステムやアプリケーションは分割傾向にあり、デプロイするコンテナが増えてきて大変 VMベースだと速度感が落ちる DevOpsを実現するツールのひとつ 永続化ストレージのハンドリング ログ集約とか監視とかセキュリティアップデートとか OpenShiftってなに 機能強化版Kubernetes、運用だけではなくソースコードのビルドなどの開発もカバー、いわゆるPaaS より多くの人に、より簡単に扱えるように Kubernetesの機能はO
Docker Advent Calendar 2016の10日目の記事です。土曜日は子供と遊んでいると思うので1日早く金曜日に公開しちゃいます。 Dockerでコンテナイメージを作成するときにはDockerfileを利用するのが最も一般的ですが、標準のdocker buildはインストラクション毎に中間レイヤーを作成し保存することを強制するようになっており、イメージ肥大化およびイメージビルドのパフォーマンス低下を避けるために、ユーザはコマンドを&&で繋げるRUNインストラクションを必要最小限な数になるよう最適化した奇妙なDockerfileを記述するという理不尽な作業が必要となります。 この強制レイヤリングは一応イメージビルド時の試行錯誤をしているときに中間までキャッシュできるので良い、という建前になっており、最初のうちはちょっと便利かなぁと思ったりもしますが、要件が固まっているベースレイ
Kubernetes Advent Calendar 2016の三日目の記事です。 OpenShiftというのはRed Hatが主導で開発しているコンテナプラットフォームで、最近の一行説明は"Enterprise Kubernetes for Developers"ということになっています。 OpenShiftはKubernetesの強化版であり、Kubernetesを内包しています。Red HatはKubernetesの公開直後から開発に参加しており、コントリビュータのグラフを見たときにコミット数第二位のsmarterclaytonさんがRed HatでOpenShiftの開発をリードしている人です。第一位の人はGoogleからMicrosoftに転職してKubernetesへのcommit数が低下しているので、このままのペースであれば第一位になります。 Red Hatは商用版のOpen
WildFly 10.1.0.Finalがリリースされました。WildFlyのサイトからダウンロードできます。 リリースノートはこちら。今回のハイライトはデフォルトでのHTTP/2のサポートです。 HTTP/2をサポートするには、TLSの拡張であるALPNをサポートする必要があるのですが、JavaのTLS実装にALPNのサポートが追加されるのはまだリリースされていないJava 9です。 Jettyにはalpn-boot.jarというbootclasspathを利用してTLS実装を差し替えるというhackライブラリがあるのですが、利用するJavaのバージョンに依存があり、バージョン毎に対応するalpn-boot.jarを利用しないと動作しないという欠点があります。そこで、WidFlyのWebサーバであるUndertowでは、ALPNをサポートする別のhackを実装して、今回のリリースとなりま
今週サンフランシスコで開催されているRed Hat Summit 2016 / DevNation 2016に関連していろいろリリースされています。随時更新します。 WildFly Swarm 1.0.0.Final http://wildfly-swarm.io/ JBoss EAP 7.0.0.GA http://www.jboss.org/products/eap/download/ JBoss Core Services Collections http://middlewareblog.redhat.com/2016/06/27/a-look-at-jboss-core-services-collections/ Red Hat SSO 7.0 https://access.redhat.com/documentation/en/red-hat-single-sign-on/7.
JJUGナイトセミナー Javaクラウドプラットフォーム大特集でOpenShiftのお話をしてきました。 #jjug 満員御礼です! pic.twitter.com/2LE5GolA3M— Shin Tanimoto (@cero_t) March 22, 2016 スライドはここです。ハイライトをこちらにも書いておきます。 OpenShift Online (v2)は3アプリケーション無料でがんばってます Dockerはサーバサイドソフトウェアの流通形態を変える超重要コンポーネント Dockerをフルに活用するために、OpenShift v3はDockerを前提としてフルスクラッチで開発。他のDocker"も"使えます的なPaaSとはその点が顕著に異なり、Dockerがファーストクラスコンポーネントになっている OpenShift = Docker/Kubernetes + みんなで簡単
Java EE 7アプリケーションサーバであるWildFly 10.0.0.Finalがリリースされました。WildFlyのサイトからダウンロードできます。 リリースノートはこちら。起動時間は僕の手元で1.6秒でした。 09:53:17,610 INFO [org.jboss.as] (Controller Boot Thread) WFLYSRV0025: WildFly Full 10.0.0.Final (WildFly Core 2.0.10.Final) started in 1606ms - Started 267 of 553 services (371 services are lazy, passive or on-demand) ハイライトとしては以下のような感じです。 Java EE 7 Java 8以降 Java 7では動作しません JMS実装がActiveMQ A
前回OpenShift Origin v3の最新版の環境を構築したので、アプリケーションを動作させてみます。慣れるとある程度複雑な構成のアプリケーションもコピペ感覚でボコボコ生やすことができて面白いですよ。 OpenShiftのクライアントコマンドであるocのバイナリさえあればOpenShiftへのアクセスできます。通常はこのocコマンドを配布してリモートからOpenShiftを操作するのですが、今回はVagrant環境上でそのまま利用します。ocコマンドにはMacOSX, Windows, Linux版があるのでどのOSでも動作します。 Vagrant環境ではocコマンドが利用する設定ファイルパスを示す環境変数$KUBECONFIGがadminのものに設定されているので、まずはunsetしてまっさらな状態にします。それから、一般ユーザとしてログインします。 $ cd $ unset KU
Dockerで遊んでるとテスト用にDocker registryが欲しくなります。Docker registryはdocker run -d -p 5000:5000 registry:latestとかで動かせるのですが、こういうのはOpenShiftに投げてしまうとラクです。 Docker registryのイメージはユーザを切り替えていますが、OpenShiftではDockerコンテナは割り当てられたUIDしか利用できないセキュリティ設定になっているので、ユーザの切り替えができるように事前にadmin権限でoc edit scc restrictedしてrunAsUser.TypeをRunAsAnyへ変更します。デフォルトではMustRunAsRangeになっています。 https://docs.openshift.com/enterprise/3.0/admin_guide/mana
Javaの1.4からjava.util.logging(以下JULと表記)というロギングパッケージが標準で使えるようになって、ログ出力のためにlog4jなどのサードパーティライブラリをいちいち導入したりする必要がなくなりみんな幸せになりました。 と言いたいところですこいつが超不便なAPIをしていてとてもとてもとっっっても使い辛い。ふざけんな。 まずさらっと使ってみましょう。Java 7です。 Logger.getGlobal().info("log") Logger.getLogger("foo").info("log") 出力はこうなります。 Jan 15, 2015 5:11:41 PM JUL main INFO: log Jan 15, 2015 5:11:41 PM JUL main INFO: log はい、キモイですね。軽くつっこむと なんで2行なんだよ 日時AM/PM表記か
Rubyのbundlerはざっくり言うと、JavaでのMavenで定義した依存関係のダウンロードとかしてくれる部分のRuby版です。JBundlerはJRuby向けにMavenの依存関係をよろしくやってくれます。 # Install jbundler (https://github.com/mkristian/jbundler) using gem jruby -S gem install jbundler # Create Gemfile for jbundler echo "gem 'jbundler'" > Gemfile # Create Jarfile, add Maven deps echo "jar 'org.infinispan:infinispan-core', '7.0.0.Beta1'" > Jarfile # Install deps jbundler instal
関西WildFly 8(旧JBoss AS)勉強会でWildFlyとかのお話してきました。 当日お話したこと、お話し忘れた事などつらつらと。 WildFlyの話 WildFlyのスライド WildFlyの日本語FAQ ログの話 java.util.logging, log4j単体, commons-loggingとlog4j、SLF4JとLogback、JBoss LoggingとJBoss LogManager java.util.loggingの可変長引数と例外の両方を出力するときのログAPIがクソ SLF4Jは上記を解決するために可変長引数の最後が例外だったら特別扱いしてる commons-loggingとlog4jは古いのでそもそも可変長引数対応してない JBoss Loggingプロジェクトの整理 JBoss Loggingでは例外が第一パラメータ、JBoss Logging T
Java Day Tokyo 2014で「Javaアプリケーション開発におけるテストとTDDの実践」というセッションを@t_wadaと@shuji_w6eと@nekopの3人共演でやりました。講演中はいっぱいいっぱいなのであまりまわりの状況がよく見えていなかったのですが、250人の部屋が満席立ち見という状態になっていたみたいです。ありがとうございます。 こんな大規模なイベントを参加費無料かつすばらしい設備の会場でやるというのはとてもすごいことだと思います。OracleさんのJavaに対する姿勢が見えますね。ありがとうございました。 自分は統合テスト自動化というトピックで、より本物に近い環境でテストすることの重要性とか、Arquillianイイヨー、統合テストのコスト下げられるよー、楽しいよー、ってお話をしました。スライドは以下のURLで公開しています。 http://nekop.githu
監視などの目的でGUIなJConsoleではなく、スクリプトからJMXへアクセスしたいことがあります。JBoss AS 6まではtwiddleというコマンドベースのJMXクライアントが付属しましたがAS7やWildFlyには付属していません。さてどうするか、ということでいくつか手段があります。 Jolokia JolokiaはJMX over HTTPを提供するツールです。RESTでJMXアクセスできます。WildFlyではwar版を利用するのが一番簡単でしょう。 $ curl http://localhost:8080/jolokia-war-1.2.0/exec/java.lang:type=Memory/gc {"timestamp":1397463592,"status":200,"request":{"operation":"gc","mbean":"java.lang:type
以下の環境とテストでCMSとG1GCを比較してみた。かなり急ぎでやったので間違っている可能性が多少ある。 16 cores, 32GB mem -Xms24g -Xmx24g 8 instances Infinispan 6.0.3.Final DIST cache, put 4GB data (1KB entry * 2M, 2GB data with one backup copy, 2GB * 2 = 4GB) CMS: -XX:+UseConcMarkSweepGC -XX:CMSInitiatingOccupancyFraction=30 G1GC: -XX:+UseG1GC -XX:G1HeapRegionSize=16m -XX:InitiatingHeapOccupancyPercent=30 $ java -XX:+UseG1GC -XX:+PrintFlagsFinal
バッチ処理などスループット重視のアプリケーションはデフォルトのパラレルGCで良いが、Java EEアプリケーションサーバなどレスポンスタイム重視のものやHadoopなどのクラスタ系ソフトウェアで死活監視に引っ掛る系などのstop the worldをなるべく避けたいいわゆるサーバ系ソフトウェアを運用する場合には、UseConcMarkSweepGCを付与して停止時間の短いCMS GCを使う。その場合にCMSのチューニングに踏み込もうとするとなんだか難しい記述がいっぱいで若干困るので、簡単なガイドをメモとして書いておく。 対象バージョンは以下。 $ java -version java version "1.7.0_51" OpenJDK Runtime Environment (fedora-2.4.5.1.fc20-x86_64 u51-b31) OpenJDK 64-Bit Serve
次のページ
このページを最初にブックマークしてみませんか?
『nekop's blog』の新着エントリーを見る
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く