319 | | 詳しくは[[ここ|https://docs.docker.com/swarm/install-manual/]]に書いてある。 |
| 319 | 詳しくは[ここ https://docs.docker.com/swarm/install-manual/]に書いてある。構成は、次のような構成を考えておく。 |
| 320 | |
| 321 | {{{ |
| 322 | swarm consul swarm consul swarm |
| 323 | manager server join agent join |
| 324 | +------------------------+ +---------------------+ |
| 325 | | DockerHost1 | | DockerHost2 | ... |
| 326 | | 192.168.100.1 | | 192.168.100.2 | |
| 327 | | 管理ノード&Dockerホスト| | Dockerホスト | |
| 328 | +------------------------+ +---------------------+ |
| 329 | }}} |
| 330 | |
| 331 | DockerHost1は管理ノード兼Dockerホスト、DockerHost2はDockerホストとする。管理ノードをDockerホストとして利用しないのであれば、DockerHost1上のswarm joinは不要。 |
| 332 | |
| 333 | |
| 334 | == 事前準備 |
| 346 | === VMコピー時の注意 |
| 347 | |
| 348 | VMをコピーしてDockerホストを複数作成すると正しくクラスタに登録できない。 |
| 349 | /etc/docker/key.jsonファイルでDockerは自身のIDを識別するようになっている。 |
| 350 | VMをコピーしてDockerホストを作成した場合、下記のように、キーを削除して |
| 351 | Dockerを再起動する。 |
| 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 | |
| 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 | }}} |