Notice
Recent Posts
Recent Comments
«   2025/08   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
31
Archives
Today
Total
관리 메뉴

ITFragile

[Ansible] 03. HAProxy 설정 본문

Project

[Ansible] 03. HAProxy 설정

경요 2023. 3. 16. 11:18

메인 플레이북에 import_tasks 모듈로 haproxy.yaml 파일을 불러오게 작성하고,

이 haproxy를 통해 webserver 01,02를 로드밸런싱 할 수 있도록 설정한다.

 

1. main 플레이북 작성

[main.yaml]

main.yaml
lb playbook 가장 하단에 import_tasks 추가

 

2. haproxy 플레이북 작성

# haproxy.yaml
- name: haproxy template setting
  template:      # 템플릿 파일을 지정된 이름으로 원격 서버에 복사
    src: haproxy.cfg.j2 # 해당 파일 필요
    dest: /etc/haproxy/haproxy.cfg
- name: restart haproxy
  service:
    name: haproxy
    state: restarted

src 파일의 내용은 하기와 같음

3. haproxy.cfg.j2 작성

# vim haproxy.cfg.j2

global
  log /dev/log  local0
  log /dev/log  local1 notice
  stats socket /var/lib/haproxy/stats level admin
  chroot /var/lib/haproxy
  user haproxy
  group haproxy
  daemon

defaults
  log global
  mode  http
  option  httplog
  option  dontlognull
        timeout connect 5000
        timeout client 50000
        timeout server 50000

frontend web-lb # 80 요청이 오면 지정된 백앤드로 가도록 함
    bind *:80
    default_backend webserver
    option forwardfor

backend webserver
    balance roundrobin # 라운드로빈 방식으로 lb가 웹서버 01,02를 번갈아가며 전달
    {% for host in groups['web'] %}
    server {{ hostvars[host].inventory_hostname }} {{ hostvars[host]['ansible_facts']['enp0s8']['ipv4']['address'] }}:80 check
    {% endfor %}

4. 플레이북 실행

오류 발생

gathering Facts 수집시 로드밸런서의 facts만 수집해서 web01,02의 정보를 읽어오지 못해 발생한 오류

 

ansible은 플레이북을 실행할때 자동으로 gathering Facts를 수집하는데,

이때 gathering Facts는 remote host 에 대한 정보를 의미하며 배포판 종류, 버전, IP Address, file system 정보등을 

포함한다. 현재 main 플레이북은 lb,web,db로 나누어 작성했기 때문에 lb의 gathering Facts만 수집하고 현재 필요한

web에 대한 정보가 수집되지 않았으므로 오류가 난 것으로 추측됨

 

이때 해결 방법은

① main.yaml에 LB부분과 WEB부분의 순서를 바꿔 web의 facts를 수집 후 LB 실행되도록 하는 방법

 

② 가장 상단에 gathering facts 실행 (ALL 대상)해주는 플레이북을 작성하는 방법

 

2번 방법을 이용하여 메인 플레이북 최상단에 모든 host의 gathering Facts를 수집하는 setup모듈 추가해줌

해결 완료~

5. lb 접속 후 확인

# lb
vim /etc/haproxy/haproxy.cfg

정상적으로 받아온 것을 확인 할 수 있음

 

'Project' 카테고리의 다른 글

[Ansible] 05. DB 이중화  (0) 2023.03.16
[Ansible] 04. WEB 로드밸런싱  (0) 2023.03.16
[Ansible] 02. Playbook 작성  (0) 2023.03.15
[Ansible] 01. 작업 환경 구성  (0) 2023.03.15
[Linux] 04. WEB - DB 로드밸런싱  (0) 2023.03.15