JUST WRITE

Master Node HA 구성(1) - keepalived 세팅 본문

MLOps/Kubernetes

Master Node HA 구성(1) - keepalived 세팅

천재보단범재 2023. 2. 1. 23:53

keepalived 세팅

Master Node HA 구성(1)

Bare Metal Server에 Kubernetes Cluster를 구축하는 업무를 맡게 되었습니다.

총 12대 Server를 1개의 Kubernetes Cluster로 구축하는 업무였습니다.

12대 중 3대를 Master Node, 9대를 Worker Node로 구성하기로 하였습니다.

Master Node를 다수로 구성함으로써 고가용성을 확보하기 위해서였습니다.

keepalived와 HAProxy를 통해 Master Node HA 구성을 해보려고 합니다.

이번 포스팅에서는 먼저 keepalived 세팅을 정리해 보겠습니다.

출처: https://kubesphere.io/docs/v3.4/installing-on-linux/high-availability-configurations/set-up-ha-cluster-using-keepalived-haproxy/

Master Node, Control Plane

Kubernetes Cluster는 크게 2종류의 Server로 구성합니다.

Master node와 Worker node로 나뉩니다.

Master node는 Cluster를 관리하는 역할입니다.

아래의 Component로 구성되어 있습니다.

  • etcd
  • kube-apiserver
  • kube-scheduler
  • kube-controller-manager
  • kubelet
  • kube-proxy

각 Component가 어떠한 역할인지는 아래 포스팅에서 확인 가능합니다.

 

Control Plane Components

Control Plane Components Kubernetes Cluster는 최소한 1개 이상의 Worker Node를 가진다. Worker Node에서 Pod를 생성하여 Application을 생성, 운영한다. Control Plane에서 Worker Node와 Node에서 생성한 Pod의 관리한다. Kubern

developnote-blog.tistory.com

Mater Node의 고가용성을 만족하기 위해 3대의 Server로 구성하였으며,

실제로 Cluster를 관리하는 Leader Master는 1대이며 나머지는 대기 상태입니다.

Leader Master에 장애가 생기면 나머지 2대 Server 중 하나가 Leader가 되는 형태로 구성합니다.

keepalived

keepalivedVirtual IP를 기반으로 고가용성을 제공하는 Tool입니다.

Active 상태의 Master와 Standby 상태의 Backup들로 구성합니다.

Master와 Backup 서버들은 VRRP를 통해 heartbeat를 주고받으며 상태를 체크합니다.

Master에 장애가 발생할 시 우선순위가 제일 높은 Backup이 Virtual IP를 갖는 Active 상태가 됩니다.

keepalived는 고가용성을 보장하기 위해 세팅합니다.

출처: https://www.codeproject.com/Articles/1272428/MySQL-Auto-Failover-using-Keepalived-on-CentOS

keepalived 설치

먼저 Virtual IP가 준비되야 합니다.

이중화를 위해 배포 서버 2개와 같은 subnet에 남은 IP를 요청해서 받았습니다.

keepalived 설치 전에 Virtual IP 세팅을 위해 2가지 kernel Parameter를 수정한다.

  • net.ipv4.ip_nonlocal_bind -> Localhost 주소 외에 Virtual IP를 bind 할 수 있는 Parameter
  • net.ipv4.ip_forward -> IP 포워딩할 수 있게 하는 Parameter
$ echo 'net.ipv4.ip_nonlocal_bind=1' >> /etc/sysctl.conf
$ echo 'net.ipv4.ip_forward = 1' >> /etc/sysctl.conf
$ sysctl -p

yum을 통해서 간단하게 keepalived를 설치할 수 있습니다.

# 각 Server에 설치
$ yum install -y keepalived

keepalived 설정

설치가 끝나면 keepalived 설정을 해줘야 합니다.

Master와 Backup를 조금 다르게 설정해야 합니다.

/etc/keepalived/keepalived.conf를 수정하면 됩니다.

keepalived 설정값들을 아래와 같이 정리해 보았습니다.

  • router_id -> keepalived Server 구분자
  • state -> Master, Backup으로 구분
  • priority -> 우선순위, 추후 우선순위가 높은 Backup이 Master가 된다.
  • authentication -> Master, Backup 동일하게 구성해야 한다.
  • virtual_ipaddress -> Virtual IP, Master와 Backup 동일하게 구성

Master keepalived 설정을 아래와 같이 하였습니다.

$ vi /etc/keepalived/keepalived.conf

global_defs {
   router_id rtr_0 
}

vrrp_instance VI_0 {  
    state MASTER   
    interface eth0    
    virtual_router_id 10   
    priority 200  
    advert_int 1
    authentication {
        auth_type PASS    
        auth_pass P@ssW0rd 
    }

    virtual_ipaddress {
        192.168.0.100 
    }
}

Backup keepalived 설정을 아래와 같이 하였습니다.

state가 MASTER가 아닌 BACKUP으로 설정한 것을 알 수 있습니다.

$ vi /etc/keepalived/keepalived.conf

global_defs {
   router_id rtr_1           
}

vrrp_instance VI_1 { 
    state BACKUP
    interface eth0            
    virtual_router_id 10      
    priority 100              
    advert_int 1
    authentication {
        auth_type PASS        
        auth_pass P@ssW0rd        
    }

    virtual_ipaddress {
        192.168.0.100      
    }
}

* 위 설정에서 Password와 Virtual IP는 예시

설정이 끝나고 keepalived 서비스를 구동합니다.

$ systemctl enable keepalived --now
$ systemctl status keeplalived

keepalived 확인

Master로 설정한 Server에서 IP를 확인해 보면 Virtual IP가 생긴 것을 확인할 수 있습니다.

실제로 Virtual IP로 ping을 날리면 정상적으로 가는 것을 확인할 수 있습니다.

$ ip a
...
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
    link/ether 36:a9:13:03:2e:67 brd ff:ff:ff:ff:ff:ff
    inet 192.168.103.101/24 brd 192.168.103.255 scope global eth0
       valid_lft forever preferred_lft forever
    "inet 192.168.103.110/32 scope global eth0" 
       valid_lft forever preferred_lft forever
    inet6 fe80::34a9:13ff:fe03:2e67/64 scope link
       valid_lft forever preferred_lft forever
...

[참고사이트]

 

728x90
반응형
Comments