[APM] 2Tier 기반 APM(Apache, PHP, MySQL) 구축 2탄

Asher·2024년 2월 14일
0

APM 구축하기 2탄 입니다.
1탄이 궁금하신 분들은
[APM] 2Tier 기반 APM(Apache, PHP, MySQL) 구축 1탄 여기를 클릭해주세요!

구축방법

  • php 설치
    sudo apt install php php-mysql

  • 보안그룹 Open

    • Web-Server 2 대 -> DB 2대 Inbound Traffic 허용
  • Test PHP 설정

      // PHP 저장 파일 폴더로 이동
          cd /var/www/html
        
      // test.php 파일 작성
        
      sudo vi test.php
        
      // test.php
        
      <?php
        
        	error_reporting(E_ALL);
        
        	ini_set("display_errors", 1);
        
        	date_default_timezone_set('Asia/Seoul');
        
        	$conn = mysqli_connect( "공인 IP", "chan", "7975", "hi", "3306" );
        							#DB IP   Username   PW     DB    PORT
        
        	if( empty( $conn ) == true ) {
        
        	      echo ( "#############" );
        
                      echo ( "</br> default DBMS 접속 호스트 정보가 정확하지 않습니다. </br>\n\n" );
        
            	      exit ( "#################" );
        
        	} else {
        
        	      echo ( "#######" );
        
            	      echo ( "</br> default DBMS 접속에 성공하였습니다. </br>\n\n" );
        
            	      echo ( "-----------------------------------------------------------------------------" );
        
            	      echo ( "<pre>" );
        
            	      print_r ( $conn );
        
            	      echo ( "</pre>" );
        
            	      exit ( "##########################" );
        
        	}
        
        	
        
        	mysqli_close( $conn );
        
        ?>
    • 결과 확인

    DBMS 접속이 안될 때

    • 보안그룹이 제대로 열려있는지 WEB → DB 확인!
    • MySQL 재시작 해보자….
      sudo service mysql restart
    • PHP 문법이 제대로 맞는지 확인!
  • signup_action.php 작성 및 DB 적재 확인

    // 폴더로 이동
    cd /var/www/html
    
    // signup_action 열기
    sudo vi signup_action.php
    
    // signup_action.php
    <?php
    $name=$_POST['name'];
    $email=$_POST['email'];
    $num=$_POST['num'];
    $con = mysqli_connect("공인IP","chan2","7975","hi") or die ("Can't access DB");
    $query = "insert into exam (name,email,num) values('".$name."','".$email."','".$num."')";
    $resut=mysqli_query($con,$query);
    if(!$result)
    {?>
        <script> alert('회원가입이 완료되었습니다.'); location.href=".."; </script>
    <?php
    } else {?>
        <script> alert('회원가입에 실패했습니다.\n다시 시도해 주세요.'); location.href=".."; </script>
    <?php } ?>
    • 결과확인

  • LB 생성 및 보안 그룹 연결

    • LB 생성
    • 인스턴스에 LB 보안그룹 연결
      -> 어떤 CSP던 상관 없습니다
  • DB Replication (양방향)

    • mysqld.cnf 수정 + 보안그룹 OPEN

      // **DB1 Instance**
      // 폴더이동 
      cd /etc/mysql/mysql.conf.d
      
      // mysqld.cnf 수정
      sudo vi mysqld.cnf
      
      # 서버 ID
      server-id = 1
      # Log 저장 위치
      log_bin = /var/log/mysql/mysql-bin.log
      # Replication 할 DB
      binlog_do_db = hi
      
      //mysql 재시작
      
      sudo service mysql restart
      • 결과확인

        // **DB2 Instance**
        // 폴더이동 
        cd /etc/mysql/mysql.conf.d
        
        // mysqld.cnf 수정
        sudo vi mysqld.cnf
        
        # 서버 ID
        server-id = 2
        # Log 저장 위치
        log_bin = /var/log/mysql/mysql-bin.log
        relay-log = /var/log/mysql/mysql-relay-bin.log
        # Replication 할 DB
        binlog_do_db = hi
        
        //mysql 재시작
        
        sudo service mysql restart
      • 결과확인

    • MASTER, SLAVE 정보 확인 및 설정

      • MySQL 접속 (DB 1)
        SHOW MASTER STATUS;

      • MASTER - SLAVE 양방향 설정 DB1, DB2 둘 다

        
        // DB2에 적용
        CHANGE MASTER TO 
        MASTER_HOST='DB 사설 IP 1', 
        MASTER_PORT=3306,
        MASTER_USER='chan', 
        MASTER_PASSWORD='7975', 
        MASTER_LOG_FILE='mysql-bin.000001', 
        MASTER_LOG_POS=  1525;
        
        LOG_POS, LOG_FILE 잘 확인
        IP는 사설 IP로 적용
        
        // DB1에 적용
        CHANGE MASTER TO 
        MASTER_HOST='DB 사설 IP 2',
        MASTER_PORT=3306,
        MASTER_USER='chan2', 
        MASTER_PASSWORD='7975', 
        MASTER_LOG_FILE='mysql-bin.000002', 
        MASTER_LOG_POS=  444;
    • Slave 상태 확인

      SHOW SLAVE STATUS\G;

profile
System Engineer의 발전기록

0개의 댓글

관련 채용 정보