[G-cloud] haproxy, keepalived 설정

Damian·2022년 2월 18일

Centos

목록 보기
7/7

0. 하게된 이유

  • proxy 서버 대개체 작업 진행
  • centos6 -> centos7 로 변경
  • haproxy 로 구성되어있고 heartbeat 설정 되어있는데 keepalived로 변경 필요

1. haproxy 설정

1-1. haproxy 버전 이슈

기존 6버전에는 haproxy-1.5.18-1 버전인데 7버전에서는 haproxy-1.5.18-9 버전이 지원된다.
so. rpm 파일을 전달하더라도 dependency 문제가 있어서 설치가 안되는 이슈가 있었다.
(이미 depency 패키지가 높은 버전으로 존재하지만 설치 안됨)

외부에서 haproxy-1.5.18-9 rpm 파일 다운 받아서 scp로 전달.
의존성 파일 따로 없이도 rpm 파일이 설치 된다.

1-2 사전작업

정확한 내용은 보안으로 적지 못함
테스트 내용을 작성

httpd 서버 2대를 만들어준다

#app1/app2 서버 둘다 적용
yum install httpd
systemctl enable httpd --now ; systemctl status httpd

1-3. haproxy 설정작업

/etc/haproxy/haproxy.cfg 변경
정확한 내용은 보안으로 적지 못함
테스트 내용을 작성

1번2번 proxy 서버

  • front end 변경
  • port 를 9398 로 변경해주었음
    yum install haproxy-1.5.18
frontend  main *:9398
    acl url_static       path_beg       -i /static /images /javascript /stylesheets
    acl url_static       path_end       -i .jpg .gif .png .css .js

    use_backend static          if url_static
    default_backend             app
  • 라우드 로빈으로 설정해주었고 아래와 같이 백엔드에 httpd 서버 2대 설정해 주었음
  • [app1 호스트 name][ip:port]
  • [app2 호스트 name][ip:port]
backend app
    balance     roundrobin
    server  app1 192.168.241.99:80 check
    server  app2 192.168.241.101:80 check
  • 실행
    systemctl enable haproxy --now ; systemctl status haproxy

2. keepalived 설정

2-1. 사전 설정

proxy1,2번서버 에서 작업

  • keepalived 설치
    yum install keepalived

  • 커널파라미터 변경
    keepalived를 master에 적용하고 standby에 적용시 vip를 바라보지 못해서
    keepalived 서비스가 실행되지 못한다.
    아래 커널 적용하자.

vi /etc/sysctl.conf
> net.ipv4.ip_nonlocal_bind=1 

cat /proc/sys/net/ipv4/ip_nonlocal_bind
#결과: 1 이면 성공
#결과가 1이 아닐경우 재부팅

2-2. proxy1번 작업

  • conf 파일 설정 변경
  • state MASTER master서버로 선정
  • interface 설정 필요 ex) ens33 eth1 등등
  • priority 200 숫자가 높을 수록 우선 순위를 갖는다.
  • adver_int 2 proxy 서버간 heartbeat 체크 시간
    2초마다 체크하도록 설정했다.
  • virtual_ipaddress 를 설정해주면 master의 ip에 VIP가 생성된다.
vi /etc/keepalived/keepalived.conf
>
! Configuration File for keepalived

global_defs {
        router_id LVS_DEVEL
}

vrrp_instance VI_1 {
    state MASTER
    interface eth0
    virtual_router_id 51
    priority 200      
    advert_int 2
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        192.168.241.200/24  ## 나중에 기존 것 적용
    }
}
  • 서비스 시작

systemctl enable keepalived.service --now ; systemctl status keepalived.service

2-3. proxy2번 작업

  • conf 파일 설정 변경
  • state BACKUP standby서버로 선정
  • interface 설정 필요 ex) ens33 eth1 등등
  • priority 100 master보다 낮은 숫자 설정.
  • adver_int 2 proxy 서버간 heartbeat 체크 시간
    2초마다 체크하도록 설정했다.
  • virtual_ipaddress 를 설정해주면 standby에는 VIP가 생성되지 않는다.
    향후 절체되어서 넘어오면 생긴다.
! Configuration File for keepalived

global_defs {
        router_id LVS_DEVEL
}

vrrp_instance VI_1 {
    state BACKUP
    interface ens33
    virtual_router_id 51
    priority 100
    advert_int 2
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        192.168.241.200/24
    }
}

  • 서비스 시작
    systemctl enable keepalived --now ; systemctl status keepalived

3. 테스트

profile
oepenpen

0개의 댓글