dockerfile部署haproxy

dockerfile部署haproxy

1. 目录结构

[root@localhost haproxy]# tree 
.
├── Dockerfile
└── files
    ├── haproxy-2.5.0.tar.gz
    ├── install.sh
    └── variable.sh

2. 目录内容

[root@localhost haproxy]# cat Dockerfile 
FROM centos

LABEL MAINTAINER jjyy 1@2.com
ENV PATH /usr/local/haproxy/sbin:$PATH
COPY files /usr/src

RUN /usr/src/install.sh
CMD sh /usr/src/variable.sh $ip1 $ip2
EXPOSE 8189 80
WORKDIR /usr/local/haproxy


[root@localhost files]# cat install.sh 
rm -rf /etc/yum.repos.d/*
curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-$(awk -F '"' 'NR==5{print $2}' /etc/os-release).repo
sed -i -e '/mirrors.cloud.aliyuncs.com/d' -e '/mirrors.aliyuncs.com/d' /etc/yum.repos.d/CentOS-Base.repo
yum cleall
yum makecache

echo "alias ls='ls --color'" >> ~/.bashrc 
if test -f ~/.bashrc;then
	source ~/.bashrc
fi

yum -y install make gcc pcre-devel bzip2-devel openssl-devel systemd-devel
useradd -r -M -s /sbin/nologin haproxy
cd /usr/src
tar xf haproxy-2.5.0.tar.gz
cd haproxy-2.5.0
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 && \
echo 'net.ipv4.ip_nonlocal_bind = 1' >>  /etc/sysctl.conf
echo 'net.ipv4.ip_forward = 1' >> /etc/sysctl.conf
sysctl -p

mkdir /etc/haproxy
cat > /usr/lib/systemd/system/haproxy.service <<EOF
[Unit]
Description=HAProxy Load Balancer
After=syslog.target network.target
 
[Service]
ExecStartPre=/usr/local/haproxy/sbin/haproxy -f /etc/haproxy/haproxy.cfg   -c -q   
ExecStart=/usr/local/haproxy/sbin/haproxy -Ws -f /etc/haproxy/haproxy.cfg  -p /var/run/haproxy.pid
ExecReload=/bin/kill -USR2 \$MAINPID
 
[Install]
WantedBy=multi-user.target
EOF


yum -y remove gcc gcc-c++ make
rm -rf /var/cache/* /usr/src/*


[root@localhost files]# cat variable.sh 
#!/bin/bash
mkdir -p /etc/haproxy
cat >> /etc/haproxy/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
#下面两行改为rs1和rs2的IP地址
    server web01 ${ip1} check inter 2000 fall 5
    server web02 ${ip2} check inter 2000 fall 5
EOF

/usr/local/haproxy/sbin/haproxy -f /etc/haproxy/haproxy.cfg

// 构建镜像
[root@localhost haproxy]# docker build -t haproxy:v2.0 .
[root@localhost haproxy]# docker run -itd -p 82:80 -e ip1=172.17.0.2 -e ip2=172.17.0.3 --name haproxy haproxy:v2.0 /bin/bash

// 启动容器
[root@localhost haproxy]# docker run -itd -p 82:80 -e ip1=172.17.0.2 -e ip2=172.17.0.3 --name haproxy haproxy:v2.0 /bin/bash

// 启动一个apache和nginx容器
[root@localhost haproxy]# docker ps 
CONTAINER ID   IMAGE          COMMAND        CREATED         STATUS         PORTS                                         NAMES
219b4fe67100   haproxy:v2.0   "/bin/bash"    4 minutes ago   Up 4 minutes   8189/tcp, 0.0.0.0:82->80/tcp, :::82->80/tcp   haproxy
6b1d9f2e95fd   nginx:v1.0     "/sbin/init"   13 hours ago    Up 3 hours     0.0.0.0:8080->80/tcp, :::8080->80/tcp         nginx
2eaf3c89658c   76086db2dd52   "/sbin/init"   2 days ago      Up 3 hours     0.0.0.0:80->80/tcp, :::80->80/tcp, 443/tcp    web03

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在Kubernetes中部署HAProxy是为了实现负载均衡和高可用性。根据提供的引用内容,以下是部署HAProxy的步骤: 1. 准备服务器节点:根据引用\[1\]中的信息,需要准备三个服务器节点,分别是node1、node2和node3,它们的IP地址分别是192.168.0.145、192.168.0.200和192.168.0.233。这些节点都运行着Centos 7.9操作系统,并安装了HAProxy 2.6.1版本。 2. 安装部署HAProxy:根据引用\[2\]中的信息,需要在服务器节点上安装并启动HAProxy服务。可以使用以下命令进行安装和启动: ``` systemctl enable haproxy systemctl start haproxy ``` 3. 配置负载均衡:HAProxy将通过8443端口提供负载均衡服务。根据引用\[3\]中的信息,访问192.168.0.110:8443的请求将会被自动负载均衡到192.168.0.200:6443和192.168.0.145:6443中的任何一台服务上。 4. 检查服务状态:可以使用以下命令检查HAProxy服务的状态: ``` systemctl status haproxy ``` 这样,你就成功地在Kubernetes中部署HAProxy,并实现了负载均衡功能。 #### 引用[.reference_title] - *1* *2* *3* [K8S安装过程三:HAProxy负载均衡服务安装](https://blog.csdn.net/hzwy23/article/details/128084300)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值