ITFragile
[Ansible] 03. HAProxy 설정 본문
메인 플레이북에 import_tasks 모듈로 haproxy.yaml 파일을 불러오게 작성하고,
이 haproxy를 통해 webserver 01,02를 로드밸런싱 할 수 있도록 설정한다.
1. main 플레이북 작성
[main.yaml]
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
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 |