독까의 이야기

액티브디렉토리 (Active Directory) 및 MSCS 구축 테스트 #1 에 이어서 작성....

 

모든 사용자 접속 계정은 AD 관리자 계정으로 진행한다. 

 

가상화 서버 4대

AD DC : 211.115.90.51

DB1 : 211.115.90.52

DB2 : 211.115.90.53

Storage : 211.115.90.54

방화벽 정책 추가 : In/Outbound : TCP 135, 445, 3343 / UDP 3343

 

 

# 1 

가상화 서버 4대 중 스토리지 서버의 디스크 공간을 DB 의 공유 폴더로 사용을 하려고 한다. 

데이타 파티션 D 드라이브에 아무 폴더나 생성 하고 공유 설정을 진행한다. 

 

 

공유 경로 : \\STORAGE\AO_Storage

 

처음 의도는 iSCSI 를 구축해서 클러스터링 디스크를 만들려고 했는데, 테스트해보니깐 공유 폴더랑 차이가 없어서 그냥 진행한다. 

 

공유 폴더를 생성했으니, DB 서버에서 해당 폴더로 네트워크 연결을 시도해 본다. 이따가 AlwaysOn 구축시 필요하므로 꼭 연결 체크 해야한다. 

 

 

# 2

DB1 / DB2 서버에 장애 조치(Failover) 클러스터링을 설치를 한다.

 

DB1 / DB2 동일 작업

 

역할 및 기능 추가를 통해서 설치를 진행한다. 

 

 

DB1 단독 작업

 

DB1 의 관리 도구 열어서 장애 조치(Failover) 클러스터 관리자 실행한다. 

 

설정 된게 없기 때문에 아무것도 없다. 

 

 

클러스터 만들기를 선택 후 진행한다. 

 

 

서버 이름 입력에서 "찾아보기" 선택해서 DB1 과 DB2 를 넣어준다.

 

 

클러스트 관리 이름은 AO 로 한다. AlwaysOn 테스트 이기 때문이다. 뭐 본인이 편한거 아무거나 해도 된다. 딱히 큰 의미는 없다. 

아래에 추가해야 하는 클러스터 관리자 아이피는 AD 그룹과 동일 대역의 미사용 아이피를 입력한다. 

 

네트워크 : 211.115.90.0/26 

주소 : 211.115.90.55

 

 

Default 로 쭉쭉 간다. 완료 되면 아래와 같이 확인 가능하다. 

 

 

 

 

이제 장애 조치 설정은 대충 마무리 되었다. 

 

 

# 3

DB1 / DB2 에 MS-SQL 2016 및 SSMS 설치를 진행한다. 

그냥 본인이 원하는 방식대로 설치를 진행하면 된다. 

 

설치가 정상적으로 완료가 되었으면, 몇 가지 변경 작업을 진행해보자. 

 

DB1 및 DB2 동일 작업

 

서비스 실행 

SQL Server (MSSQLSERVER) 및 SQL Server 에이전트 (MSSQLSERVER) 의 로그온 계정을 AD 관리자 계정으로 변경한다. 

 

 

위 방식은 내가 편할려고 하는 거니깐 이 방식이 맞다고 할 수는 없다. 알아서 하면 되지 않을까 싶다. 

 

 SQL Server 2016 구성 관리자 실행 후 AlwaysOn 고가용성 사용을 체크한다. 

 

 

각 DB 서버에서 SSMS 실행 후, 

 

 

보안 - 로그인 - AD 계정 선택 - 속성

 

서버 역할 : sysadmin 추가

사용자 매핑 : master 선택 / db_owner 선택

 

 

 

여기까지가 DB 의 기본 설정 부분이다. 

 

 

# 4

DB 및 AlwaysOn 고가용성 그룹 생성을 진행한다. 

 

DB1 에서 임의의 데이타 베이스를 생성한다. 

나는 AO1 로 생성했다. 

 

Always On 고가용성 에서 가용성 그룹을 신규 생성한다. 마법사로 진행하면 편하다. 

 

 

다음 단계로 넘어가면 AO1 DB 에 백업이 되어 있지 않다고 진행이 안 된다. 한 번 전체 백업 실행 해주고 다음으로 넘어간다. 

 

 

 

복제본 지정 단계가 나오는데, 복제본 추가를 눌러서 DB2 를 끌어온다. 

 

모든 서버의 접속 계정 및 SQL 서비스 실행 계정이 AD 관리자 계정 이므로, Windows 인증으로 해도 된다. 본인이 다르게 설정 했으면 알아서 하면 된다. 

 

 

DB2 와 연결이 정상적으로 되면, 보조 영역에 추가 된다. 나머지 설정들은 그냥 스킵해도 된다. 

 

 

다음 단계에서 데이터 동기화를 위한 백업 경로 지정이 있는데, 여기에 아까 생성했던 스토리지의 공유 폴더 경로를 등록한다. 

 

 

 

그런데 오류가 발생해서 그룹 생성이 실패한다. 

 

 

오류 문구를 확인해 보니, 기존 클러스터 구성이 삭제 되었기 때문에 SQL 구성 관리자에서 AlwaysOn 기능을 해제 했다가 다시 적용을 해야 한단다. 

게시글 작성을 위해 모든 설정 초기화 하고 다시 진행 했더니 이런 오류가 생겼다. 

오류 발생 처리에 관해서도 확인이 됐으니 다행으로 생각한다. 

 

 

가용성 그룹 생성 완료 되면, DB1 에서는 아래와 같이 확인 된다. 

 

 

DB2 에서는 아래와 같이 데이타베이스 접근 불가 확인된다. 장애 대비를 위한 대기 상태 이므로 기능이 전부 제한된다. 

 

 

 

# 5

장애 조치 테스트를 진행해야 하므로, DB1 서버를 종료한다. 

 

장애 조치 클러스터 소유자 노드가 DB-2 로 변경 되었다. 

 

 

 

DB 가용성 그룹의 Master 와 Slave 역할이 변경 되었다. 

 

 

다시 DB1 서버를 켜고, 역할 복원을 진행한다. 

장애 조치로 역할이 변경 되면, 서비스가 복구 되어도 자동으로 원복이 되지 않는다. 

수동으로 역할 변경 해줘야 한다. 이 부분은 약간 좀 그런듯 하다. 

 

DB1 또는 DB2 에서 AOG그룹 선택 후 장애 조치 진행하면 된다. 

 

 

그 전에, 장애조치를 통한 데이타 동기화를 확인해야 하므로 활성화 된 DB2 에서 임시 테이블을 생성한다. 

 

create table gunnm_test (

Number varchar(50) null,

ID varchar(50) null,

PW varchar(50) null,

NAME varchar(50) null,

)

 

 

테이블 생성도 했으니깐, 장애 조치를 강제로 진행한다. 

 

 

 

장애 조치 수동 진행 후, 클러스터 소유자 노드가 다시 DB-1 로 변경 되었다. 

 

 

 

DB Master 와 Slave 역할도 변경 되었다. DB2 에서 생성한 임시 테이블도 조회가 된다. 

 

 

SQL 미러링은 모니터링 서버를 구축해야지만 자동 장애 조치가 진행되는데 반해, AD 를 통한 클러스터링은 자기들이 알아서 진행하니 편리하긴 한다. 

 

다만, 다시 원상태로 복구는 수동으로 진행해야 하므로, 반드시 서비스 장애 모니터링을 해야 한다. 

 

 

MS-SQL 의 단순 미러링 기능 보다 업그레이드 된 MS-SQL Always On 기능을 사용하기 위해서 액티브 디렉토리 및 MSCS 를 구축하려고 한다. 

 

준비물 : Windows 2012 R2 가상화 서버 4대

AD DC : 211.115.90.51

DB1 : 211.115.90.52

DB2 : 211.115.90.53

Storage : 211.115.90.54

방화벽 정책 추가 : In/Outbound : TCP 135, 445, 3343 / UDP 3343

 

 

# 1 

액티브 디렉토리 도메인 컨트롤러 (AD DC) 서버로 사용 될 211.115.90.51 서버에 AD DS 서비스를 설치한다. 

서버 관리자 에서 역할 및 기능 추가 들어간 다음, Active Directory 도메인 서비스 를 선택 후 설치를 진행한다. 

그냥 Default 로 진행하면 된다. 

해당 역할 설치시에 DNS 서비스도 같이 설치가 진행 되므로, 굳이 선택을 안 해줘도 된다. 

 

 

설치가 완료되면, 상단 알림창 클릭 후 "이 서버를 도메인 컨트롤러로 승격" 을 선택한다. 

 

 

배포 작업에서 "새 포리스트를 추가합니다." 를 선택 하고, 루트 도메인은 본인이 하고 싶은 도메인으로 하면 된다. 

 

 

나머지는 Default 로 쭉쭉 진행하자. 추가 값을 입력하거나 할 필요는 없을 것 같다. 

 

 

설치가 정상적으로 완료가 되면 서버 재시작이 필요하므로, 그전에 작업하고 있던 내역들은 저장하는 것이 좋다. 

 

리부팅 완료 후, 컴퓨터명을 아래와 같은 형식으로 변경해주자. 굳이 같은 이름으로 할 필요는 없다. 

 

 

컴퓨터명을 바꿨으니 또 서버 재시작을 해야 한다. 참고로 컴퓨터명은 AD 서비스 설치 전에 해도 무방하다. 

 

관리도구에서 Active Directory 사용자 및 컴퓨터 를 실행해서 확인하면 DC 서버가 정상 등록 된게 확인된다. 

 

AD DC 에서의 설정은 이 정도면 충분하다. 

 

 

 

# 2 

DB1 / DB2 / Storage 에서는 동일한 설정 변경을 통해 AD 그룹에 등록이 되도록 해야 한다. 

 

네트워크 어댑터 설정에서 DNS 주소 중 1개를 AD DC 의 IP 로 할당을 한다. 

 

 

네트워크 설정 완료 후, 컴퓨터명의 소속 그룹을 도메인 으로 변경 및 입력해 주어야 한다. 

 

 

확인을 누르면 로그인 화면이 뜨는데 AD DC 의 계정 정보를 입력한다. 

 

 

 

이런 식으로 DNS 정보 및 컴퓨터명을 변경 해주고나면 AD 그룹에 등록이 되는데, 확인은 AD DC 에서 진행한다. 

 

 

 

컴퓨터 그룹 및 DNS 에 정상적으로 해당 서버들이 등록되어 있음이 확인 되었다. 

 

참고로, 윈도우 방화벽에 AD 그룹 서버군에 대한 허용 정책 추가를 권장한다. (Inbound, Outbound)

 

테스트에 필요한 AD 그룹 구축은 이 정도에서 마무리 가능한 것 같다. 

 

MSCS 설정은 다음 게시글에 작성 하기로 한다. 

 

미디어 서비스 설치가 완료 되었으니, 실시간 스트리밍 설정을 구축하려고 한다. 


프로그램은 Microsoft Expression Encoder 4 SP2 를 이용한다. 


MS 에서는 해당 프로그램에 대한 판매 및 지원이 종료가 되었다고 한다. 그래서 무료로 사용이 가능한 것 같다. 


https://answers.microsoft.com/ko-kr/windows/forum/windows_7-windows_programs/%EC%9D%B5%EC%8A%A4%ED%94%84%EB%A0%88%EC%85%98/0b010507-3d8b-46cd-9a1b-d172f3c2e816


일단 다운로드 링크를 통해 접속하여 파일 다운로드 및 설치를 진행한다.


https://www.microsoft.com/ko-KR/download/details.aspx?id=27870




다음 단계로 넘어가면 "제품 키 입력" 이 나오는데, 무시하고 그냥 진행하면 된다. 키를 구입하려고 해도, 해당 페이지 호출이 안 되기 때문이다. 

제품 키 입력을 꼭 해야 한다면, 아래의 링크를 타고 가서 복사해오면 된다. 

https://www.youtube.com/watch?v=uY5G5_Igq68



Default 로 계속 진행을 한다.


설치 완료 후 프로그램을 실행하면, 프로젝트 선택이 나오는데 우측 하단의 "라이브 브로드캐스트 프로젝트" 를 선택한다. 



그런데 문제가 발생했다. 비디오 장치를 선택하면 작동 중지 메시지가 호출 된다.



호환성 문제로 추정되어 실행 파일의 호환성 버전을 윈도우 7 로 낮췄는데도, 비정상 작동이 반복 된다. 


Windows Server 2016 에서는 해당 프로그램 구동이 어려울 것 같다. 


그래서, 데스크톱에 설치 후 진행을 했다. 어차피 서버의 역할은 단순하게 동영상 중계만 해주는 것이기 때문이다. 


인코더 프로그램 설정을 진행하기 전에, 미디어 서비스의 설정을 우선 진행한다. 



스트리밍 게시 지점을 선택하여 진입 후, "게시 지점 추가" 를 한다. 


파일 이름은 뭐 본인이 좋아하는거 아무거나 입력해도 된다. 



고급 설정에서 하단의 "첫 클라이언트 요청 시 게시 지점 자동 시작" 을 활성화 해준다. 



확인을 눌러서 추가 작업을 완료하면, "게시 지점 시작" 을 눌러서 활성화 진행 한다.



이제 인코더 설정을 진행한다. 


"라이브 원본" 창에서 장치 원본 추가 를 선택 한다. 



비디오 장치에서 "Screen Capture Source" 를 선택한다. 

오디오 장치는 탭에서 본인의 입력 장치를 선택하면 된다. 나는 오디오 input 이 없어서 안 나온다. 


"사각형 선택" 선택 후, 보여질 영역을 선택 한다. 



선택이 되면, 사각 박스 영역에서 출력되는 화면이 라이브 원본1 의 창에서도 출력이 된다. 



이제 우측의 인코딩탭에서 출력 형식을 "IIS 부드러운 스트리밍" 으로 선택을 한다. 



나머지 인코딩의 세부 설정을 본인이 알아서 선택을 한다. 


출력탭에서 게시 지점 활성화 후, 위치를 입력한다. 


위의 IIS 미디어 서비스에서 생성한 게시 지점 url 을 입력을 해준다. 


http://win.gunnm.xyz/gunnm.isml



입력 후 연결을 누르면, 계정 정보를 입력하라는데 그냥 확인 선택하면 된다. 미디어 서비스에서 자격 증명 설정을 안 했기 때문에 그냥 통과 된다. 


이제 중앙의 "시작" 을 선택하면 스트리밍이 시작이 된다. 





다음은 인터넷익스플로러 (IE) 에서 실시간 스트리밍 시청이 가능하도록 설정 한다. 


템플릿탭에서 원하는 플레이어를 선택 한다. 


"생성" 을 선택하여 템플릿을 생성 한다. 폴더는 본인이 원하는 아무데나 설정하면 된다. 큰 의미는 없다. 




지정한 폴더에 생성 된 파일을 전체 복사하여, 웹서버의 특정 폴더에 저장 한다. 




익스플로러에서 해당 경로에 맞는 url 을 입력한다. Microsoft Silverlight 미설치시에는 화면이 안 나오므로, 설치를 진행한다. 


http://win.gunnm.xyz/live/default.html



익스에서 정상적으로 호출이 된다. 다만 딜레이가 10초 이상은 걸리는 것 같다. 약 20초 정도? 



다음으로는 이미 생성 된 웹페이지에 스트리밍 영역을 추가하는 작업을 진행한다. 


간단하게, html 코드로 메인 페이지를 생성한다. 


index.html


<html>

<head>

<title>Title is here</title>

</head>

<body>

<b>"Hello, world!" </b><p>

<i>win.gunnm.xyz Streaming Test</i><p>

<img src="image/top.jpg"><p>

</body>

</html> 



live 폴더 안의 default.html 을 편집기로 연다. 


1차로 필요한 부분은 <head></head> 안의 <style type 부터 </script> 까지다. 당연히 index.html 의 동일 부분에 삽입 한다. 


2차로 필요한 부분은 <body></body> 안의 <div id="silverlightControlHost"> 부터 </div> 까지다. 이것도 위와 마찬가지로 한다. 


그대로 복사를 해서 붙이면 플레이어가 100% 의 사이즈로 호출이 되기 때문에, 사이즈를 줄여준다. 


<object data="data:application/x-silverlight," type="application/x-silverlight" width="100%" height="100%" 을 아래와 같이 고쳐준다.


<object data="data:application/x-silverlight," type="application/x-silverlight" width="50%" height="50%"


이 외 웹페이지에 이것저것 추가 하여도 상관은 없다. 


http://win.gunnm.xyz/index.html 을 호출을 하면 당연히 동영상 플레이어 표시가 안 된다. 


원인은 live 폴더 안에 있는 템플릿 관련 파일들이 호출되지 않기 때문이다. 해당 파일들을 웹루트에 복사를 하거나, html 파일 상단에 include 값을 입력하든, 절대 경로의 변경을 하든지 알아서 하면 된다. 


아무튼 이래저래 해서 다시 메인 페이지 호출을 진행을 한다. 



생각대로 잘 나온다. 플레이어 내의 영상 크기를 수정을 하면 더 좋을 것 같은데, 실제 서비스를 하는 것도 아니니 넘어가기로 한다. 


이상으로 윈도우 IIS 미디어 서비스 + Expression Encoder 4 를 이용한 실시간 스트리밍 구축에 대해 진행 하였다. 

트위치나 유튜브 실시간 방송처럼 화상캠을 통해 직접 방송이 가능 하겠지만, 장비가 없으므로 해당 테스트에 대해서는 진행하지 않는다.