fix keepalive error in config file
This commit is contained in:
parent
d3279e9214
commit
11851b3bb9
36
Dockerfile
36
Dockerfile
|
|
@ -1,19 +1,35 @@
|
||||||
FROM alpine:latest
|
FROM alpine:latest
|
||||||
|
#FROM ubuntu:latest
|
||||||
|
|
||||||
# tested alpine : 3.19
|
RUN apk --update -t add \
|
||||||
# keepalived : https://pkgs.alpinelinux.org/package/edge/community/armhf/keepalived
|
|
||||||
|
|
||||||
RUN apk update \
|
|
||||||
&& apk upgrade \
|
|
||||||
&& apk add --no-cache \
|
|
||||||
keepalived \
|
keepalived \
|
||||||
curl \
|
curl \
|
||||||
ca-certificates \
|
ca-certificates \
|
||||||
|
iproute2 \
|
||||||
|
grep \
|
||||||
|
bash \
|
||||||
|
tcpdump \
|
||||||
|
tini \
|
||||||
|
sed \
|
||||||
&& update-ca-certificates \
|
&& update-ca-certificates \
|
||||||
&& rm -rf /var/cache/apk/* \
|
&& rm -rf /var/cache/apk/* /tmp/* \
|
||||||
&& keepalived --version
|
&& keepalived --version
|
||||||
|
|
||||||
COPY keepalived.sh /etc/keepalived/keepalived.sh
|
# RUN apt update \
|
||||||
RUN chmod +x /etc/keepalived/keepalived.sh; chown root:root /etc/keepalived/keepalived.sh
|
# && apt install -y keepalived vim curl ca-certificates \
|
||||||
|
# && update-ca-certificates \
|
||||||
|
# && rm -rf /var/cache/apk/* /tmp/* \
|
||||||
|
# && keepalived --version
|
||||||
|
|
||||||
CMD ["/usr/sbin/keepalived", "--dont-fork", "--dump-conf", "--vrrp", "--log-detail", "--log-console"]
|
COPY run.sh /usr/local/bin/
|
||||||
|
COPY keepalived.tmpl /etc/keepalived/
|
||||||
|
|
||||||
|
ENTRYPOINT ["/sbin/tini", "--"]
|
||||||
|
CMD ["run.sh"]
|
||||||
|
|
||||||
|
#RUN chmod 644 /etc/keepalived/keepalived.conf; chown root:root /etc/keepalived/keepalived.conf
|
||||||
|
# COPY keepalived.sh /etc/keepalived/keepalived.sh
|
||||||
|
# RUN chmod 755 /etc/keepalived/keepalived.sh; chown root:root /etc/keepalived/keepalived.sh
|
||||||
|
|
||||||
|
#ENTRYPOINT ["/usr/sbin/keepalived", "--dont-fork", "--dump-conf", "--vrrp", "--log-detail", "--log-console"]
|
||||||
|
#CMD ["/usr/sbin/keepalived", "--dont-fork", "--dump-conf", "--vrrp", "--log-detail", "--log-console", "-f","/etc/keepalived/keepalived.conf"]
|
||||||
|
|
@ -1,41 +0,0 @@
|
||||||
global_defs {
|
|
||||||
#Hostname will be used by default
|
|
||||||
router_id master_node
|
|
||||||
#vrrp_version 2
|
|
||||||
#vrrp_garp_master_delay 1
|
|
||||||
#vrrp_garp_master_refresh 60
|
|
||||||
#Uncomment the next line if you'd like to use unique multicast groups
|
|
||||||
#vrrp_mcast_group4 224.0.0.{{VRID}}
|
|
||||||
#script_user root
|
|
||||||
#enable_script_security
|
|
||||||
}
|
|
||||||
|
|
||||||
vrrp_script chk_haproxy {
|
|
||||||
script "/etc/keepalived/keepalived.sh"
|
|
||||||
timeout 1
|
|
||||||
interval 1 # check every 1 second
|
|
||||||
fall 2 # require 2 failures for KO
|
|
||||||
rise 2 # require 2 successes for OK
|
|
||||||
}
|
|
||||||
|
|
||||||
vrrp_instance VI_1 {
|
|
||||||
state MASTER
|
|
||||||
interface eth0
|
|
||||||
virtual_router_id 51
|
|
||||||
priority 100
|
|
||||||
advert_int 1
|
|
||||||
nopreempt #Prevent fail-back
|
|
||||||
|
|
||||||
track_script {
|
|
||||||
chk_haproxy
|
|
||||||
}
|
|
||||||
|
|
||||||
authentication {
|
|
||||||
auth_type PASS
|
|
||||||
auth_pass 1111
|
|
||||||
}
|
|
||||||
|
|
||||||
virtual_ipaddress {
|
|
||||||
192.168.0.247
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
@ -0,0 +1,20 @@
|
||||||
|
vrrp_instance VI__routerid_ {
|
||||||
|
state _state_
|
||||||
|
priority _priority_
|
||||||
|
|
||||||
|
interface _interface_
|
||||||
|
virtual_router_id _routerid_
|
||||||
|
|
||||||
|
advert_int 2
|
||||||
|
|
||||||
|
unicast_peer {
|
||||||
|
}
|
||||||
|
|
||||||
|
authentication {
|
||||||
|
auth_type PASS
|
||||||
|
auth_pass _password_
|
||||||
|
}
|
||||||
|
|
||||||
|
virtual_ipaddress {
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,73 @@
|
||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
# 환경변수 설정
|
||||||
|
if [ -z "${KEEPALIVED_ROUTER_ID}" ] || [ -z "${KEEPALIVED_UNICAST_PEERS}" ] || [ -z "${KEEPALIVED_VIRTUAL_IPS}" ]; then
|
||||||
|
echo "Error: Variables 'KEEPALIVED_ROUTER_ID' or 'KEEPALIVED_UNICAST_PEERS' or 'KEEPALIVED_VIRTUAL_IPS' is not specified!"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ -z "${KEEPALIVED_STATE}" ]; then
|
||||||
|
export KEEPALIVED_STATE="BACKUP"
|
||||||
|
fi
|
||||||
|
if [ -z "${KEEPALIVED_PRIORITY}" ] && [ "${KEEPALIVED_STATE^^}" == "BACKUP" ]; then
|
||||||
|
export KEEPALIVED_PRIORITY="$(($RANDOM%199))"
|
||||||
|
fi
|
||||||
|
if [ -z "${KEEPALIVED_PRIORITY}" ] && [ "${KEEPALIVED_STATE^^}" == "MASTER" ]; then
|
||||||
|
export KEEPALIVED_PRIORITY="200"
|
||||||
|
fi
|
||||||
|
if [ -z "${KEEPALIVED_INTERFACE}" ]; then
|
||||||
|
export KEEPALIVED_INTERFACE="eth0"
|
||||||
|
fi
|
||||||
|
if [ -z "${KEEPALIVED_PASSWORD}" ]; then
|
||||||
|
export KEEPALIVED_PASSWORD="P@ssw0rd"
|
||||||
|
fi
|
||||||
|
|
||||||
|
# 구성 파일 설정
|
||||||
|
cp -f /etc/keepalived/keepalived.tmpl /etc/keepalived/keepalived.conf
|
||||||
|
chmod 644 /etc/keepalived/keepalived.conf
|
||||||
|
chown root:root /etc/keepalived/keepalived.conf
|
||||||
|
|
||||||
|
sed -i "s/_routerid_/${KEEPALIVED_ROUTER_ID}/g" /etc/keepalived/keepalived.conf && \
|
||||||
|
sed -i "s/_state_/${KEEPALIVED_STATE}/g" /etc/keepalived/keepalived.conf && \
|
||||||
|
sed -i "s/_priority_/${KEEPALIVED_PRIORITY}/g" /etc/keepalived/keepalived.conf && \
|
||||||
|
sed -i "s/_interface_/${KEEPALIVED_INTERFACE}/g" /etc/keepalived/keepalived.conf && \
|
||||||
|
sed -i "s/_password_/${KEEPALIVED_PASSWORD}/g" /etc/keepalived/keepalived.conf && \
|
||||||
|
|
||||||
|
num=`echo ${KEEPALIVED_UNICAST_PEERS} | sed 's/,/\n/g' | wc -l`
|
||||||
|
for n in $(seq ${num}); do
|
||||||
|
ip=$(echo ${KEEPALIVED_UNICAST_PEERS} | sed 's/,/\n/g' | sed -n ${n}p)
|
||||||
|
sed -i "/unicast_peer/a $(echo -e ${ip})" /etc/keepalived/keepalived.conf
|
||||||
|
done
|
||||||
|
|
||||||
|
num=`echo ${KEEPALIVED_VIRTUAL_IPS} | sed 's/,/\n/g' | wc -l`
|
||||||
|
for n in $(seq ${num}); do
|
||||||
|
ip=$(echo ${KEEPALIVED_VIRTUAL_IPS} | sed 's/,/\n/g' | sed -n ${n}p)
|
||||||
|
sed -i "/virtual_ipaddress/a ${ip}" /etc/keepalived/keepalived.conf
|
||||||
|
done
|
||||||
|
|
||||||
|
# keepalive 시작
|
||||||
|
rm -rf /var/run/keepalived
|
||||||
|
if (pgrep -fl keepalived >/dev/null 2>&1); then
|
||||||
|
echo "Info: keepalived process already running, killing..."
|
||||||
|
pkill -9 keepalived
|
||||||
|
fi
|
||||||
|
keepalived --use-file /etc/keepalived/keepalived.conf --dont-fork --log-console &
|
||||||
|
|
||||||
|
sleep 1
|
||||||
|
echo "Info: keepalived process started!"
|
||||||
|
|
||||||
|
# TRAP 처리
|
||||||
|
trap "stop; exit 0;" SIGHUP SIGINT SIGQUIT SIGKILL SIGTERM
|
||||||
|
stop() {
|
||||||
|
echo "Info: killing keepalived process..."
|
||||||
|
pkill -2 keepalived
|
||||||
|
exit 0
|
||||||
|
}
|
||||||
|
|
||||||
|
# 동작확인
|
||||||
|
while (pgrep -fl keepalived >/dev/null 2>&1)
|
||||||
|
do
|
||||||
|
sleep 5
|
||||||
|
done
|
||||||
|
echo "Error: keepalived is not running, exiting..."
|
||||||
|
exit 1
|
||||||
Loading…
Reference in New Issue