1. PUB instance 설정
1.1 Jenkins, docker, java install
- 젠킨스, 도커, 자바 자동화 쉘 스크립트
vi install_docker_jenkins.sh
#!/bin/bash
# 도커 설치
sudo apt-get update
sudo apt-get install -y ca-certificates curl gnupg
sudo install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
sudo chmod a+r /etc/apt/keyrings/docker.gpg
echo \
"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \
$(. /etc/os-release && echo "$VERSION_CODENAME") stable" | \
sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt-get update
sudo apt-get install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
# 자바 설치
sudo apt update
sudo apt install -y openjdk-17-jdk
# 젠킨스 설치
sudo apt update
# Jenkins 공식 키 가져오기
curl -fsSL https://pkg.jenkins.io/debian/jenkins.io-2023.key | sudo tee \
/usr/share/keyrings/jenkins-keyring.asc > /dev/null
# Jenkins 레포지토리 추가
echo deb [signed-by=/usr/share/keyrings/jenkins-keyring.asc] \
https://pkg.jenkins.io/debian binary/ | sudo tee \
/etc/apt/sources.list.d/jenkins.list > /dev/null
sudo apt update
sudo apt install -y jenkins
# Jenkins 서비스를 시작하고 부팅 시 자동으로 시작하도록 설정
sudo systemctl start jenkins
sudo systemctl enable jenkins
echo "Docker와 Jenkins 설치가 완료되었습니다."
chmod +x install_docker_jenkins.sh
./install_docker_jenkins.sh
- 해당 인스턴스 플로팅 IP:8080 접속 후
sudo cat /var/lib/jenkins/secrets/initialAdminPassword
에서 출력된 값으로 로그인 하기~
1.2 Nginx install & setting
vi install_nginx.sh
#!/bin/bash
# 업데이트 및 필요한 패키지 설치
sudo apt-get update
sudo apt-get install -y curl gnupg2 ca-certificates lsb-release
sudo apt-get install -y ubuntu-keyring
# Nginx 서명 키 추가
curl -s https://nginx.org/keys/nginx_signing.key | gpg --dearmor \
| sudo tee /usr/share/keyrings/nginx-archive-keyring.gpg >/dev/null
# 서명 키 확인
gpg --dry-run --quiet --no-keyring --import --import-options import-show /usr/share/keyrings/nginx-archive-keyring.gpg
# Nginx 저장소 추가
echo "deb [signed-by=/usr/share/keyrings/nginx-archive-keyring.gpg] \
http://nginx.org/packages/ubuntu $(lsb_release -cs) nginx" \
| sudo tee /etc/apt/sources.list.d/nginx.list
# 업데이트 및 Nginx 설치
sudo apt-get update
sudo apt-get install -y nginx
# Nginx 버전 확인
nginx -v
chmod +x install_nginx.sh
./install_nginx.sh
- nginx 실행
sudo systemctl start nginx
- nginx 설정
sudo vi /etc/nginx/nginx.conf
worker_processes auto;
error_log /var/log/nginx/error.log notice;
pid /var/run/nginx.pid;
events {
worker_connections 1024;
}
http {
include /etc/nginx/mime.types;
default_type application/octet-stream;
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"'
'backend_server=$upstream_addr';
upstream app {
server 연결할 서버 비공인 IP:8080 weight=100 max_fails=3 fail_timeout=3s;
}
server {
location / {
proxy_pass http://app;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
proxy_set_header Host $host;
proxy_cache_bypass $http_upgrade;
}
}
access_log /var/log/nginx/access.log main;
sendfile on;
#tcp_nopush on;
keepalive_timeout 65;
#gzip on;
}
- nginx 재실행
sudo systemctl reload nginx
1.3 Jenkins SSH 연결 (작성중)
2. PRI APP instance 설정
2.1 접속을 위한 bastion instance setting
scp -i NHN.pem ./NHN.pem ubuntu@PEM 키를 보낼 IP:/home/ubuntu
- 참조
- 나의 pem키 이름: NHN.pem
- 위 명령어는 당연히 pem키를 갖고 있는 (내 PC)에서 수행해야 함
- 키를 보낸 후에 bad permissions: ignore key 에러가 발생한 경우
chmod 400 ./NHN.pem
2.2 Docker, java install
#!/bin/bash
# Update package index
sudo apt-get update
# Install prerequisites
sudo apt-get install -y ca-certificates curl gnupg
# Create directory for Docker keyrings
sudo install -m 0755 -d /etc/apt/keyrings
# Download and install Docker GPG key
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
# Set proper permissions for Docker GPG key
sudo chmod a+r /etc/apt/keyrings/docker.gpg
# Add Docker repository to sources list
echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \
$(. /etc/os-release && echo "$VERSION_CODENAME") stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
# Update package index again after adding Docker repository
sudo apt-get update
# Install Docker packages
sudo apt-get install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
# Run Docker hello-world to test installation
sudo docker run hello-world
# Install Java (OpenJDK)
sudo apt install openjdk-17-jdk
# Check Docker service status
sudo systemctl status docker
3. DB instance 설정
- 앞서 언급했듯이 최적의 이중화를 위한 DB replication은 3차 프로젝트에서 구현할 예정
- 관리자 권한을 가질 유저 생성
- 유저가 모든 서버 (%)에 대해 권한이 있어야하고
- 어플리케이션에 의해 만들어질 DB는 직접 만들어주고 (table은 자동생성)
- 접근 가능한 DB를 모든 DB가 아닌 해당 DB로 권한 등록을 해줘야한다.
4. Ingress Instace 설정
- 아래 글에서 언급한 구조도처럼 Ingress Subnet과 Ingress instance를 설정한다 ..
- 이 때 IGW 위치를 주의깊게 봐줘야한다
- 라우팅 테이블 또한 변경을 해줘야한다
- IGW, ingress, pub1
- IGWB, pub2
- pri01,pri02, nat1
- pri03, pri04, nat2
2024.08.23 - [Cloud☁️/NHN Cloud] - [NHN cloud] [KDT 2차 프로젝트] 인스턴스 설정
- 또한 당연히 Nginx 설치해서 설정파일 건드려야함
'Cloud☁️ > NHN Cloud' 카테고리의 다른 글
[NHN Cloud] Ansible 인스턴스 설정 (0) | 2024.08.23 |
---|---|
[NHN Cloud] [KDT 2차 프로젝트] 3-Tier-Architecture 구조 설계 (0) | 2024.08.23 |