More Related Content Similar to Sakura no-yuube-20140327 Similar to Sakura no-yuube-20140327 (20) More from Kunihiro TANAKA More from Kunihiro TANAKA (7) Sakura no-yuube-201403273. • 名前 :田中邦裕(たなかくにひろ)
• 年齢 :36歳
• 出身 :大阪(今も一応、大阪在住)
• 趣味
• プログラミング
– 計算機科学方面ではなく、何かを動かすのが好き
• 電子工作
– ラジオからAVR(マイコン)まで
• DTM
– SC-55を皮切りにパソ通などにアップしていた
• 旅行&鉄道
– 北海道から沖縄まで国内専門、あと乗り鉄
• アニメ
– 人並み程度に視聴
3
@kunihirotanaka
http://facebook.com/kunihirotanaka
11. 11
1996年 京都府舞鶴市にて創業
1998年 大阪市中央区へ移転
1999年 株式会社化、東京支社開設
大阪・東京へIDCを新設
2005年 東証マザーズへ上場
2011年 石狩IDCを新設
商 号 さくらインターネット株式会社
本 社 所 在 地 大阪市中央区南本町一丁目8番14号
設 立 年 月 日
1999年8月17日
(サービス開始は1996年12月23日)
取 締 役
代表取締役 社長 田中 邦裕
取締役 副社長 舘野 正明
取締役 川田 正貴
取締役 村上 宗久
取締役(社外) 野村 昌雄
上 場 年 月 日 2005年10月12日(東証マザーズ)
決 算 3月末日
資 本 金 8億9,530万円
従 業 員 数 225名
1996年からサービスを行う
データセンター・ホスティングの老舗です
13. 13
(金額:百万円)
科目名
‘13/3期 ’14/3期 前四半期比
Q1 Q2 Q3 Q4 Q1 Q2 Q3 増減額 増減率
ハウジング 760 757 786 805 793 776 716 ▲59 ▲7.7%
構成比 32.5% 32.5% 33.2% 33.0% 32.1% 31.3% 28.3%
専用サーバ 751 729 686 688 679 656 644 ▲12 ▲1.8%
構成比 32.1% 31.3% 29.0% 28.2% 27.5% 26.5% 25.4%
レンタルサーバ 463 475 489 504 517 537 548 10 1.9%
構成比 19.8% 20.4% 20.7% 20.7% 20.9% 21.7% 21.6%
VPS・クラウド 143 155 200 232 260 286 319 33 11.8%
構成比 6.2% 6.7% 8.5% 9.5% 10.5% 11.5% 12.6%
その他 221 212 207 210 222 221 305 84 37.9%
構成比 9.4% 9.1% 8.7% 8.6% 9.0% 8.9% 12.1%
中でも、VPS・クラウドは高い伸び
54. 54
REST形式でアクセス可能で、/server/ならサーバ一覧など、
直観的なAPIアクセスを実現。
$ curl --user “APIKEY":“SECRET" https://secure.sakura.ad.jp/cloud/zone/is1a/api/cloud/1.1/server/
Index":0,"ID":"112400226821","Name":"gitu30b5u30fcu30d01","HostName":"localhost","Description":"","ServiceClass":"clou
d/plan/1","CreatedAt":"2012-05-07T00:19:44+09:00“,"Icon":{"ID":"112500078923",
"URL":"https://secure.sakura.ad.jp/cloud/zone/is1a/api/cloud/1.1/icon/112500078923.png","Name":"u30cdu30b3",
"Sc
$ curl --user “APIKEY":“SECRET" -H 'X-Sakura-API-Beautify:1' https://secure.sakura.ad.jp/cloud/zone/is1a/api/cloud/1.1/server/
"From": 0,
"Count": 29,
"Total": 29,
"Servers": [
{
"Index": 0,
"ID": "112400226821",
"Name": "gitu30b5u30fcu30d01",
"HostName": "localhost“,
55. 55
$ sudo ~/.nave/nave.sh usemain stable
[sudo] password for tanaka:
######################################################################## 100.0%
installed from binary
$ sudo npm install -g sacloud
$ sacloud config --apiRoot="https://secure.sakura.ad.jp/cloud/zone/is1a/api/cloud/1.1/"
/home/tanaka/.sacloudcfg.json:
{
"apiRoot": "https://secure.sakura.ad.jp/cloud/zone/is1a/api/cloud/1.1/"
}
$ sacloud config --accessToken=APIKEY --accessTokenSecret=SECRET
/home/tanaka/.sacloudcfg.json:
{
"apiRoot": "https://secure.sakura.ad.jp/cloud/zone/is1a/api/cloud/1.1/",
"accessToken": “APIKEY",
"accessTokenSecret": “SECRET"
}
$ sacloud show server
GET https://secure.sakura.ad.jp/cloud/zone/is1a/api/cloud/1.1/server.json?{} -> 200 OK (1/1) ~1.539sec
+--------------+--------------------+--------+---------------------+
| id | name | status | created at |
+--------------+--------------------+--------+---------------------+
| 112400226821 | gitサーバ1 | up | 2012-05-07 00:19:44 |
+--------------+--------------------+--------+---------------------+
| 112500271369 | www2 | up | 2013-06-20 00:27:33 |
+--------------+--------------------+--------+---------------------+
| 112400258152 | rp1 | up | 2012-05-28 15:35:11 |
56. 56
$ sacloud show server --csv
id,name,status,created at
112400226821,gitサーバ1,up,2012-05-07 00:19:44
112500271369,www2,up,2013-06-20 00:27:33
112400258152,rp1,up,2012-05-28 15:35:11
112500271375,www1,up,2013-06-20 00:29:42
112500271998,www3,up,2013-06-20 06:58:37
112500272024,www4,up,2013-06-20 07:09:54
$ sacloud show server --tsv
id name status created at
112400226821 gitサーバ1 up 2012-05-07 00:19:44
112500271369 www2 up 2013-06-20 00:27:33
112400258152 rp1 up 2012-05-28 15:35:11
112500271375 www1 up 2013-06-20 00:29:42
112500271998 www3 up 2013-06-20 06:58:37
112500272024 www4 up 2013-06-20 07:09:54
57. 57
$ sacloud show server --json
[{
"requestInfo": {
"time": 1393585261726,
"method": "GET",
"url": "https://secure.sakura.ad.jp/cloud/zone/is1a/api/cloud/1.1/server.json?{}",
"path": "server"
},
"request": {},
"responseInfo": {
"time": 1393585262494,
"latency": 768,
"length": 55217,
"serial": "b63869571cb83144b68dc73e8d7ed9fe",
"status": 200,
"statusText": "OK",
"type": "resources",
"key": "servers"
},
"response": {
"from": 0,
"count": 29,
"total": 29,
"servers": [
68. 68
10/25 – アプリケーションの修正
1/15 – DBサーバーにセキュリティパッチ適用
Server 4
アプリサー
バ
Server 5
アプリサー
バ
Server 3
DBサーバ
ロード
バランサー
Server 4
アプリサー
バ
Server 5
アプリサー
バ
Server 6
DBサーバ
古い環境
現行環境
DBサーバにパッチをあてるべくServer6を立ち上げ
69. 69
10/25 – アプリケーションの修正
1/15 – DBサーバーにセキュリティパッチ適用
Server 4
アプリサー
バ
Server 5
アプリサー
バ
Server 3
DBサーバ
3/1 – アプリサーバの設定変更&増設(予定)
ロード
バランサー
Server 4
アプリサー
バ
Server 5
アプリサー
バ
Server 6
DBサーバ
Server 8
アプリサー
バ
Server 9
アプリサー
バ
Server 6
DBサーバ
Server 7
アプリサー
バ
古い環境
現行環境
新しい環境
新しい環境をつくり、テストを開始
70. 1/15 – DBサーバーにセキュリティパッチ適用
70
3/1 – アプリサーバの設定変更&増設
ロード
バランサー
Server 4
アプリサー
バ
Server 5
アプリサー
バ
Server 6
DBサーバ
Server 8
アプリサー
バ
Server 9
アプリサー
バ
Server 6
DBサーバ
Server 7
アプリサー
バ
現行環境
どんどん、新しい環境へ切り替えて、古い環境は捨てる
古い環境
77. 77
$ sudo wget -P /etc/yum.repos.d http://www.hop5.in/yum/el6/hop5.repo
$ sudo yum install xz docker-io -y
CentOS 6.5からDockerをサポートしたので、
ワンタッチでインストール可能
78. 78
$ sudo wget -P /etc/yum.repos.d http://www.hop5.in/yum/el6/hop5.repo
$ sudo yum install xz docker-io -y
$ sudo service docker start
Starting cgconfig service: [ OK ]
Starting docker: [ OK ]
$
service docker startでDockerが起動される
79. 79
$ sudo docker run –i –t centos /bin/bash
docker runすると、新しいコンテナが作られ、
引数で指定されたコマンドが実行される
TTYを利用できるように
する
コンテナの標準入力を
有効にする
80. 80
$ sudo docker run –i –t centos /bin/bash
bash-4.1# ps aux
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 1 0.1 0.0 11304 1584 ? S 07:22 0:00 /bin/bash
root 8 0.0 0.0 13364 1060 ? R+ 07:22 0:00 ps aux
docker runすると、新しいコンテナが作られ、
引数で指定されたコマンドが実行される
引数で指定したコマンドが
PID=1として実行される
81. 81
$ sudo docker run –i –t centos /bin/bash
bash-4.1# ps aux
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 1 0.1 0.0 11304 1584 ? S 07:22 0:00 /bin/bash
root 8 0.0 0.0 13364 1060 ? R+ 07:22 0:00 ps aux
bash-4.1# hostname
7749f193be9c
bash-4.1# ifconfig
eth0 Link encap:Ethernet HWaddr A6:B8:BE:38:82:F3
inet addr:172.17.0.2 Bcast:0.0.0.0 Mask:255.255.0.0
inet6 addr: fe80::a4b8:beff:fe38:82f3/64 Scope:Link
引数で指定したコマンドが
PID=1として実行される
コンテナのIDが
ホスト名として付与される
ホスト側と異なる
IPアドレスが付与される
docker runすると、新しいコンテナが作られ、
引数で指定されたコマンドが実行される
82. 82
$ sudo docker run –i –t centos /bin/bash
bash-4.1# ps aux
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 1 0.1 0.0 11304 1584 ? S 07:22 0:00 /bin/bash
root 8 0.0 0.0 13364 1060 ? R+ 07:22 0:00 ps aux
bash-4.1# hostname
7749f193be9c
bash-4.1# ifconfig
eth0 Link encap:Ethernet HWaddr A6:B8:BE:38:82:F3
inet addr:172.17.0.2 Bcast:0.0.0.0 Mask:255.255.0.0
inet6 addr: fe80::a4b8:beff:fe38:82f3/64 Scope:Link
~略~
bash-4.1# exit
$
コンテナがexitされると、そのコンテナは
破棄される
引数で指定したコマンドが
PID=1として実行される
コンテナのIDが
ホスト名として付与される
ホスト側と異なる
IPアドレスが付与される
85. 85
$ sudo docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORT NAMES
7749f193be9c centos /bin/bash 3 hours ago Exit 0 naughty_feynman
ec2a32c5673d centos /bin/bash 8 hours ago Exit 1 pensive_curie6
9f83a9a94849 centos /bin/bash 8 hours ago Exit 1 thirsty_lumiere
6db258573742 centos /bin/bash 8 hours ago Exit 0 suspicious_mclean
終了したコンテナのデータは、明示的に削除
しない限り、残されている
86. 86
$ sudo docker commit 7749f193be9c centos:test
9f96c865d261b982cc2266b5cfba0af39da57111b53b476a9179a3be2a475966
$ sudo docker images
REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE
centos test 9f96c865d261 23 seconds ago 599.5 MB
終了したコンテナをコミットすると、
イメージ化されて、docker runさせることがで
きる
新しいイメージに付与する
タグを指定
94. 94
$ git clone https://github.com/kunihirotanaka/docker-centos-lamp.git
Initialized empty Git repository in /home/tanaka/docker-centos-
lamp/.git/
remote: Counting objects: 32, done.
remote: Compressing objects: 100% (24/24), done.
remote: Total 32 (delta 11), reused 26 (delta 8)
Unpacking objects: 100% (32/32), done.
$ cd docker-centos-lamp/
$ ls
Dockerfile README.md monit.conf monit.mysqld monit.td-agent
td.repo
LICENSE authorized_keys monit.httpd monit.sshd td-agent.conf
Dockerfileという定義ファイルを取得する
95. 95
Dockerfileを編集
FROM centos
MAINTAINER Kunihiro Tanaka
ENV IP __YOUR_IP_ADDRESS_HERE__
ENV PW __YOUR_PASSWORD_HERE__
ENV LOGSERVER __YOUR_LOG_SERVER_HERE__
FROM centos
MAINTAINER Kunihiro Tanaka
ENV IP 192.168.50.3
ENV PW Jhd30Kwj
ENV LOGSERVER logserver.example.jp
Dockerfile変更前 Dockerfile変更例
96. 96
$ sudo docker build -t centos:lamp .
~略~
Successfully built c94a7828a3a9
$ sudo docker images
[sudo] password for tanaka:
REPOSITORY TAG IMAGE ID CREATED
VIRTUAL SIZE
centos lamp c94a7828a3a9 About a minute ago 1.156
docker buildを実行
けっこう時間かかります。
新しく作成される
イメージに付与するタグ
97. 97
$ sudo docker run -d -t -p 12812:2812 -p 10080:80 -p 10022:22 ¥
centos:lamp /usr/bin/monit –I
65d63382ebac74066290024a096fc291cf054435e1d10331ee1a03ac7e5e0c65
先ほどのDockerイメージからmonitを起動す
る。
monitに-Iオプションで、フォアグラウンド実
行。
-dはデーモンとして
バックグラウンド実行させる
-pはポート転送
98. 98
$ sudo docker run -d -t -p 12812:2812 -p 10080:80 -p 10022:22 ¥
centos:lamp /usr/bin/monit –I
65d63382ebac74066290024a096fc291cf054435e1d10331ee1a03ac7e5e0c65
$ sudo docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
65d63382ebac b3f874bbbd97 /usr/bin/monit -I 49 seconds ago Up 48
seconds 0.0.0.0:10022->22/tcp, 0.0.0.0:10080->80/tcp, 0.0.0.0:12812-
>2812/tcp prickly_lovelace
docker psすると、monitが実行されていること
が
確認できる