EdgeRouter - 가상 라우터 중복 프로토콜 (Virtual Router Redundancy Protocol, VRRP)

download at 2017-02-07T01:06:00Z origin


이 문서는 가상 라우터 중복 프로토콜을 CLI로 라우터에 설정하는 방법에 대하여 서술합니다.

image0

Example network diagram before VRRP is implemented.

Steps


Configuration

아래의 설정은 위의 네트워크 다이어그램의 설정을 사용합니다.

Note: 호스트의 IP 주소와 2개의 라우터 주소입니다:

  • Host IP address: 192.0.2.50/24
  • R1 IP address: 192.0.2.10/24
  • R2 IP address: 192.0.2.20/24

기본 VRRP 설정을 하기 위해서는 VRRP 가상-주소 192.0.2.1/24 를 R1과 R2에 모두 추가합니다:

R1 Configuration

R1의 IP 주소를 설정합니다.

ubnt@R1# set interfaces ethernet eth2 vrrp vrrp-group 100 virtual-address 192.0.2.1/24
ubnt@R1# commit
[edit]
ubnt@R1# save
Saving configuration to '/config/config.boot'...
Done
[edit]
ubnt@R1# exit

R2 Configuration

R2의 IP 주소를 설정합니다.

ubnt@R2# set interfaces ethernet eth2 vrrp vrrp-group 100 virtual-address 192.0.2.1/24
ubnt@R2# commit
[edit]
ubnt@R2# save
Saving configuration to '/config/config.boot'...
Done
[edit]
ubnt@R2# exit

Show Commands

  • 인터페이스에 2가지의 주요 상태 (마스터, 백업)가 존재합니다. 어느 라우터가 master 상태이고, 가상 IP (VIP) 주소를 소유하고 있는지 확인하기 위해서는 show vrrp 명령어를 사용합니다:
ubnt@R1:~$ show vrrp
Physical interface: eth2, Source Address 192.0.2.10
  Interface state: up, Group 100, State: master
  Priority: 1, Advertisement interval: 1, Authentication type: none
  Preempt: true, VIP count: 1, VIP: 192.0.2.1/24
  Master router: 192.0.2.10
  Last transition: 22s
  • R1이 불능상태가 되면, R2가 가상 주소를 갖게 됩니다. 이후에는 호스트의 트래픽은 R1이 아닌 R2로 발생합니다:
ubnt@R2:~$ show vrrp
Physical interface: eth2, Source Address 192.0.2.20
  Interface state: up, Group 100, State: master
  Priority: 1, Advertisement interval: 1, Authentication type: none
  Preempt: true, VIP count: 1, VIP: 192.0.2.1/24
  Master router: 192.0.2.20
  Last transition: 11s
  • show log 명령어를 사용하여 R1에서 R2로 변화가 이루어지는 로그 메시지를 확인할 수 있습니다:
ubnt@R2:~$ show log Dec 6 12:41:56 R2 Keepalived_vrrp: VRRP_Instance(vyatta-eth2-100) Transition to MASTER STATE Dec 6 12:41:57 R2 Keepalived_vrrp: VRRP_Instance(vyatta-eth2-100) Entering MASTER STATE Dec 6 12:41:57 R2 Keepalived_vrrp: VRRP_Instance(vyatta-eth2-100) setting protocol VIPs. Dec 6 12:41:57 R2 Keepalived_vrrp: VRRP_Instance(vyatta-eth2-100) Sending gratuitous ARPs on eth2 for 192.0.2.1

Debugging Tips

  • VRRP를 설정하면서 가장 흔하게 발생하는 문제는 양쪽 모두 본인이 master 상태라고 여기는 경우입니다. 이러한 상황은 일반적으로 양쪽에서 상대방의 hello 패킷을 확인하지 못했을 때 발생합니다. 이러한 문제는 상대방의 vrrp 패킷을 통해서 방지 할 수 있습니다:
  1. 방화벽은 목적지가 224.0.0.18 인 패킷을 허용하지 않습니다. 해당 기본 drop 룰을 확인하고 패킷이 drop되는지 로그를 확인합니다.
  2. 일부 스위치에서는 멀티캐스트를 포워딩 하지 않고 멀티캐스트를 사용하기 위해서 해당 패킷을 허용하도록 설정해야합니다.
  3. VRRP 설정을 잘못 정의한 경우도 존재합니다. vrpp그룹, 가상 IP, 인증이 올바르지 않은 경우, 같은 그룹에 존재한다고 취급하지 않습니다.

Force Transition

  • 가끔 인터페이스에 직접 상태를 강제하고 싶을 때가 있습니다. 예를 들어, master 상태에 있는 소프트웨어를 업그레이드할 때, force transition을 사용하여 강제로 master 상태에 있는 인터페이스를 backup 상태로 만들 수 있습니다. 강제로 상태를 변경하고 난 이후에는 소프트웨어 업그레이드를 진행할 수 있습니다.
ubnt@R2:~$ clear vrrp master interface eth2 group 100
Forcing eth2-100 to BACKUP...
  • show vrrp 명령어를 사용하여 현재 상태 정보를 확인할 수 있습니다:
ubnt@R2:~$ show vrrp
Physical interface: eth2, Source Address 192.0.2.20
  Interface state: up, Group 100, State: backup
  Priority: 1, Advertisement interval: 1, Authentication type: none
  Preempt: true, VIP count: 1, VIP: 192.0.2.1/24
  Master router: unknown, Master Priority: unknown
  Last transition: 8s

Choose the Master

위의 예제에서는 우선순위가 할당되지 않았기때문에 VRRP가 master 상태를 선정합니다. 가끔은 사용자가 직접 master 를 지정하고 싶을 때가 존재합니다. 이러한 경우에는 라우터에 우선순위를 할당하여 작업을 할 수 있습니다. 우선순위 값은 1부터 254까지 할당할 수 있습니다. 높은 값이 높은 우선순위를 갖게 됩니다. 다음 명령어를 입력하여 R1에 100을, R2에 50을 할당해봅시다:

ubnt@R1# set interfaces ethernet eth2 vrrp vrrp-group 100 priority 100
[edit]
ubnt@R1# commit
[edit]
ubnt@R2# set interfaces ethernet eth2 vrrp vrrp-group 100 priority 50
[edit]
ubnt@R2# commit

이제 R1은 인터페이스가 동작할 때마다 항상 master 상태로 지정됩니다.

Preemption

높은 우선순위를 갖는 라우터가 항상 통제권을 갖도록 하는 경우를 원치 않을 때도 있습니다. 이러한 경우에는 선점 옵션을 해제하면 됩니다. 다음 명령어를 사용하여 선점 옵션을 제거 할 수 있습니다:

ubnt@R1# set interfaces ethernet eth2 vrrp vrrp-group 100 preempt false
[edit]
ubnt@R1# commit
[edit]
ubnt@R2# set interfaces ethernet eth2 vrrp vrrp-group 100 preempt false
[edit]
ubnt@R2# commit; save; exit

Authentication

인증을 사용하여 인증되지 않은 VRRP 멤버가 master 가 되기를 방지하는 것을 권합니다. CLI는 plain-text 모드와 ah 모드를 지원합니다. plain-text 모드는 많은 기능을 제공하지 않으므로 ah 모드를 사용하기를 권합니다.

ubnt@R1# set interfaces ethernet eth2 vrrp vrrp-group 100 authentication type ah
[edit]
ubnt@R1# set interfaces ethernet eth2 vrrp vrrp-group 100 authentication password mysecret
[edit]
ubnt@R1# commit
[edit]

Sync Groups

image1

이 예제에서는 2개의 VRRP 그룹을 사용합니다:

  • 192.0.2.0/24 네트워크 대역을 사용하는 인터페이스를 위한 VRRP 그룹 100
  • 203.0.113.0/24 네트워크 대역을 사용하는 인터페이스를 위한 VRRP 그룹 200

show vrrp summary 명령어를 사용하여 자세한 내용을 확인할 수 있습니다:

ubnt@R1:~$ show vrrp summary
                VRRP    Addr                    Interface       VRRP
Interface       Group   Type    Address         State           State
---------       -----   ----    -------         -----           -----
eth1            200     vip     203.0.113.1/24  up              master
eth2            100     vip     192.0.2.1/24    up              master

VRPP 그룹 100은 R1 에서 R2로 master 의 상태 전환이 이루어지면, VRRP 그룹 200에서도 아무런 문제가 없더라도 같은 작업이 이루어지길 원할 것입니다. 이와 같은 작업을 하기 위해서는 2개의 VRRP 그룹을 *sync group*에 추가합니다.

ubnt@R1# set interfaces ethernet eth2 vrrp vrrp-group 100 sync-group Foo
[edit]
ubnt@R1# set interfaces ethernet eth1 vrrp vrrp-group 200 sync-group Foo
[edit]
ubnt@R1# commit
[edit]

show vrrp 명령어를 사용하여 상태를 조회할 수 있습니다:

ubnt@R1:~$ show vrrp
 Physical interface: eth1, Source Address 203.0.113.10
   Interface state: up, Group 200, State: master
   Priority: 100, Advertisement interval: 1, Authentication type: none
   Preempt: true, VIP count: 1, VIP: 203.0.113.1/24
   Master router: 203.0.113.10
   Sync-group: Foo
   Last transition: 9m5s

 Physical interface: eth2, Source Address 192.0.2.10
   Interface state: up, Group 100, State: master
   Priority: 100, Advertisement interval: 1, Authentication type: none
   Preempt: true, VIP count: 1, VIP: 192.0.2.1/24
   Master router: 192.0.2.10
   Sync-group: Foo
   Last transition: 9m11s

*Note: sync group내에 있는 VRRP 그룹들은 우선순위와 선점 옵션에 대하여 같은 설정 값을 가지고 있어야 합니다. sync group을 활성화 하기 이전에 하나의 라우터가 양쪽 모두에서 master이고, 다른 라우터는 backup인지 확인하십시요. 위와 같은 작업이 이루어지지 않은 경우에는 sync-group내에서 싱크를 위해서 상태 전환 작업이 계속 수행될 것입니다.

Transition Scripts

관리자에게 이메일을 보낸다거나 라우팅을 변경하는 등의 예외의 명령어를 수행하는 경우가 존재할 수 있습니다. 이러한 작업을 저장하는 스크립트는 /config/script 내에 저장하는 것을 권장합니다. 해당 스크립트는 소프트웨어가 업그레이드 될때마다 복사되기 때문에 유실될 우려가 적습니다.

Note: 상태 전환 스크립트는 실행가능해야 합니다. (chmod +x <file>).

다음 명령어를 수행하여 상태 전환 스크립트를 추가할 수 있습니다:

ubnt@R1# set interfaces ethernet eth2 vrrp vrrp-group 100 run-transition-scripts backup /config/scripts/my_vrrp_script
[edit]
ubnt@R1# commit
[edit]

본 예제는 backup 상태로 전환을 수행하는 스크립트를 추가하는 예제입니다. 이뿐만 아니라 master, fault 상태로 변경하는 스크립트 또한 필요합니다. ( fault 상태는 인터페이스가 불능 상태가 되었을 때를 해당합니다.) 스크립트가 실행되면, 3개의 파라미터를 입력받습니다:

  • 전환 할 vrrp 상태
  • 인터페이스
  • 그룹

Resource

VRRP와 사용법에 관한 유용한 정보는 다음을 참고하세요: http://www.redbooks.ibm.com/redpapers/pdfs/redp3657.pdf