H2O.ai の java インストール
はじめに
H2O.ai ( H2O社 ) とは?
GPU で 走らせることもできる とのことです。
Bigデータから AI で解析! など、役に立つところは多そうです。
より詳しく紹介している ところは多いと思いますので、、
自分は、インストール方法だけ ご紹介します。
ーーーーー
java から インストールしていきます。
こちらを参考に
version は 1.8 にしてみました。
ランタイムのみ インストール
バージョン確認
# java -version
openjdk version "1.8.0_222"
ーーーーー
まずここから h2o の zipファイル を ダウンロード
任意のディレクトリにおきます。
自分は h2oAI というディレクトリ を作成してそこにおきました。
zipは、500MBくらい ありました。
# pwd
/dev/h2oAI
# ls
h2o-3.19.0.4275.zip
# unzip ./h2o-3.19.0.4275.zip
Archive: ./h2o-3.19.0.4275.zip
・・・・・
# cd h2o-3.19.0.4275
# java -jar
・・・・・
INFO: Open H2O Flow in your web browser: http://ホストのIPアドレス :54321
となれば 立ち上がり完了!
ここへ ブラウザでアクセスしにいきます。
完了!
( 2019.08.07 一部 H2O 関連固有名詞を修正 )
docker コンテナ内の 設定ミス で 停止してしまったら、、、
もし docker コンテナ 内の 設定 ファイルの編集ミスなどをしてしまって、
コンテナが起動しなくてしまったら、 何も知らないと結構困る。
起動しなくなったコンテナを、無理やり起動させて、修正作業ができるようにしたい。
ここの通り対処すればOK かと思うが、、
自分は、上記とは、多少 環境が 異なるため、一応 ここに 記録。
< できた環境 >
ホストOS macos 10.13.6 ターミナル
まず Docker ホストの OS に ログイン状態
# docker -v
Docker version 1.13.1, build 07f3374/1.13.1
停止した コンテナの ID を確認 (前方の数桁がわかればOK)
# docker ps -a
・・・
該当 コンテナのディレクトリ へ移動
cd /var/lib/docker/containers/ae98d...4f6/
一時的にコンテナ起動時コマンドを編集するvi ./config.v2.json
> 編集 内容
コンテナ起動時のコマンド と そのコマンドの引数を 操作する。
コマンド “ Path “ 要素にかかれたものを適当なコマンドに変更する。
“ PATH “ ではないので注意。
たとえば tail 。 node-red コンテナの場合は 以下のように指定した。
“Path" : “ /usr/bin/tail "
/usr/bin/tail
続いて そのコマンドの引数の指定は “ Args “ で。
確実に有効な オプションや、ファイルパス を指定する。
"Args":["-f","/usr/src/node-red/package.json"]
上記で 指定 うまくいくと コンテナ起動時
tail -f /usr/src/node-red/package.json
というコマンドがうまくいけば コンテナが立ち上がりっぱなしになる。
編集した config.v2.json を 有効化する。
# systemctl restart docker
# docker start -ai 問題のコンテナ名
ここで、上記 で 設定した指定がうまくいけば、 立ち上がる。
立ち上がらなければ、 エラー内容を よく読み config.v2.json で 対処できそうな 問題なら、それで 立ち上げる。
もしうまく立ち上がったらなら、 上記の例では tail -f コマンド を実行したままになるはず。
この状態で、通常起動時の問題箇所を修正しておく。
( 自分の場合は、 node-red コンテナの /data/setting.js の内容を修正した。)
この時、 ctrl + p つづけて q と押す と コンテナ は デーモン化して バックグラウンドへ。
docker ホスト側 の ターミナル操作に復帰できる。
また、修正したければ docker exec -it コマンドで 中に入って修正作業できる と思う。
修正が完了したら、さきほどバックアップした、config.v2.json を使って通常コンテナ起動の設定に戻す。
⬇︎その config.v2.json を 有効化する。
# systemctl restart docker
あとは通常通り、起動 できればOK。
問題があれば、docker logs コマンドを使ったりして 解析を進めよう。
Centos7.6 バグ ipv6 で dadlyfailed
対策1
ipv6 を 使わない。
対策2 パッチを当てる
やり方までは終えてないけど。
関連技術 OpenvSwitch
( Open Virtual Switch、通称「OVS」)は、ソフトウェア定義型ネットワーク(SDN)を実現する仮想スイッチです。
debian 9 stretch 固定IPアドレスの設定 ( debian公式参照 + エラー対処 )
RTNETLINK answers: Cannot assign requested address がでた。
対策:flush の実行を挟む!
例1
NIC名 : ens3 とします。
通常通り /etc/network/interfaces を編集して固定IPアドレスの設定をします。
# The primary network interface
auto ens3
allow-hotplug ens3
iface ens3 inet static
address 自分の設定したい固定IPアドレス
netmask 255.255.255.0 (などサブネットマスクの設定)
gateway ルータのアドレスなど
# network とか broadcast とか dns-servers の設定なくてもいけるのね。。
上記 ファイルの 編集が完了したら、、
# ifdown ens3 ; ip addr flush dev ens3 ; ifup ens3
最後確認して 問題なければOK!
# ip a
参考:
公式マニュアル
エラー対処
HAproxy ( docker コンテナ版 ) 設定のリロード
HAproxy コンテナ起動中でもサクッと設定をリロード。config reload 。グレイスフル リロード
起動中のコンテナのコンフィグを上書き更新する。
docker ホスト側からコマンド。
# docker cp ./dockerホスト側のディレクトリ/haproxy.cfg コンテナID:/usr/local/etc/haproxy/haproxy.cfg
上書きしたコンフィグファイルのリロード
( グレイスフル・リロード方法 )
# docker kill -s HUP 動作中のコンテナ名
コマンド例
# docker kill -s HUP my-running-haproxy
参考:
動作確認環境 ( 2019年 2月初旬 )
Docker version 1.13.1, build 07f3374/1.13.1
docker-compose version 1.23.2, build 1110ad01
HAproxy 1.9
docker コンテナの HAproxy で、config と一緒に ユーザーリスト を取り込む方法
docker 版 HAproxy を使う。その際に、Basic 認証 などで使う ユーザーリスト や、設定ファイル ( haproxy.cfg )を どうやって取り込ませるか?食わせるか?
できたので、記録しておく。
ついでに https で使う pem ファイルも取り込んだ。
- 1. docker pull
- 2. haproxy の稼働に必要なファイルの準備
- 3. DockerFile の作成
- 4. docker build
- 5. HAproxyコンテナの設定検証
- 6. docker run
1. docker pull
# docker pull haproxy
2. haproxy の稼働に必要なファイルの準備
・ haproxy.cfg
・ userlist.cfg (Basic認証で使うユーザーリストなど必要に応じて)
3. DockerFile の作成
Dockerfile という名前のファイルを作る。中身
COPY ./haproxy.cfg /usr/local/etc/haproxy/haproxy.cfg
COPY ./userlist.cfg /usr/local/etc/haproxy/userlist.cfg
COPY ./haproxy.pem /usr/local/etc/haproxy/cert/haproxy.pem
ここで、COPY コマンドの引数2つについて。
左側: コマンドを打つDocker ホスト側の世界。ファイル名(パス)
右側: コンテナ内のファイル名(パス)
haproxy コンテナ内に /usr/local/etc/haproxy というパスがあるので、
その中に、手元のファイルを放り込んであげる形。
( 挙動を見ている限りではビルド時にコピーされるようなので、稼働中は、難しそう )
・用意ができたら確認
自分はこんな感じです。
# pwd
/root/dev/haproxy
# ls
Dockerfile haproxy.cfg haproxy.pem userlist.cfg
4. docker build
上記、場所にいる状態で コマンドを打つ。
# docker build -t myhaproxyなど任意コンテナ名 .
5. HAproxyコンテナの設定検証
haproxy 設定ファイル の docker 検証を行います。
# docker run -it --rm --name haproxy-syntax-check myhaproxy haproxy -c -f /usr/local/etc/haproxy/haproxy.cfg -f /usr/local/etc/haproxy/userlist.cfg
< 解説 >
・ -f で haproxy に 直接食わせたいコンフィグファイルを指定。
・ -c で 設定ファイルのチェック。
設定ファイルのチェックでNGなら 問題箇所を修正して 2.から再度チャレンジ。
OKなら 以下に進んでコンテナを起動する。
6. docker run
(ユーザーリストなどなしの例)
# docker run -d --name my-running-haproxy myhaproxy
(ユーザーリストなどありの例)
# docker run -d --name my-running-haproxy myhaproxy -c -f /usr/local/etc/haproxy/haproxy.cfg -f /usr/local/etc/haproxy/userlist.cfg
-f で指定するファイルパスは、コンテナ内のファイルパス。
DcokerFile で指定、Build でコピーしてあげたファイル。
これで起動できても、haproxy が監視するサーバーが止まっているかアクセスできていないと、haproxyも止まってしまうようなので、注意。
run した後、何らかの理由で停止状態としていた際に、もう一度 その設定を保持した状態で動作させたい場合は、以下コマンドも便利。
# docker restart コンテナID
次回は、HAproxy コンテナ 動作中でもできる 設定ファイルの リロードについて。
別途、docker compose でも できたので機会があればそちらも記録しておこうかなと思う。