이전 포스트에서 MariaDB Galera Cluster 설치에 대한 부분은 진행되었지만 그대로 사용한다면 Active/Active 가 아닌 그냥 A/S 형태나 Master/Slave 형태로만 사용할 수 밖에 없습니다.

 

HAProxy를 이용한 이중 Master 를 진행하여 보고자 합니다.

 

1. HAProxy를 설치하여 봅시다.

CentOS6.5 버전 기준으로 yum으로 설치할 경우 1.4 버전의 HAProxy를 설치할 수 있습니다. 특별히 문제가 있는 버전은 아니니 Yum으로 설치를 진행하여도 무방합니다.

(1.4 버전은 SSL기능이 없습니다. 1.5 버전과 특별하게 다른 부분을 찾기가 어려웠습니다.)

 

1-1. Yum으로 HAProxy 설치

 # sudo yum install haproxy

 

1-2. HAProxy 소스 설치

# wget http://www.haproxy.org/download/1.5/src/haproxy-1.5.6.tar.gz
# tar xvfz haproxy-1.5.6.tar.gz
# cd haproxy-1.5.6
# make TARGET=linux26 ARCH=x86_64
# make install
# cd examples
# cp haproxy.init /etc/rc.d/init.d/haproxy

# cd ..
# chmod 755 /etc/rc.d/init.d/haproxy
# mkdir -p /etc/haproxy/
# cp examples/haproxy.cfg /etc/haproxy/
# mkdir -p /etc/haproxy/errors/
# cp examples/errorfiles/* /etc/haproxy/errors/
# cd /usr/sbin
# ln -s /usr/local/sbin/haproxy haproxy
# vi /etc/haproxy/haproxy.cfg

 

2. HAProxy 환경 설정

global
    log                       127.0.0.1 local2
    chroot                  /var/lib/haproxy
    pidfile                   /var/run/haproxy.pid
    maxconn              4096
    user                    haproxy
    group                  haproxy
    daemon
    stats socket /var/lib/haproxy/stats

defaults
    option                   dontlognull
    option                   redispatch
    retries                   3
    timeout queue           1m
    timeout connect         300000ms
    timeout client            300000ms
    timeout server           300000ms
    timeout check            30s

 

listen Mariadb-Galera-Cluster 0.0.0.0:3306
   mode    tcp
   balance   roundrobin
   maxconn 20000
   option  tcpka
   option  tcplog
   option  mysql-check user HAProxy

   server  db1 마리아DB1 IP:3306 maxconn 10000 check port 3306 inter 2000 fall 2 rise 3 weight 1
   server  db2 마리아DB2 IP:3306 maxconn 10000 check port 3306 inter 2000 fall 2 rise 3 weight 1

 

 

option  mysql-check user HAProxy을 위해서 추가적으로 양쪽 MariaDB에 HAProxy라는 계정을 넣어주어야 합니다. HAProxy에서 직접 로그인을 해보고 FailOver 기준을 삼는 옵션이기 때문에 계정을 넣지 않으면 양쪽 서버 Down으로 인식하고 접속이 되지 않습니다. 패스워드를 넣으면 안되기 때문에 보안에 신경 써서 특정 IP만 접속 가능하게 추가하시면 됩니다. 

'시스템 > 리눅스 서버' 카테고리의 다른 글

MariaDB Galera Cluster 10.0 설치 (CentOS6.6)  (0) 2015.06.01
Zabbix 2.4 한글화 파일  (0) 2015.06.01

MySQL를 사용하는 시스템에서 이번에 MariaDB로 변경하는 프로젝트가 진행되려고 하고 준비중입니다. 기왕 준비하는 것이라면 기존에 MySQL이 이중화 되어 있지 않던 것도 같이 해서 이중화 및 MariaDB로 변경하는 것으로 프로젝트를 진행함에 따라 MariaDB 테스트를 진행합니다.

 

1. 먼저 SELINUX를 permissive mode 로 변경 처리 해야 합니다.

 # sudo setenforce 0 

 

(위와 같이 했을 경우 재부팅 시에 적용이 풀리는 단점이 있어 아래와 같이 설정도 추가합니다.)

 # vi /etc/sysconfig/selinux

SELINUX=enforcing  부분을
SELINUX=Permissive 변경

 

2. MariaDB를 yum으로 설치할 수 있도록 MariaDB repository 설정합니다.

 # vi /etc/yum.repos.d/MariaDB.repo 

 

아래의 문구를 삽입 후 저장합니다.

# MariaDB 10.0 CentOS repository list - created 2014-07-02 22:44 UTC
# http://mariadb.org/mariadb/repositories/
[mariadb]
name = MariaDB
baseurl = http://yum.mariadb.org/10.0/centos6-amd64
gpgkey=https://yum.mariadb.org/RPM-GPG-KEY-MariaDB
gpgcheck=1 

 

MariaDB가 개발이 계속적으로 발생하기 때문에 버전업이 빠릅니다. 아래의 사이트를 통해서 리포지토리 정보를 받으실 수 있습니다.

https://downloads.mariadb.org/mariadb/repositories/#mirror=kaist&distro=CentOS&distro_release=centos6-amd64&version=10.1 

  

3. MariaDB Galera Cluster 10.0 설치

 # sudo yum install MariaDB-Galera-server MariaDB-client rsync galera 

 

참고! 저는 설치 과정 중에 Requires: socat 메시지로 설치가 오류가 나왔습니다.

socat rpm을 추가적으로 설치를 먼저 하시고 설치 하여 주시면 됩니다.

# wget http://pkgs.repoforge.org/socat/socat-1.7.2.4-1.el6.rf.x86_64.rpm
# rpm -ivh socat-1.7.2.4-1.el6.rf.x86_64.rpm 

 

4. MariaDB Galera Cluster 10.0 구성

클러스터 구성이기 때문에 양쪽으로 서버에 모두 설치가 완료되었다면 이제 통합 구성을 해야 합니다. 아래의 구성은 양쪽다 동일하게 하시기 바랍니다.

# sudo service mysql start
# sudo /usr/bin/mysql_secure_installation 

 

# mysql -u root -p
MariaDB> DELETE FROM mysql.user WHERE user='';
MariaDB> GRANT ALL ON *.* TO 'root'@'%' IDENTIFIED BY 'mariadb';
MariaDB> GRANT USAGE ON *.* to sst_user@'%' IDENTIFIED BY 'dbpass';
MariaDB> GRANT ALL PRIVILEGES on *.* to sst_user@'%';
MariaDB> FLUSH PRIVILEGES;
MariaDB> quit 

 

위에 패스워드 부분은 편의상 쉽게 했습니다. 상용 서버에서 사용하실 것이라면 좀더 복잡하게 하시면 좋을 것 같습니다. 추가적으로 sst_user를 통해서 양쪽 클러스터를 동기화 시킵니다. 위에 동기화 계정을 % 로 한것도 사용상 편의를 위한 것으로 상용 서버에서는 양쪽 서버의 IP로 설정하시는 것이 보안상 좋습니다.

 

# sudo service mysql stop 

 

5. Node1(DB서버 중에 한개)에서 아래의 설정을 진행합니다.

 # vi /etc/my.cnf.d/server.cnf 

 

binlog_format=ROW

default-storage-engine=innodb innodb_autoinc_lock_mode=2

innodb_locks_unsafe_for_binlog=1

query_cache_size=0

query_cache_type=0

bind-address=0.0.0.0

 

datadir=/var/lib/mysql innodb_log_file_size=100M

innodb_file_per_table innodb_flush_log_at_trx_commit=2

wsrep_provider=/usr/lib64/galera/libgalera_smm.so

wsrep_cluster_address="gcomm://Node1IP,Node2IP"

wsrep_cluster_name='galera_cluster'

wsrep_node_address='Node1IP'

wsrep_node_name='db1'

wsrep_sst_method=rsync

wsrep_sst_auth=sst_user:dbpass

위의 붉은 글씨에 대한 부분을 설정합니다.

 

Node2 에서는 Node1에서 설정과 동일하게 하되 아래의 부분만 Node2에 맟춰서 설정합니다.

wsrep_node_address='Node2IP'
wsrep_node_name='db2

 

6. 클러스터 최초 실행

Node1에서 아래의 명령어로 DB1을 구동합니다.

# sudo /etc/init.d/mysql start --wsrep-new-cluster 

 

(위의 명령어는 클러스터를 최초 실행할 경우에만 사용하는 명령어입니다.)

 

6-1. 클러스터 상태 확인

# mysql -u root -p -e "show status like 'wsrep%'" 

 

아래와 같이 확인이 되는지 확인합니다.

wsrep_local_state_comment | Synced <-- cluster is synced

wsrep_incoming_addresses | 10.0.0.9:3306 <-- node db1 is a provider

wsrep_cluster_size             | 1 <-- cluster consists of 1 node

wsrep_ready                      | ON <-- good :)

 

wsrep_cluster_size 값은 현재 구동중인 Node가 몇개이냐의 의미입니다. 지금은 단독 실행이기 때문에 1로 표기되어야 맞습니다.

 

7. 추가 클러스터를 구동합니다.

Node2에서 구동합니다.

# sudo service mysql start 

 

7-1 클러스터 상태 확인

# mysql -u root -p -e "show status like 'wsrep%'"

 

wsrep_cluster_size 값이 2로 되어 있다면 정상입니다.

 

TIP

MariaDB 개발사에서는 MariaDB Galera Cluster에 대해 3대 이상의 Node를 권장하고 있습니다. 2대의 Node로도 충분히 구성은 가능합니다만, 개발사의 권장사항은 3대 이상의 Node입니다. 

'시스템 > 리눅스 서버' 카테고리의 다른 글

MariaDB Galera Cluster + HAProxy 구성 (CentOS6.6)  (0) 2015.06.01
Zabbix 2.4 한글화 파일  (0) 2015.06.01

Zabbix 2.4 버전은 약 3300개 스트링 중에 300개 정도 번역되어 한글화가 되어 있습니다. 프로젝트를 진행하면서 한글화가 되어야 부분이 필요하여 제일 자신이 없는 한글화이지만 Zabbix 한글화를 진행하였습니다.

 

설치 파일은 아래의 경로에 넣으시면 됩니다. 기준은 2.4 버전의 Zabbix 입니다. 2.2 버전에서는 잘 될지 모르겠네요.

 

/usr/share/zabbix/locale/ko/LC_MESSAGES

 

경로에 파일을 넣어주시고

 

apache 를 재구동 해주시면 됩니다.

 

솔직히 한글화라 해서 정확하게 하진 못했습니다. 워낙 다국어 실력이 떨어지다보니 혹시라도 이상한 부분이 있거나 하시면 덧글 달아주세요. 수정해서 올려놓겠습니다. 

 

 

frontend.mo

+ Recent posts