[Tistory] 로드 밸런싱 & 인프라 이중화 구축

원글 페이지 : 바로가기

출처: https://velog.io/@minwest/%EB%A1%9C%EB%93%9C-%EB%B0%B8%EB%9F%B0%EC%8B%B1-%EC%9D%B8%ED%94%84%EB%9D%BC-%EC%9D%B4%EC%A4%91%ED%99%94-%EA%B5%AC%EC%B6%95 로드 밸런싱 & 인프라 이중화 구축 minwest·2021년 2월 23일 네트워크 3 ✏️ 로드 밸런서 💻 인프라 이중화 구축 시스템 구성도 실습 Yum Local Repository 설정 Apache Web Server 설치 Tomcat 설치 Apache – Tomcat 로드밸런싱 오류 발생 여부 확인하는 법 ✏️ 로드 밸런서 Client가 많아지면 서버 1대로 트래픽을 감당하기 힘들다. 이 문제를 해결하기 위한 방법이 2가지 있다. Scale-up : 하드웨어의 성능을 올리는 방법 Scale-out : 서버의 수를 증가시키는 방법로드 밸런싱 : 여러 대의 서버에 트래픽을 분산시켜주는 서비스 로드 밸런서의 서버 선택 방식 – 라운드 로빈 – Least Connection : 연결 개수가 가장 적은 서버 선택 – Source : 사용자의 IP를 해싱하여 분배 💻 인프라 이중화 구축 Linux & OpenSource를 활용한 인프라 이중 구축 실습 시스템 구성도 실습 Yum Local Repository 설정 Web Server용 가상머신에 Apache를 설치할 때 yum을 사용하면 편리한데 Redhat 무료 버전에서는 지원되지 않는다. 이를 해결하기 위해 다양한 방법을 시도해 보다가 Local에 Yum Repository를 만들어 사용하는 방법으로 해결했다. 이 방법을 사용하기 위해서는 Redhat iso파일이 필요하다. 가상 머신에 ISO 이미지 파일을 연결해준다. (체크박스도 체크) cdrom 디렉토리를 생성한 후 ISO 이미지 파일을 mount 해준다. (여기부턴 root 권한으로 해주기. 명령어 : su) # mkdir /mnt/cdrom
# mount /dev/cdrom /mnt/cdrom mount 되었는지 확인하는 방법 Package를 복사할 디렉토리를 생성한다. Redhat7은 원하는 이름으로 해주면 된다. # mkdir -p /Redhat7/Package
# cd Redhat7/Package 4. Package를 생성해준 디렉토리에 복사해준다. 생성한 Redhat7 디렉토리에서 명령어를 실행한다. comps 파일 이름이 너무 길기 때문에 변경해준다. # cp /mnt/cdrom/repodata/*comps*xml.gz /Redhat
# mv *comps*xml.gz comps.xml.gz
# gzip -d comps.xml.gz 4.1
# cp /mnt/cdrom/Package/* /Redhat7/Package Redhat7/Package 디렉토리에 세가지 패키지를 설치해준다. (키보드의 tab 버튼을 누르면 패키지명 쉽게 입력 가능) # rpm -ivh createrepo-0.9.8-4.el6.noarch.rpm python-deltarpm-3.5-0.5.20090913git.el6.x86_64.rpm deltarpm-3.5-0.5.20090913git.el6.x86_64.rpm Redhat7 디렉토리에서 local에 Repository를 생성해준다. # createrepo -g comps.xml . local.repo 파일을 생성해준다. # vi /etc/yum.repos.d/local.repo [Package]
name=RedHat Linux Local Repository
baseurl=file:///Redhat7/
enabled=1
gpgcheck=0 yum 설정을 확인해준다. # yum list Apache Web Server 설치 yum을 사용할 수 있게 되었으므로 yum을 통해 간편하게 Apache를 설치할 수 있다. 계속 root 권한으로 진행해주었다. Apache Web Server를 설치해준다. # yum install -y httpd -y 조건을 주면 y/N에 입력할 필요 없이 바로 설치 된다. yum을 사용해 Apache를 설치하면 /etc/httpd의 경로에 설치 된다. 방화벽을 설정해준다 # firewall-cmd –permanent –add-service=http
# firewall-cmd –permanent –add-service=https
# firewall-cmd –reload 서비스를 활성화한 후 시작한다. # systemctl enable httpd
# systemctl start httpd 웹 브라우저를 통해 접속을 확인해 준다 ip 주소 확인하는 법 # ip address http://ip_address 에 접속했을 때 다음과 같은 화면이 뜬다면 성공 기본 문서가 /var/www/html/index.html로 되어있지만 index.html 파일이 존재하지 않아 위와 같은 화면이 뜬 것이다.해당 경로에 가서 index.html 파일을 생성한 후 html 코드를 작성해 주면 작성한 코드의 화면이 뜬다. Tomcat 설치 – Java 설치 Tomcat 설치를 위해 우선 Java를 설치해주었다. 처음엔 Oracle 홈페이지에서 jdk 다운로드 링크를 복사해 wget 명령어를 통해 설치해주려했다. 하지만 Oracle 정책이 바뀌었는지 로그인을 해야만 다운받을 수 있어 yum을 통해 openJDK를 설치해주었다. 설치 가능한 jdk 버전을 확인한 후 설치해준다. # yum list java*jdk-dvel 이를 통해 확인한 파일을 yum install 명령어로 설치해 주면 된다. 이 방법도 있지만 나는 조금 다른 명령어를 사용해 설치해주었다. 둘 중 아무 방법이나 해도 될 것 같다. # yum install java
# yum install java-devel 설치를 마친 후 java 버전을 확인해 본다. # java -version 환경 변수를 설정해준다. javac의 위치를 확인한 후 원본 파일의 위치를 추출한다. /etc/profile파일에 export 구문을 추가해준다. 이 때 위에서 추출한 원본 파일의 위치를 bin 전까지 넣어준다. # vi /etc/profile export JAVA_HOME=//usr/lib/jvm/java-1.8.0-openjdk-1.8.0.161-0.b14.el7_4.x86_64
– 수정한 내용을 적용해 준다. # source /etc/profile 잘 적용되었는지 확인해 준 후 이를 이용해 javac 버전을 확인해 준다. *javac 경로 : $JAVA_HOME/bin/javac – Tomcat 설치 yum을 사용해 톰캣을 설치해준다. # yum install -y tomcat* *Tomcat 경로 : /usr/share/tomcat 방화벽을 설정해준다. # firewall-cmd –permanent –add-port=8080/tcp
# firewall-cmd –reload 서비스를 활성화하고 시작해준다. # systemctl enable tomcat
# systemctl start tomcat 웹 브라우저를 통해 접속을 확인해 준다. ip address 확인하는 법 # ip address http://ip_address:8080에 접속했을 때 다음과 같은 화면이 뜨면 성공 Apache – Tomcat 로드밸런싱 Apache용 VM 1대, Tomcat용 VM 2대를 이용해 로드 밸런싱을 설정해주었다. mod_jk 설치 아파치와 톰캣을 연동하기 위해 mod_jk를 설치해주어야 한다. mod_jk를 설치하기 위해 3가지 패키지를 설치해준다. # yum install gcc gcc-c++ httpd-devel https://tomcat.apache.org/download-connectors.cgi 위의 사이트에서 Tomcat Connector를 다운 받는다.(tar.gz 파일)다운로드 방법 1) 다운로드 링크를 복사해 리눅스에서 다운 받기 # wget -c 링크 주소 2) ftp 소프트웨어를 통해 다운 받기 나는 filezila를 사용해 다운 받아주었다. 다운 받은 파일의 압축을 풀어준다. # tar zxvf tomcat-connector* 해당 디렉토리로 이동한다. # cd tomcat-connector*/native/ 다음 명령어를 실행해준다. # ./configure –with-apxs=/usr/bin/apxs
# make
# make install Selinux를 해제 해준다. # chcon -u system_u -r object_r -t httpd_modules_t /etc/httpd/modules/mod_jk.so
# setenforce 0
# vi /etc/sysconfig/selinux SELINUX=disabled Apache 설정 해당 파일을 생성해 다음 그림과 같이 입력한다. worker.list의 loadbalancer와 tomca1, tomcat2는 원하는 이름으로 지정해주면 된다. worker.tomcat1.host와 worker.tomcat2.host는 각각 VM의 ip 주소를 입력해주어야 한다. port number는 각각 다르게 원하는 대로 지정해준다. # vi /etc/httpd/conf/workers.properties 해당 파일을 다음 그림처럼 수정해준다. # vi /etc/httpd/conf/httpd.conf /를 누르고 jk_module을 검색하면 해당 위치를 쉽게 찾을 수 있다. JKMount /* loadbalancer에서 loadbalancer는 위의 workers.properties에서 지정해준 list 명으로 써줘야 한다!! 아파치 서버를 재 실행시켜준다. # system restart httpd 3. Tomcat 설정 – 모든 과정을 Tomcat용 VM 각각에 해준다.(즉, 총 2 번 해준 것) # vi /usr/share/tomcat/conf/server.xml 해당 경로의 파일을 그림처럼 수정해준다. 이 때 port number는 Apache에서 지정해준 것과 동일하게 해준다. 방화벽을 설정해준다. 여기서도 port number는 동일하게 해준다. # firewall-cmd –permanent –add-port=8090/tcp
# firewall-cmd –reload 서비스를 활성화하고 시작한다. # systemctl enable tomcat
# systemctl start tomcat Test Tomcat용 VM에 이름이 동일하고 실행 결과가 다른 html 파일 2개를 다음 경로에 만든다. 경로 : /usr/share/tomcat/webapps/ROOT 이제 web server(Apache)의 ip주소/해당 html 파일명으로 접속하면 로드밸런싱 결과를 확인할 수 있다. 새로고침 시 두 was 서버(Tomcat)가 번갈아 가며 실행된다. 오류 발생 여부 확인하는 법 다음 명령어를 통해 네트워크 상태를 확인한다. 두 was가 연결되었음을 확인할 수 있다. # netstat -an|more /etc/httpd/conf/httpd.conf 파일을 확인해보면 JKLogFile logs/mod_jk.log를 통해 해당 경로에서 log를 확인할 수 있음을 알 수 있다. 로그를 통해 어느 부분에서 오류가 발생했는지 파악해 해결할 수 있다. # cat mod_jk.log

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다