构建haporxy镜像
- 构建出 haproxy 镜像,将 haproxy 通过容器的方式运行。
准备Dockerfile文件
//确定工作目录
pwd
/opt/dockerfile/web/tomcat/tomcat-app2
//编写Dockerfile文件
vim Dockerfile
#Haproxy Base Image
#
FROM centos-base:v1
LABEL sunxiaobo "952098151@qq.com"
RUN yum -y install gcc gcc-c++ glibc glibc-devel pcre pcre-devel openssl openssl-devel systemd-devel net-tools vim iotop bc zip unzip zlib-devel lrzsz tree screen lsof tcpdump wget ntpdate
ADD haproxy-2.0.12.tar.gz /usr/local/src/
RUN cd /usr/local/src/haproxy-2.0.12 && make ARCH=x86_64 TARGET=linuxglibc USE_PCRE=1 USE_OPENSSL=1 USE_ZLIB=1 USE_SYSTEMD=1 USE_CPU_AFFINITY=1 PREFIX=/usr/local/haproxy && make install PREFIX=/usr/local/haproxy && cp haproxy /usr/sbin/ && mkdir /usr/local/haproxy/run
ADD haproxy.cfg /etc/haproxy/
ADD start_haproxy.sh /usr/bin
EXPOSE 80 9999
CMD ["/usr/bin/start_haproxy.sh"]
准备haproxy源码和配置文件
//确定工作目录
pwd
/opt/dockerfile/web/haporx
--------------------------------
//查看目录结构
tree
.
├── build-command.sh
├── Dockerfile
├── haproxy-2.0.12.tar.gz
├── haproxy.cfg
└── start_haproxy.sh
0 directories, 5 files
准备haporxy配置文件
//确定工作目录
pwd
/opt/dockerfile/web/haporxy
//编写haproxy.fcg文件
vim haproxy.fcg
global
#maxconn 100000
chroot /usr/local/haproxy
#stats socket /var/lib/haproxy/haproxy.sock mode 600 level admin
#user haproxy
#group haproxy
daemon
nbproc 1
#cpu-map 1 0
#cpu-map 2 1
#cpu-map 3 2
#cpu-map 4 3
pidfile /usr/local/haproxy/run/haproxy.pid
log 127.0.0.1 local3 info
defaults
option http-keep-alive
option forwardfor
#maxconn 100000
mode http
timeout connect 300000ms
timeout client 300000ms
timeout server 300000ms
listen stats
mode http
bind 0.0.0.0:9999
stats enable
log global
stats uri /haproxy-status
stats auth bokebi:960201
listen web_port
bind 0.0.0.0:80
mode http
log global
balance roundrobin
server web1 192.168.26.208:8080 check inter 3000 fall 2 rise 5
server web2 192.168.26.209:8080 check inter 3000 fall 2 rise 5
准备tomcat启动执行脚本
//确定工作目录
pwd
/opt/dockerfile/web/haporxy
//创建启动脚本
vim run_haproxy.sh
#!/bin/bash
/usr/local/haproxy/sbin/haproxy -f /etc/haproxy/haproxy.cfg
tail -f /etc/hosts
准备镜像构建脚本
//确定工作目录
pwd
/opt/dockerfile/web/haporxy
//创建构建脚本
vim build-command.sh
#!/bin/bash
docker build -t centos-haporxy:2.0.12 .
执行构建haporxy镜像
从镜像启动容器
//启动容器,注意不用指定shell环境
docker run --rm -it -p 80:80 -p 9999:9999 centos-haporxy:2.0.12
web访问验证
- 浏览器访问http://192.168.26.207/linux39/
访问haporxy控制端
-
下图中 web2 服务器,需要将 tomcat 镜像从镜像服务器把 tomcat 镜像导出,然后 scp 到 web2 服务器,然后导入镜像,最后通过镜像启动一个容器并监听本机的 8080 端口即可,否则 web2 服务器状态显示异常。
-
浏览器访问http://192.168.26.207:9999/haproxy-status