Centos7でetcdを試す

参考

http://qiita.com/hana_shin/items/602f98bd9b153d22e50c

etcdとは

etcdとは、Kubernetesに使用されていることで有名な 分散型のKVSです。 クラスタに所属しているノード間でデータを同期させることが できる特性を活かし、Kubernetesでは 各サーバの保持するIPアドレスの相互伝達に使用されています。

概要

VirtualBox上のCentos7×2台に etcdを導入し、動作の確認を行ってみました。

環境

  • VirtualBox5.1.22r115126 on WIndows10
  • CentOS Linux release 7.3.1611 (Core)
  • etcd Version: 3.1.7

各ノードの情報

VirtuallBox上にCentOSVMを2台作成しました。

  • node1(CentOS Linux release 7.3.1611 (Core))

    • enp0s3(NAT IF) :10.0.2.101/24
    • enp0s8(HostOnlf IF):192.168.56.101/24
  • node2(CentOS Linux release 7.3.1611 (Core))

    • enp0s3(NAT IF) :10.0.2.107/24
    • enp0s8(HostOnlf IF):192.168.56.107/24

手順

etcdのインストール(node1)(node2)

#yum install etcd

設定ファイルの作成

各サーバが他のクラスタに属するサーバをディスカバリする方法として、

  • etcd.confの'ETCD_INITIAL_CLUSTER'にあらかじめ全てのサーバのIPを記載する
  • ディスカバリサーバを別に作成し、専用のURL/Tokenを発行し、それを使って ディスカバリする

の2つが存在しますが、ここでは前者の方法を使ってクラスタを構築します。

(node1)

[root@node1 ~]# cat /etc/etcd/etcd.conf |grep -v ^# |grep -v ^$
ETCD_NAME=node1
ETCD_DATA_DIR="/var/lib/etcd/default.etcd"
ETCD_LISTEN_PEER_URLS="http://192.168.56.101:2380"
ETCD_LISTEN_CLIENT_URLS="http://0.0.0.0:2379"
ETCD_INITIAL_ADVERTISE_PEER_URLS="http://192.168.56.101:2380"
ETCD_INITIAL_CLUSTER="node1=http://192.168.56.101:2380,node2=http://192.168.56.107:2380"
ETCD_INITIAL_CLUSTER_STATE="new"
ETCD_INITIAL_CLUSTER_TOKEN="etcd-cluster"
ETCD_ADVERTISE_CLIENT_URLS="http://192.168.56.101:2379"

(node)

[root@node2 ~]# cat /etc/etcd/etcd.conf |grep -v ^# |grep -v ^$
ETCD_NAME=node2
ETCD_DATA_DIR="/var/lib/etcd/default.etcd"
ETCD_LISTEN_PEER_URLS="192.168.56.107:2380"
ETCD_LISTEN_CLIENT_URLS="http://0.0.0.0:2379"
ETCD_INITIAL_ADVERTISE_PEER_URLS="http://192.168.56.107:2380"
ETCD_INITIAL_CLUSTER="node1=http://192.168.56.101:2380,node2=http://192.168.56.107:2380"
ETCD_INITIAL_CLUSTER_STATE="new"
ETCD_INITIAL_CLUSTER_TOKEN="etcd-cluster"
ETCD_ADVERTISE_CLIENT_URLS="http://192.168.56.107:2379"

etcdの起動(node1)(node2)

# systemctl enable etcd
# systemctl start etcd
# systemctl status etcd

etcdのバージョンの確認(node1)(node2)

# etcdctl --version
etcdctl version: 3.1.7
API version: 2

起動後の正常性確認

今回採用のディスカバリ方法の場合は相手ノードの2380番Portに接続できればディスカバリできるため、その接続性を確認します。

(node1)

自サーバにて、Port2380でlistenできているか確認

[root@node1 ~]# ss -natu | grep LISTEN | grep 2380
tcp    LISTEN     0      128    192.168.56.101:2380                  *:*

[root@node1 ~]# curl http://192.168.56.101:2380/version
{"etcdserver":"3.1.7","etcdcluster":"3.1.0"}[root@node1 ~]#

相手サーバへの接続性を確認

[root@node1 ~]# curl http://192.168.56.107:2380/version
{"etcdserver":"3.1.7","etcdcluster":"3.1.0"}[root@node1 ~]#

クラスタに相手サーバが組み込まれていることを確認

[root@node1 ~]# etcdctl member list
275f7358be9c56b9: name=node2 peerURLs=http://192.168.56.107:2380 clientURLs=http://192.168.56.107:2379 isLeader=false
ca933ab8cfffe553: name=node1 peerURLs=http://192.168.56.101:2380 clientURLs=http://192.168.56.101:2379 isLeader=true

(node2)

自サーバにて、Port2380でlistenできているか確認

[root@node2 ~]# ss -natu | grep LISTEN | grep 2380
tcp    LISTEN     0      128    192.168.56.107:2380       

[root@node2 ~]# curl http://192.168.56.107:2380/version
{"etcdserver":"3.1.7","etcdcluster":"3.1.0"}[root@node2 ~]#

相手サーバへの接続性を確認

[root@node2 ~]# curl http://192.168.56.101:2380/version
{"etcdserver":"3.1.7","etcdcluster":"3.1.0"}[root@node2 ~]#

クラスタに相手サーバが組み込まれていることを確認

[root@node2 ~]# etcdctl member list
275f7358be9c56b9: name=node2 peerURLs=http://192.168.56.107:2380 clientURLs=http://192.168.56.107:2379 isLeader=false
ca933ab8cfffe553: name=node1 peerURLs=http://192.168.56.101:2380 clientURLs=http://192.168.56.101:2379 isLeader=true

KVSに格納される値が同期されることを確認

(node1)

[root@node1 ~]# etcdctl --debug set os linux
start to sync cluster using endpoints(http://127.0.0.1:2379,http://127.0.0.1:4001)
cURL Command: curl -X GET http://127.0.0.1:2379/v2/members
got endpoints(http://192.168.56.101:2379,http://192.168.56.107:2379) after sync
Cluster-Endpoints: http://192.168.56.101:2379, http://192.168.56.107:2379
cURL Command: curl -X PUT http://192.168.56.101:2379/v2/keys/os -d "value=linux"
linux
[root@node1 ~]# etcdctl --debug get os
start to sync cluster using endpoints(http://127.0.0.1:2379,http://127.0.0.1:4001)
cURL Command: curl -X GET http://127.0.0.1:2379/v2/members
got endpoints(http://192.168.56.107:2379,http://192.168.56.101:2379) after sync
Cluster-Endpoints: http://192.168.56.107:2379, http://192.168.56.101:2379
cURL Command: curl -X GET http://192.168.56.107:2379/v2/keys/os?quorum=false&recursive=false&sorted=false
linux

(node2)

[root@node2 ~]# etcdctl --debug get os
start to sync cluster using endpoints(http://127.0.0.1:4001,http://127.0.0.1:2379)
cURL Command: curl -X GET http://127.0.0.1:4001/v2/members
cURL Command: curl -X GET http://127.0.0.1:2379/v2/members
got endpoints(http://192.168.56.101:2379,http://192.168.56.107:2379) after sync
Cluster-Endpoints: http://192.168.56.101:2379, http://192.168.56.107:2379
cURL Command: curl -X GET http://192.168.56.101:2379/v2/keys/os?quorum=false&recursive=false&sorted=false
linux

walログ

etcdはKVSに書き込まれた情報を随時、/var/lib/etcd配下のwalログ(write ahead log)に書き込んでいるようです。

[root@node2 ~]# ps aux | grep etcd
etcd      2614  2.5  3.2 10771728 33060 ?      Ssl  11:02   2:53 /usr/bin/etcd --name=node2 --data-dir=/var/lib/etcd/default.etcd --listen-client-urls=http://0.0.0.0:2379
root     10469  0.0  0.0 112664   960 pts/0    R+   12:56   0:00 grep --color=auto etcd

[root@node2 ~]# lsof -p 2614 | grep var
etcd    2614 etcd  cwd       DIR              253,0       26  8409202 /var/lib/etcd
etcd    2614 etcd  mem-W     REG              253,0 16805888  8409204 /var/lib/etcd/default.etcd/member/snap/db
etcd    2614 etcd    7uW     REG              253,0 16805888  8409204 /var/lib/etcd/default.etcd/member/snap/db
etcd    2614 etcd    8uW     REG              253,0 64000000 12920852 /var/lib/etcd/default.etcd/member/wal/0000000000000000-0000000000000000.wal
etcd    2614 etcd    9r      DIR              253,0       64 12920837 /var/lib/etcd/default.etcd/member/wal
etcd    2614 etcd   10wW     REG              253,0 64000000 12920851 /var/lib/etcd/default.etcd/member/wal/0.tmp

動作メモ

  • 2380番Portがサービスディスカバリ/ヘルスチェックに使用される
  • 2379番PortがClientコマンド(etcdctl)向けのAPI Endpointとして使用される
  • etcctlに' -debug'オプションをつけると実際に実行している、curlコマンドが見えるので実態が把握しやすい
  • DBデータは/var/lib/etcd配下に格納される。Clusterが壊れたときは、最悪ここを消して、etcdを上げなおせば起動可能

windowsでjavacが起動できない

環境

Windows10 jdk 1.8.0_112

問題

OracleのHPよりjavaをDLし、 CMDよりjavaプログラムをコンパイルしようとするが、 OSがjavacのパスを見つけられずエラーを返す

原因

JDKインストール時に自動的に設定されるシステム環境変数PATHが 適切に動作していない?

対処

以下の記事を参考に、既存のシステム環境変数を削除し、 jdkのbinのパスを追加

Javaの環境変数の設定 ( アプリ開発 ) - かじきの魚拓 - Yahoo!ブログ

cliで回線速度を測定する

Bash on windowsから、CLIで回線速度を気軽に測定したかったので、
speedtest-cliというpython製のツールを導入してみました。

インストール方法

$ sudo easy_install speedtest-cli

測定方法

$ speedtest
Retrieving speedtest.net configuration...
Retrieving speedtest.net server list...
Testing from test (192.0.2.0)...
Selecting best server based on latency...
Hosted by Cordeos Corp. (Tokyo) [24.11 km]: 100.449 ms
Testing download speed........................................
Download: 3.67 Mbit/s
Testing upload speed..................................................
Upload: 7.54 Mbit/s

WebブラウザをFirefox→Cyberfoxに乗り換え

最近、FirefoxでWebブラウジングしていてレスポンスの悪さに
イライラすることが多かったので、64bitで動作するCyberfoxに乗り換えました。
今の所、軽快に動作しているように見えます。
これでしばらく様子を見てみようと思います。

Cyberfox - タブブラウザ推奨委員会

Excel2010×Windows10で複数のファイルを別ウィンドウで開く

概要

Excel2008/2010ですと、複数のExcelファイルを開いた際に 同一のウィンドウ内に展開される仕様となっているのですが、 Alt + tab での切り替えができず面倒なので、 別ウィンドウで開くよう設定変更を行います。

環境

  • Windows10
  • Excel2010

参考サイト

Microsoft公式(Windows7用と書いてあったがWindows10でも動作する模様) https://support.microsoft.com/en-us/kb/2636670

ファイルをダブルクリックしてからアプリが起動するまで via アプリ仮想化奉行 http://tunemicky.blogspot.jp/2011/11/blog-post.html

手順

※作業前のバックアップ推奨!

1.regedit起動

2.HKEY_CLASSES_ROOT -> Excel.Sheet.12 -> shell -> OPEN -> commandの(規定)キーの値を変更

変更前:"C:\Program Files (x86)\Microsoft Office\Office14\EXCEL.EXE" /dde
変更後:"C:\Program Files (x86)\Microsoft Office\Office14\EXCEL.EXE" “%1”

3.HKEY_CLASSES_ROOT -> Excel.Sheet.12 -> shell -> OPEN -> commandの(command)キーの値を変更

変更前:xb'BV5!!!!!!!!!MKKSkEXCELFiles>VijqBof(Y8'w!FId1gLQ /dde
変更後:xb'BV5!!!!!!!!!MKKSkEXCELFiles>VijqBof(Y8'w!FId1gLQ “%1"  

4.HKEY_CLASSES_ROOT -> Excel.Sheet.12 -> shell -> OPEN -> ddeexecを ddeexec2にリネーム

kindleのハイライトがamazon.co.jpで表示されない

kindleのハイライトがamazonのwebページからまとめて確認できるという情報を聞き、
早速アマゾンのJPサイトに行ってみたのですが(kindle.amazon.co.jp)表示されません。

しばらく原因を調べていたのですが、どうやら
USアカウントを先に作っていて、
その後、JPアカウントを作成&結合している場合は、
USサイト(kindle.amazon.com)からの確認が必要だったようです。

その後、USサイトにて確認できることを確認しました。

他サイト様の情報に感謝です~。
risa.hatenablog.com

Windows10のメモリ圧縮機能(Memory Compression)について

タスクマネージャの動きを見ていたら見慣れないプロセスを発見。
使われていないメモリ領域をキャッシュする代わりに圧縮する機能らしい。
(従来のページングも今まで通り動く様子。ページングの頻度を減らすのが意図?)

以下の記事によると、起動していることでパフォーマンスに大きな影響を与えるわけではないので、
4GB以下のメモリを使用の人は有効にしておいてokとの事。
時間があればちゃんと調べたいのですが。。

www.makeuseof.com