Centos7 DB Replication, WEB Moodle

배찌 (배찌)·2023년 3월 21일
0

SDN Service

목록 보기
2/2

구성요소

Server

  • HP Gen9 DL360
  • Esxi7

DB

  • 4v cpu, 8gb ram, 50gb hdd
  • 192.168.1.41
  • 192.168.1.42
  • CentOS7

WEB

  • 8v cpu, 16gb ram, 40gb hdd
  • 192.168.1.31
  • 192.168.1.32
  • CentOS7

WEB의 경우 하나로 모두 설치한 후 복제하여 배포

MariaDB Replication

가용성을 위하여 DB 이중화 구현
최신 Moodle4.1.2+의 경우 MariaDB가 10.4 이상이여야한다.

공통 사항

레포지터리 추가

cat >> /etc/yum.repos.d/MariaDB.repo << EOF
[mariadb]
name = MariaDB
baseurl = http://yum.mariadb.org/10.4/centos7-amd64
gpgkey=https://yum.mariadb.org/RPM-GPG-KEY-MariaDB
gpgcheck=1
EOF
yum -y update

yum install MariaDB-client MariaDB-server policycoreutils-python

sellinux 확인

firewall-cmd --add-service=mysql --permanent
firewall-cmd --reload

Master Node

설정 추가

vi /etc/my.cnf
[mysqld]
log-bin=mysql-bin
server-id=1

서비스 시작

systemctl start mariadb
systemctl enable mariadb

root 비밀번호 설정

mysql -u root -p

alter user 'root'@'localhost' identified by '123qwe!@#QWE';

Slave 유저 생성 및 권한 생성

CREATE USER 'slave'@'%' IDENTIFIED BY '123qwe!@#QWE';
GRANT REPLICATION SLAVE ON *.* TO 'slave'@'192.168.1.42' identified by '123qwe!@#QWE';
FLUSH PRIVILEGES;

현재는 모든 테이블을 복사하지만 다르게 한다면 테이블마다 다르게 master와 slave설정이 가능하다

상태 확인

show master status;

Slave

설정편집

vi /etc/my.cnf
[mysqld]
server-id=2

이렇게 설정하면 어떤 DB에 접속하든 서로 수정이 가능한 상태가 된다. 즉, Active-standby가 아닌 Active-Active로 된다.

Active-Standby로 하고 싶다면 다음을 추가하면 된다.

read_only=1
report-host=<host or domain>

ip혹은 도메인으로 하면 되는데 도메인으로 하는게 버그가 생길 가능성이 낮다.

systemctl start mariadb
systemctl enable mariadb

Replication 설정

CHANGE MASTER TO
MASTER_HOST='192.168.1.41',
MASTER_USER='slave',
MASTER_PASSWORD='123qwe!@#QWE',
MASTER_LOG_FILE='mysql-bin.000001',
MASTER_LOG_POS=975;

여기서 MASTER_LOG_FILE과, MASTER_LOG_POS의 경우 상단의 show master status로 나온 내용을 그대로 넣으면 된다.

상태확인

SHOW SLAVE STATUS\G

Moodle 설치

Sertbot을 사용한 ssl 발급, moodle을 위한 관련 라이브러리 설치

WEB

레포지터리 추가

yum -y install https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
yum -y install https://rpms.remirepo.net/enterprise/remi-release-7.rpm
yum -y update

yum 도구 설치

yum -y install yum-utils

php 버전 허용

yum-config-manager --enable remi-php74

적용 확인

yum list php

yum install php httpd

php 라이브러리 설치 이 부분의 경우 앞서 설치하면서 기록한 내용을 그대로 가져와서 했다. 이것이 없더라도 WebUI설치 과정에서 알 수있다.

DB

MariaDB Moodle Database 생성

CREATE DATABASE moodle DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
create user 'moodle'@'192.168.1.31' identified by '123qwe';
create user 'moodle'@'192.168.1.32' identified by '123qwe';
grant all privileges on moodle.* to moodle@'192.168.1.31' identified by '123qwe';
grant all privileges on moodle.* to moodle@'192.168.1.32' identified by '123qwe';
flush privileges;

무들은 다국어를 지원하기 때문에 데이터베이스를 만들때 문자셋 및 콜레이션을 설정해서 생성해야한다.

WEB

ssl 발급 및 버츄얼 호스트지정

 yum -y install certbot

certbot을 사용하기 위해 http 방화벽을 열면서, 추후에 사용할 https와 mysqld를 추가
일반적으로 방화벽 mysql를 추가 할 필요가 없지만, 어째서인지 moodle은 데이터베이스와 연결할때 클라이언트도 mysql 포트가 오픈되어 있어야 DB 연동이 진행된다.

firewall-cmd --add-service=http --add-service=https --add-service=mysql --permanent
firewall-cmd --reload
certbot certonly --standalone -d <doamin>

ssl 모듈 설치

yum -y install mod_ssl

아파치 설정

vi /etc/httpd/conf/httpd.conf
<VirtualHost _default_:443>

        ServerName <doamin>
        SSLEngine on
        SSLCertificateFile /etc/letsencrypt/live/<doamin>/cert.pem
        SSLCertificateKeyFile /etc/letsencrypt/live/<doamin>/privkey.pem
        SSLCertificateChainFile /etc/letsencrypt/live/<doamin>/chain.pem
        SSLCACertificateFile /etc/letsencrypt/live/<doamin>/fullchain.pem

</VirtualHost>

moodle 사이트에 업로드된 파일이 저장될 디렉터리 지정

mkdir /var/moodledata
chown apache.apache -R /var/www/html/moodle
chown apache.apache /var/modledata
systemctl start httpd
systemctl enable httpd

설치 과정에서 moodledata경로만 수정해주면된다.
만약 나처럼 웹서버 이중화를 한다면 서버 ip로 웹 서버를 역지않고 도메인으로 접속해서 설치를 진행해야 한다.

DB 연결

php 라이브러리가 정상적으로 모두 설치가 되면 다음과 같이 진행된다.

만약에 안된게 잇다면 한개씩 눌러서 설치를 진행하면된다.

profile
Never give up Impossible is nothing

0개의 댓글