바로 이전 게시글에서 했던 master, slave 설정을 해준다.
저번에는 Active(쓰기 전용) - Active(읽기 전용)으로, msater에서는 쓰기로 slave에서는 읽기만 할 수 있게끔 세팅을 했다.
하지만 이번에는 Active(읽기, 쓰기) - Active(읽기, 쓰기)로 설정을 할 것이다.
저번 세팅에 추가해야 될 것은?
CREATE USER 'test1'@'%' IDENTIFIED BY 'Dkagh1234!';
GRANT REPLICATION SLAVE ON *.* TO 'test1'@'%';
CREATE USER 'test2'@'%' IDENTIFIED BY 'Dkagh1234!';
GRANT REPLICATION SLAVE ON *.* TO 'test2'@'%';
CREATE DATABASE cdh;
USE cdh;
CREATE TABLE student ( sname VARCHAR(10), sage INT );
INSERT INTO student (sname, sage) VALUES ('kim', 30);
quit
haproxy에서 mysql에 접근하기 위해서는 비밀번호가 없는 mysql 사용자가 필요하다.
그렇기 때문에 우리는 비밀번호 정책을 제거한 후, 임의의 사용자를 만들어야 한다.
mysql -u root -p 로 mysql 서버에 로그인 (비밀번호 정책 제거)
패스워드 없는 사용자 생성
vi /etc/haproxy/haproxy.cfg
가장 아랫줄에 위의 그림처럼 작성해주자.
분산 처리해주는 알고리즘 RR 알고리즘을 사용했는데 운영체제때 다루었던 알고리즘이기에 넘어가겠다.
option mysql-check user 뒤에 비밀번호를 제거한 mysql 사용자 명인 remote를 써주자(만약 remote가 아니라면 본인이 설정한 이름)
그 밑에 server (db 서버명) (그 서버의 ip):3306 check
여기서 db 서버명은 자기 마음대로 쓰면 된다.
총 2개를 설정했으니 두개 써주자.
우리는 두개의 db 서버로 분산 처리를 하기 때문에 2개가 떠있는 것을 볼 수있다.
mysql에서 실제로 접속했을 때 분산 처리가 되는지 확인해보자.
세팅은 위의 그림처럼 해주면 된다.
username은 우리가 비밀번호 없이 접속할 수 있게 만들어준 user의 이름을 써주고, hostname은 haproxy를 설치한 vm의 ip를 써준다.
connection name은 설정하고 싶은 아무거나 설정하면 된다.
여러개를 접속해서 쿼리문으로 show variables like '%server_id%'; 를 작성하고 결과를 본다면?