1、部署docker2
下载docker-compose二进制文件文件
mv docker-compose-Linux-x86_64-1.22.0 /usr/local/bin/ 移动到当前路径
ln -s /usr/local/bin/docker-compose-Linux-x86_64-1.22.0 /usr/local/bin/docker-compose 给一个短一点的名字,用起来方便
chmod +x /usr/local/bin/docker-compose给一个执行全权限
docker-compose -v 查看版本是否匹配
2、编写yum文件
[root@docker2 ~]# mkdir compose
[root@docker2 ~]# cd compose/
[root@docker2 compose]# vim docker-compose.yml
[root@docker2 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
volumes:
- ./haproxy/haproxy.cfg:/usr/local/etc/haproxy/haproxy.cfg:ro
links:
- web1
- web2
ports:
- "80:80"
expose:
- "80"
3、拉取镜像
cd compose
ls
docker-compose.ym.
docker-compose pull 在拉取镜像的时候需要联网,并且会从当前的docker-compose.yml文件中读取需要拉去的镜像,做了阿里的镜像加速器就会很快
导入镜像:
docker load -i nginx
docker load -i haproxy
编写测试页面
[root@docker2 ~]# cd compose/
[root@socker2 compose]# mkdir web1
[root@socekr2 compose]# mkdir web2
[root@docker2 compose]# echo web1 > web1/index.html
[root@docker2 compose]# echo web2 > web2/index.html
4、配置haproxy负载均衡
[root@socker2 compose]# mkdir haproxy
[root@docker2 compose]# cd haproxy/
[root@docker2 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会在监控界面上显示
5、测试
开启docker-compose
[root@docker2 compose]# pwd
/root/compose
[root@docker2 compose]# ls
docker-compose.yml haproxy web1 web2
[root@docker2 compose]#
[root@docekr2 compose]# docker-compose up -d 执行的时候当前目录下边必须有.yml文件、
compose_web2_1 is up-to-date
compose_web1_1 is up-to-date
Starting compose_haproxy_1 ... done
6、测试:先结束掉一个容器,查看监控,然后再开起来,看监控
也可访问查看页面
访问:http://172.25.27.2
访问:http://172.25.27.2/status 查看监控
docker-compose ls
docker-compose ps 查看容器
docker-compose logs 查看日志