ドッカーが三層、エンジニアリング(プロジェクト)、サービス(サービス)とコンテナ(contaienr)に分け、管理コンテナを作曲します。すべてのファイル(ドッキングウィンドウ-compose.ymlなどのファイルや環境変数ファイルを、拡張)ディレクトリドッカー作曲は、プロジェクトを実行している、特別なことなく、指定されたプロジェクト名は、現在のディレクトリの名前です。複数のサービスを含むことができるプロジェクトは、定義された各画像のコンテナが実行は、依存パラメータ。複数のコンテナインスタンスを含むことができ、サービスは、ドッカー作曲は、負荷分散の問題を解決していないので、他のツールの必要性は、サービスの発見とロードバランシングを実現します。
ドッカー作曲は、マルチ容器のアプリケーションを作成して実行するために使用するツールです。まず、あなたは、複数の容器との間の関係だけでなく、サービスを記述して、コンフィギュレーション・コマンドに応じて、すべてのコンテナを開始するために作曲作曲ファイルを使用して記述する必要があります。
Dockerfileコンテナを定義し、容器を含む相互接続複数のアプリケーションを定義することができるテンプレートファイル(YAML形式)を構成してもよいです。我々はドッカーのAPIの実装を学びます以下の実験に基づいて、Pythonのプロジェクトで書かれて構成します。
実験環境
物理マシン(テスト):172.25.66.250
SERVER1:172.25.66.1
負荷分散ビルドhaproxy
I.準備nginxのミラー、ミラーhaproxy
。以上の2コンテナアーキテクチャの展開
1.ダウンロード関連のバイナリドッキングウィンドウ-作曲:ドッキングウィンドウ-コン-のLinux-x86_64-1.22.0を 、 作曲および展開
1.文書のドッキングウィンドウ-構成-のLinux-x86_64-1.22.0はへ/ usr / local / binディレクトリの下に、と名前が-ドッキングウィンドウコン、そしてそれを実行権限を与えるように変更されました。直撃ドッキングウィンドウ-コンを指揮できるようにするには
[root@server1 ~]# mv docker-compose-Linux-x86_64-1.22.0 /usr/local/bin/
[root@server1 ~]# ln -s /usr/local/bin/docker-compose-Linux-x86_64-1.22.0 /usr/local/bin/docker-compose
[root@server1 ~]# chmod +x /usr/local/bin/docker-compose-Linux-x86_64-1.22.0
[root@server1 ~]# ll /usr/local/bin/docker-compose
lrwxrwxrwx 1 root root 49 Jun 13 00:13 /usr/local/bin/docker-compose -> /usr/local/bin/docker-compose-Linux-x86_64-1.22.0
2. [編集]ドッキングウィンドウ-compose.ymlファイル
[root@server1 ~]# mkdir -p /mnt/docker/compose
[root@server1 ~]# cd /mnt/docker/compose/
[root@server1 compose]# vim docker-compose.yml
[root@server1 compose]# cat docker-compose.yml
web1:
image: nginx
expose:
- 80
volumes:
- ./web1:/usr/share/nginx/html
web2:
image: nginx
expose:
- 80
volumes:
- ./web2:/usr/share/nginx/html
haproxy:
image: haproxy:latest
volumes:
- ./haproxy/haproxy.cfg:/usr/local/etc/haproxy/haproxy.cfg:ro
links:
- web1
- web2
ports:
- "80:80"
expose:
- "80"
2.テスト用のWebページを書きます
[root@server1 compose]# pwd
/mnt/docker/compose
[root@server1 compose]# mkdir web1
[root@server1 compose]# mkdir web2
[root@server1 compose]# echo web1 > web1/index.html
[root@server1 compose]# echo web2 > web2/index.html
3.負荷分散を設定するには
[root@server1 compose]# mkdir haproxy
[root@server1 compose]# cd haproxy/
[root@server1 haproxy]# vim haproxy.cfg
global #全局设置
log 127.0.0.1 local0 #日志输出设置,所有日志都记录在本机,通过local0输出
log 127.0.0.1 local1 notice #定义haproxy日志级别[error warringinfo debug]
defaults #默认设置
log global #引用全局的日志配置
mode http #所处理的类别,默认采用http模式,可配置称tcp作4层消息转发
option httplog #启用日志记录HTTP请求,默认haproxy日志记录是不记录HTTP请求日志的
option dontlognull #启用该项,日志中将不记录空连接。所谓空连接就是在上游的负载均衡器或者监控系统是为了探测该服务是否存活可用时,需要定期的连接或者获取某一固定的组件或页面,或者探测扫描端口是否在监听或开放等动作被称为空连接;官方文档中标注,如果该服务上游没有其他的负载均衡器的话,建议不要使用该参数,因为互联网上的恶意扫描或其他动作就不会被记录下来。
timeout connect 5000ms #haproxy和服务端建立连接的最大时长,其实设置为1秒就足够了。局域网内建立连接一般都是瞬间的
timeout client 50000ms #haproxy和客户端保持空闲连接的超时时长,在高并发下可稍微短一点,可设置为5秒以尽快释放连接
timeout server 50000ms #haproxy和服务端保持空闲连接的超时时长,局域网内建立连接很快,所以尽量设置短一些,特别是并发时如设置为1-3秒
stats uri /status #访问监控界面的uri
frontend balancer #frontend前端设置
bind 0.0.0.0:80 #这里建议使用0.0.0.0:80或*:80的方式,要不然做集群高可用的时候有问题,vip切换到其他机器就不能访问了。
default_backend web_backends #定义一个web_backends前端部分。此处将对应的请求转发给后端
backend web_backends
balance roundrobin #使用RR负载均衡算法(#banlance roundrobin 轮循,banlance source 保存session值,支持static-rr,leastconn,first,uri等参数)
server web1 web1:80 check #其中web1会在监控界面上显示
server web2 web2:80 check #其中web2会在监控界面上显示
4、ドッキングウィンドウ-COMPOSEを開く(注値は以下のとおりです。ドッカ-コンコマンドの実装、ディレクトリの下に、あなたは、ドッキングウィンドウ-compose.ymlファイルを持っている必要があります)
[root@server1 compose]# pwd
/mnt/docker/compose
[root@server1 compose]# ls
docker-compose.yml haproxy web1 web2
[root@server1 compose]# docker-compose up -d #第一次开启服务需要up,再次直接start、stop
Creating compose_web2_1 ... done
Creating compose_web1_1 ... done
Creating compose_haproxy_1 ... done
[root@server1 compose]# docker-compose logs
Attaching to compose_haproxy_1, compose_web1_1, compose_web2_1
haproxy_1 | <7>haproxy-systemd-wrapper: executing /usr/local/sbin/haproxy -p /run/haproxy.pid -f /usr/local/etc/haproxy/haproxy.cfg -Ds
Viewは3コンテナ開け
5.テストのロードバランシング
ステータスを表示するには、ブラウザを