<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
  <channel>
    <title>와니의 Data Engineering</title>
    <link>https://dev-wanee.tistory.com/</link>
    <description></description>
    <language>ko</language>
    <pubDate>Thu, 4 Jun 2026 08:17:57 +0900</pubDate>
    <generator>TISTORY</generator>
    <ttl>100</ttl>
    <managingEditor>dev-wanee</managingEditor>
    <item>
      <title>CORS 오류가 발생하는 이유</title>
      <link>https://dev-wanee.tistory.com/26</link>
      <description>&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span&gt;CORS(Cross-Origin Resource Sha&lt;/span&gt;&lt;span&gt;ring) 오류는 브라우저의 보안&lt;/span&gt;&lt;span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;정책 때문에 발생한다.&lt;/span&gt;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;span&gt;현재 상황&lt;/span&gt;&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li style=&quot;list-style-type: disc;&quot; data-indent=&quot;0&quot;&gt;&lt;span&gt;프론트&lt;/span&gt;&lt;span&gt;엔드:&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;background-color: #000000; color: #ffc9af;&quot;&gt;http://localhost:3000&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li style=&quot;list-style-type: disc;&quot; data-indent=&quot;0&quot;&gt;&lt;span&gt;API 서버:&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;background-color: #000000; color: #99cefa;&quot;&gt;http://localhost:3001&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li style=&quot;list-style-type: disc;&quot; data-indent=&quot;0&quot;&gt;&lt;span&gt;포트가 다르면 다른 Origin으로 간주됩니다.&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;COR&lt;span style=&quot;font-size: 1.12em; font-family: -apple-system, BlinkMacSystemFont, 'Helvetica Neue', 'Apple SD Gothic Neo', Arial, sans-serif; letter-spacing: 0px;&quot;&gt;S 동작 방식&lt;/span&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span&gt;1. 브라우&lt;/span&gt;&lt;span&gt;저가 요청을 보냅니다&lt;/span&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li style=&quot;list-style-type: disc;&quot; data-indent=&quot;3&quot;&gt;&lt;span&gt;클라이언트에서&lt;span&gt; &lt;span style=&quot;background-color: #000000; color: #99cefa; text-align: start;&quot;&gt;http:&lt;/span&gt;&lt;span style=&quot;background-color: #000000; color: #99cefa; text-align: start;&quot;&gt;//localhost:&lt;/span&gt;&lt;span style=&quot;background-color: #000000; color: #99cefa; text-align: start;&quot;&gt;3001/api/test&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;로 요청&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span&gt;2. &lt;/span&gt;&lt;span style=&quot;font-family: -apple-system, BlinkMacSystemFont, 'Helvetica Neue', 'Apple SD Gothic Neo', Arial, sans-serif; letter-spacing: 0px;&quot;&gt;브라우저가 Origi&lt;/span&gt;&lt;span style=&quot;font-family: -apple-system, BlinkMacSystemFont, 'Helvetica Neue', 'Apple SD Gothic Neo', Arial, sans-serif; letter-spacing: 0px;&quot;&gt;n을 확인합니다&lt;/span&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li style=&quot;list-style-type: disc;&quot; data-indent=&quot;3&quot;&gt;&lt;span&gt;요청 출처:&lt;/span&gt;&lt;span&gt;&lt;span&gt; &lt;span style=&quot;background-color: #000000; color: #ffc9af; text-align: start;&quot;&gt;http://loc&lt;/span&gt;&lt;span style=&quot;background-color: #000000; color: #ffc9af; text-align: start;&quot;&gt;alhost:3000&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li style=&quot;list-style-type: disc;&quot; data-indent=&quot;3&quot;&gt;&lt;span&gt;요청 대상:&lt;span&gt; &lt;span style=&quot;background-color: #000000; color: #99cefa; text-align: start;&quot;&gt;http:&lt;/span&gt;&lt;span style=&quot;background-color: #000000; color: #99cefa; text-align: start;&quot;&gt;//localhost:&lt;/span&gt;&lt;span style=&quot;background-color: #000000; color: #99cefa; text-align: start;&quot;&gt;3001&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li style=&quot;list-style-type: disc;&quot; data-indent=&quot;3&quot;&gt;&lt;span&gt;Origin이 다르므로 CORS&lt;/span&gt;&lt;span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;정책 적용&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;3. &lt;/span&gt;&lt;span style=&quot;font-family: -apple-system, BlinkMacSystemFont, 'Helvetica Neue', 'Apple SD Gothic Neo', Arial, sans-serif; letter-spacing: 0px;&quot;&gt;API 서버의&lt;/span&gt;&lt;span style=&quot;font-family: -apple-system, BlinkMacSystemFont, 'Helvetica Neue', 'Apple SD Gothic Neo', Arial, sans-serif; letter-spacing: 0px;&quot;&gt;&amp;nbsp;응답 헤더를 확인합니다&lt;/span&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li style=&quot;list-style-type: disc;&quot; data-indent=&quot;3&quot;&gt;&lt;span&gt;브라우저는 응답에&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;background-color: color(srgb 0.199297 0.199297 0.199297 / 0.393725); color: #000000;&quot;&gt;&lt;span&gt;Access&lt;/span&gt;&lt;span&gt;-Control-Allow-&lt;/span&gt;&lt;span&gt;Origin&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;헤더가 있&lt;/span&gt;&lt;span&gt;는지 확인&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li style=&quot;list-style-type: disc;&quot; data-indent=&quot;3&quot;&gt;&lt;span&gt;없거나 현재 Origin&lt;/span&gt;&lt;span&gt;(&lt;span style=&quot;background-color: #000000; color: #ffc9af; text-align: start;&quot;&gt;http://loc&lt;/span&gt;&lt;span style=&quot;background-color: #000000; color: #ffc9af; text-align: start;&quot;&gt;alhost:3000&lt;/span&gt;&lt;/span&gt;&lt;span&gt;)을&lt;/span&gt;&lt;span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;허용하지 않으면 차단&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;4. &lt;/span&gt;&lt;span style=&quot;font-family: -apple-system, BlinkMacSystemFont, 'Helvetica Neue', 'Apple SD Gothic Neo', Arial, sans-serif; letter-spacing: 0px;&quot;&gt;브라우저가 응답을 차단합&lt;/span&gt;&lt;span style=&quot;font-family: -apple-system, BlinkMacSystemFont, 'Helvetica Neue', 'Apple SD Gothic Neo', Arial, sans-serif; letter-spacing: 0px;&quot;&gt;니다&lt;/span&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li style=&quot;list-style-type: disc;&quot; data-indent=&quot;3&quot;&gt;&lt;span&gt;JavaScri&lt;/span&gt;&lt;span&gt;pt에서 응답에 접근할&lt;/span&gt;&lt;span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;수 없음&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li style=&quot;list-style-type: disc;&quot; data-indent=&quot;3&quot;&gt;&lt;span&gt;콘솔에&lt;/span&gt;&lt;span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;CORS 오류 표시&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;</description>
      <category>:: Front-end</category>
      <author>dev-wanee</author>
      <guid isPermaLink="true">https://dev-wanee.tistory.com/26</guid>
      <comments>https://dev-wanee.tistory.com/26#entry26comment</comments>
      <pubDate>Mon, 22 Dec 2025 15:19:56 +0900</pubDate>
    </item>
    <item>
      <title>[AWS] posgreSQL db cli로 복제하기 (DB 이전, 마이그레이션)</title>
      <link>https://dev-wanee.tistory.com/25</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;1.&amp;nbsp;원본&amp;nbsp;데이터&amp;nbsp;덤프&lt;/h2&gt;
&lt;pre id=&quot;code_1765873972671&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;PGPASSWORD='{password}' pg_dump \
  -h {원본DB주소} \
  -p 5432 \
  -U {userName} \
  -d {dbName} \
  -n {schemaName} \
  -Fc \
  --clean \
  --no-owner \
  --no-acl \
  --verbose \
  -f neon_backup_20251212.dump&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;2.&amp;nbsp;새&amp;nbsp;DB&amp;nbsp;서버에&amp;nbsp;복사&amp;nbsp;(복사하기전에&amp;nbsp;해당&amp;nbsp;DB가&amp;nbsp;존재해야&amp;nbsp;함)&lt;/h2&gt;
&lt;pre id=&quot;code_1765874076029&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;PGPASSWORD='{새DB비밀번호}' pg_restore \
  -h {새DB주소} \
  -U {userName} \
  -d {dbName} \
  --no-owner \
  --no-acl \
  --verbose \
  --jobs=6 \
  --clean \
  neon_backup_20251212.dump&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;3. api,batch,admin 등 DB 접속정보 변경&lt;/h2&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;4. 1~3하는동안 이전DB에 쌓인 최근 데이터 수동배치로 새 DB에 복사&lt;/h2&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;5. 정상 확인되면 구DB 내림&lt;/h2&gt;</description>
      <category>:: Back-end</category>
      <author>dev-wanee</author>
      <guid isPermaLink="true">https://dev-wanee.tistory.com/25</guid>
      <comments>https://dev-wanee.tistory.com/25#entry25comment</comments>
      <pubDate>Tue, 16 Dec 2025 17:35:37 +0900</pubDate>
    </item>
    <item>
      <title>[AWS] git-remote-codecommit 설치</title>
      <link>https://dev-wanee.tistory.com/24</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;설치하기&lt;/h2&gt;
&lt;pre id=&quot;code_1765856199417&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;# pip 설치 &amp;amp; 확인
sudo yum install -y python3-pip

# git-remote-codecommit 설치
sudo python3 -m pip install git-remote-codecommit

# 리젼 세팅 (서울 ap-northeast-2)
sudo aws configure set region ap-northeast-2 --profile default

# 연결된 레포 확인
sudo aws codecommit list-repositories --region ap-northeast-2

# 코드 디렉토리에 git clone (pet-batch는 예시)
cd /data/app
sudo git clone codecommit://pet-batch

# 디렉토리 권한 변경
ls -ld /data/app
sudo chown -R ssm-user:ssm-user /data/app&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 id=&quot;코드-레포-디렉토리-권한-변경&quot; style=&quot;color: #292a2e; text-align: start;&quot; data-renderer-start-pos=&quot;1379&quot; data-local-id=&quot;488983d8-35b2-466e-849b-6cf415e0e284&quot; data-ke-size=&quot;size26&quot;&gt;코드 레포 디렉토리 권한 변경&lt;span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;aws 콘솔에서 ssm으로 private ec2에 접속했다면 root 권한을 이용할 수 없으므로 ssm-user(aws 콘솔 접속중인 유저)가 수정할 수 있도록 권한 변경&lt;/p&gt;
&lt;pre id=&quot;code_1765856210459&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;cd {디렉토리}
ls -al
sudo chown -R ssm-user:ssm-user .&lt;/code&gt;&lt;/pre&gt;</description>
      <category>:: Back-end</category>
      <author>dev-wanee</author>
      <guid isPermaLink="true">https://dev-wanee.tistory.com/24</guid>
      <comments>https://dev-wanee.tistory.com/24#entry24comment</comments>
      <pubDate>Tue, 16 Dec 2025 12:38:09 +0900</pubDate>
    </item>
    <item>
      <title>[AWS] EC2 amazon linux에서 java, node, bun 등 설치하기</title>
      <link>https://dev-wanee.tistory.com/23</link>
      <description>&lt;h2 data-ke-size=&quot;size26&quot;&gt;dnf 레포 업그레이드&lt;/h2&gt;
&lt;pre id=&quot;code_1765856093081&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;sudo dnf upgrade -y&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;java17 설치&lt;/h2&gt;
&lt;pre id=&quot;code_1765856039434&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;sudo yum install java-17-amazon-corretto
export JAVA_HOME=/usr/lib/jvm/java-17-amazon-corretto.x86_64
export PATH=$JAVA_HOME/bin:$PATH
source ~/.bashrc

# (참고) 코드 빌드
./gradlew build&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;Nodejs 설치&lt;/h2&gt;
&lt;pre id=&quot;code_1765856076760&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;# node 24 레포 추가 (안 하면 자동으로 18버전이 설치됨)
curl -fsSL https://rpm.nodesource.com/setup_24.x | sudo bash -

# Node.js 다운로드 및 설치:
sudo dnf install nodejs -y

# Node.js 버전 확인:
node -v&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;git 설치&lt;/h2&gt;
&lt;pre id=&quot;code_1765856136815&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;sudo yum install -y git&lt;/code&gt;&lt;/pre&gt;</description>
      <category>:: Back-end</category>
      <author>dev-wanee</author>
      <guid isPermaLink="true">https://dev-wanee.tistory.com/23</guid>
      <comments>https://dev-wanee.tistory.com/23#entry23comment</comments>
      <pubDate>Tue, 16 Dec 2025 12:35:54 +0900</pubDate>
    </item>
    <item>
      <title>[AWS] S3 - EC2 이용하는 데 필요한 명령어</title>
      <link>https://dev-wanee.tistory.com/22</link>
      <description>&lt;h2 id=&quot;EC2에서-필요한-IAM-권한&quot; style=&quot;color: #292a2e; text-align: start;&quot; data-renderer-start-pos=&quot;10&quot; data-ke-size=&quot;size26&quot;&gt;EC2에서 필요한 IAM 권한&lt;span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/h2&gt;
&lt;ul style=&quot;list-style-type: disc; color: #292a2e; text-align: start;&quot; data-indent-level=&quot;1&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;AmazonS3FullAccess&lt;br /&gt;&lt;br /&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;EC2에서-기본-명령어&quot; style=&quot;color: #292a2e; text-align: start;&quot; data-renderer-start-pos=&quot;55&quot; data-local-id=&quot;ea4523d6-43ae-4fec-9890-10761479f3cf&quot; data-ke-size=&quot;size26&quot;&gt;EC2에서 기본 명령어&lt;span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/h2&gt;
&lt;pre id=&quot;code_1765855792922&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;# 버킷 내용 목록 보기
aws s3 ls s3://{bucketName}/

# 파일 업로드
aws s3 cp ./local-file.txt s3://{bucketName}/

# 파일 이동
aws s3 mv s3://{bucketName}/{fileName} s3://{bucketName}/{fileName}&lt;/code&gt;&lt;/pre&gt;
&lt;div style=&quot;color: #292a2e; text-align: start;&quot; data-width=&quot;760&quot; data-has-width=&quot;true&quot; data-mode=&quot;wide&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;h2 id=&quot;EC2에서-파일-다운로드-명령어&quot; style=&quot;color: #292a2e; text-align: start;&quot; data-renderer-start-pos=&quot;248&quot; data-local-id=&quot;5a406ac7-d127-4cb8-b9b0-07dd03956d35&quot; data-ke-size=&quot;size26&quot;&gt;EC2에서 파일 다운로드 명령어&lt;span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/h2&gt;
&lt;pre id=&quot;code_1765855884390&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;# 단일 파일 다운로드
aws s3 cp s3://{bucketName}/{fileName} ./

# 폴더 전체 다운로드 (재귀적)
aws s3 cp s3://{bucketName}/{folder}/ ./ --recursive

# 동기화 (변경된 파일만)
aws s3 sync s3://{bucketName}/{folder}/ ./&lt;/code&gt;&lt;/pre&gt;
&lt;div style=&quot;color: #292a2e; text-align: start;&quot; data-width=&quot;760&quot; data-has-width=&quot;true&quot; data-mode=&quot;wide&quot;&gt;
&lt;div style=&quot;background-color: #000000;&quot; data-local-id=&quot;843b111d-5687-4ad8-a26c-9cfe850f9217&quot;&gt;
&lt;div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;</description>
      <category>:: Back-end</category>
      <author>dev-wanee</author>
      <guid isPermaLink="true">https://dev-wanee.tistory.com/22</guid>
      <comments>https://dev-wanee.tistory.com/22#entry22comment</comments>
      <pubDate>Tue, 16 Dec 2025 12:32:30 +0900</pubDate>
    </item>
    <item>
      <title>[AWS] private EC2에서 아웃바운딩이 안되던 이유 (네트워크)</title>
      <link>https://dev-wanee.tistory.com/21</link>
      <description>&lt;h2 id=&quot;1-nat---gateway-vs-instance&quot; style=&quot;background-color: oklch(0.9902 0.004 106.47); color: oklch(0.3039 0.04 213.68); text-align: start;&quot; data-ke-size=&quot;size26&quot;&gt;1. NAT 종류&amp;middot;위치 확인 (Gateway vs Instance)&lt;/h2&gt;
&lt;ul style=&quot;list-style-type: disc; background-color: oklch(0.9902 0.004 106.47); color: oklch(0.3039 0.04 213.68); text-align: start;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;NAT Gateway라면
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;퍼블릭 서브넷&lt;/b&gt;에 있어야 하고, 그 서브넷 라우팅 테이블의 0.0.0.0/0는&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;b&gt;Internet Gateway(IGW)&lt;/b&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;를 가리켜야 합니다.&lt;span data-state=&quot;closed&quot;&gt;&lt;/span&gt;​&lt;/li&gt;
&lt;li&gt;NAT Gateway에&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;b&gt;Elastic IP가 반드시 연결&lt;/b&gt;되어 있어야 합니다.&lt;span data-state=&quot;closed&quot;&gt;&lt;/span&gt;​&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;NAT Instance라면
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;퍼블릭 서브넷에 있고, EIP 또는 Public IP를 가져야 하며,&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;b&gt;Source/Dest Check 비활성화&lt;/b&gt;, 보안 그룹&amp;middot;라우트 구성이 필요합니다.&lt;span data-state=&quot;closed&quot;&gt;&lt;/span&gt;​&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;2&quot; style=&quot;background-color: oklch(0.9902 0.004 106.47); color: oklch(0.3039 0.04 213.68); text-align: start;&quot; data-ke-size=&quot;size26&quot;&gt;2. 서브넷 / 라우팅 연관 상태&lt;/h2&gt;
&lt;ul style=&quot;list-style-type: disc; background-color: oklch(0.9902 0.004 106.47); color: oklch(0.3039 0.04 213.68); text-align: start;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&amp;ldquo;라우팅 테이블은 오케이&amp;rdquo;라고 하셨으니 추가로:
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;private 서브넷이&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;b&gt;정말 그 라우팅 테이블에 연관(Subnet associations)&lt;/b&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;되어 있는지 확인.&lt;span data-state=&quot;closed&quot;&gt;&lt;/span&gt;​&lt;/li&gt;
&lt;li&gt;NAT Gateway와 EC2가&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;b&gt;같은 AZ&lt;/b&gt;에 있는지 확인 (다른 AZ NAT을 타고 가도 되긴 하지만, 잘못된 설정이 없는지 체크).&lt;span data-state=&quot;closed&quot;&gt;&lt;/span&gt;​&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;3--security-group&quot; style=&quot;background-color: oklch(0.9902 0.004 106.47); color: oklch(0.3039 0.04 213.68); text-align: start;&quot; data-ke-size=&quot;size26&quot;&gt;3. 보안 그룹(Security Group) 설정&lt;/h2&gt;
&lt;ul style=&quot;list-style-type: disc; background-color: oklch(0.9902 0.004 106.47); color: oklch(0.3039 0.04 213.68); text-align: start;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;EC2 인스턴스 SG:
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;아웃바운드에&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;b&gt;0.0.0.0/0, TCP 80/443&lt;/b&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;등 필요한 포트가 허용되어 있는지.&lt;span data-state=&quot;closed&quot;&gt;&lt;/span&gt;​&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;NAT Instance를 쓰는 경우:
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;NAT 인스턴스 SG 인바운드가&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;b&gt;private subnet CIDR&lt;/b&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;또는 EC2 SG에서 오는 트래픽을 허용하는지 확인.&lt;span data-state=&quot;closed&quot;&gt;&lt;/span&gt;​&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;NAT Gateway는 SG를 직접 붙일 수 없으니, NAT가 위치한 퍼블릭 서브넷에 붙은&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;b&gt;NACL&lt;/b&gt;만 영향 줍니다.&lt;span data-state=&quot;closed&quot;&gt;&lt;/span&gt;​&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;4--aclnacl&quot; style=&quot;background-color: oklch(0.9902 0.004 106.47); color: oklch(0.3039 0.04 213.68); text-align: start;&quot; data-ke-size=&quot;size26&quot;&gt;4. 네트워크 ACL(NACL) 확인&lt;/h2&gt;
&lt;ul style=&quot;list-style-type: disc; background-color: oklch(0.9902 0.004 106.47); color: oklch(0.3039 0.04 213.68); text-align: start;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;private 서브넷과 NAT가 있는 퍼블릭 서브넷 둘 다:
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;인바운드/아웃바운드에&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;b&gt;Ephemeral Port(1024&amp;ndash;65535)&lt;/b&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;와 80/443이 허용돼 있는지.&lt;span data-state=&quot;closed&quot;&gt;&lt;/span&gt;​&lt;/li&gt;
&lt;li&gt;0.0.0.0/0을 막는 규칙이 없는지 확인 (특히 커스텀 NACL 사용하는 경우 자주 막힘).&lt;span data-state=&quot;closed&quot;&gt;&lt;/span&gt;​&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;5-nat--igw&quot; style=&quot;background-color: oklch(0.9902 0.004 106.47); color: oklch(0.3039 0.04 213.68); text-align: start;&quot; data-ke-size=&quot;size26&quot;&gt;5. NAT / IGW 상태와 로그 확인&lt;/h2&gt;
&lt;ul style=&quot;list-style-type: disc; background-color: oklch(0.9902 0.004 106.47); color: oklch(0.3039 0.04 213.68); text-align: start;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;NAT Gateway 상태가&lt;span&gt;&amp;nbsp;&lt;/span&gt;Available인지, 실패 상태가 아닌지 콘솔에서 확인.&lt;span data-state=&quot;closed&quot;&gt;&lt;/span&gt;​&lt;/li&gt;
&lt;li&gt;VPC Flow Logs를 private 서브넷에 켜서, 외부 IP로 나가는 트래픽이 NAT까지 도달하는지,&lt;span&gt;&amp;nbsp;&lt;/span&gt;REJECT&lt;span&gt;&amp;nbsp;&lt;/span&gt;되는지 확인.&lt;span data-state=&quot;closed&quot;&gt;&lt;/span&gt;​&lt;/li&gt;
&lt;li&gt;NAT Instance일 경우, 직접 SSH 접속해서&lt;span&gt;&amp;nbsp;&lt;/span&gt;curl &lt;a href=&quot;https://www.google.com&quot;&gt;https://www.google.com&lt;/a&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;등으로 NAT 자체의 인터넷 접속 여부를 먼저 확인합니다.&lt;span data-state=&quot;closed&quot;&gt;&lt;/span&gt;​&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 모~~~든걸 확인하고 또 확인했는데도 아웃바운딩이 되지 않았다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그러다가 찾게 된 원인!!!!!&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2046&quot; data-origin-height=&quot;1008&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/84GYq/dJMcacuRYQS/KoEkNaKk5pm4HIUJhWR801/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/84GYq/dJMcacuRYQS/KoEkNaKk5pm4HIUJhWR801/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/84GYq/dJMcacuRYQS/KoEkNaKk5pm4HIUJhWR801/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F84GYq%2FdJMcacuRYQS%2FKoEkNaKk5pm4HIUJhWR801%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2046&quot; height=&quot;1008&quot; data-origin-width=&quot;2046&quot; data-origin-height=&quot;1008&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;b&gt;가용성 모드 리전별 / 영역별&amp;nbsp;(Regional / Zonal)&lt;/b&gt; &lt;/span&gt;선택이 관건이었다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;설명으로는 가용성 NAT은 더 범용? 범위로 쓸 수 있어 고효율적이라고 되어있었는데...&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;실제로는 영역별 NAT을 선택해야 해당 서브넷에 연결이 되어 아웃바운딩이 될 수 있었음 아나&lt;/p&gt;</description>
      <category>:: Back-end</category>
      <author>dev-wanee</author>
      <guid isPermaLink="true">https://dev-wanee.tistory.com/21</guid>
      <comments>https://dev-wanee.tistory.com/21#entry21comment</comments>
      <pubDate>Thu, 11 Dec 2025 15:20:15 +0900</pubDate>
    </item>
    <item>
      <title>[AWS] SSM 에이전트가 온라인 상태가 아닙니다</title>
      <link>https://dev-wanee.tistory.com/20</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #ef5369;&quot;&gt;private EC2에 접속할 때 public IP가 없이 aws 콘솔에서 접속&lt;/span&gt;하고자 할 때, 아래 순서대로 진행되어야 한다.&lt;/p&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li style=&quot;color: #000000;&quot; data-start=&quot;986&quot; data-end=&quot;1063&quot;&gt;Private EC2에&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;b&gt;AWS Systems Manager Agent(SSM Agent)&lt;/b&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;설치됨 (Ubuntu는 기본 설치됨)&lt;/li&gt;
&lt;li style=&quot;color: #000000;&quot; data-start=&quot;1064&quot; data-end=&quot;1127&quot;&gt;EC2 인스턴스 Role에 아래 정책 추가:
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot; data-start=&quot;1095&quot; data-end=&quot;1127&quot;&gt;
&lt;li data-start=&quot;1095&quot; data-end=&quot;1127&quot;&gt;AmazonSSMManagedInstanceCore&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;li style=&quot;color: #000000;&quot; data-start=&quot;1128&quot; data-end=&quot;1208&quot;&gt;Private Subnet이 NAT Gateway를 통해 인터넷 아웃바운드 가능해야 함&lt;br /&gt;(&amp;rarr; SSM 서비스에 접속하기 위해 필요)&lt;/li&gt;
&lt;li style=&quot;color: #000000;&quot; data-start=&quot;1209&quot; data-end=&quot;1278&quot;&gt;AWS 콘솔 &amp;rarr; EC2 &amp;rarr; 인스턴스 선택 &amp;rarr;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;b&gt;Connect &amp;rarr; Session Manager 탭 &amp;rarr; Connect&lt;/b&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그런데 이런 에러 메시지가 떴다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style1&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;SSM&amp;nbsp;에이전트가&amp;nbsp;온라인&amp;nbsp;상태가&amp;nbsp;아닙니다&lt;/span&gt;&lt;/blockquote&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2160&quot; data-origin-height=&quot;948&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bObDBi/dJMcad1yafO/f6RroJJzmYNkJmzggHqwo1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bObDBi/dJMcad1yafO/f6RroJJzmYNkJmzggHqwo1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bObDBi/dJMcad1yafO/f6RroJJzmYNkJmzggHqwo1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbObDBi%2FdJMcad1yafO%2Ff6RroJJzmYNkJmzggHqwo1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2160&quot; height=&quot;948&quot; data-origin-width=&quot;2160&quot; data-origin-height=&quot;948&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;나를 포함한 많은 사람들이 맞닥뜨릴 상황 같아서 기록해본다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;더 자세하고 정확한 내용은 물론 도큐먼트에 있다! 하지만 좀더 내가 보기 편하게 정리해본다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://docs.aws.amazon.com/ko_kr/systems-manager/latest/userguide/session-manager-troubleshooting.html&quot;&gt;https://docs.aws.amazon.com/ko_kr/systems-manager/latest/userguide/session-manager-troubleshooting.html&lt;/a&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 style=&quot;color: #000000; text-align: start;&quot; data-start=&quot;1121&quot; data-end=&quot;1131&quot; data-ke-size=&quot;size26&quot;&gt;➤ 체크리스트&lt;/h2&gt;
&lt;h4 style=&quot;color: #000000; text-align: start;&quot; data-end=&quot;203&quot; data-start=&quot;170&quot; data-ke-size=&quot;size20&quot;&gt;&amp;nbsp;&lt;/h4&gt;
&lt;h4 style=&quot;color: #000000; text-align: start;&quot; data-end=&quot;203&quot; data-start=&quot;170&quot; data-ke-size=&quot;size20&quot;&gt;1) EC2에 IAM Role이 붙어 있는지 확인&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;IAM Role에 반드시 아래 정책이 포함되어 있어야 함:&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;203&quot; data-start=&quot;170&quot;&gt;AmazonSSMManagedInstanceCore&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;확인 방법:&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;318&quot; data-start=&quot;307&quot;&gt;EC2 콘솔 &amp;rarr; 인스턴스 선택 &amp;rarr; Security &amp;rarr; IAM Role&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size20&quot; data-start=&quot;170&quot; data-end=&quot;203&quot;&gt;2) Routing Table에 RT 확인&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Private Subnet에 연결된 RT 안에 아래 라우트가 등록되어 있어야 한다&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;0.0.0.0/0&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;rarr; nat&lt;/li&gt;
&lt;li&gt;10.0.0.0/16 &amp;rarr; local&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;(VPC 내부 통신)&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Public Subnet에 연결된 RT 안에 아래 라우트가 등록되어 있어야 한다&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;span style=&quot;font-family: -apple-system, BlinkMacSystemFont, 'Helvetica Neue', 'Apple SD Gothic Neo', Arial, sans-serif; letter-spacing: 0px;&quot;&gt;0.0.0.0/0&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;rarr; igw&amp;nbsp; (인터넷으로 나가는 기본 경로)&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;10.0.0.0/16 &amp;rarr; local&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;(VPC 내부 통신)&lt;/li&gt;
&lt;/ul&gt;
&lt;p style=&quot;color: #000000; text-align: start;&quot; data-end=&quot;1315&quot; data-start=&quot;1283&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size20&quot; data-start=&quot;170&quot; data-end=&quot;203&quot;&gt;3) 엔드포인트 확인&lt;/h4&gt;
&lt;p style=&quot;color: #000000; text-align: start;&quot; data-end=&quot;1315&quot; data-start=&quot;1283&quot; data-ke-size=&quot;size16&quot;&gt;VPC&amp;gt; PrivateLink 및 Lattice&amp;gt; endpoints 에서&amp;nbsp;다음 3개 엔드포인트 생성:&lt;/p&gt;
&lt;pre id=&quot;code_1765348439372&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;com.amazonaws.ap-northeast-2.ssm
com.amazonaws.ap-northeast-2.ec2messages
com.amazonaws.ap-northeast-2.ssmmessages&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 style=&quot;color: #000000; text-align: start;&quot; data-end=&quot;203&quot; data-start=&quot;170&quot; data-ke-size=&quot;size20&quot;&gt;4) 보안그룹 규칙 확인&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Inbound&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;https 443 10.0.0.0/16&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Outbound&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;All type, All target, All port, 0.0.0.0/0&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;5) ACL 규칙 확인&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Inbound&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;All type, All target, All port, 0.0.0.0/0&lt;/li&gt;
&lt;/ul&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;Outbound&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;All type, All target, All port, 0.0.0.0/0&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size20&quot; data-start=&quot;170&quot; data-end=&quot;203&quot;&gt;6) DNS 호스트명 설정 문제&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;VPC 콘솔 &amp;rarr; 해당 vpc 선택 &amp;rarr; Actions(작업) &amp;rarr; Edit VPC settings(VPC 설정 수정) &amp;rarr; Enable DNS hostnames 체크&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>:: Back-end</category>
      <author>dev-wanee</author>
      <guid isPermaLink="true">https://dev-wanee.tistory.com/20</guid>
      <comments>https://dev-wanee.tistory.com/20#entry20comment</comments>
      <pubDate>Wed, 10 Dec 2025 15:52:56 +0900</pubDate>
    </item>
    <item>
      <title>PM2 모니터링 하기 - prometheus, grafana 연동</title>
      <link>https://dev-wanee.tistory.com/18</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;color: #0593d3;&quot;&gt;prometheus 연동 모듈&lt;/span&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;prometheus를 이용해 pm2 모니터링을 하도록 도와주는 모듈은 보통 pm2-metrics 또는 pm2-prometheus-exporter를 많이 쓴다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;pm2-metrics와 pm2-prometheus-exporter는 거의 비슷한 역할을 하지만, 차이점이 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc; color: #000000; text-align: start;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;pm2-metrics (내장 기능)&lt;/b&gt;: PM2의 핵심 기능 중 하나로, 다양한 시스템 및 프로세스 메트릭을 수집하여 보여주는 역할&lt;/li&gt;
&lt;li&gt;&lt;b&gt;pm2-prometheus-exporter&lt;/b&gt;: PM2가 수집한 메트릭을 Prometheus가 이해할 수 있는 형식(Prometheus exposition format)으로 변환하여 특정 포트(기본 9404)에 노출시켜주는 일종의 웹서버&lt;/li&gt;
&lt;/ul&gt;
&lt;p style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;간단히 말해,&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;b&gt;pm2-prometheus-exporter가&lt;span&gt;&amp;nbsp;&lt;/span&gt;pm2-metrics의 데이터를 가져와 Prometheus용으로 제공&lt;/b&gt;하는 구조이다. 따라서&lt;span&gt;&amp;nbsp;&lt;/span&gt;pm2-prometheus-exporter&lt;span&gt;&amp;nbsp;&lt;/span&gt;하나만 설치하고 설정하면 된다.&lt;/p&gt;
&lt;p style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1758606942068&quot; class=&quot;shell&quot; data-ke-language=&quot;shell&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;pm2 install pm2-metrics

# 또는

pm2 install pm2-prometheus-exporter&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;만약 두 개의 모듈을 둘다 설치하게 되면 서로 충돌이 생긴다. 따라서 나는 pm2-prometheus-exporter를 선택했다.&lt;/p&gt;
&lt;p style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;정상적으로 설치가 완료되면 서버 로컬의 &lt;b&gt;http://localhost:9209/metrics&lt;/b&gt; 에서 메트릭 정보를 확인할 수 있다.&lt;/p&gt;
&lt;p style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;color: #0593d3;&quot;&gt;prometheus 설정에 추가&lt;/span&gt;&lt;/h3&gt;
&lt;p style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;모듈 설치를 완료하고 9209 포트에서 metric이 정상적으로 쌓이는 걸 확인했으면, prometheus가 설치된 서버에서 수집할 수 있도록 prometheus.yml 설정파일의 targets에 추가해주면 된다.&lt;/p&gt;
&lt;p style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1758613621083&quot; class=&quot;shell&quot; data-ke-language=&quot;shell&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;  - job_name: 'server_name'
    scheme: 'http'
    fallback_scrape_protocol: 'PrometheusText0.0.4'
    static_configs:
      - targets: ['xx.xx.xxx.xx:9209', 'xxx.xxx.xx.xxx:9209']&lt;/code&gt;&lt;/pre&gt;
&lt;p style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;이제 grafana에서 prometheus 쿼리를 이용해 패널을 만들어 본다.&lt;/p&gt;
&lt;p style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1064&quot; data-origin-height=&quot;348&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/IeJTp/btsQMSW7F5P/Dvp49pkbIi7Gnv5IkHqpj0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/IeJTp/btsQMSW7F5P/Dvp49pkbIi7Gnv5IkHqpj0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/IeJTp/btsQMSW7F5P/Dvp49pkbIi7Gnv5IkHqpj0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FIeJTp%2FbtsQMSW7F5P%2FDvp49pkbIi7Gnv5IkHqpj0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1064&quot; height=&quot;348&quot; data-origin-width=&quot;1064&quot; data-origin-height=&quot;348&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1758613709453&quot; class=&quot;shell&quot; data-ke-language=&quot;shell&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;pm2_memory{job=&quot;server_name&quot;, name=~&quot;^(server-01|server-02)$&quot;} / 1024 / 1024 / 1024&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;위 예시 쿼리에서 server-01과 server-02는 pm2에 띄운 앱에 내가 지정해 준 이름이다. 서로 다른 프로세스 또는 병렬 서버를 구분하기 위해 &lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;pm2로 앱을 구동할 때 지정하는 이름을 서버별로 각기 다르게 지정해주었다. pm2 metric이 쌓일 때 이름도 같이 수집하기 때문에 이름을 쿼리할 수 있다. host ip명으로 구분할 때보다 더 가시적이고 관리가 편하다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>:: Back-end</category>
      <author>dev-wanee</author>
      <guid isPermaLink="true">https://dev-wanee.tistory.com/18</guid>
      <comments>https://dev-wanee.tistory.com/18#entry18comment</comments>
      <pubDate>Tue, 23 Sep 2025 16:50:36 +0900</pubDate>
    </item>
    <item>
      <title>리눅스 서버에서 최신버전 nginx 설치하기</title>
      <link>https://dev-wanee.tistory.com/17</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;보통 리눅스 서버를 생성하고 나면, 시스템 패키지에 기본적으로 내장된 라이브러리들이 최신 버전이 아니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이번에 https3를 도입하려 보니 nginx 를 최신버전이 아니어서, 업데이트 하는 김에 포스팅&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;color: #0593d3;&quot;&gt;시스템 패키지 업데이트&lt;/span&gt;&lt;/h4&gt;
&lt;pre id=&quot;code_1757666946642&quot; style=&quot;background-color: #f8f8f8; color: #383a42; text-align: start;&quot; data-ke-type=&quot;codeblock&quot; data-ke-language=&quot;shell&quot;&gt;&lt;code&gt;sudo dnf clean all
sudo dnf makecache
sudo dnf update -y&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;color: #0593d3;&quot;&gt;nginx 레포 업데이트 (최신 버전의 nginx를 받아오도록 하는 과정)&lt;/span&gt;&lt;/h4&gt;
&lt;pre id=&quot;code_1757666843166&quot; class=&quot;shell&quot; data-ke-language=&quot;shell&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;sudo tee /etc/yum.repos.d/nginx.repo &amp;lt;&amp;lt;'EOF'
[nginx-stable]
name=nginx stable repo
baseurl=http://nginx.org/packages/centos/$releasever/$basearch/
gpgcheck=1
enabled=1
gpgkey=https://nginx.org/keys/nginx_signing.key

[nginx-mainline]
name=nginx mainline repo
baseurl=http://nginx.org/packages/mainline/centos/$releasever/$basearch/
gpgcheck=1
enabled=0
gpgkey=https://nginx.org/keys/nginx_signing.key
EOF&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;color: #0593d3;&quot;&gt;설치&lt;/span&gt;&lt;/h4&gt;
&lt;pre id=&quot;code_1757666987816&quot; class=&quot;shell&quot; data-ke-language=&quot;shell&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;# 설치
sudo dnf install -y nginx

# 기존에 설치된 nginx가 있다면
sudo dnf update nginx

# 기존에 이미 설치된 버전이 있어서 충돌이 난다면 
sudo dnf remove -y nginx-core
sudo dnf install -y nginx&lt;/code&gt;&lt;/pre&gt;</description>
      <category>:: Back-end</category>
      <author>dev-wanee</author>
      <guid isPermaLink="true">https://dev-wanee.tistory.com/17</guid>
      <comments>https://dev-wanee.tistory.com/17#entry17comment</comments>
      <pubDate>Fri, 12 Sep 2025 17:51:36 +0900</pubDate>
    </item>
    <item>
      <title>NCP 네이버 클라우드 플랫폼에서 로드밸런서 만드는 법</title>
      <link>https://dev-wanee.tistory.com/15</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;네이버 클라우드 플랫폼 VPC 환경에서 로드밸런서를 세팅해서 서버를 병렬로 운영하고자 로드밸런서를 생성해보았다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;아래 링크에서 로드밸런서 생성을 할 수 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://console.ncloud.com/vpc-load-balancer/loadBalancer/&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://console.ncloud.com/vpc-load-balancer/loadBalancer/&lt;/a&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2784&quot; data-origin-height=&quot;1044&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/wuYdL/btsP6fe5Ea5/3XSiUTffkpfY2g9xAFAlO0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/wuYdL/btsP6fe5Ea5/3XSiUTffkpfY2g9xAFAlO0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/wuYdL/btsP6fe5Ea5/3XSiUTffkpfY2g9xAFAlO0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FwuYdL%2FbtsP6fe5Ea5%2F3XSiUTffkpfY2g9xAFAlO0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2784&quot; height=&quot;1044&quot; data-origin-width=&quot;2784&quot; data-origin-height=&quot;1044&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;color: #0593d3;&quot;&gt;로드밸런서 생성&lt;/span&gt;&lt;/h3&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2654&quot; data-origin-height=&quot;456&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/kw9bj/btsP4FMK3V5/ohs6KL2tGPQWMkKJLz7OJ0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/kw9bj/btsP4FMK3V5/ohs6KL2tGPQWMkKJLz7OJ0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/kw9bj/btsP4FMK3V5/ohs6KL2tGPQWMkKJLz7OJ0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fkw9bj%2FbtsP4FMK3V5%2Fohs6KL2tGPQWMkKJLz7OJ0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2654&quot; height=&quot;456&quot; data-origin-width=&quot;2654&quot; data-origin-height=&quot;456&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;위 페이지에서 [로드밸런서 생성] 버튼을 누르면 네 가지 옵션이 뜬다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;s&gt;나는 L4에 만들 로드밸런서가 필요했기 때문에 [네트워크 로드밸런서]를 선택했다.&lt;/s&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;s&gt;프록싱은 CloudFlare에서 할거기 때문에 프록시 옵션은 선택하지 않았다.&lt;/s&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;첫 시도때 이렇게 했더니 SSL 이용한 외부에서의 https 연결이 지원이 안되어서 [네트워크 프록시 로드밸런서]로 다시 생성했음&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;그런데 이렇게 했더니 health check가 tcp 만 지원되고 http 지원은 아예 안되어서 서버가 죽었을 때 디텍션이 안되었음.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;결국엔 api 포트는 애플리케이션 로드밸런서로, mqtt 포트는 네트워크 프록시 로드밸런서로 나누어서 연결했다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;3300&quot; data-origin-height=&quot;1484&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dKRDsS/btsP4ccSnU8/CQBiYk1OqSECKTXE5ao55K/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dKRDsS/btsP4ccSnU8/CQBiYk1OqSECKTXE5ao55K/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dKRDsS/btsP4ccSnU8/CQBiYk1OqSECKTXE5ao55K/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdKRDsS%2FbtsP4ccSnU8%2FCQBiYk1OqSECKTXE5ao55K%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;3300&quot; height=&quot;1484&quot; data-origin-width=&quot;3300&quot; data-origin-height=&quot;1484&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;3260&quot; data-origin-height=&quot;1176&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/F8QGi/btsP57WsGTL/4325ni7AToKiflF2CA7XJ1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/F8QGi/btsP57WsGTL/4325ni7AToKiflF2CA7XJ1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/F8QGi/btsP57WsGTL/4325ni7AToKiflF2CA7XJ1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FF8QGi%2FbtsP57WsGTL%2F4325ni7AToKiflF2CA7XJ1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;3260&quot; height=&quot;1176&quot; data-origin-width=&quot;3260&quot; data-origin-height=&quot;1176&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #006dd7;&quot;&gt;1. 로드밸런서 생성&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;네트워크를 Private, Public 어떤 걸로 선택하는지가 중요하다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;화면 차이는 공인 IP 설정란이 있냐없냐 이지만, 서브넷 선택을 할 때 이 네트워크 설정에 따라 목록에 뜨는 게 달라진다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이걸 모르고 네트워크가 Private으로 선택되어있는데 내가 생성한 &lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;public 서브넷은 목록에 아예 뜨지 않아서 계속 헤맸다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;서브넷 설정을 먼저 하고 네트워크 위쪽 설정은 나중에 건드리려고 했는데 순서대로 했어야 했다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;3262&quot; data-origin-height=&quot;1218&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/m2l6E/btsP6IWuCdL/v72eHLapjmbJVyL9mltqo0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/m2l6E/btsP6IWuCdL/v72eHLapjmbJVyL9mltqo0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/m2l6E/btsP6IWuCdL/v72eHLapjmbJVyL9mltqo0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fm2l6E%2FbtsP6IWuCdL%2Fv72eHLapjmbJVyL9mltqo0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;3262&quot; height=&quot;1218&quot; data-origin-width=&quot;3262&quot; data-origin-height=&quot;1218&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #006dd7;&quot;&gt;2. 로드밸런서 생성&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;(왜 STEP 1이랑 이름이 똑같지)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;s&gt;리스너 포트는 80으로 지정했다.&lt;/s&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;위에서 말한대로 나중에 https 접속을 위해 443로 변경했음&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이유는 모르겠는데 이 단계에서는 포트를 여러 개 지정할 수 없다. 나중에 추가 가능&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;blob&quot; data-origin-width=&quot;3000&quot; data-origin-height=&quot;1412&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cOD3RL/btsP6hLjzrP/U1s9wUzrmXCGU3kRwrZ6Ck/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cOD3RL/btsP6hLjzrP/U1s9wUzrmXCGU3kRwrZ6Ck/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cOD3RL/btsP6hLjzrP/U1s9wUzrmXCGU3kRwrZ6Ck/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcOD3RL%2FbtsP6hLjzrP%2FU1s9wUzrmXCGU3kRwrZ6Ck%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;3000&quot; height=&quot;1412&quot; data-filename=&quot;blob&quot; data-origin-width=&quot;3000&quot; data-origin-height=&quot;1412&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #006dd7;&quot;&gt;3. Target Group 선택&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;로드밸런싱 할 타겟 서버를 미리 그룹으로 만들어두고, Target Group 선택 스텝에서 지정할 수 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;미리 생성해 둔 타겟 그룹이 없다면 [Target Group 생성] 바로가기 링크를 눌러 생성할 수 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;상세 스텝은 아래에 따로 적어두었음&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;이 때 생성중인 로드밸런서 타입에 따라 특정 프로토콜이 적용된 타겟 서버만 목록에 나온다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;blob&quot; data-origin-width=&quot;2088&quot; data-origin-height=&quot;1556&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/miVii/btsP61aqRWd/yL8mJfTyostnAbhmBEKWVK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/miVii/btsP61aqRWd/yL8mJfTyostnAbhmBEKWVK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/miVii/btsP61aqRWd/yL8mJfTyostnAbhmBEKWVK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FmiVii%2FbtsP61aqRWd%2FyL8mJfTyostnAbhmBEKWVK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2088&quot; height=&quot;1556&quot; data-filename=&quot;blob&quot; data-origin-width=&quot;2088&quot; data-origin-height=&quot;1556&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #006dd7;&quot;&gt;4. 설정 정보 보기&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;마지막으로 자신이 설정한 내용을 확인한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;[로드 밸런서 생성] 버튼을 누르면 바로 생성되고, 1분도 안 되어서 운영 상태가 된다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;color: #0593d3;&quot;&gt;서브넷 생성&lt;/span&gt;&lt;/h3&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;로드밸런서 전용 서브넷을 생성하고 적용해야 한다.&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;만약 로드밸런서 전용 서브넷에 서버인스턴스를 올리게 되면 로드밸런싱이 동작하지 않는다.&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;로드밸런서 생성 페이지에서 바로가기 링크도 있고, 따로 접속하려면 아래 링크에서 서브넷을 생성할 수 있다.&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://console.ncloud.com/vpc-network/subnet&quot;&gt;https://console.ncloud.com/vpc-network/subnet&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1382&quot; data-origin-height=&quot;1444&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/brAAoy/btsP4dJDgku/Uk329kIukzkaDSoiA1pCVK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/brAAoy/btsP4dJDgku/Uk329kIukzkaDSoiA1pCVK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/brAAoy/btsP4dJDgku/Uk329kIukzkaDSoiA1pCVK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbrAAoy%2FbtsP4dJDgku%2FUk329kIukzkaDSoiA1pCVK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;600&quot; height=&quot;627&quot; data-origin-width=&quot;1382&quot; data-origin-height=&quot;1444&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;서브넷 이름, VPC, IP 주소 범위, 가용 Zone, ACL을 선택한다.&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;생성한 VPC를 확인하고 선택하려면&amp;nbsp;View/getVPCDetail 권한이 필요하다.&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;만약 VPC 목록이 보이지 않는다면 자신이 서브 계정으로 접속중인지, 자신의 계정에 권한이 있는지 확인해야 한다.&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;마지막으로 [용도]에서 로드밸런서 를 선택해서 로드밸런서 전용 서브넷으로 지정하고 [생성] 버튼을 누르면 끝&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;color: #0593d3;&quot;&gt;타겟 그룹 생성&lt;/span&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;위의 3단계에서 설정한 타겟그룹도 바로가기 링크 또는 아래 링크에서 생성 가능하다&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://console.ncloud.com/vpc-load-balancer/targetGroup&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://console.ncloud.com/vpc-load-balancer/targetGroup&lt;/a&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;3288&quot; data-origin-height=&quot;1352&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/b0Mr7P/btsP5vDyPWK/aeqWG8PZCBKfzcuLynhkRK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/b0Mr7P/btsP5vDyPWK/aeqWG8PZCBKfzcuLynhkRK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/b0Mr7P/btsP5vDyPWK/aeqWG8PZCBKfzcuLynhkRK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fb0Mr7P%2FbtsP5vDyPWK%2FaeqWG8PZCBKfzcuLynhkRK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;3288&quot; height=&quot;1352&quot; data-origin-width=&quot;3288&quot; data-origin-height=&quot;1352&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;1. Target Group 생성&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이름과 프로토콜, 포트를 지정해준다&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;3246&quot; data-origin-height=&quot;1074&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bjUsfi/btsP4VhTpsh/8xOrCHnZbnld9Gf7WLsBHk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bjUsfi/btsP4VhTpsh/8xOrCHnZbnld9Gf7WLsBHk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bjUsfi/btsP4VhTpsh/8xOrCHnZbnld9Gf7WLsBHk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbjUsfi%2FbtsP4VhTpsh%2F8xOrCHnZbnld9Gf7WLsBHk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;3246&quot; height=&quot;1074&quot; data-origin-width=&quot;3246&quot; data-origin-height=&quot;1074&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;2. Health Check 설정&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;헬스첵 설정을 집어넣고 끝&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;blob&quot; data-origin-width=&quot;3000&quot; data-origin-height=&quot;1272&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bJc12E/btsP8aj4Gou/k8xv95rS0kErrPbmDv6UgK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bJc12E/btsP8aj4Gou/k8xv95rS0kErrPbmDv6UgK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bJc12E/btsP8aj4Gou/k8xv95rS0kErrPbmDv6UgK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbJc12E%2FbtsP8aj4Gou%2Fk8xv95rS0kErrPbmDv6UgK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;3000&quot; height=&quot;1272&quot; data-filename=&quot;blob&quot; data-origin-width=&quot;3000&quot; data-origin-height=&quot;1272&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;3. Target 추가&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;기존에 운영중이던 서버 목록이 뜨면&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;3290&quot; data-origin-height=&quot;1530&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bTsRDs/btsP5KUIc2K/BcMlNoArD03kqzMDdzNPR0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bTsRDs/btsP5KUIc2K/BcMlNoArD03kqzMDdzNPR0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bTsRDs/btsP5KUIc2K/BcMlNoArD03kqzMDdzNPR0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbTsRDs%2FbtsP5KUIc2K%2FBcMlNoArD03kqzMDdzNPR0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;3290&quot; height=&quot;1530&quot; data-origin-width=&quot;3290&quot; data-origin-height=&quot;1530&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;4. 설정 정보 보기&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;마지막으로 정보를 확인하고 [Target Group 생성] 버튼을 누르면 끝!&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이미 생성된 서버를 그룹으로 묶는 게 다이기 때문에 시간이 소요되지 않는다.&lt;/p&gt;</description>
      <category>:: Back-end</category>
      <author>dev-wanee</author>
      <guid isPermaLink="true">https://dev-wanee.tistory.com/15</guid>
      <comments>https://dev-wanee.tistory.com/15#entry15comment</comments>
      <pubDate>Tue, 26 Aug 2025 18:21:38 +0900</pubDate>
    </item>
  </channel>
</rss>