TARGET=linux-glibc \
USE_OPENSSL=1 \
USE_ZLIB=1 \
USE_PCRE=1 \
USE_SYSTEMD=1 && \
make install PREFIX=/usr/local/haproxy
echo ‘net.ipv4.ip_nonlocal_bind = 1’ >> /etc/sysctl.conf
echo ‘net.ipv4.ip_forward = 1’ >> /etc/sysctl.conf
sysctl -p
mkdir /usr/local/haproxy/conf
echo ‘local0.* /var/log/haproxy.log’ >> /etc/rsyslog.conf
yum -y remove gcc gcc-c++ make
rm -rf /usr/src/* /var/cache/*
//编写开启脚本
[root@localhost ~]# cat haproxy/entrypoint.sh
#!/bin/bash
cat > /usr/local/haproxy/conf/haproxy.cfg << EOF
#--------------全局配置----------------
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
#---------------------------------------------------------------------
#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
EOF
count=1
for rs_ip in $(cat /tmp/RSs.txt);do
cat >> /usr/local/haproxy/conf/haproxy.cfg << EOF
server web$count $rs_ip:80 check inter 2000 fall 5
EOF
let count++
done
haproxy -f /usr/local/haproxy/conf/haproxy.cfg -db
//构建haproxy镜像
[root@localhost ~]# docker build -t 1314444/haproxy:v0.1 haproxy
Sending build context to Docker daemon 3.604MB
Step 1/10 : FROM centos
—> 5d0da3dc9764
Step 2/10 : LABEL MAINTAINER=‘1314444 123@qq.com’
—> Using cache
—> a8b67caa2102
Step 3/10 : ENV version 2.4.0
—> Using cache
—> c48a871bda67
Step 4/10 : ENV PATH /usr/local/haproxy/sbin:$PATH
—> Using cache
—> df0ccbe70aba
Step 5/10 : COPY files /usr/src/
—> Using cache
—> a8b7c9abce9e
Step 6/10 : COPY entrypoint.sh /
—> Using cache
—> 1cd3b00edf13
Step 7/10 : RUN [“/bin/bash”,“-c”,“/usr/src/install.sh”]
—> Using cache
—> 89c76dd3e051
Step 8/10 : EXPOSE 80 8189
—> Using cache
—> af832f2ffd4a
Step 9/10 : WORKDIR /usr/local/haproxy
—> Using cache
—> 66adeda8f354
Step 10/10 : ENTRYPOINT [“/entrypoint.sh”]
—> Using cache
—> f50226955caa
Successfully built f50226955caa
Successfully tagged 1314444/haproxy:v0.1
//查看镜像
[root@localhost ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
1314444/haproxy v0.1 f50226955caa 3 minutes ago 381MB
//基于新镜像创建haproxy容器
[root@localhost ~]# docker run -d --name haproxy -p 80:80 -p 8189:8189 -v /haproxy_config/:/tmp 1314444/haproxy:v0.1
9bfc78e5dc8c30892f46beb6599d8e4a79843c107310a1ca892d3eea1bd54258
[root@localhost ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
504afeb4a2e3 nginx “/docker-entrypoint.…” 24 minutes ago Up 24 minutes 80/tcp web2
94447b9531c3 httpd “httpd-foreground” 24 minutes ago Up 24 minutes 80/tcp web1
9bfc78e5dc8c 1314444/haproxy:v0.1 “/entrypoint.sh” 23 seconds ago Up 22 seconds 0.0.0.0:80->80/tcp, :::80->80/tcp, 0.0.0.0:8189->8189/tcp, :::8189->8189/tcp haproxy
[root@localhost ~]# docker exec -it haproxy /bin/bash
[root@9bfc78e5dc8c haproxy]# pwd
/usr/local/haproxy
[root@9bfc78e5dc8c haproxy]# ss -anlt
State Recv-Q Send-Q Local Address:Port Peer Address:Port Process
LISTEN 0 128 0.0.0.0:8189 0.0.0.0:*
LISTEN 0 128 0.0.0.0:80 0.0.0.0:*
**用户:admin
密码:admin**
http://IP:8189/haproxy_stats
上传镜像仓库
[root@localhost ~]# docker login
Authenticating with existing credentials…
WARNING! Your password will be stored unencrypted in /root/.docker/config.json.
Configure a credential helper to remove this warning. See
https://docs.docker.com/engine/reference/commandline/login/#credentials-store
Login Succeeded
[root@localhost ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
1314444/haproxy v0.1 f50226955caa 2 hours ago 381MB
[root@localhost ~]# docker push 1314444/haproxy:v0.1
The push refers to repository [docker.io/1314444/haproxy]
888b23fa1cd4: Pushed
1454c74ea402: Pushed
e573f0878e77: Pushed
74ddd0ec08fa: Mounted from 1314444/httpd
v0.1: digest: sha256:92fb4f3019f78407e6af14ea3f3f7873c5b2dbca1f13ef837ed325220707ce23 size: 1159
基于Alpine 编写Haproxy的Dockerfile(精简版)
=================================================================================================
//创建dockerfile文件目录以及脚本文件
[root@localhost ~]# mkdir -p haproxy/files
[root@localhost ~]# ls haproxy/
files
[root@localhost ~]# touch haproxy/Dockerfile
[root@localhost ~]# touch haproxy/files/install.sh
[root@localhost ~]# touch haproxy/entrypoint.sh
//项目结构
[root@localhost ~]# tree haproxy/
haproxy/
|-- Dockerfile
|-- entrypoint.sh
`-- files
|-- haproxy-2.4.0.tar.gz
`-- install.sh
1 directory, 4 files
//添加脚本权限
[root@localhost ~]# chmod +x haproxy/entrypoint.sh
[root@localhost ~]# chmod +x haproxy/files/install.sh
[root@localhost ~]# ls -l haproxy/entrypoint.sh
-rwxr-xr-x. 1 root root 1624 Dec 12 18:21 haproxy/entrypoint.sh
[root@localhost ~]# ls -l haproxy/files/install.sh
-rwxr-xr-x. 1 root root 1032 Dec 12 18:16 haproxy/files/install.sh
//创建两台装容器(一台httpd,一台nginx,用来测试)
[root@localhost ~]# docker run --name web1 -d httpd
e84f1c748e99d47bbf856a5403ec1cb3bb301e6a98daaa0d1e32f786699823a1
[root@localhost ~]# docker inspect web05
“Gateway”: “172.17.0.2”,
“IPAddress”: “172.17.0.3”,
“IPPrefixLen”: 16,
“IPv6Gateway”: “”,
“GlobalIPv6Address”: “”,
“GlobalIPv6PrefixLen”: 0,
“MacAddress”: “02:42:ac:11:00:05”,
“DriverOpts”: null
}
}
}
}
]
[root@localhost ~]# docker run --name web2 -d nginx
4d9789e30cacde1baa2bbe45d9141a085dc8e7213bb0ee7c33712dd8a645088b
[root@localhost ~]# docker inspect web06
“IPAddress”: “172.17.0.4”,
“IPPrefixLen”: 16,
“IPv6Gateway”: “”,
“GlobalIPv6Address”: “”,
“GlobalIPv6PrefixLen”: 0,
“MacAddress”: “02:42:ac:11:00:06”,
“DriverOpts”: null
}
}
}
}
]
//测试一下
[root@localhost ~]# curl 172.17.0.3
It works!
[root@localhost ~]# curl 172.17.0.4
Welcome to nginx!
If you see this page, the nginx web server is successfully installed and
working. Further configuration is required.
For online documentation and support please refer to
Commercial support is available at
Thank you for using nginx.
//编写dockerfile
[root@localhost ~]# cat haproxy/Dockerfile
FROM alpine
LABEL MAINTAINER=‘1314444 123@qq.com’
ENV version 2.4.0
ENV PATH /usr/local/haproxy/sbin:$PATH
COPY files/ /tmp/
COPY entrypoint.sh /
RUN /tmp/install.sh
EXPOSE 80 8189
WORKDIR /usr/local/haproxy
ENTRYPOINT [“/entrypoint.sh”]
//编写安装脚本
[root@localhost ~]# cat haproxy/files/install.sh
#!/bin/sh
sed -i ‘s/dl-cdn.alpinelinux.org/mirrors.aliyun.com/’ /etc/apk/repositories
apk update
adduser -S -H -s /sbin/nologin haproxy
addgroup haproxy
apk add --no-cache -U make gcc pcre-dev bzip2-dev openssl-dev elogind-dev libc-dev dahdi-tools dahdi-tools-dev libexecinfo libexecinfo-dev ncurses-dev zlib-dev zlib
cd /tmp/
tar xf haproxy-${version}.tar.gz
cd haproxy-${version}
make clean
make -j $(nproc) \
TARGET=linux-musl \
USE_OPENSSL=1 \
USE_ZLIB=1 \
USE_PCRE=1 && \
make install PREFIX=/usr/local/haproxy
echo ‘net.ipv4.ip_nonlocal_bind = 1’ >> /etc/sysctl.conf
echo ‘net.ipv4.ip_forward = 1’ >> /etc/sysctl.conf
mkdir /usr/local/haproxy/conf
apk del gcc make
rm -rf /tmp/* /var/cache/*
//编写开启脚本
[root@localhost ~]# cat haproxy/entrypoint.sh
#!/bin/sh
cat > /usr/local/haproxy/conf/haproxy.cfg << EOF
#--------------全局配置----------------
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
#---------------------------------------------------------------------
#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
自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。
深知大多数Java工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!
因此收集整理了一份《2024年Java开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Java开发知识点,真正体系化!
由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!
如果你觉得这些内容对你有帮助,可以扫码获取!!(备注Java获取)
![img](https://img-blog.csdnimg.cn/img_convert/b631f50a7d9fab5b57d1d5e297c45851.jpeg)
最后
由于篇幅有限,这里就不一一罗列了,20道常见面试题(含答案)+21条MySQL性能调优经验小编已整理成Word文档或PDF文档
还有更多面试复习笔记分享如下
《一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码》,点击传送门即可获取!
轻大家的负担。**[外链图片转存中…(img-bOq05Dds-1711934114129)]
[外链图片转存中…(img-3g7aHM3W-1711934114130)]
[外链图片转存中…(img-YSBRgbCZ-1711934114130)]
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Java开发知识点,真正体系化!
由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!
如果你觉得这些内容对你有帮助,可以扫码获取!!(备注Java获取)
![img](https://img-blog.csdnimg.cn/img_convert/b631f50a7d9fab5b57d1d5e297c45851.jpeg)
最后
由于篇幅有限,这里就不一一罗列了,20道常见面试题(含答案)+21条MySQL性能调优经验小编已整理成Word文档或PDF文档
[外链图片转存中…(img-ttv9DIq0-1711934114130)]
还有更多面试复习笔记分享如下
[外链图片转存中…(img-dDywL3Qj-1711934114131)]
《一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码》,点击传送门即可获取!