본문 바로가기
개발/에러해결

haproxy load balancer 중 /usr/local/etc/haproxy/haproxy.cfg: 'server mongo1' : could not resolve address 'mongo1' 또는 Failed to initialize server(s) addr.

by amkorousagi 2023. 5. 15.

2023-05-15 15:18:49 [ALERT] (1) : parsing [/usr/local/etc/haproxy/haproxy.cfg:20] : 'server mongo1' : could not resolve address 'mongo1'. 2023-05-15 15:19:09 [ALERT] (1) : parsing [/usr/local/etc/haproxy/haproxy.cfg:21] : 'server mongo2' : could not resolve address 'mongo2'. 2023-05-15 15:19:29 [ALERT] (1) : parsing [/usr/local/etc/haproxy/haproxy.cfg:22] : 'server mongo3' : could not resolve address 'mongo3'. 2023-05-15 15:19:29 [ALERT] (1) : Failed to initialize server(s) addr.

 

haproxy 에러 내용


haproxy로 mongodb replica set을 위한 load balancer를 만드는 도중 위와 같은 오류를 만났습니다.

haproxy 에러 원인


server 뒤에는 hostname 등이 와야 하는데 mongo1을 통해서 해당 이름의 컨테이너에 접근할 수 없는 상태입니다.

이는 같은 networks 안에 넣어주지 않아서 그렇습니다. 따라서 container 이름으로 컨테이너를 찾을 수 없었습니다.

 

haproxy 해결 방법


다음과 같이 서버와 로드 밸런서를 같은 network에 넣어 줍시다.

# Use root/example as user/password credentials
version: "3.8"

services:
  mongo1:
    image: mongo
    container_name: mongo1
    restart: always
    ports:
      - "4001:27017"
    environment:
      - .env
    volumes:
      - ./mongo1:/data/db
      - ./mongodb.conf:/etc/mongodb.conf
    networks:
      - mongo-net
    command: mongod --config /etc/mongodb.conf

  mongo2: 위와 동일
  mongo3: 위와 동일
  
  haproxy:
    image: haproxy:2.4
    restart: always
    container_name: haproxy
    ports:
      - 3015:27017
    volumes:
      - ./haproxy.cfg:/usr/local/etc/haproxy/haproxy.cfg:ro
    networks:
      - mongo-net
      
networks:
  mongo-net:
    driver: bridge

 

사용한 haproxy 설정 파일은 다음과 같습니다.

global
  daemon
  maxconn 256

defaults
  mode http
  timeout connect 5000ms
  timeout client 50000ms
  timeout server 50000ms

frontend mongo_frontend
  bind *:27017
  mode tcp
  option tcplog
  default_backend mongo_backend

backend mongo_backend
  mode tcp
  balance roundrobin
  server mongo1 mongo1:27017 check
  server mongo2 mongo2:27017 check
  server mongo3 mongo3:27017 check

 

만약 윈도우에서 설정 파일을 만들면 다음과 같은 오류가 날 수 있습니다.

parsing [/usr/local/etc/haproxy/haproxy.cfg:23]: Missing LF on last line, file might have been truncated at position 3.

 

그러면  docker등의 환경에서 vi 등으로 열어서 저장하여 Line Feed를 추가하도록 합니다.

 

참고 자료


 

 

HAProxy - The Reliable, High Perf. TCP/HTTP Load Balancer

2.5 2021-11-23 2023-Q1 (unmaintained) 2.5.14 2023/05/02 git / web / dir / announce / bugs 2.3 2020-11-05 2022-Q1 (unmaintained) 2.3.21 2022/07/27 git / web / dir / announce / bugs 2.1 2019-11-25 2021-Q1 (unmaintained) 2.1.12 2021/03/18 git / web / dir / an

www.haproxy.org

 

댓글