오늘은 ClickHouse Database 의 cluster를 구성해보려고 한다.

해당 글을 읽기 전 나는 혼자힘으로 구성해보고 싶다 하는 사람이 있다면 다음 공식문서를 한번 참고해보자.

 

( https://clickhouse.com/docs/en/intro )

( 사실 공식문서를 직접 읽고 따라해보는것이 제일 좋은 경험이라고 생각한다. )

 

 

 

비교적 ElasticSearch 와 비슷하면서도 특징이 다른 ClickHouse를 사내에서 사용했고 이번 기회에 분산저장구조를 구성해보던 중 ClickHouse와 관련된 정보를 블로그에서는 찾기가 많이 어려웠기 때문에..

(나는 결국 공식문서를 참고해서 하나부터 열까지 만들어보았으나) 비교적 쉽게 설명해보려고 한다.

 

 

이전 Hadoop 의 맵리듀스를 이용해보기위해 분산 저장 구조를 구축해본 경험이 있어 환경구성에서는 비교적 어렵게느꼇던 것은 없었다.

처음은 Virtualbox 에서 가상머신을 3 만들어보자 물론 가상머신을 사용해야하는것은 아니며, 자신이 사용하기 편한 가상환경을 구성해도 좋고 실제 컴퓨터를 3대로 구성해보아도 좋다.

 

해당 글은 가상머신을 기준으로 구성했다.

 

Oracle Virtual Machine 3대

 

이렇게 3개의 머신을 구성하고 OS 는 Rocky Linux 8 버전을 사용했다 Linux파일은 다음 사이트를 참고해서 iso파일을 사용환경에 맞게 다운받자. (https://rockylinux.org/download/)

 

이 후 가상머신을 바로 시작하고싶으나 그 전 한 가지 설정을 더 해주자

여기서 중요한 점은 네트워크 어댑터 관련 설정이다.

 

왜 네트워크 설정이 필요할까 ? 

 

위 3대의 가상머신은 현재 서로의 존재를 모르는 상태이다.

옆집에 누가살고있는지 통성명(?)도 안한 상태이다.

저 3대의 가상머신은 구동시킨 우리PC(로컬)의 ip를 이용하기만 하는 녀석이다.

 

그렇기때문에 우리가 이 가상머신들 사이에 브릿지를 둬서 옆집에는 김xx씨, 이xx씨(host name, host ip)가 살고있다는 것을 알려주자.

 

가상머신의 설정을 보자

 

 

설정 - 네트워크 탭을 확인해보면 기본 네트워크 설정인 NAT으로 되어있을 것이다.

 

 

이 NAT은 현재 우리 PC의 아이피를 이용해 가상머신 속에서 인터넷을 사용하고 있는 상태 라고 보면 된다.

 

우리는 여기서 두번째 어댑터를 만들어보자.

 

여기서 설정해주어야 할 것은 호스트 전용 어댑터 설정과 무작위 모드를 설정해주어야한다

 

무작위 모드는 사실 가상머신에 허용 과 모두 허용 중 원하는것으로 설정하자.

 

설정이 끝났다면 

 

다운받은 리눅스 디스크를 가상머신에 등록하고 실행시키자

 

나는 현재 환경을 따로 추출해둔 것을 사용했기때문에 위치가 

 

 

IDE 가 아닌 SATA에 있지만 따라하는 분들은 저 위에 비어있음에 등록해야 한다.

 

 

이어서 리눅스가 실행되었다면 리눅스에 설정을 또 한번 해주자..

(아직 설정할게 더 남아있다)

 

 

가상머신의 부팅 디스크를 등록해두자

다운받은 리눅스를 등록해주고 실행하자.

 

 

이후 언어를 선택하고 들어가면 다음과 같은 화면이다

 

 

우린 여기서 밑줄친 3개의 비밀번호, 파티션, 네트워크 설정을 꼭 해주자

 

파티션과 비밀번호는 알아서 설정하면 되고 특별한건 네트워크설정을 들어갔을 때 어댑터가 두개 보일 것이다.

여기서 enp0s3어댑터는 초기 1번 네트워크어댑터로 NAT를 의미하고 우린 이걸 켜주자.

 

이어서 설치가 끝났다면 우린 clickhouse 데이터베이스를 설치하기 전 네트워크 환경에대한 구성을 마지막으로 해주어야한다.

 

현재 이웃이 서로 알아볼 수 있는 다리까지는 놓여있으나 아직 이름은 모르는 상태이다. 우린 이제 이웃의 이름과 아이피를 만들어주고 알아볼 수 있도록 각각의 가상머신에 이 정보를 기입해주자.

 

지금부터는 각각의 가상머신에 모두 설정해주어야한다. 

 

 

vim /etc/hosts

해당 경로의 파일을 들어가서 다음과같이 작성해주자

 

중요한건 아래 3줄이다. 특정 ip, hostname 을 정의해서 host(가상머신)끼리 알아볼 수 있도록 하는 것이다.

 

이후 방금 hosts에서 설정한 ip가 이웃들 사이에서 알아볼 수 있는 주소 이기 때문에

저 주소를 설정 해주자.

 

vim /etc/sysconfig/network-scripts 를 들어가보면 우리가 처음 가상머신을 생성할 때

만들어두었던 네트워크 어댑터가 표시되고 이중에서 이웃과 통신할 목적으로 생성한 어댑터는 s8이다.

 

만약 네트워크어댑터를 추가하지않고 저 경로로 접속했을 경우에는 s3어댑터만 존재하는것을 테스트해볼 수 있다.

우리는 이제 저 s8어댑터에 대한 아이피를 고정으로 설정해줄 것이다.

 

 

두번째 어댑터는 이웃과의 통신을 위해 생성했던 것이고 이 어댑터에 이웃들이알아볼 수 있는 주소를 적어두어야 편지를 주고받을 수 있기 떄문에 ..?? 라고 생각하면 조금 더 쉬울 것 같다.

 

 

ifcfg-enp0s8 file 내부

여기서 BOOTPROTO 를 none or static 중 하나로 설정해주고

IPADDR, GATEWAY를 설정해준다

 

고정 IP 를 사용 할 것이기에 직접 명시해주어야 한다.

 

이제 위 방식을 그대로 3개의 가상머신은 또 각각의 ip와 hostname으로 설정을 동일하게 진행하자

 

 

이후 각각의 가상머신의 방화벽을 해제해주면 설정은 끝난다.

 

방화벽 해제하는법은 다음을 따라하자

 

우선 방화벽을 끄고

systemctl stop firewalld.service

 

이후 컴퓨터를 다시 재부팅했을 때 서비스가 실행되지 않도록 disable해주자

 

systemctl disable firewalld.service

 

이후 network를 재부팅해주자

 

systemctl restart network (network service가 없다면 무시하자)

 

마지막으로 방화벽의 상태를 확인하면 환경설정은 끝난다.

 

systemctl status firewalld.service

 

위 순서를 그대로 아래사진으로 표현해보겠다.

 

 

자 이 방화벽도 역시나 3개 다 해주자.. (귀찮겠지만 꼭 필요하다)

 

 

다음 글에서는 이제 clustering 에 필요로 하는 데이터베이스인 클릭하우스 설치부터 작성하겠다.

 

 

 

 

 

 

 

 

 

 

 

 

+ Recent posts