클라우드 :
서버를 직접세팅할필요없고 세팅을 해놓으면 클라우드가 알아서 설정해준다.
epl-release 저장소목록
yum i -y stress -> cpu한테 부하를 주는 프로그램
top -> 이아이의 cpu메모리를 확인 할 수 있음
stress -c 1 -> cpu사용량이 100%로 올라감
cpu가 100%가 되면 컴퓨터가 동작이 되지 않는다.
-> 사람이 엄청 몰리거나 디도스공격을 받으면 100%가 된다.
Apache :
자바기반으로 만들어져 있기 때문에 java설치가 필요하다. 메이플실습을 할때 자바를 미리 설치해놓았으므로 일단 Apache설치를 해보쟈
jmet.bat파일을 열면 아래처럼 나온다
Thread Group 추가해주기
Thread Group에서 부하설정하기
Number of Threads - 동시에 DB서버에 요청을 보내는 사용자를 총 몇명을 할것인지 : 접속자수
Ramp-up period - 사용자들이 총 얼마의 시간동안 요청을 할것인지 : 숫자가 작을수록 부하가 많이걸림
Loop Count - 반복요청횟수
JDBC Connection Configuration
Variable Name for created pool: dbpool Validation Query : select 1 Database URL: jdbc.mariadb://[DB 서버 IP 주소]:3306/[DB이름] JDBC Driver class : org.mariadb.jdbc.Driver -> 우리DB서버가 mariadb니까 이걸 설정한다! / 수동으로 다운받아서 설정해줘야함. Username : DB서버에 접속할 ID Passwrod : DB서버에 접속할 PW ->vip주소를 생성해놓았으니 그걸로 연결이 되도록 설정
클라가 DB서버에 접속하려면 ip주소, id, pw, db이름, port번호
![]()
JDBC Request
Variable Name of Pool declared in JDBC Connection Configuration : dbpool Query Type : Select Statement Query : SELECT * FROM web.wp_posts;
위 설정이 끝나고 Thtread Group에서 사용자수를 100단위로 늘려보자. 그러면 140, 150정도까지만 돌아가게 되는데
DB에 max_connection을 살펴보면 151이 최대로 되어있는 걸 볼 수 있다.
max_connections를 500으로 바꿔주고 부하를 확인해보쟈
위에 초록색 스타트버튼을 누르면 실행됨
TPS - 초당 트래픽 수 -> 대용량 트래픽이야기를 할때
엔그라인더로 테스트하면 TPS가 나옴
이떄 어떤 문제가 생길까?
회원가입을 할때 master로 가서 저장하면 slave에도 저장이 된다.
근데 회원가입때 slave로 가서 저장하면 master에도 저장이 될까? 놉
Active-Active로 운영을 하기 위해서는 양쪽에 master slave를 설정해줘야한다.
Slave에 Master 설정
1) 기존 서버 사용
2) master 설정
vi /etc/my.cnf.d/mariadb-server.cnf
[mariadb] <- 이거는 추가하는거 아님
log-bin
server_id=1
log-basename=master1
binlog-format=mixed
3) master 확인
mysql
show master status;
4) 사용자 추가 및 권한 설정
CREATE USER 'slave_user'@'%' IDENTIFIED BY 'qwer1234';
GRANT REPLICATION SLAVE ON . TO 'slave_user'@'%';
5) DB 백업
mysqldump -u root [DB 이름] > web.sql
scp web.sql [SLAVE 서버의 IP]:/root/web.sql
Master에 Slave설정
1) DB 서버 프로그램 설치
yum install -y mariadb-server
2) DB 서버 프로그램 실행
systemctl start mariadb
3) 방화벽 끄기
setenforce 0
systemctl stop firewalld
4) DB 생성
mysql
CREATE DATABASE [DB 이름];
exit
5) DB 복구
mysql -u root [DB 이름] < web.sql
6) DB 서버 설정
vi /etc/my.cnf.d/mariadb-server.cnf
[mariadb] <- 이거는 추가하는거 아님
server_id=2
systemctl restart mariadb
7) Master 지정
mysql
CHANGE MASTER TO
MASTER_HOST='[Master 서버 IP]',
MASTER_USER='slave_user',
MASTER_PASSWORD='qwer1234',
MASTER_PORT=3306,
MASTER_LOG_FILE='[마스터에서 show master status 했을 때 File 이름]',
MASTER_LOG_POS=[마스터에서 show master status 했을 때 position 번호],
MASTER_CONNECT_RETRY=10;
START SLAVE;
8) Slave 확인
SHOW SLAVE STATUS\G
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
Slave를 Master로 Master로 Slave로 만든 후 Start slave; 했을때 아래 해당 에러가 발생했다.
Slave를 Master로 Master를 Slave로 설정했을때 기존 Master와 Slave 설정의 동기화가 깨졌다는 의미이다.
reset slave;
start slave;
위 명령을 실행시켜준다.
다시 SHOW SLAVE STATUS\G 를 실행시켜보면 Slave_IO_Running: Yes,Slave_SQL_Running: Yes 인 것을 확인해볼 수 있다.
두 디비가 서로 master/slave db로 설정해줬으므로 테스트를 해보면
Slave로 설정한 Master DB에 Master로 설정한 Slave DB에서 넣은 MOCK_DATA테이블이 들어간것을 볼 수 있다.
두 DB를 HAproxy를 생성해서 연결시켜주쟈
%
DB를 하나 더 추가해서 연결하는거는 클러스터링을 하면ㄷ ㅚ고
DB 두개를 master, slave 를 서로 설정해준것을 replication 이라고 한다.
서버3대이상 구성할때 사용하는 프로그램. 여기선 master/slave는 기본 투표권이 있냐없냐.
리눅스 실행 프로그램? 프로그램을 확인하곻 프로그램의 경로를 먼저 넣어주자
dll - exe실행프로그램을 가져다 만드는 형태로 만든다
A,B 프로그램이 있으면 리눅스에는 exe가 없고
galera : 리눅스의 실행파일
wsrep_cluster_address : 연결할 모든 컴퓨터 ip주소를 다 적어준다. 적어준 모든 ip주소를 묶어준다는 의미
wsrep_node_address : 여기는 내꺼만 적는것. 현재 컴퓨터의 ip주소를 적어주면 된다. 각자컴퓨터에서 다르게 적혀야한다.
rsync로 묶어줄건데 성능이 안좋으면 바꿔줄수있다.
1. 가상 머신 준비
3대 준비
2. mariadb 설치
3대 모두 설치
3. galera 및 필수 프로그램 설치
yum install -y galera
yum -y install rsync nmap lsof perl-DBI nc
4. mariadb 서버 설정
vi /etc/my.cnf.d/mariadb-server.cnf
[galera]
# Mandatory settings
wsrep_on=ON
wsrep_provider=/usr/lib64/galera/libgalera_smm.so
wsrep_cluster_address='gcomm://10.10.10.10,10.10.10.20,10.10.10.30'
binlog_format=row
default_storage_engine=InnoDB
innodb_autoinc_lock_mode=2
wsrep_cluster_name='maria_cluster' # 클러스터의 이름, 3대 통일
wsrep_node_address='10.10.10.20' # 현재 컴퓨터의 IP
wsrep_node_name='DB2'
wsrep_sst_method=rsync
5. 첫번째 서버
yum install -y mariadb-galera-server
galera_new_cluster
6. 나머지 2대 서버
systemctl restart mariadb
7. 확인
mysql
SHOW STATUS LIKE '%wsrep_%';
SHOW STATUS LIKE 'wsrep_cluster_size';
workbench에 들어가서 DB서버 세개중 데이터를 넣고 3개 다 같은 데이터가 들어가는지 확인하면된다.
DB2, DB3를 설치하고 mariadb 재시작을 했지만 되지 않아서 들어가서 에러코드를 살펴보았다.
마지막 3줄 위에 내용은 mariadb가 잘 실행되었다는 내용이지만 마지막 3줄은 mariadb가 꺼졌다! 라는 의미지만, 에러로그를 뱉고있지 않아서 왜 갑자기 꺼졌는지 원인을 알수가 없다.
그래서 다시 DB1,2,3을 재부팅하고 다시 처음부터 실행한 후에
tail -f 로 로그를 까보기로 했다.
에러났을때 로그보기
cat/var/log/블라블라
cat /var/log/mariadb/maraidb.log
tail -f /var/log/mariadb/maraidb.log -> 창을 따로 띄워놓고 보기