サクサク読めて、アプリ限定の機能も多数!
トップへ戻る
災害への備え
open-groove.net
表題の件は、以下過去記事の補足。 AWS CodePipelineからEKSのPodをデプロイする 上記過去記事ではEKS用のマニフェストに記述するイメージタグを決め打ちにしていたが当然実運用では立ち行かないので、動的な値を自動でセットしたい。CodePipelineのアクション間変数を使ってうまいことやれないかと試行錯誤したがうまく行かなかったので…、buildspec.yml内で置換することにした。他にスマートなやり方がありそうだが、とりあえずこれはお手軽で簡単。 やったこと: 以下をCodePipelineで。EKSクラスタは構築済みで、ec2にマニフェストを配布してapplyを実行する。 1. CodeCommit --> 2. CodeBuild --> (ECR)--> 3. CodeDeploy 金太郎飴みたいに何度も同じような内容書いているが今回も。実行環境の構成は冒頭の過
最近、今この時代の現実世界で、ものすごいことが実現しかかっているというのをひしひしと感じることが多い。想像を絶するような未来が、気がついたらもう隣に来ていた、というような。 そんな時に、ふとしたところからこんなのに出会った。映画「マトリックス」にも影響を与えたSF小説「ニューロマンサー」の作者ウィリアム・ギブソンと、ヒューマンオーグメンテーション(人間拡張)の第一人者・暦本純一氏(ソニーコンピュータサイエンス研究所)の対談。これが、かなり刺激的な内容だったので記録したい。 サイバースペースを創造した作家とそれを現実にする男 (動画) (ちなみにヒューマンオーグメンテーション/Human Augmentation という言葉をこの対談で初めて知ったんだけど、自分としては人工知能なんかよりよほど興味深いテーマ。気にしておきたい) 暦本氏の発言ではこんなのがあった。 “エンジニアや研究者にとって
表題の件は、ただ単純に、S3バケット上のデータを別リージョンのバケットに転送したいだけなのだ。しかしググると何故かスナップショット転送の記事がトップ位置に出てきてしまうので、自分のところに書いておく。 方法としては「フツーにコピーする」と、「クロスリージョンレプリケーションを利用する」の2択。 1. [aws s3 cp]でフツーにコピーする場合 バケットの作成時に所属するリージョンが決定されているので、コピー実行時にリージョンを指定する必要はない。 $ aws s3 cp s3://tokyo-example-bucket/mytest.txt s3://singapore-example-bucket/ バケットのリージョン(ロケーション)を確認する $ aws s3api get-bucket-location --bucket singapore-example-bucket --
Linux LPIC編。(第3章 デバイスとファイルシステム) 今更ではあるが、mountコマンドの書式とオプションを。どんな時でも基本は大事。 書式 mount [オプション] [デバイスファイル名] [マウントポイント] /etc/fstabに設定してある場合は、デバイスファイル名かマウントポイントのどちらかを 指定するだけでOK。 オプション -a /etc/fstabで指定されているファイルシステムをすべてマウントする -f /etc/mtab の情報を書き換えるだけで、実際にはマウントしない -n /etc/mtab に情報を書き込まない -r 読取り専用でマウントする(-o roと同じ) -t ファイルシステムタイプを指定する -w 読み書き可能でマウントする オプションを指定するオプション”-o”が重要な気が… -o マウントオプションを指定する remount: 再マウント
遅まきながらGCP始めた。60日間無料で使いたい放題なので、この期間にいじりまくればイヤでも覚えるだろう、と期待。手始めにわかり易そうなところでGCEから手をつける。Webコンソールからポチポチやってインスタンス起動、まではまぁ普通にできた。次に、MacにTerraformを入れて、そこからGCEの操作してみたいんじゃ!とやってみる。 作業前に必要なのが、GCPのAPI認証取得の手続き。ここが情報が錯綜してよくわからなくてハマった。ネット上の記事はちょっと古いと説明が食い違ってるし、記事によってスクショの画面や用語が異なるので混乱する。どうにか以下方法でやれるところまで辿りついた。 (2016年2月時点) 1. Google Developers Consoleログイン後、画面左上の[ツールとサービス]メニューから[権限]を選択。 2. [サービスアカウント]タブ選択。 3. [サービスア
とんがったネタを書きたいのはやまやまであるが、諸事情により今日も重箱の隅ネタです。 やりたいことは、PostgreSQLで「データ更新時のtimestampを、そのタイミングで同時に更新する」 ちなみに、MySQLであればテーブル作成時に以下のように記述すればよいのだが… create table comment_tbl ( : : accesstime timestamp not null default current_timestamp on update current_timestamp, primarykey(id)); うっすら調べたら、PostgreSQLには MySQLの”on update current_timestamp”に相当する機能は存在せず、関数を作成する必要がある、とのこと。何と。「がー!!!面倒くさいんだよ!」としばらく放置していたが、しつこく他のやり方探
表題のような不幸は、過去にもあった。もうそんな不幸はないだろうと思っていたが、また同じ不幸が巡ってきた。どっかに書いておけばよかった、と後悔した。3度目の不幸がやってくるかもしれないので、今度は書いておくよ、ローカル環境でAnsibleをソースから入れる手順を。こんな情報を必要とするヒトなんてそうそういないとは思うけどね、世の中、みんながみんな pip install ansible が使えるわけじゃないんだよ。。 環境はCentOS 6系だが、7でも同じだと思う。まずAnsibleのソースは以下より入手しておく。 http://releases.ansible.com/ansible/ ローカル内のyumリポジトリで基本的なパッケージのみインストール可能、という状況だとする。gcc, python-develを入れておく。それすらない場合は、個別にパッケージ入手して入れておく。 $ su
PostgreSQLもローカルで気軽にゴニョゴニョできた方がいいよなぁ、と思いMac(Yosemite)にインストールした時のメモ。この際チラシの表だろうが裏だろうが、何でも書きますよ。すぐ忘れるから。 $ brew install --with-python postgresql DB初期化。対象ディレクトリは実行ユーザの権限がないとダメらしいが通った。 $ initdb /usr/local/var/postgres -E utf8 起動。この例はフォアグラウンドで実行されるので、Ctrl + Cで停止。 $ postgres -D /usr/local/var/postgres この起動方法はいろんなブログに書かれているが、面倒くさいのでちょっと調べたらよい方法発見(参考)。 PGDATAの環境変数セット(.bashrc or .bash_profile) export PGDATA
MySQLとネットワークが絡む辺りの小ネタを。 telnetでの疎通確認。 以下を実行して、MySQLのバージョンが表示されて自動的に切断されたら正常な動き。 # telnet [接続先マシンホスト名/IP] [ポート番号] 接続が許可されていない等のエラーが返ってきたら、接続先マシンホスト名/IPや、 ポートの指定に問題がないか疑ってみる。 F/Wではじかれている場合は “Trying…” の状態でストップする動作になるようだ。 F/W側の設定によって変わるかもしれないが。 MySQLサーバへネットワークログイン。 # mysql -h [接続先マシンのIP] -P [ポート番号] -u [ユーザ名] -p 上記の接続確認は、例えばレプリケーション実装の際にレプリケーションユーザが正常にアクセスできるか、を事前に確認する時に行うとよい。 接続できない時は、接続先のMySQLユーザアカウン
コネタです。 Ansibleでクラウド環境のホスト情報を動的に管理する機能としてDynamic Inventoryというのがある…というのは知っていたが、何と今まで使ったことがなかった。で、今更ながら少しだけ触ってみた。環境はAWS。 久しぶりにAnsible入れようとしたら、現在のAmazon Linuxにyumで入れるとPythonのバージョンの関係で動かない、のでpipで入れた。 $ sudo pip install ansible /usr/local/bin/にパスが通っていない場合は通しておく。 $ ansible --version ansible 1.9.4 configured module search path = None 適宜IAM Roleを付与したマシンであればAWS_ACCESS_KEY_ID, AWS_SECRET_ACCESS_KEYの記述は不要。 Dy
「よく使いそうな」と言っても、当然自分基準。ちなみにjqは使ってない。--filtersと--queryがあればjqいらないんじゃないかと思い始めた。 ec2インスタンスの操作 インスタンスのステータス取得。--output textオプション付与すると純粋に値のみ取得可能。 $ aws ec2 describe-instances ¥ --instance-ids i-xxxxxxxx ¥ --query 'Reservations[].Instances[].[State.Name]' 特定のNameタグを持つインスタンスのインスタンスIDを取得。 describe-instancesでOKだがdescribe-tagsからでも可。 describe-tagsで取得。 $ aws ec2 describe-tags \ --filters "Name=tag:Name, Values=
本当は書きたくない低レイヤーネタ。が、知ったことは記録しておきたいので。 表題の件、今さら? なんだけどね…、実は最近までcloud-initの存在すら知りませんでした。AWSは個人的に利用しているとはいえ、検証目的なんで低レイヤーな部分は放置だし、一旦作ったAMIを使いまわしているだけなので、知らないことも沢山ある。 cloud-initは一言でいうと、Amazon Linux(それ以外もあると思うがよくわからない)インスタンス起動時にガリガリ、ゴリゴリと勝手にカスタマイズしてくれるヤツ。便利といえば便利で、おせっかいといえばおせっかい。 本題。Amazon Linuxにおける以下のような一般的な対処があるとする。このようなcloud-initへの対応を、cloud-initで制御したい。最後のパスワードログイン以外はありがちな対応と想定する。 ストレージサイズをデフォルトの8GBから大
KinesisついでにKafkaです。 機能的に競合するところがあるらしいので、両方弄ることで理解が深まればよいなぁ、と。 Kafkaは昨年夏頃にもちょっとだけ弄ってみたのだが(Apache Kafkaで遊んでみた記録 -1)、とりあえず触ってみただけ、というステータスに終わっているので復習してみる。 セットアップなど前回投稿の通りにやればいいと思っていたら、微妙にいろいろ変わってた(ほんの少しだけ、使いやすくなった気もする)。そんなに難しいことはないがいつも通り記録しておく。環境はAWS上のCentOS6.5で、JDK7、Scalaインストール済み。 クイックスタートはここを参照 http://kafka.apache.org/documentation.html#quickstart 以下より、Scalaのバージョンに合わせてDL先をチョイス。 http://kafka.apache.
リアルタイムストリーミングSQLデータベース…な、PipelineDBを軽くいじってみた。 PipelineDB 元ネタ ストリーミングSQLデータベースPipelineはデータベースへの連続的なリアルタイム出力をサポート PipelineDB概要 PipelineDBが向いているのはSQLで定義可能なクエリを継続的に実行したいケース。SQLで定義可能であれば、前処理となるETLが不要。逆にSQLで定義不可能なクエリには適さない(使えない)。 PostgreSQL互換もウリにしていて、PostgreSQLコミュニティのコアメンバーがボードメンバーとして参加したそうだ。 インストールガイド ダウンロード 構築をすっとばしたい人は、Dockerイメージを利用するといい。が、構築といっても大してやることはない。 docker run pipelinedb/pipelinedb 今回はEC2 Ce
Embulkによるデータロード、今回はMariaDBからHadoop HDFSというパターンでやってみる。環境はCentOS6.6 CDH5.4のHadoop擬似分散環境で、MariaDBも同居。Embulkのインストールまでは過去記事と全く同様。 プラグインのインストールから開始。MariaDBのinputとしてmysql用のプラグインを使用する。 $ embulk gem install embulk-input-mysql $ embulk gem install embulk-output-hdfs MariaDB側対応。この辺も前回までの投稿と同じ。 CREATE TABLE embulktest.access( country_code varchar(10), access_id int, access_time varchar(30) ); CREATE USER embu
前回に引き続き、Embulkを利用したデータロード。今回はAWS S3及びRedshiftへのロードを試す。基本セッティング等は前回投稿を参照されたし。実行環境はMac(Yosemite)。 1. S3へロード input:MariaDB, output:S3とする。MariaDBの方は前回投稿でCSVからロードしたデータが残っているためそのテーブルを利用する。ちなみにこんな状態。 Table:access +--------------+-----------+---------------------+ | country_code | access_id | access_time | +--------------+-----------+---------------------+ | MD | 85049 | 2015-07-13 11:48:29 | | DO | 83358
バッチ志向のデータローダー Embulkを試してみた。セットアップ手順など他の多くの記事で書かれているが、自分用にメモ残しておく。実行環境はMac(Yosemite)。 1. インストール & 動作確認 何も考えずに言われるがままにやると、ホーム配下にリソースがインストールされる。 $ curl --create-dirs -o ~/.embulk/bin/embulk -L "http://dl.embulk.org/embulk-latest.jar" $ chmod +x ~/.embulk/bin/embulk $ echo 'export PATH="$HOME/.embulk/bin:$PATH"' >> ~/.bashrc $ . ~/.bashrc 拠点となるリソースディレクトリ?作成。何も考えずに実行しているがディレクトリ名は別に”sample”でなくてもよい。 $ em
対話式プログラムへの自動化処理の方式としてはexpectが有名だが、そのpython版としてpexpectというパッケージがある。expectは使ったことないが、TCL言語がベースなので学習コストガー、とかshellはもうイヤだ、等々あるので、pexpectでサクッとできればそっちの方がスマートでよさそうだ。しかし現状日本語情報は少ないし、あっても説明がイマイチ分かりにくい…。単純化するとこういうことみたいである。 spawn()で、実行するコマンドを定義。 expect()で、想定するプログラムの質問を定義。まさに”expect”。 sendline()で、上記2.に対するアンサーを定義。 つまり、sendline()が人間が端末で入力する処理を代行してくれる、ということらしい。ではやってみる。 $ sudo pip install pexpect 分かりやすい例として、FTPサイトにロ
HiveのメタストアDBとしてMariaDBを使ってイケるのか、というのをやってみた。CentOS7でやりたかったのだがCDHが未対応なので、6で。現状、MariaDBにしなければいけない理由も、MySQLではダメという理由もない。そんな要件も、当面出てこないだろう。ただMySQLの将来が不明瞭な現状を踏まえて、個人的に確認しておきたいだけである。 環境はAmazon EC2上のCentOS6.6。Hadoop擬似分散環境は構築済みで、CDH5.4.4にアップデート。HiveのメタストアDBとしてMySQLが動いていたところから始めた。かなり以前に作ったAMIを元にアップデートを繰り返してゴニョゴニョやっているもんだから、環境が汚れている。一から新しいイメージを作り直そうと思ったが、面倒くささに負けてやめた。が、そのせいでちょっとハマった。詳細は後述。 では、MySQLをアンインストールし
いつのまにかSolr5が出ていた。本当のところ、特別Solrがやりたい!というわけじゃないんだけどね…、せっかくなので触ってみた。そしてやはりというか、ドツボにはまって試行錯誤した。環境変えてやり直したりしたが、わけがわからなくなるので成功部分を中心に書いておく。まとめきれる自信はないが一応別途、ハマりどころも。 実行環境 Amazon EC2上のCentOS 7, t2.smallインスタンス1台。JDKのバージョンはドキュメントによっては1.7推奨らしいが、サンプルデータをポストしようとしたら以下のエラーがでたので1.8にした。しかしこれは1.7だからダメというよりは、実行時にJAVA_HOMEが読み込まれていなかったためと思われる。 Java is required to run this tool! Please install Java 8 or greater before r
パンク特集第3弾だぜ!!といきたいところだが、パンク聞いてばっかりいたら脳みそ単純化が異常に加速してやばくなってきたので、技術ネタ復活します。とはいえ、すみません、コネタです。って、謝ることないよね、別に…。 さて表題のネタ、知っている人には「何を今さら」的な話ではあるし、IAMロール使うとセキュアで便利だよというのも知ってはいたが、昔ちょっといじったときにかなり面倒くさいことをやったので拒絶反応があり、放置していた。が、最近Managed Policyという機能が追加され、設定方法が簡単になった様子なのでやってみた。 Managed Policyについては以下 [AWS IAM] 経験者向けManaged Policy対応ガイド AWSのIAM(Identity & Access Management)サービスは一言でいうと、ユーザ、グループ、ロール毎にポリシーを適用して実行できる権限を
Elasticsearchデータ登録の確認コマンド例。 リクエスト構文は http://[hostname]:9200/[index-name]/[type-name]/_search -d....となる。 以下はlogstash-2013.07.10インデックスのapache typeにおけるすべてのデータを返す。データ量が膨大な時は工夫しよう。 $ curl -XGET http://localhost:9200/logstash-2013.07.10/apache/_search -d ' { "query" : { "match_all" : {} } }' 存在するインデックスをソートして出力。んー、いいかげんgrepとかawkとかじゃなくてjq使いたいところだな。 $ curl -s "http://localhost:9200/_status?pretty=true" | g
長期稼働ブログなのでデトックス中です。 せっかくですが、お探しのページは情報が古いまたは適切でないため削除しました!
しばらく前から分散RDBをいじってみたいと思っていたが、きっかけがつかめずズルズルときた。そんな中、先日Tumblr blogの方にチラッと書いたのだが Pinterestがリアルタイム分析用にSpark & MemSQLの評価中と聞きつけてウズウズしてきたので、重い腰を上げてMemSQLをうっすら触ってみた。 簡単な説明 MemSQLはMySQL互換でスケーラブルな分散RDB。現在のところ、コマーシャルライセンス製品(自分的にはこの点は残念だが、現状オープンソースでまともに動作する分散RDBは存在しない、という認識である)。MemSQLクラスタはaggregatorとleaf nodeにより構成される。aggregatorは管理系で、leaf nodeがコンピュートノードに相当。データはleaf node間で分散される。それぞれ任意の数にスケール可能。 実施環境 いつもならAmazon
Google Spanner自体は2012年頃から世に表れて、その後拡張版のF1がでて、さらに昨年さらなる拡張版らしきMesaが公開され…といった流れがあったようだが、自分の脳内でまとまりがつかないので個人的にメモ。何故今Spannerかというと、詳細は自分も記憶にないが、最初「NewSQLって何で普及していないんだろう」とつつき始めたのがきっかけで、いつのまにかココにきた。 以下、Spanner関連のつぶやきまとめ。2012年の日付とはいえ、今でも目を通す価値大!(論文などのリンクは現在切れているのが多い) Google Spannerまとめ Googleのデータストアの系譜をたどると、自分の認識だとこんな感じなのだが、他のコンポーネントもあるだろうし、事実は微妙に違うはず。しかしDremel --> BigQuery であることは確か。 F1はひと言でいうと、Google社内で開発され
前置きは省いて、MongoDBのレプリカセット作成 & 再構成のメモ。 レプリカセットとなるmongoインスタンスはそれぞれ起動しておく。 いずれかのマシン(primary候補)に接続。 $ mongo --host mon001 Replica setの情報を設定し、初期化する。以下の例では’myrepset’ という名前のレプリカセットを作成。 > config = { _id: 'myrepset', members: [ { _id: 0, host: 'mon001:27017' }, { _id: 1, host: 'mon002:27017' }, { _id: 2, host: 'mon003:27017',"arbiterOnly" : true} ] } rs.initiate実行。 > rs.initiate(config); rs.status()を実行してステータ
Hiveを利用するときにいちいちコンソールを起動しなくても、-eオプションで通常のコマンドからクエリを実行することが可能(シングルクォート or ダブルクォートでクエリを囲む)。 $ hive -e 'select * from tbl_a limit 100' 上のコマンドはDBがdefaultなら動く。DBを指定するには以下。MySQLの構文と同じ。 $ hive -e 'select * from db_name.tbl_a limit 100' -fでクエリを記述したファイルを読み込ませて実行。拡張子はsqlでもhqlでもどっちでもありの様子。 $ hive -f /path/to/hivescript.hql -iオプションは-fと似ているが少々違っていて、対話式モードに入る前に指定したスクリプトを実行する。 つまり、特定の処理を行った後コンソールに入る。正直、今の自分にはどうい
AWSの操作はAnsibleでも可能ではあるが、現状操作内容が限定されていたりするし、Ansibleは構築向きであって、定常運用は別のソリューションにする方がいい気がする。で、今回直接Pythonでやってみた。実行環境はMacOS 9。(ちなみにAnsibleを利用したインスタンス起動は過去記事に) PythonからAWSを扱うためのライブラリである botoを導入する。 pipがまだ入っていない場合は、$ sudo easy_install pip を実行。 $ sudo pip install boto RedHat系ならpython-botoをyumで入れれば良い。epelリポジトリを有効にしておく。 参考にしたのはこちら。ほぼそのまんまです。 [AWS]第2回 botoからEC2を操作しよう [AWS]第3回 botoからS3を操作しよう 何はなくても、まずはEC2インスタンスの起
LPIC レベル2受験に向けた勉強を、いきなり始めた。 でも参考書を読んでノートにとって、、、なんてやっていても眠くなってしまう だけなので、例によって勝手にこの場でアウトプットしていきます。 (99%・・・、100%自分のため) 主な出典は、翔泳社のLinux教科書LPICレベル2。これに他の情報ソースやコマンド実行結果 など含めてまとめてみようかと。 そんなわけで、あとでちょくちょく追加・変更するかも。 まずはカーネルモジュールの管理、あたりから。(第1章 Linuxカーネル) 以前の記事との重複も若干あるのだが、lsmodだのmodprobeだの、ややこしいので今一度 ざっくりまとめておく。 lsmod 現在ロードされているすべてのモジュールを一覧表示。 出力結果の内容は、左から モジュール名、サイズ、参照回数、そのモジュールを利用しているモジュール名 また、
次のページ
このページを最初にブックマークしてみませんか?
『OpenGroove – Be Futuristic.』の新着エントリーを見る
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く