MariaDB 클러스터링 2탄 ( Private IP로 클러스터링 )
1탄에서는 Public IP로 클러스터링을 해봤습니다.
참고는 여기!
그런데 생각을 다시 해보니 Public IP로 설정시 기존 서비스 중인 WAS나 다른 프로레스쪽에서 사용을 하고 있어서 두 DB간의 클러스터링은 내부망으로 진행하는게 좋을 것으로 판단, 성능 개선을 위해 Public IP에서 Private IP로 설정하려고 한다.
Galera클러스터링을 적용하면서 MariaDB의 레퍼런스를 많이 살펴봤는데, 거기서 추가해야할 부분과 제외해야할 부분의 구분이 모호해 하나씩 적용해보면서 설정한 값이어서 필수적인 요소들만 넣었습니다. 혹시 안정성을 위해 추가해야할 부분이 있을 시 댓글달아주시면 감사하겠습니다.
실제로 저번 Pubcli IP로 세팅하는 부분과 동일하게 진행이 되는데, 해당 값중 왜 필수로 넣어줘야했는지 왜 다른 값은 뺐는지 개인적인 코멘트를 적도록 하겠습니다.
-- 공통
- wsrep_on = ON
Galera 사용 유무 체크값으로 ON, OFF 사용이 된다.
- wsrep_provider = ${.so File Path}
라이브러리 사용을 위해 경로 지정, 서버 OS종류마다 경로가 다르니 확인 필수!
---------------------------------------------------------------------------------------
- wsrep_sst_method = mariabackup
- wsrep_sst_auth = mysql:
백업 방식을 지정해주는 방식, 현재 mariabackup의 효율이 가장 좋다고는 해서 진행을 했습니다. rsync의 경우 통신rsync의 경우 별도로 서버에 설치하는 작업이 있어서 서버가 더럽혀질거 같아 과감히 Skip... mariabackup 사용을 하기로 했고, wsrep_sst_auth의 경우 계정만 적어주고 Password는 적어주지 않았다.
socket통신이나, gssapi 방식, 로그인시 패스워드 설정이 안되어 있는 경우에는 비밀번호 입력이 생략이 가능하다고 한다. 참조문서 확인해주세요!
https://mariadb.com/kb/en/introduction-to-state-snapshot-transfers-ssts/
-- 필수
- wsrep_node_name = ${Node Name}
해당 값은 Public일때는 제외가 가능하다. wsrep_cluster_address를 참조하여 두 서버간의 클러스터링이 가능하다. Public의 경우나 Private인 경우 모두 " /etc/hosts "의 경로에 IP와 호스트명을 지정해주는게 맘이 편하다.
- wsrep_node_address = ${Node IP}
기본적으로 Public의 경우 통신은 Public으로 이루어 지는것으로 보인다. Private로 통신을 하기 위해서는 Galera에 내가 어떤 IP인지 명시를 해주어야 제대로 구동이됨. 해당 건은 주석처리 후 다시 해보면 안되는 것이 확인된다.
- wsrep_cluster_address = gcomm://'Node IP 1', 'Node IP 2'
gcomm은 클러스터링에 사용되는 통신 규격과 같다. 해당 Scheme으로 통신하기 때문에 저 값은 필수이고 필자는 서버 2대의 클러스터링을 사용하기 때문에 IP 2개를 작성해줬다.
-- 옵션
- binlog_format
- default_storage_engine
- innodb_autoinc_lock_mode
-> MariaDB 레퍼런스에서 기본으로 제공하는 기본 옵션값이다. 해당 값은 별다른 코멘트가 없어서 MariaDB의 문서를 참조하여 작성했습니다.
결론.
입사하고 처음 배정받은 DB이관 작업 이었다. 다른일과 같이 하고 있어 안정화까지 약 3개월이 소요가 됬는데 정말 스트레스를 많이 받았던거 같다. Galera도 처음... MariaDB도 처음... 아무튼 이번 설정 진행해보면서 정말 이짤이 나한테 제일 잘 어울린다고 생각한다.
MariaDB 튜닝도 같이 했는데... 시간이 되면 올려보도록 하겠습니다! 일찍퇴근하는 개발자가 되세여~