차이
문서의 선택한 두 판 사이의 차이를 보여줍니다.
다음 판 | 이전 판 | ||
kvm_기반_fence_virtd_설정하기 [2017/12/31 07:15] – 만듦 koov | kvm_기반_fence_virtd_설정하기 [2018/01/04 08:24] (현재) – [참조링크] koov | ||
---|---|---|---|
줄 1: | 줄 1: | ||
====== KVM기반 fence_virtd 설정하기 ====== | ====== KVM기반 fence_virtd 설정하기 ====== | ||
+ | --- // | ||
+ | |||
+ | ===== 기본 구조 ===== | ||
+ | |||
+ | {{: | ||
+ | |||
+ | 기본 구성은 위와 같이 1대의 물리(가상) 호스트 머신위에 KVM으로 2대의 Guest OS를 생성하고 이 GuestOS를 HostOS의 fence_virtd를 통해 제어하도록 한다. | ||
+ | |||
+ | ===== Fence 설정 ===== | ||
+ | |||
+ | 클러스터가 구성되는데 있어 '' | ||
+ | |||
+ | ==== 필요한 패키지 설치 ==== | ||
+ | |||
+ | '' | ||
+ | |||
+ | <WRAP prewrap> | ||
+ | <code bash> | ||
+ | # yum install fence-virt fence-virtd fence-virtd-libvirt fence-virtd-multicast fence-virtd-serial | ||
+ | </ | ||
+ | </ | ||
+ | |||
+ | 설치가 완료되면 ''/ | ||
+ | |||
+ | <WRAP prewrap> | ||
+ | <code bash> | ||
+ | # mkdir -p / | ||
+ | </ | ||
+ | </ | ||
+ | |||
+ | ==== 키 생성 ==== | ||
+ | <WRAP center round important 60%> | ||
+ | 모든 Host OS별로 다른 키를 가져야 할 필요는 없으며 동일한 키를 여러 호스트에서 같이 사용가능하다. | ||
+ | 대신 각 호스트는 multicast address를 따로 가져야 한다. 그렇지 않은경우 먼저 응답하는 호스트에 명령이 수행된다. | ||
+ | </ | ||
+ | |||
+ | 펜싱 통신에 사용할 키를 생성하도록 한다. '' | ||
+ | |||
+ | <WRAP prewrap> | ||
+ | <code bash> | ||
+ | # dd if=/ | ||
+ | # scp / | ||
+ | </ | ||
+ | </ | ||
+ | |||
+ | HostOS에서 생성한 키를 모든 GuestOS에도 복사해준다. | ||
+ | |||
+ | ==== 펜싱 데몬 구성 ==== | ||
+ | |||
+ | Host OS에서 펜싱 데몬을 구성하도록 한다. | ||
+ | |||
+ | <WRAP prewrap> | ||
+ | <code bash> | ||
+ | # fence_virtd -c | ||
+ | </ | ||
+ | </ | ||
+ | 위의 명령어를 입력시 아래와같은 항목을 입력하게 된다. | ||
+ | |||
+ | * 디폴트 검색 경로를 받아 들인다. | ||
+ | * 멀티 캐스트를 기본값으로 허용 | ||
+ | * 디폴트 멀티 캐스트 주소를 받아 들인다. | ||
+ | * 기본 멀티 캐스트 포트를 허용한다. | ||
+ | * 인터페이스를 br0으로 설정합니다 (브리지 이름을 호스트에 구성된 이름으로 바꿉니다) | ||
+ | * default fence_xvm.key 경로를 받아 들인다. | ||
+ | * 백엔드 모듈을 libvirt로 설정 | ||
+ | * 기본 URI 수락 | ||
+ | * 구성을 쓰려면 " | ||
+ | |||
+ | 이렇게 하면 아래와 비슷한 내용의 설정파일''/ | ||
+ | |||
+ | <WRAP prewrap> | ||
+ | <code vim / | ||
+ | fence_virtd { | ||
+ | module_path = "/ | ||
+ | listener = " | ||
+ | backend = " | ||
+ | } | ||
+ | |||
+ | listeners { | ||
+ | # 아래 내용은 기본값이다. 이후 Guest OS의 cluster.conf 에서 아래 기본값이 아닌경우 별도로 입력하여야 한다. | ||
+ | # 기본값으로 사용하는경우는 cluster.conf에서 따로 설정하지 않아도 아래 기본값으로 펜싱을 시도한다. | ||
+ | # Host OS가 여러대인경우 각각의 Host OS는 address를 따로따로 다르게 설정하여야 한다. | ||
+ | multicast { | ||
+ | key_file = "/ | ||
+ | interface = " | ||
+ | port = " | ||
+ | address = " | ||
+ | family = " | ||
+ | } | ||
+ | } | ||
+ | |||
+ | backends { | ||
+ | libvirt { | ||
+ | uri = " | ||
+ | } | ||
+ | } | ||
+ | </ | ||
+ | </ | ||
+ | |||
+ | '' | ||
+ | |||
+ | <WRAP prewrap> | ||
+ | <code bash> | ||
+ | (on host1) | ||
+ | address = " | ||
+ | |||
+ | (on host2) | ||
+ | address = " | ||
+ | </ | ||
+ | </ | ||
+ | |||
+ | ==== fence_virtd 시작 ==== | ||
+ | |||
+ | <WRAP prewrap> | ||
+ | <code bash> | ||
+ | # service fence_virtd start | ||
+ | # chkconfig fence_virtd on | ||
+ | </ | ||
+ | </ | ||
+ | |||
+ | ==== Guest OS 설정 ==== | ||
+ | |||
+ | <WRAP prewrap> | ||
+ | <code bash> | ||
+ | # yum install fence-virt | ||
+ | </ | ||
+ | </ | ||
+ | |||
+ | '' | ||
+ | |||
+ | <WRAP prewrap> | ||
+ | <code bash> | ||
+ | [on guest1]$ fence_xvm -a 225.0.2.12 -k / | ||
+ | [on guest2]$ fence_xvm -a 225.0.1.12 -k / | ||
+ | </ | ||
+ | </ | ||
+ | |||
+ | 실제로 펜싱 명령을 수행해보려면 아래와 같이 실행하면 된다. | ||
+ | |||
+ | <WRAP prewrap> | ||
+ | <code bash> | ||
+ | [on guest2]# fence_xvm -o reboot -a 225.0.1.12 -k / | ||
+ | </ | ||
+ | </ | ||
+ | |||
+ | 위의 '' | ||
+ | |||
+ | HostOS에서 '' | ||
+ | |||
+ | <WRAP prewrap> | ||
+ | <code bash> | ||
+ | [on host1]# virsh list | ||
+ | Id Name | ||
+ | ---------------------------------- | ||
+ | | ||
+ | </ | ||
+ | </ | ||
+ | |||
+ | ==== cluster.conf 설정 ==== | ||
+ | |||
+ | domain 부분에 들어갈 vm 이름은 아래 명령어로 확인 가능하다 | ||
+ | |||
+ | <WRAP prewrap> | ||
+ | <code bash> | ||
+ | [root@rhcs1 ~]# fence_xvm -o list | ||
+ | rhcs61 | ||
+ | rhcs62 | ||
+ | </ | ||
+ | </ | ||
+ | |||
+ | |||
+ | 펜싱 장치가 설정된 cluster.conf 파일예제는 아래와 같습니다. | ||
+ | |||
+ | <WRAP prewrap> | ||
+ | <code bash> | ||
+ | [root@node2 ~]# cat / | ||
+ | <?xml version=" | ||
+ | <cluster config_version=" | ||
+ | < | ||
+ | < | ||
+ | < | ||
+ | <method name=" | ||
+ | < | ||
+ | < | ||
+ | </ | ||
+ | </ | ||
+ | </ | ||
+ | < | ||
+ | < | ||
+ | <method name=" | ||
+ | < | ||
+ | </ | ||
+ | </ | ||
+ | </ | ||
+ | </ | ||
+ | < | ||
+ | < | ||
+ | <!-- key_file 속성과 multicast_address 속성은 따로 명시하지 않으면 기본값이 사용된다. 기본값은 / | ||
+ | < | ||
+ | < | ||
+ | </ | ||
+ | < | ||
+ | < | ||
+ | < | ||
+ | </ | ||
+ | </ | ||
+ | </ | ||
+ | </ | ||
+ | |||
+ | ==== 펜싱 테스트 ==== | ||
+ | |||
+ | <WRAP prewrap> | ||
+ | <code bash> | ||
+ | [on guest2]$ fence_node guest1 | ||
+ | fence guest1 success | ||
+ | </ | ||
+ | </ | ||
===== 참조링크 ===== | ===== 참조링크 ===== | ||
* https:// | * https:// | ||
+ | * https:// |