서버 관리/DB 서버

13. db 이중화2

각수짱 2023. 2. 13. 17:39
728x90
반응형
SMALL

db 이중화 2 구조

Active(읽기, 쓰기) - Active(읽기, 쓰기) 구조

vi /etc/haproxy/haproxy.cfg

마지막 줄에 추가
	listen stats			# haproxy 모니터링 페이지 설정
	    bind :9000			# 웹브라우저를 이용해서 9000포트로 접속하면 
	    stats enable			# haproxy 모니터링 페이지로 접속 됨
	    stats realm Haproxy\ Statistics	# http://[서버IP]:9000/haproxy_stats
	    stats uri /haproxy_stats

	listen mysql-cluster
	    bind :3306
	    mode tcp
	    balance roundrobin
	    option mysql-check user [mysql의 사용자 이름 이 예제에선 remote]		
			# mysql에 헬스체크를 하는데 쓸 사용자 이름을 지정
			# haproxy는 mysql에 접속할 때 패스워드를 이용한 인증을 지원하지 않기 때문에
			# mysql 서버에서 패스워드 없이 접속할 수 있는 사용자를 생성해주어야 한다.

	    server [서버이름1] [서버1_IP]:3306 check
	    server [서버이름2] [서버2_IP]:3306 check

mysql 설정

패스워드 정책 제거

mysql -u root -p
		uninstall plugin validate_password;	5.7버전
		uninstall component 'file://component_validate_password';	8.0버전
	quit

systemctl restart mysqld

패스워드 없는 사용자 생성

	mysql -u root -p
		CREATE USER '사용자 이름'@'%';	권한도 없고 패스워드도 없는 사용자가 생성됨
		GRANT ALL PRIVILEGES ON *.* TO 'remote'@'%'; // 여기서 remote는 임의의 계정이름

양방향으로 master - slave 설정

2023.02.13 - [서버 관리] - 12. db 이중화1

여기에서 양쪽 db서버다 마스터 슬레이브 설정

 

12. db 이중화1

DB 이중화 네트워크설정 방화벽 설정 setenforce 0//로컬 방화벽 끄기 systemctl stop firewalld//방화벽 끄기 MYSQL 설치 mysql_secure_installation y 0 Dkagh1234! Dkagh1234! y y y y y Master 설정 (MySQL1) /etc/my.cnf.d/mysql-server.c

gaksu.tistory.com

haproxy 설정

설치

yum install haproxy

설정

systemctl stop firewalld	//방화벽 끄기
setenforce 0	//로컬방화벽 끄기
vi /etc/haproxy/haproxy.cfg

마지막 줄에 추가
	listen stats			# haproxy 모니터링 페이지 설정
	    bind :9000			# 웹브라우저를 이용해서 9000포트로 접속하면 
	    stats enable			# haproxy 모니터링 페이지로 접속 됨
	    stats realm Haproxy\ Statistics	# http://[서버IP]:9000/haproxy_stats
	    stats uri /haproxy_stats

	listen mysql-cluster
	    bind :3306
	    mode tcp
	    balance roundrobin
	    option mysql-check user [mysql의 사용자 이름 이 예제에선 remote사용]		
			# mysql에 헬스체크를 하는데 쓸 사용자 이름을 지정
			# haproxy는 mysql에 접속할 때 패스워드를 이용한 인증을 지원하지 않기 때문에
			# mysql 서버에서 패스워드 없이 접속할 수 있는 사용자를 생성해주어야 한다.

	    server [서버이름1] [서버1_IP]:3306 check
	    server [서버이름2] [서버2_IP]:3306 check

서비스 재시작

	systemctl restart haproxy	// 에러 발생, 리눅스는 기본적으로 
				// 본인 IP가 아닌 주소로 포트 여는 것 불가하기 때문에
	systemctl status haproxy	// 에러 확인
	cat /var/log/messages	// 로그 확인

	echo 1 > /proc/sys/net/ipv4/ip_nonlocal_bind 	// 본인 IP가 아니어도 포트 열 수 있게 허용
	setenforce 0	// 방금 위의 설정을 SELINUX 방화벽이 막기 때문에 방화벽 끄기

	systemctl restart haproxy	// 에러 없이 정상적으로 실행	
	systemctl status haproxy	// 상태 확인

테스트

haproxy 모니터링 페이지에서 확인

http://[프록시 서버 IP]:9000/haproxy_stats 접속했을 때 DB 서버 2대가 UP상태여야 함

master1 master2 서버 2대가 up상태

mysql 접속

mysql 클라이언트로 mysql 서버로 접속하는데 이때 서버의 IP를 프록시 서버의 IP로 지정

show variables LIKE '%server_id%'\G;

서버 ID 확인했을 때 설정한 서버 ID가 맞는지 확인

mysql 서버 만들기
설정한 서버 ID가 맞는지 확인

 

 

728x90
반응형
LIST