Changes between Version 33 and Version 34 of linux/docker


Ignore:
Timestamp:
2016/01/01 12:09:52 (9 years ago)
Author:
yuna
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • linux/docker

    v33 v34  
    317317= Swarmの設定 
    318318 
    319 詳しくは[[ここ|https://docs.docker.com/swarm/install-manual/]]に書いてある。 
     319詳しくは[ここ https://docs.docker.com/swarm/install-manual/]に書いてある。構成は、次のような構成を考えておく。 
     320 
     321{{{ 
     322swarm    consul  swarm      consul  swarm 
     323manager  server  join       agent   join 
     324+------------------------+  +---------------------+ 
     325| DockerHost1            |  | DockerHost2         |   ... 
     326| 192.168.100.1          |  | 192.168.100.2       | 
     327| 管理ノード&Dockerホスト|  | Dockerホスト        | 
     328+------------------------+  +---------------------+ 
     329}}} 
     330 
     331DockerHost1は管理ノード兼Dockerホスト、DockerHost2はDockerホストとする。管理ノードをDockerホストとして利用しないのであれば、DockerHost1上のswarm joinは不要。 
     332 
     333 
     334== 事前準備 
    320335 
    321336最初にクラスタのトークンを作成する。 
     
    329344以下、ノードを起動する際には、上記のトークンを利用するので、メモしておく。 
    330345 
     346=== VMコピー時の注意 
     347 
     348VMをコピーしてDockerホストを複数作成すると正しくクラスタに登録できない。 
     349/etc/docker/key.jsonファイルでDockerは自身のIDを識別するようになっている。 
     350VMをコピーしてDockerホストを作成した場合、下記のように、キーを削除して 
     351Dockerを再起動する。 
     352 
     353{{{ 
     354# rm /etc/docker/key.json 
     355# service docker restart 
     356}}} 
     357 
     358== 管理ノード(consulサーバの起動) 
     359 
     360次のようなconsule-server.jsonファイルを作成し、consulサーバを起動する。 
     361{{{ 
     362{ 
     363  "datacenter": "docker", 
     364  "addresses" : { 
     365    "http": "0.0.0.0" 
     366  }, 
     367  "bind_addr": "192.168.100.1", 
     368  "node_name": "dockerhost1", 
     369  "domain": "consul", 
     370  "server": true, 
     371  "bootstrap_expect": 1, 
     372  "data_dir": "/var/lib/consul" 
     373} 
     374}}} 
     375 
     376{{{ 
     377# mkdir -p /var/log/consul 
     378# consul agent -config-file consul-server.json  >> /var/log/consul/consul.log 
     379}}} 
     380 
    331381== 各ノードの設定 
     382 
     383=== Consulクライアントの設定 
     384 
     385次のようなconsule-client.jsonファイルを作成し、consulエージェントを起動する。bind_addrには、Dockerホストの各IPを設定する。 
     386(consulサーバを起動したノードでは実行しないので注意!)a 
     387{{{ 
     388{ 
     389  "datacenter": "docker", 
     390  "addresses" : { 
     391    "http": "0.0.0.0" 
     392  }, 
     393  "bind_addr": "192.168.100.2", 
     394  "node_name": "dockerhost2", 
     395  "domain": "consul", 
     396  "retry_join": [ "192.168.100.1"], 
     397  "server": false, 
     398  "data_dir": "/var/lib/consul" 
     399} 
     400}}} 
     401 
     402{{{ 
     403# mkdir -p /var/log/consul 
     404# consul agent -config-file consul-client.json  >> /var/log/consul/consul.log 
     405}}} 
    332406 
    333407/etc/default/dockerに下記の設定を追加しホストの2375ポートを 
    334408コンテナにバインドできるようにする。 
    335409{{{ 
    336 DOCKER_OPTS="-H tcp://0.0.0.0:2375 -H unix:///var/run/docker.sock" 
     410DOCKER_OPTS="--cluster-store=consul://localhost:8500 --cluster-advertise=192.168.100.1:2376 -H tcp://0.0.0.0:2375 -H unix:///var/run/docker.sock" 
    337411}}} 
    338412 
     
    349423}}} 
    350424 
    351 == クラスタマネージャの設定 
     425== 管理ノード(クラスタマネージャの設定) 
    352426 
    353427管理ノードで下記のコマンドを実行し、クラスタマネージャを起動する。 
     
    387461}}} 
    388462 
    389 == トラブルシューティング 
    390  
    391 VMをコピーしてDockerホストを複数作成すると正しくクラスタに登録できない。 
    392 /etc/docker/key.jsonファイルでDockerは自身のIDを識別するようになっている。 
    393 VMをコピーしてDockerホストを作成した場合、下記のように、キーを削除して 
    394 Dockerを再起動する。 
    395  
    396 {{{ 
    397 # rm /etc/docker/key.json 
    398 # service docker restart 
    399 }}} 
    400