diff --git a/docker-build/haproxy/dockerfile b/docker-build/haproxy/dockerfile new file mode 100644 index 0000000000000000000000000000000000000000..0af4ab1331a9e78898f1db536866c174d9aa0d7c --- /dev/null +++ b/docker-build/haproxy/dockerfile @@ -0,0 +1,30 @@ +FROM centos:7.7.1908 + +ENV TIME_ZOME Asia/Shanghai +ENV LANG=zh_CN.utf8 + +ADD run.sh /usr/local +COPY haproxy.cfg /usr/local/haproxy/etc/ +RUN yum -y install gcc gcc-c++ make glibc glibc-devel pcre pcre-devel \ + openssl openssl-devel systemd-devel zip unzip zlib zlib-devel git rsyslog\ + && rm -rf /etc/localtime \ + && ln -sf /usr/share/zoneinfo/${TIME_ZOME} /etc/localtime \ + && yum -y install kde-l10n-Chinese \ + && yum -y reinstall glibc-common \ + && localedef -c -f UTF-8 -i zh_CN zh_CN.utf8 \ + && echo "LANG="zh_CN.utf8"" > /etc/locale.conf \ + && source /etc/locale.conf \ + && yum clean all \ + && mkdir -p /usr/local/src/ \ + && cd /usr/local/src \ + && git clone --branch v2.4.0 https://github.com/haproxy/haproxy.git \ + && cd /usr/local/src/haproxy \ + && make ARCH=x86_64 TARGET=linux-glibc 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/ \ + && chmod 777 /usr/local/run.sh + +EXPOSE 80 443 +CMD ["/usr/local/run.sh"] + diff --git a/docker-build/haproxy/haproxy.cfg b/docker-build/haproxy/haproxy.cfg new file mode 100644 index 0000000000000000000000000000000000000000..ca21b8b8b9752161e34a6560a8a35e31bd4cc255 --- /dev/null +++ b/docker-build/haproxy/haproxy.cfg @@ -0,0 +1,52 @@ + +global + maxconn 100 + log 127.0.0.1 local0 + +defaults + log global + mode tcp + retries 2 + timeout client 30m + timeout connect 4s + timeout server 30m + timeout check 5s + +listen stats + mode http + bind *:7000 + stats enable + stats uri / + +listen opengauss + bind *:5000 + option httpchk + http-check expect status 200 + default-server inter 3s fall 3 rise 2 on-marked-down shutdown-sessions + # server opengauss_ip0_port0 ip0:port0 maxconn 100 check port 8008 + # server opengauss_ip1_port1 ip1:port1 maxconn 100 check port 8008 + # server opengauss_ip2_port2 ip2:port2 maxconn 100 check port 8008 + # server opengauss_ip3_port3 ip3:port3 maxconn 100 check port 8008 + # server opengauss_ip4_port4 ip4:port4 maxconn 100 check port 8008 + # server opengauss_ip5_port5 ip5:port5 maxconn 100 check port 8008 + # server opengauss_ip6_port6 ip6:port6 maxconn 100 check port 8008 + # server opengauss_ip7_port7 ip7:port7 maxconn 100 check port 8008 + # server opengauss_ip8_port8 ip8:port8 maxconn 100 check port 8008 + +listen opengauss_balance + bind *:5001 + mode tcp + option tcplog + balance roundrobin + option httpchk OPTIONS /replica + http-check expect status 200 + default-server inter 3s fall 3 rise 2 on-marked-down shutdown-sessions + # server opengauss_ip0_port0 ip0:port0 maxconn 100 check port 8008 inter 5000 rise 2 fall 2 + # server opengauss_ip1_port1 ip1:port1 maxconn 100 check port 8008 inter 5000 rise 2 fall 2 + # server opengauss_ip2_port2 ip2:port2 maxconn 100 check port 8008 inter 5000 rise 2 fall 2 + # server opengauss_ip3_port3 ip3:port3 maxconn 100 check port 8008 inter 5000 rise 2 fall 2 + # server opengauss_ip4_port4 ip4:port4 maxconn 100 check port 8008 inter 5000 rise 2 fall 2 + # server opengauss_ip5_port5 ip5:port5 maxconn 100 check port 8008 inter 5000 rise 2 fall 2 + # server opengauss_ip6_port6 ip6:port6 maxconn 100 check port 8008 inter 5000 rise 2 fall 2 + # server opengauss_ip7_port7 ip7:port7 maxconn 100 check port 8008 inter 5000 rise 2 fall 2 + # server opengauss_ip8_port8 ip8:port8 maxconn 100 check port 8008 inter 5000 rise 2 fall 2 diff --git a/docker-build/haproxy/readme.md b/docker-build/haproxy/readme.md new file mode 100644 index 0000000000000000000000000000000000000000..537d6be7687c2573784d7fde22612659994c4c6d --- /dev/null +++ b/docker-build/haproxy/readme.md @@ -0,0 +1,22 @@ +haproxy镜像构建 + +在当前目录中执行下面的命令用于构建haproxy镜像 + +``` +docker build -t haproxy:1.0.0 -f dockerfile . +``` + +haproxy进行单独运行示例 + +对应一主三备 + +``` +docker run --name haproxy_1_master_3_slaves --network opengaussnetwork -p 7000:7000 -p 5000:5000 -p 5001:5001 -d -e ips="173.11.0.101,173.11.0.102,173.11.0.103,173.11.0.104" -e ports="5432,5432,5432,5432" haproxy:1.0.0 +``` + +进入镜像里面 + +``` +docker exec -it haproxy_1_master_3_slaves /bin/bash +``` + diff --git a/docker-build/haproxy/run.sh b/docker-build/haproxy/run.sh new file mode 100644 index 0000000000000000000000000000000000000000..33ab190263cec6fca1a4f445cf3204423f31f719 --- /dev/null +++ b/docker-build/haproxy/run.sh @@ -0,0 +1,32 @@ +#!/bin/bash + +# modified haproxy.cfg file +temp_ip=$ips +temp_port=$ports +ip_arr=(${temp_ip//,/ }) +port_arr=(${temp_port//,/ }) +for i in "${!ip_arr[@]}"; +do + sed -i "/"ip$i"/s/# //g" /usr/local/haproxy/etc/haproxy.cfg + sed -i "s/"ip$i"/${ip_arr[$i]}/g" /usr/local/haproxy/etc/haproxy.cfg + sed -i "s/port$i/${port_arr[$i]}/g" /usr/local/haproxy/etc/haproxy.cfg +done + +# modified rsyslog.conf file + +#delete journal config +rm -rf /etc/rsyslog.d/listen.conf +sed -i 's/$ModLoad imjournal/\#ModLoad imjournal/' /etc/rsyslog.conf +sed -i 's/IMJournalStateFile imjournal.state/\#IMJournalStateFile imjournal.state/' /etc/rsyslog.conf +sed -i 's/OmitLocalLogging on/OmitLocalLogging off/' /etc/rsyslog.conf + +sed -i 's/\#$ModLoad imudp/$ModLoad imudp/' /etc/rsyslog.conf +sed -i 's/\#$UDPServerRun 514/$UDPServerRun 514/' /etc/rsyslog.conf +echo "local0.* /var/log/haproxy.log" >> /etc/rsyslog.conf + +sed -i 's/SYSLOGD_OPTIONS=\"\"/SYSLOGD_OPTIONS=\"-c 2 -r -m 0\"/' /etc/sysconfig/rsyslog + +# start rsyslogd +rsyslogd +haproxy -f /usr/local/haproxy/etc/haproxy.cfg +tail -f /usr/local/haproxy/etc/haproxy.cfg