栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 前沿技术 > 大数据 > 大数据系统

基于Dockerfile制作haproxy镜像

基于Dockerfile制作haproxy镜像

基于Dockerfile制作haproxy镜像

工作目录

[root@docker haproxy]# tree
.
├── Dockerfile
└── files
    ├── haproxy-2.5.0.tar.gz
    ├── install.sh
    └── sysctl.conf

编写Dockerfile文件

[root@docker haproxy]# vim Dockerfile 
FROM centos

LABEL MAINTAINER 'sun 123@abc.com'

ENV version 2.5.0
ADD files/haproxy-${version}.tar.gz /usr/src/
ADD files/install.sh /tmp
ADD files/sysctl.conf /etc/

RUN ["/bin/bash","-c","/tmp/install.sh"]

EXPOSE 80
WORKDIR /usr/local/haproxy
CMD ["/usr/local/haproxy/sbin/haproxy","-f","/etc/haproxy/haproxy.cfg"]

[root@docker haproxy]# vim files/install.sh
#!/bin/bash 
  
rm -rf /etc/yum.repos.d/*
curl -o /etc/yum.repos.d/CentOS-base.repo https://mirrors.aliyun.com/repo/Centos-$(awk -F'"' 'NR==2{print $2}' /etc/os-release).repo
yum -y install make gcc pcre-devel bzip2-devel openssl-devel systemd-devel
useradd -r -M -s /sbin/nologin haproxy
cd /usr/src/haproxy-${version}
make clean 
make -j $(grep 'processor' /proc/cpuinfo |wc -l)  
TARGET=linux-glibc  
USE_OPENSSL=1  
USE_ZLIB=1  
USE_PCRE=1  
USE_SYSTEMD=1  
make install PREFIX=/usr/local/haproxy && 
cp /usr/local/haproxy/sbin/haproxy  /usr/sbin/  && 
yum -y remove make gcc gcc-c++ && 
rm -rf /usr/src/haproxy-${version}
[root@docker haproxy]# chmod +x files/install.sh

宿主机上提供haproxy配置文件

[root@docker haproxy]# mkdir /etc/haproxy
[root@docker haproxy]# vim /etc/haproxy/haproxy.cfg
#--------------全局配置----------------
global
    log 127.0.0.1 local0  info
    #log loghost local0 info
    maxconn 20480
#chroot /usr/local/haproxy
    pidfile /var/run/haproxy.pid
    #maxconn 4000
    user haproxy
    group haproxy
    #daemon				//注释掉daemon即让haproxy在前台运行
#---------------------------------------------------------------------
#common defaults that all the 'listen' and 'backend' sections will
#use if not designated in their block
#---------------------------------------------------------------------
defaults
    mode http
    log global
    option dontlognull
    option httpclose
    option httplog
    #option forwardfor
    option redispatch
    balance roundrobin
    timeout connect 10s
    timeout client 10s
    timeout server 10s
    timeout check 10s
    maxconn 60000
    retries 3
#--------------统计页面配置------------------
listen admin_stats
    bind 0.0.0.0:8189
    stats enable
    mode http
    log global
    stats uri /haproxy_stats
    stats realm Haproxy Statistics
    stats auth admin:admin
    #stats hide-version    
    stats admin if TRUE
    stats refresh 30s
#---------------web设置-----------------------
listen webcluster
    bind 0.0.0.0:80
    mode http
    #option httpchk GET /index.html
    log global
    maxconn 3000
    balance roundrobin
    cookie SESSION_cookie insert indirect nocache
    server web01 172.17.0.3:80 check inter 2000 fall 5
    server web02 172.17.0.4:80 check inter 2000 fall 5
    #server web01 192.168.80.102:80 cookie web01 check inter 2000 fall 5

提供sysctl.conf文件

[root@docker haproxy]# vim files/sysctl.conf
net.ipv4.ip_nonlocal_bind = 1
net.ipv4.ip_forward = 1

制作镜像

[root@docker haproxy]# docker build -t 93quan/haproxy:v0.1
[root@docker haproxy]# docker images
REPOSITORY       TAG       IMAGE ID       CREATED          SIZE
93quan/haproxy   v0.1      9c861854d0b6   15 minutes ago   434MB
93quan/httpd     v4        7ed12c597e0c   2 days ago       701MB
centos           latest    5d0da3dc9764   2 months ago     231MB

创建容器测试

[root@docker haproxy]# docker run -it --name test -v /etc/haproxy:/etc/haproxy -P --rm 93quan/haproxy:v0.1
[root@docker ~]# docker ps -a
ConTAINER ID   IMAGE                 COMMAND                  CREATED          STATUS          PORTS     NAMES
d3a51d120254   93quan/haproxy:v0.1   "/usr/local/haproxy/…"   16 seconds ago   Up 16 seconds 80/tcp    test
[root@docker ~]# docker port test
80/tcp -> 0.0.0.0:49158
80/tcp -> :::49158

用不同的index.html运行两个httpd容器进行测试

[root@docker ~]# mkdir -p test/{html1,html2}
[root@docker ~]# vim test/html1/index.html
this web1
[root@docker ~]# vim test/html2/index.html
this web2
[root@docker ~]# docker run -d -v /root/test/html1:/usr/local/apache/htdocs --name web1 93quan/httpd:v4 
f62359e35f1a7e9c4bf9613e3a04524c41535f3e5aac638325f7452302994878
[root@docker ~]# docker run -d -v /root/test/html2:/usr/local/apache/htdocs --name web2 93quan/httpd:v4 
be5d63cbc02dcbd16b789cf2dfeca374756562a8c64b3fd6581edcb07b30dd2c
[root@docker ~]# docker ps
ConTAINER ID   IMAGE             COMMAND                  CREATED          STATUS          PORTS     NAMES
be5d63cbc02d   93quan/httpd:v4   "/usr/local/apache/b…"   3 seconds ago    Up 3 seconds    80/tcp    web2
f62359e35f1a   93quan/httpd:v4   "/usr/local/apache/b…"   13 seconds ago   Up 12 seconds   80/tcp    web1
[root@docker ~]# curl 172.17.0.2
this web1
[root@docker ~]# curl 172.17.0.3
this web2

使用刚刚创建的haproxy镜像启动容器

[root@docker ~]# vim /etc/haproxy/haproxy.cfg 
...
    server web01 172.17.0.2:80 check inter 2000 fall 5		//改成刚刚两个容器的IP
    server web02 172.17.0.3:80 check inter 2000 fall 5		
[root@docker ~]# docker run -d -p 80:80 -p 8189:8189 -v /etc/haproxy:/etc/haproxy --name haproxy 93quan/haproxy:v0.1 
ddce0db8d38361a5dac0d5c61cae57bcbab27163b120f5f56d77d9fdffff9434
[root@docker ~]# docker ps 
ConTAINER ID   IMAGE                 COMMAND                  CREATED          STATUS         PORTS                                                                          NAMES
ddce0db8d383   93quan/haproxy:v0.1   "/usr/local/haproxy/…"   10 seconds ago   Up 9 seconds   0.0.0.0:80->80/tcp, :::80->80/tcp, 0.0.0.0:8189->8189/tcp, :::8189->8189/tcp   haproxy
be5d63cbc02d   93quan/httpd:v4       "/usr/local/apache/b…"   4 minutes ago    Up 4 minutes   80/tcp                                                                         web2
f62359e35f1a   93quan/httpd:v4       "/usr/local/apache/b…"   4 minutes ago    Up 4 minutes   80/tcp  

浏览器访问测试

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/653739.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号