Dockerでoperation not supportedが出てきた話
はじめに
DockerでイメージをbuildしようとDockerfileの作ってbuildしてみたものの、
operation not supported
というメッセージでRUNで記載したコマンドが実行できない事象に陥りました。
解決方法
LXCを導入したい場合、以下必要なことがわかりました(根本的な理由は調べてません)。
- CONFIG_VETHの値(カーネルコンフィグ)
- lxc
- cgroups
CONFIG_VETHの値の確認は下記コマンドにて行いました。 下記の結果が表示されていれば値が入っている状態となります。
$ zcat /proc/config.gz | grep VETH CONFIG_VETH=m
ちなみに、上記表記が出ない場合の対策については実施していません。
cgroupsはubuntuなどのOSであれば、cgroup-liteをapt-getしてあげるらしいです。 Archlinuxの環境ではyaourt -S libcgroupsが必要でした。下記のコマンドは適宜読み替えてください。
$ yaourt -S libcgroups $ sudo pacman -S lxc
dockerでbuildとりあえずうまく行きました。。。
続きを読むRiak searchを使ってみた
はじめに
Riakで全文検索してみたいと思い、Riakのsearch機能を利用する準備で行った作業をまとめました。
利用環境
- Ubuntu server 14.04
- Riakのホストは192.168.56.101
- Riak 2.0.5(from source)
前準備
- ビルドしたriakの設定ファイルetc/riak.confの"search = off"を"search = on"に書き換える
- basho/riak-erlang-client · GitHub
作業
indexの作成
例として、"api_index"という名前のindexを作成します。
export RIAK_HOST="http://192.168.56.101:8098" curl -XPUT $RIAK_HOST/search/index/api_index \ -H 'Content-Type: application/json' \ -d '{"schema":"_yz_default"}'
下記、URLにアクセスし、api_indexのsolrのcore(?)が作成されているか確認します。 ※ solrについて詳しくないので上記言い回し的に間違ってたらご指摘ください。
http://192.168.56.101:8093/internal_solr/
続きを読むCowboyでobserverを起動するメモ
目的
軽量HTTPサーバcowboyのアプリケーションをErlangの監視ツールobserverで視覚的に監視できるようにしたい。
実施内容
- relx.configの編集
レシピ
relx.configの作成したアプリケーション名(以下app_name)の他に、
- wx
- observer
- runtime_tools
の3つを追加します。
{release, {animeeting_release, "1"}, [app_name,wx,observer,runtime_tools]}. --省略--
上記の対処でobserverが起動できるようになります。 アプリをconsoleで起動し、下記コマンドをerlシェルで実行します。
1> observer:start().
下図みたいな感じなものが見れるようになります。
続きを読むRiak 2.1.0をソースからインストール&クラスターの構築
はじめに
※ 2.0.4から2.1.0に更新しました。
以下、準備するものになります。
Ubuntu Server 14.04
1ノードのスペックは以下になります。
* MEM: 1024 MB
CPUs: 1 core
HDD: 10 GB
NIC: 2枚 (ひとつはNATで、もうひとつはホストオンリーアダプタ)
ネットワークの設定
まずはじめに、/etc/network/interfacesのファイルを修正します。
# This file describes the network interfaces available on your system # and how to activate them. For more information, see interfaces(5). # The loopback network interface auto lo iface lo inet loopback # The primary network interface auto eth0 iface eth0 inet dhcp # The secondary network interface auto eth1 iface eth1 inet static address 192.168.56.xxx network 192.168.56.0 netmask 255.255.255.0 broadcast 192.168.56.255 gateway 192.168.56.1
addressのIPはRiakの各ノードのIPアドレスが当てはまります。設計したIPを入れます。 ※ eth0はNAT接続で、eth1はホストオンリーアダプタ
networkingをリスタートします。
続きを読むGitLab7.6.2の検索フォームでUTF-8の文字列を使う場合
問題
検索フォームでUTF-8のも文字列を使って検索してしまうと次のようなエラーが出てきます。
Encoding::CompatibilityError (incompatible encoding regexp match (UTF-8 regexp with ASCII-8BIT string)): app/models/repository.rb:162:in `method_missing' lib/gitlab/project_search_results.rb:51:in `blobs' lib/gitlab/project_search_results.rb:20:in `objects' app/controllers/search_controller.rb:33:in `show'
ASCII-8BITの文字列に対してUTF-8の文字列で比較してしまっていると怒られています。
(gitのwiki作成に用いられているgollum-libは、ASCII-8BITの文字列を扱っているらしいので)
解決策
app/controllers/search_controller.rbの変数termの行を変更しました。
def autocomplete # term = params[:term] term = params[:term].force_encoding('ASCII-8BIT') # ここの行を変更 @project = Project.find(params[:project_id]) if params[:project_id].present? @ref = params[:project_ref] if params[:project_ref].present? render json: search_autocomplete_opts(term).to_json end
params[:term]は検索フォームに入力された文字列なので、そのparams[:term]をforce_encodingでASCII-8BITにエンコーディングしてあげることで、UTF-8の文字列を入力した際にも強制的にASCII-8BITに変換して検索にかけることができるようになります。
Ubuntuでriakをインストールするときにやったこと(まとめ)
はじめに
riakをインストールしようとした時に、コンパイルでこけたり、実行時にWarningを喰らったりしたので、その問題を解決するために必要なことをまとめました。まず、はじめに今回やったことを箇条書きにします。
- apt-get install libpam0g-dev を実行した
- ulimit -n 65536を実行できるようにした
また、インストール手順は本家のRiakのFive-Minute Installを参照しています。
libpam0g-dev
PAM認証のモジュール、APIのライブラリが詰まったもので、riakでは使ってるらしい。インストールしておかないとmakeがとおりませんでした。
ulimitってなーに?
ユーザがコマンドで使えるリソースを制限するものらしいです。
一時的に反映させる場合は、
ulimit -n 65536
と実行してあげると反映されます。
今回、このコマンドが上手く行かず、ulimit: value exceeds hard limitと言われたので他に別の設定が必要だったお話になります。
やることは、etc/security/limits.confにユーザーごとのhard制限を明記してあげることになります。
追加した行:
username hard nofile 65536 username soft nofile 65536
次に、/etc/pam.d/common-sessionに以下の行を追加しました。
session requrired pam_limits.so
再起動すると設定が反映されます。再起動後、riakを実行します。
riak start
もし、エラーが出たりして起動できない場合は何回もstartしてみてください。
何故か失敗するときと成功する時がありました。