<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
  <channel>
    <title>Woo DEV</title>
    <link>https://cwpack0730.tistory.com/</link>
    <description>개발과 운영, 박찬우의 기술 블로그입니다.</description>
    <language>ko</language>
    <pubDate>Thu, 18 Jun 2026 20:12:49 +0900</pubDate>
    <generator>TISTORY</generator>
    <ttl>100</ttl>
    <managingEditor>cwpack0730</managingEditor>
    <image>
      <title>Woo DEV</title>
      <url>https://tistory1.daumcdn.net/tistory/5903536/attach/0a52111625e84e32bb4498d01bf66119</url>
      <link>https://cwpack0730.tistory.com</link>
    </image>
    <item>
      <title>[정보보안] SSL 인증서의 동작 원리 및 종류 (+암호화 원리, 유형, 알고리즘)</title>
      <link>https://cwpack0730.tistory.com/133</link>
      <description>&lt;h2 data-ke-size=&quot;size26&quot;&gt;개요&lt;/h2&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;인프라팀에서 근무하며 서비스의 모든 도메인과 SSL 인증서 관리를 진행했었는데, 구매부터 발급, 갱신, 적용 과정을 직접 진행했던 기억이 난다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;작업했던 시스템 별 인증서 적용 방식의 차이(Nginx, Tomcat 등 서버, AWS, NCP 등 클라우드 서비스 등)와 인증서 종류(단일, 와일드카드 등 인증서 유형부터 EV,OV,DV 등 인증서 등급까지)등 내가 경험했던 내용에 대입하여 SSL 인증서의 기본적은 개념과 원리를 한번 되짚어 보려 한다.&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 data-ke-size=&quot;size26&quot;&gt;1. SSL이란?&lt;/h2&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock widthContent&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;image.png&quot; data-origin-width=&quot;2560&quot; data-origin-height=&quot;1152&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/b0q179/btsL4Y8FWYB/8yFEHvraTTIvMQK36jQyW0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/b0q179/btsL4Y8FWYB/8yFEHvraTTIvMQK36jQyW0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/b0q179/btsL4Y8FWYB/8yFEHvraTTIvMQK36jQyW0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fb0q179%2FbtsL4Y8FWYB%2F8yFEHvraTTIvMQK36jQyW0%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;2560&quot; height=&quot;1152&quot; data-filename=&quot;image.png&quot; data-origin-width=&quot;2560&quot; data-origin-height=&quot;1152&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #f6e199;&quot;&gt;&lt;b&gt;SSL(Secure Sockets Layer)은 암호화 기반 인터넷 보안 프로토콜이다.&lt;/b&gt;&lt;/span&gt; 인터넷 통신의 개인정보 보호, 인증, 데이터 무결성을 보장하기 위해 Netscape가 1995년 처음으로 개발하였다.&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;SSL은 현재 사용중인 TLS 암호화의 전신이다.&lt;/li&gt;
&lt;/ul&gt;
&lt;blockquote data-ke-style=&quot;style3&quot;&gt;&lt;span style=&quot;color: #006dd7;&quot;&gt;&lt;b&gt;보통 SSL과 TLS를 동일하게 부르며, TLS 1.0은 SSL 3.0을 계승한다.&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: #006dd7;&quot;&gt;&lt;b&gt;즉, SSL의 새로운 버전이 TLS이다. (그래서 SSL/TLS로 묶어서 부르기도 한다.)&lt;/b&gt;&lt;/span&gt;&lt;/blockquote&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;* 더 상세히 설명하자면 Netscape에서 SSL이 개발되었고, SSL이 폭넓게 사용되다 표준화 기구인 IETF의 관리로 변경되면서 TLS이라는 이름으로 변경된것이다.&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;1.1 SSL/TLS 작동 원리&lt;/h3&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;다음 4. 암호화 작동 원리 항목에서 상세히 다뤄보겠지만, SSL 개념을 살펴보며 원리를 간단히 확인해보겠다.&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;SSL/TLS은 웹에서 전송되는 데이터를 암호화한다&lt;/b&gt;. 즉, 중간에 데이터를 가로채는 대상은 해독하기 힘든 암호화된 문자열만 보게 된다.&lt;/li&gt;
&lt;li&gt;SSL/TLS은 서버와 클라이언트 통신 사이에 &lt;b&gt;핸드세이크라는 인증 프로세스를 시작하며 두 대상의 ID를 확&lt;/b&gt;인한다.&lt;/li&gt;
&lt;li&gt;또한 데이터 무결성을 제공하기 위해 &lt;b&gt;데이터에 디지털 서명을 진행&lt;/b&gt;하며 수신자에게 도착하기 이전에 조작되지 않았다는 것을 확인한다.&lt;/li&gt;
&lt;/ul&gt;
&lt;blockquote data-ke-style=&quot;style3&quot;&gt;&lt;span style=&quot;color: #009a87;&quot;&gt;&lt;b&gt;원래 웹 상의 데이터는 중간에 가로채면 누구나 읽을 수 있는 일반적인 텍스트 형태로 전송되었다.&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: #009a87;&quot;&gt;&lt;b&gt;즉, 사용자가 쇼핑 웹사이트에서 신용 카드 정보를 입력한다면 이 정보가 숨겨지지 않은채 인터넷을 이동하게 된다.&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: #009a87;&quot;&gt;&lt;b&gt;SSL은 이런 개인 정보를 보호하기 위해 개발되었다. 사용자와 웹 서버 사이를 이동하는 모든 데이터를 암호화하여, 누군가 데이터를 가로채더라도 무작위 문자열만 볼 수 있게 만든다.&lt;/b&gt;&lt;/span&gt;&lt;/blockquote&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;2. SSL 인증서란?&lt;/h2&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #99cefa;&quot;&gt;&lt;b&gt;SSL 인증서란 쉽게 클라이언트와 서버간의 통신을 제 3자가 보증해주는 문서&lt;/b&gt;&lt;/span&gt;라고 생각하면 된다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;SSL은 SSL 인증서(물론 공식적으로는 TLS 인증서이다.)가 있는 웹사이트에서만 실행될 수 있다. 웹사이트나 애플리케이션 서버가 SSL 인증서를 웹에 저장하고 표시하며 &lt;u&gt;&lt;b&gt;CA(인증 기관)에서 SSL 인증서 발행을 담당&lt;/b&gt;&lt;/u&gt;한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;SSL 인증서는 단일 데이터 파일에 다음 정보를 포함시킨다.&lt;/b&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;인증서가 발듭된 대상 도메인 이름&lt;/li&gt;
&lt;li&gt;발급 받은 사람, 조직, 장치&lt;/li&gt;
&lt;li&gt;발급한 인증 기관&lt;/li&gt;
&lt;li&gt;인증 기관의 디지털 서명&lt;/li&gt;
&lt;li&gt;관련된 하위 도메인&lt;/li&gt;
&lt;li&gt;인증서 발급 날짜&lt;/li&gt;
&lt;li&gt;인증서 만료 날짜&lt;/li&gt;
&lt;li&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;인증서는 원본 서버에서 호스팅되며, &lt;span style=&quot;color: #006dd7;&quot;&gt;&lt;b&gt;웹사이트 로드를 요청하든 모든 시스템에 전송된다.&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;image 1.png&quot; data-origin-width=&quot;537&quot; data-origin-height=&quot;523&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/MXjum/btsL3pGvWNU/nfh8tb67gfODSY4J5ADc21/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/MXjum/btsL3pGvWNU/nfh8tb67gfODSY4J5ADc21/img.png&quot; data-alt=&quot;티스토리에서 제공하는 SSL 인증서 정보&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/MXjum/btsL3pGvWNU/nfh8tb67gfODSY4J5ADc21/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FMXjum%2FbtsL3pGvWNU%2Fnfh8tb67gfODSY4J5ADc21%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;537&quot; height=&quot;523&quot; data-filename=&quot;image 1.png&quot; data-origin-width=&quot;537&quot; data-origin-height=&quot;523&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;티스토리에서 제공하는 SSL 인증서 정보&lt;/figcaption&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;h3 data-ke-size=&quot;size23&quot;&gt;2.1 SSL 인증서 유형&lt;/h3&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;SSL 인증서는 다양한 유형이 있다. 하나의 도메인만 적용되는지, 여러 도메인에 적용되는지에 따라 유형이 달라진다.&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 50%;&quot;&gt;단일 도메인&lt;/td&gt;
&lt;td style=&quot;width: 50%;&quot;&gt;&lt;span style=&quot;color: #333333; text-align: left;&quot;&gt;단일 도메인 SSL 인증서는 단 하나의 도메인&lt;br /&gt;(여기서 도메인은 웹사이트에 적용되는 서브도메인을 말한다.)&lt;br /&gt;ex,&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;a style=&quot;color: #0070d1; text-align: left;&quot; href=&quot;http://www.cwdev.site)%EC%97%90&quot;&gt;www.cwdev.site)&lt;/a&gt;&lt;span style=&quot;color: #333333; text-align: left;&quot;&gt;에 적용된다.&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 50%;&quot;&gt;와일드카드&lt;/td&gt;
&lt;td style=&quot;width: 50%;&quot;&gt;&lt;span style=&quot;color: #333333; text-align: left;&quot;&gt;와일드카드 SSL 인증서는 Root 도메인에 적용된다. &lt;br /&gt;즉, 서브 도메인을 모두 포함한다.&lt;br /&gt;ex, *.cwdev.site로 발급받으면,&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;a style=&quot;color: #0070d1; text-align: left;&quot; href=&quot;http://www.cwdev.site&quot;&gt;www.cwdev.site&lt;/a&gt;&lt;span style=&quot;color: #333333; text-align: left;&quot;&gt;, resume.cwdev.site,&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;a style=&quot;color: #0070d1; text-align: left;&quot; href=&quot;http://api.cwdev.site&quot;&gt;api.cwdev.site&lt;/a&gt;&lt;span style=&quot;color: #333333; text-align: left;&quot;&gt;&lt;span style=&quot;color: #333333; text-align: left;&quot;&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;등 여러 도메인에 적용 가능하다.&lt;/span&gt;&lt;/span&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;본인의 경우 대부분의 SSL 인증서는 와일드카드로 관리했었다. 지금 생각해보니 회사에 돈이 많았나보다.&lt;/li&gt;
&lt;/ul&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 50%;&quot;&gt;멀티 도메인&lt;/td&gt;
&lt;td style=&quot;width: 50%;&quot;&gt;&lt;span style=&quot;color: #333333; text-align: left;&quot;&gt;이름에서 유추할 수 있는데, 멀티 도메인 SSL 인증서는 다수의 Root 도메인에 적용할 수 있다.&lt;br /&gt;ex,&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;a style=&quot;color: #0070d1; text-align: left;&quot; href=&quot;http://www.devcw.site&quot;&gt;www.devcw.site&lt;/a&gt;&lt;span style=&quot;color: #333333; text-align: left;&quot;&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;a style=&quot;color: #0070d1; text-align: left;&quot; href=&quot;http://www.cwking.com&quot;&gt;www.cwking.com&lt;/a&gt;&lt;span style=&quot;color: #333333; text-align: left;&quot;&gt;,&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;a style=&quot;color: #0070d1; text-align: left;&quot; href=&quot;http://www.devops.cwpack&quot;&gt;www.devops.cwpack&lt;/a&gt;&lt;span style=&quot;color: #333333; text-align: left;&quot;&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;등&amp;hellip;&lt;/span&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;Sectigo(Comodo) MDC로 사용했던 경험이 있는데, 사용할 도메인을 추가할때마다 비용이 더해지는걸로 기억한다.&lt;/li&gt;
&lt;/ul&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&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: none;&quot;&gt;&amp;nbsp;&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;h3 data-ke-size=&quot;size23&quot;&gt;2.2 SSL 인증서 등급&lt;/h3&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;SSL 인증서가 적용되는 여러 대상에 대한 유형이 존재하듯, SSL 인증서의 인증 등급에 따른 분류도 존재한다. 즉, &lt;span style=&quot;background-color: #9feec3;&quot;&gt;&lt;b&gt;SSL 인증서마다 유효성 검사 수준이 차이가 난다.&lt;/b&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&gt;&lt;span style=&quot;color: #ef5369;&quot;&gt;&lt;b&gt;DV(Domain Validation) 도메인 유효성 검사&lt;/b&gt;&lt;/span&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;color: #ef5369;&quot;&gt;&lt;b&gt;도메인 소유 검증 절차만 있다.&lt;/b&gt;&lt;/span&gt; 가장 간단하며 약 5분정도 소요되는 것 같다. 누구나 발급이 가능하다.&lt;/li&gt;
&lt;li&gt;인증서 분류 중 가장 덜 엄격하다. &lt;span style=&quot;color: #ef5369;&quot;&gt;&lt;b&gt;도메인을 관리하고 있다는 것만 확인한다.&lt;/b&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #0593d3;&quot;&gt;&lt;b&gt;OV(Organization Validation) 조직 유효성 검사&lt;/b&gt;&lt;/span&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;color: #0593d3;&quot;&gt;&lt;b&gt;도메인 소유 검증 절차와 조직(회사) 검증 절차&lt;/b&gt;&lt;/span&gt;가 존재한다. 길면 2~3일 정도 소요된다.&lt;/li&gt;
&lt;li&gt;실제로 신청한 회사로 인증업체에서 연락이 온다. 내 경우 우리 회사의 재무팀, 경영팀에 전화가 오고, 회사의 주소명과 신청자(나)가 해당 직장에 재직중인지를 확인한다.&lt;/li&gt;
&lt;li&gt;좀 더 실무적인 프로세스이다. &lt;span style=&quot;color: #0593d3;&quot;&gt;&lt;b&gt;CA가 담당자나 기업에 인증서를 직접 문의&lt;/b&gt;&lt;/span&gt;한다.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #409d00;&quot;&gt;&lt;b&gt;EV(Extended Validation) 확장 유효성 검사&lt;/b&gt;&lt;/span&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;color: #409d00;&quot;&gt;&lt;b&gt;도메인 소유 검증 절차와 조직에 대해 구체적인 검증 절차로 진행&lt;/b&gt;&lt;/span&gt;된다. 최대 3주정도 소요된다고 한다.&lt;/li&gt;
&lt;li&gt;일반적으로 금융권이나 공공기관에서 사용하며, &lt;u&gt;&lt;b&gt;브라우저에 따라 녹색 창이 나오는 등 차별화&lt;/b&gt;&lt;/u&gt;가 있다.&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #409d00;&quot;&gt;&lt;b&gt;조직의 배경을 완전히 검사한 후에 SSL 인증서를 발급한다.&lt;/b&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;image 2.png&quot; data-origin-width=&quot;645&quot; data-origin-height=&quot;496&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/d7H09b/btsL2mX9LdH/Q9ONra7e5WuFELsE4ifkrK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/d7H09b/btsL2mX9LdH/Q9ONra7e5WuFELsE4ifkrK/img.png&quot; data-alt=&quot;국민은행 페이지의 EV 인증서 참고자료. 브라우저 주소 창이 녹색으로 나타난다.&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/d7H09b/btsL2mX9LdH/Q9ONra7e5WuFELsE4ifkrK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fd7H09b%2FbtsL2mX9LdH%2FQ9ONra7e5WuFELsE4ifkrK%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;645&quot; height=&quot;496&quot; data-filename=&quot;image 2.png&quot; data-origin-width=&quot;645&quot; data-origin-height=&quot;496&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;국민은행 페이지의 EV 인증서 참고자료. 브라우저 주소 창이 녹색으로 나타난다.&lt;/figcaption&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;h3 data-ke-size=&quot;size23&quot;&gt;2.3 자체 서명 SSL 인증서&lt;/h3&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;물론 CA이 아니더라도 기술적으로 &lt;span style=&quot;background-color: #c1bef9;&quot;&gt;&lt;b&gt;누구나 공개-개인 키 페어링을 생성하여 자신만의 SSL 인증서를 만들 수 있다.&lt;/b&gt;&lt;/span&gt; 이 경우를 &lt;u&gt;&lt;b&gt;자체 서명 인증서&lt;/b&gt;&lt;/u&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자)이 없다. 그렇기 때문에 &lt;b&gt;브라우저에서는 자체 서명된 인증서를 신뢰할 수 있는 것으로 간주하지 않는다.&lt;/b&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;u&gt;&lt;b&gt;즉, 자체 서명 인증서가 있는 사이트는 https://로 접근함에도 불구하고 &amp;ldquo;안전하지 않음&amp;rdquo;으로 표시된다.&lt;/b&gt;&lt;/u&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;자체 서명 인증서는 OpenSSL, 자바의 keytool, 어도비 리더, WolfSSL 및 애플의 키체인 및 등 다양한 도구를 사용하여 무료로 발급할 수 있다.&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 data-ke-size=&quot;size26&quot;&gt;3. HTTP vs HTTPS&lt;/h2&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #f6e199;&quot;&gt;&lt;b&gt;HTTPS는 암호화 인증이 포함된 HTTP이다.&lt;/b&gt;&lt;/span&gt; 즉 두 프로토콜의 유일한 차이점은 HTTPS의 경우 SSL/TLS을 사용하여 HTTP 요청과 응답을 암호화하고 디지털 서명을 한다는 점이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;HTTPS는 HTTP보다 더욱 안전하며 HTTP를 사용하는 웹 사이트의 URL은 http://, HTTPS를 사용하는 웹 사이트는 https://로 표시된다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style3&quot;&gt;&lt;span style=&quot;color: #f89009;&quot;&gt;&lt;b&gt;HTTP란?&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: #f89009;&quot;&gt;&lt;b&gt;HTTP는 하이퍼텍스트 전송 프로토콜의 약자로, 네트워크를 통해 데이터를 전송하는데 사용되는 프로토콜 혹은, 정보를 표현하기 위한 규정된 순서와 구문을 뜻한다.&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: #f89009;&quot;&gt;&lt;b&gt;(웹 사이트 컨텐츠 및 API 호출 등 인터넷을 통해 전송되는 대부분의 정보는 HTTP 프로토콜을 사용한다.)&lt;/b&gt;&lt;/span&gt;&lt;/blockquote&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;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;&lt;u&gt;HTTP와 HTTPS는 엄밀히 보면 별개의 프로토콜이 아니다&lt;/u&gt;. HTTPS는 단순히 HTTP 프로토콜을 SSL/TSL을 통해 암호화로 사용하는 것이다.&lt;/li&gt;
&lt;li&gt;HTTP는 80 포트를 사용하며 HTTPS는 443 포트를 사용한다.&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;&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;4. 암호화 작동 원리&lt;/h2&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;IT의 보안 인증 방식은 대부분 키를 어떻게 관리하며 대칭/비대층을 조합, 비교하며 사용할 것인가에 따라 발전해왔다. 즉, SSL 인증의 보안 방식도 키를 이용한 암호화를 통해 신뢰성을 파악한다.&lt;span style=&quot;letter-spacing: 0px;&quot;&gt;&lt;/span&gt;&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style3&quot;&gt;&lt;span style=&quot;color: #8a3db6;&quot;&gt;&lt;b&gt;물론, 보안 방식이 키를 어떻게 대칭시키느냐 뿐만이 아니라 다양한 신뢰 모델과 인증 방식등이 존재한다. 이에 대해서는 따로 IT의 보안 인증 방식에 대해 글을 작성해보겠다.&lt;/b&gt;&lt;/span&gt;&lt;/blockquote&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;4.1 암호화란?&lt;/h3&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;u&gt;&lt;b&gt;암호화는 승인된 당사자만 볼 수 있도록 데이터를 변환시키는 방법&lt;/b&gt;&lt;/u&gt;이다. 일반적인 텍스트를 사람이 이해할 수 없는 텍스트로 변환하는 과정으로, 암호 텍스트라고도 불린다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;암호화를 사용하려면 &lt;b&gt;&lt;span style=&quot;background-color: #ffc9af;&quot;&gt;*암호화 키&lt;/span&gt;&lt;/b&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;background-color: #ffc9af;&quot;&gt;&lt;b&gt;*암호화된 메세지의 발신자와 수신자가 모두 동의하는 수학적 값 집합&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;h3 data-ke-size=&quot;size23&quot;&gt;4.2 암호화 동작 방식&lt;/h3&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;암호화는 &lt;b&gt;암호화 알고리즘과 키를 사용하여 데이터를 변경하는 수학적인 프로세스&lt;/b&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;예를 들어 A가 B에게 &amp;ldquo;Hello&amp;rdquo;라는 메세지를 보내며 각 문자를 알파벳 순서에서 두 자리 뒤에 오는 문자로 바꾼다고 가정해보겠다. &amp;ldquo;Hello&amp;rdquo; 대신 &amp;ldquo;Jgnnq&amp;rdquo;라고 보내지나, B는 다행이도 &amp;ldquo;2&amp;rdquo;라는 Key를 알고 있고, 메세지를 다시 &amp;ldquo;Hello&amp;rdquo;로 해독할 수 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;물론 이는 매우 간단한 암호화 알고리즘이다. 실제로는 더 복잡한 암호화 알고리즘을 사용한다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;image 3.png&quot; data-origin-width=&quot;1916&quot; data-origin-height=&quot;496&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bJLp7o/btsL3AgVkH1/Ys4pGaAfR5kF5KmvOMGJU0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bJLp7o/btsL3AgVkH1/Ys4pGaAfR5kF5KmvOMGJU0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bJLp7o/btsL3AgVkH1/Ys4pGaAfR5kF5KmvOMGJU0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbJLp7o%2FbtsL3AgVkH1%2FYs4pGaAfR5kF5KmvOMGJU0%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;1916&quot; height=&quot;496&quot; data-filename=&quot;image 3.png&quot; data-origin-width=&quot;1916&quot; data-origin-height=&quot;496&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style3&quot;&gt;&lt;span style=&quot;color: #006dd7;&quot;&gt;&lt;b&gt;즉, 암호화된 데이터는 무작위로 보이지만, 사실 논리적이고 예측 가능한 방식으로 진행되므로 올바른 키를 가지고 있다면 데이터를 다시 해독하여 변환할 수 있는 것이다.&lt;/b&gt;&lt;/span&gt;&lt;/blockquote&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자가 무차별 대입으로 암호문을 해독할 가능성이 거의 없을 정도로 엄청나게 복잡한 키를 사용한다.&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;4.3 암호화의 유형&lt;/h3&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;image 4.png&quot; data-origin-width=&quot;554&quot; data-origin-height=&quot;521&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/Bks4X/btsL4YVapmt/bVO9ua3Zk8JvhDLYAJSJ6k/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/Bks4X/btsL4YVapmt/bVO9ua3Zk8JvhDLYAJSJ6k/img.png&quot; data-alt=&quot;SSL 인증 과정. 크게 핸드셰이크 &amp;amp;rarr; 전송 &amp;amp;rarr; 세션종료의 3가지 단계로 구성되어 있다.&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/Bks4X/btsL4YVapmt/bVO9ua3Zk8JvhDLYAJSJ6k/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FBks4X%2FbtsL4YVapmt%2FbVO9ua3Zk8JvhDLYAJSJ6k%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;554&quot; height=&quot;521&quot; data-filename=&quot;image 4.png&quot; data-origin-width=&quot;554&quot; data-origin-height=&quot;521&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;SSL 인증 과정. 크게 핸드셰이크 &amp;rarr; 전송 &amp;rarr; 세션종료의 3가지 단계로 구성되어 있다.&lt;/figcaption&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;background-color: #9feec3;&quot;&gt;&lt;b&gt;대칭 암호화&lt;/b&gt;&lt;/span&gt;와 &lt;b&gt;&lt;span style=&quot;background-color: #99cefa;&quot;&gt;비대칭 암호화&lt;/span&gt;&lt;/b&gt; 두 가지 주요 유형이 있다.(비대칭 암호화는 공개키 암호화라고도 한다.)&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;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;span style=&quot;background-color: #9feec3;&quot;&gt;&lt;b&gt;대칭 암호화&lt;/b&gt;&lt;/span&gt;: 대칭 암호화 방식은 동일한 키로 암호화와 복호화를 할 수 있는 기법을 뜻한다. 즉, &lt;span style=&quot;background-color: #9feec3;&quot;&gt;&lt;b&gt;하나의 키로 모든 통신 당사자들은 암호화와 해독 모두 가능하도록 사용&lt;/b&gt;&lt;/span&gt;한다.&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;background-color: #99cefa;&quot;&gt;&lt;b&gt;비대칭 암호화&lt;/b&gt;&lt;/span&gt;: 비대칭(공개키) 암호화 방식은 대칭키 방식과 다르게 &lt;span style=&quot;background-color: #99cefa;&quot;&gt;&lt;b&gt;2개의 키&lt;/b&gt;&lt;/span&gt;를 가지고 진행한다. &lt;span style=&quot;background-color: #99cefa;&quot;&gt;&lt;b&gt;하나의 키는 암호화에 사용되고, 다른 키는 해독에 사용된다.&lt;/b&gt;&lt;/span&gt; 해독 키는 개인키라고도 불리며, 비공개로 유지되고, 암호화 키는 누구나 사용할 수 있도록 공개적으로 공유되어 공개키라고도 불린다.&lt;/li&gt;
&lt;/ul&gt;
&lt;blockquote data-ke-style=&quot;style3&quot;&gt;&lt;span style=&quot;color: #f3c000;&quot;&gt;&lt;b&gt;SSL/TLS는 &lt;a style=&quot;color: #f3c000;&quot; href=&quot;https://www.cloudflare.com/learning/ssl/how-does-public-key-encryption-work/&quot;&gt;공개 키 암호화&lt;/a&gt;라는 기술을 사용한다. 공개 키는 서버의 SSL 인증서를 통해 클라이언트 장치와 공유되며 클라이언트가 서버와의 연결을 열면 두 장치는 공개 키와 개인 키를 사용하여 &lt;a style=&quot;color: #f3c000;&quot; href=&quot;https://www.cloudflare.com/learning/ssl/what-is-a-session-key/&quot;&gt;세션 키&lt;/a&gt;라는 새 키에 동의하여 두 장치 간의 추가 통신을 암호화한다.&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: #f3c000;&quot;&gt;&lt;b&gt;모든 HTTP 요청과 응답이 이 세션 키로 암호화되므로 통신을 가로채는 사람은 일반 텍스트가 아닌 임의의 문자 문자열만 볼 수 있다.&lt;/b&gt;&lt;/span&gt;&lt;/blockquote&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;4.4 암호화 알고리즘과 무차별 대입 공격&lt;/h3&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&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&gt;AES&lt;/li&gt;
&lt;li&gt;3-DES&lt;/li&gt;
&lt;li&gt;SNOW&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&gt;RSA&lt;/li&gt;
&lt;li&gt;타원 곡선 암호&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;무차별 대입 공격&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;무차별 대입 공격은 해독 키를 모르는 공격자가 수백 ~ 수십억 번의 추측을 통해 키를 알아내려고 시도하는 것&lt;/b&gt;이다. 최신 컴퓨터는 암호 대입 공격이 훨씬 빠르므로 암호화 또한 복잡해져야 한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;최근의 암호화 기법은 비밀번호와 결합되어 무차별 대입 공격에 어느정도 저항력이 있지만, &lt;b&gt;컴퓨터가 점점 발전함에 따라서 이런 공격에 취약해질 수 있다.&lt;/b&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;h3 data-ke-size=&quot;size23&quot;&gt;4.5 HTTP 요청 암호화 예시&lt;/h3&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;앞서 설명했듯, HTTPS는 SSL/TLS를 사용하여 HTTP 요청과 응답을 암호화하므로 공격자는 텍스트 대신 무작위로 보이는 문자를 보게 된다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;예를 들어 다음 HTTP 요청을 진행한다 가정했을때 일반적인 HTTP 응답은 다음과 같다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;HTTP 요청 예시&lt;/p&gt;
&lt;pre class=&quot;angelscript&quot;&gt;&lt;code&gt;GET /hello.txt HTTP/1.1
User-Agent: curl/7.63.0 libcurl/7.63.0 OpenSSL/1.1.l zlib/1.2.11
Host: www.example.com
Accept-Language: en
&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;size18&quot;&gt;HTTP 응답 예시&lt;/p&gt;
&lt;pre class=&quot;yaml&quot;&gt;&lt;code&gt;HTTP/1.1 200 OK
Date: Wed, 30 Jan 2019 12:14:39 GMT
Server: Apache
Last-Modified: Mon, 28 Jan 2019 11:17:01 GMT
Accept-Ranges: bytes
Content-Length: 12
Vary: Accept-Encoding
Content-Type: text/plain

Hello World!&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;그러나 HTTPS로 암호화한다면, 공격자는 다음과 같은 응답을 받게된다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;HTTPS 응답 예시&lt;/p&gt;
&lt;pre class=&quot;routeros&quot;&gt;&lt;code&gt;t8Fw6T8UV81pQfyhDkhebbz7+oiwldr1j2gHBB3L3RFTRsQCpaSnSBZ78Vme+DpDVJPvZdZUZHpzbbcqmSW1+3xXGsERHg9YDmpYk0VVDiRvw1H5miNieJeJ/FNUjgH0BmVRWII6+T4MnDwmCMZUI/orxP3HGwYCSIvyzS3MpmmSe4iaWKCOHQ==&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;5. 마치며&lt;/h2&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이번 글을 작성하며 저도 &lt;b&gt;SSL의 작동 원리, 인증서의 개념과 종류&lt;/b&gt;, &lt;b&gt;그리고 HTTP와 HTTPS의 차이, 암호화의 원리&lt;/b&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;background-color: #9feec3;&quot;&gt;&lt;b&gt;브라우저에 표시되는 작은 자물쇠 아이콘 하나가 단순한 UI 요소가 아니라 사이트간 신뢰와 보안을 나타내는 정말 중요한 장치&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;현재 IT 공격 방식은 나날히 발전하고 있습니다. 이에 맞춰 보안도 개선되고 있지만, 결국 보안의 기본을 이해하고 실천하는 것이 무엇보다 중요하다고 생각합니다. IT를 다루는 엔지니어라면, 언제나 경각심을 가지고 학습해야 한다는 생각이 드는 시간이였습니다.&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;h2 data-ke-size=&quot;size26&quot;&gt;+ 여담. SSL 인증서 발급 후 DNS 정보가 변경된다면?&lt;/h2&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;가비아를 통해 구입한 도메인을 AWS Route53에 등록하여 사용하고 있었는데, 이때 AWS Route53에 TXT 레코드를 추가하여 SSL 인증서를 발급받았었다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이떄 AWS &amp;rarr; NCP로 마이그레이션을 진행하며 도메인 관리도 Route53 &amp;rarr; NCP GlobalDNS로 변경하는 작업을 진행하였는데,&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;i&gt;&lt;b&gt;문득 궁금해졌다. DNS 관리 정보가 변경되면 SSL 인증서도 재발급이 필요할까?&lt;/b&gt;&lt;/i&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;h3 data-ke-size=&quot;size23&quot;&gt;SSL 인증서 발급 원리&lt;/h3&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Q: Route53에서 TXT 레코드를 추가하여 SSL 인증서를 발급받은 후, DNS를 다른 서비스로 이전해도 인증서를 계속 사용할 수 있을까?&lt;/b&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;b&gt;A: 결론적으로 사용할 수 있다.&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;본인의 경우 DV유형의 SSL 인증서로 도메인 소유권을 확인한 후 발급하는 형식인데, 도&lt;u&gt;메인 레코드 설정에서 SSL 인증 기관이 지정해준 TXT 레코드를 추가하여 발급&lt;/u&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;이때, TXT 레코드는 발급 과정에서만 필요하며, 발급 후에는 인증서 자체에 영향을 주지 않는다.&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그리고 DNS 서비스를 이전한다 하더라도, SSL 인증서는 DNS 레코드와 무관하며 웹 서버에서 사용되는 인증서이기 때문에 도메인 이름이 동일하고 SSL 인증서가 잘 설정되어 있다면 문제가 없다.&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;u&gt;&lt;b&gt;즉, 도메인 소유권은 인증서 발급 당시에만 존재하면 되고, DNS를 다른 서비스로 이전해도 기존 SSL 인증서는 유효하다.&lt;/b&gt;&lt;/u&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;gt;. 발급 당시의 소유권만 확인한다면, 생각보다 보안적으로 안전하지 않을 수 있다는 생각이 든다.&lt;br /&gt;그래서 조사를 해봤는데, &lt;span style=&quot;color: #000000; background-color: #99cefa;&quot;&gt;&lt;u&gt;보안을 이유로 google은 인증서의 갱신 기간을 90일, apple은 47일로 단축하는 제안&lt;/u&gt;&lt;/span&gt;을 했다고 한다&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style3&quot;&gt;&lt;a title=&quot;링크^^&quot; href=&quot;https://www.cio.com/article/3658532/%EC%9B%B9%EC%82%AC%EC%9D%B4%ED%8A%B8-%EC%9D%B8%EC%A6%9D%EC%84%9C%EA%B0%80-6%EC%A3%BC%EB%A7%88%EB%8B%A4-%EB%A7%8C%EB%A3%8C%EB%90%98%EB%A9%B4%C2%B7%C2%B7%C2%B7-%EA%B8%B0%EC%97%85-it%EB%A5%BC-%EC%9C%84.html&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;링크^^&lt;/a&gt;&lt;/blockquote&gt;
&lt;figure id=&quot;og_1738314771219&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;article&quot; data-og-title=&quot;웹사이트 인증서가 6주마다 만료되면?&amp;middot;&amp;middot;&amp;middot; 기업 IT를 위한 가이드북&quot; data-og-description=&quot;웹사이트 인증서 업데이트 주기를 대폭 단축하라고 요구하는 움직임이 거세지고 있다. 주로 애플과 구글이 주도하는 이 움직임이 내세우는 명분은 &amp;lsquo;보안&amp;rsquo;이다. 그러나 이 움직임과 명분에 대&quot; data-og-host=&quot;www.cio.com&quot; data-og-source-url=&quot;https://www.cio.com/article/3658532/%EC%9B%B9%EC%82%AC%EC%9D%B4%ED%8A%B8-%EC%9D%B8%EC%A6%9D%EC%84%9C%EA%B0%80-6%EC%A3%BC%EB%A7%88%EB%8B%A4-%EB%A7%8C%EB%A3%8C%EB%90%98%EB%A9%B4%C2%B7%C2%B7%C2%B7-%EA%B8%B0%EC%97%85-it%EB%A5%BC-%EC%9C%84.html&quot; data-og-url=&quot;https://www.cio.com/article/3658532/%ec%9b%b9%ec%82%ac%ec%9d%b4%ed%8a%b8-%ec%9d%b8%ec%a6%9d%ec%84%9c%ea%b0%80-6%ec%a3%bc%eb%a7%88%eb%8b%a4-%eb%a7%8c%eb%a3%8c%eb%90%98%eb%a9%b4%c2%b7%c2%b7%c2%b7-%ea%b8%b0%ec%97%85-it%eb%a5%bc-%ec%9c%84.html&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/hQL5E/hyX7WZjII4/jsg1gfEVCsGx43TVyd8qt0/img.jpg?width=1024&amp;amp;height=682&amp;amp;face=0_0_1024_682,https://scrap.kakaocdn.net/dn/bnNCJP/hyX72d7pG5/fpCGTvQxKGFjBfPUDccM1k/img.jpg?width=1024&amp;amp;height=682&amp;amp;face=0_0_1024_682,https://scrap.kakaocdn.net/dn/b9G3NN/hyX7U1sX3b/3kZsoIJ3psW04RYedM467K/img.jpg?width=1024&amp;amp;height=682&amp;amp;face=0_0_1024_682&quot;&gt;&lt;a href=&quot;https://www.cio.com/article/3658532/%EC%9B%B9%EC%82%AC%EC%9D%B4%ED%8A%B8-%EC%9D%B8%EC%A6%9D%EC%84%9C%EA%B0%80-6%EC%A3%BC%EB%A7%88%EB%8B%A4-%EB%A7%8C%EB%A3%8C%EB%90%98%EB%A9%B4%C2%B7%C2%B7%C2%B7-%EA%B8%B0%EC%97%85-it%EB%A5%BC-%EC%9C%84.html&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://www.cio.com/article/3658532/%EC%9B%B9%EC%82%AC%EC%9D%B4%ED%8A%B8-%EC%9D%B8%EC%A6%9D%EC%84%9C%EA%B0%80-6%EC%A3%BC%EB%A7%88%EB%8B%A4-%EB%A7%8C%EB%A3%8C%EB%90%98%EB%A9%B4%C2%B7%C2%B7%C2%B7-%EA%B8%B0%EC%97%85-it%EB%A5%BC-%EC%9C%84.html&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/hQL5E/hyX7WZjII4/jsg1gfEVCsGx43TVyd8qt0/img.jpg?width=1024&amp;amp;height=682&amp;amp;face=0_0_1024_682,https://scrap.kakaocdn.net/dn/bnNCJP/hyX72d7pG5/fpCGTvQxKGFjBfPUDccM1k/img.jpg?width=1024&amp;amp;height=682&amp;amp;face=0_0_1024_682,https://scrap.kakaocdn.net/dn/b9G3NN/hyX7U1sX3b/3kZsoIJ3psW04RYedM467K/img.jpg?width=1024&amp;amp;height=682&amp;amp;face=0_0_1024_682');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;웹사이트 인증서가 6주마다 만료되면?&amp;middot;&amp;middot;&amp;middot; 기업 IT를 위한 가이드북&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;웹사이트 인증서 업데이트 주기를 대폭 단축하라고 요구하는 움직임이 거세지고 있다. 주로 애플과 구글이 주도하는 이 움직임이 내세우는 명분은 &amp;lsquo;보안&amp;rsquo;이다. 그러나 이 움직임과 명분에 대&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;www.cio.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;물론 공식적인 단축 이유는 방치된 도메인 이름을 활용한 피싱, 도용 등을 방지하기 위함이나, 인증 기간을 자주 진행함으로서 도메인 소유권 확인도 더욱 정확해 질 것 같다는 생각이 들었다.&lt;/b&gt;&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;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://www.cloudflare.com/ko-kr/learning/ssl/what-is-an-ssl-certificate/&quot;&gt;https://www.cloudflare.com/ko-kr/learning/ssl/what-is-an-ssl-certificate/&lt;/a&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://aws.amazon.com/ko/what-is/ssl-certificate/&quot;&gt;https://aws.amazon.com/ko/what-is/ssl-certificate/&lt;/a&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://nordvpn.com/ko/blog/what-is-ssl-certificate/&quot;&gt;https://nordvpn.com/ko/blog/what-is-ssl-certificate/&lt;/a&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://computing-jhson.tistory.com/117#google_vignette&quot;&gt;https://computing-jhson.tistory.com/117#google_vignette&lt;/a&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://it-sunny-333.tistory.com/144&quot;&gt;https://it-sunny-333.tistory.com/144&lt;/a&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://goodgid.github.io/TLS-SSL/&quot;&gt;https://goodgid.github.io/TLS-SSL/&lt;/a&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://12bme.tistory.com/80&quot;&gt;https://12bme.tistory.com/80&lt;/a&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://blog.naver.com/toy_ssl/110167774615&quot;&gt;https://blog.naver.com/toy_ssl/110167774615&lt;/a&gt;&lt;/p&gt;</description>
      <category>DevOps/Network_네트워크</category>
      <category>HTTP</category>
      <category>https</category>
      <category>SSL 인증서</category>
      <category>ssl 인증서 등급</category>
      <category>ssl 인증서 발급 후 dns 정보 변경</category>
      <category>ssl 인증서 유형</category>
      <category>ssl 작동 원리</category>
      <category>ssl/tls</category>
      <category>암호화 작동 원리</category>
      <category>자체 서명 ssl 인증서</category>
      <author>cwpack0730</author>
      <guid isPermaLink="true">https://cwpack0730.tistory.com/133</guid>
      <comments>https://cwpack0730.tistory.com/133#entry133comment</comments>
      <pubDate>Fri, 31 Jan 2025 17:36:09 +0900</pubDate>
    </item>
    <item>
      <title>DNS의 동작 원리 및 구성 방법(레코드 종류와 root 도메인)</title>
      <link>https://cwpack0730.tistory.com/132</link>
      <description>&lt;h2 data-ke-size=&quot;size26&quot;&gt;개요&lt;/h2&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;얼마 전, 신규 해외 서비스를 오픈하며 개발과 운영 환경의 도메인을 매핑하는 작업을 진행했다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;개발 환경은 특이하게 &lt;b&gt;Vercel&lt;/b&gt;이라는 자동 배포 및 서버리스 클라우드 플랫폼을 활용하고 있었다.(vercel은 Next,js 개발사인데, 그래서 Next.js 프로젝트 배포에 많이 사용되는 것 같다.)&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;작업 중 Vercel CDN 도메인에 개발용 도메인을 매핑하는 과정에서 진행이 막히는 부분이 발생했었는데, 원인을 파악하면서 내가 놓치고 있던 몇 가지 DNS 기본 개념과 동작 원리를 되돌아보게 되었다.&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;이번 글에서는 이 과정을 되짚어보며, DNS의 개념과 작동 원리, 그리고 Vercel 배포 시 발생했던 문제를 설명해보려 한다.&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;1. DNS 개념과 동작 원리&lt;/h2&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;1.1 도메인(domain)과 DNS(domain name system)&lt;/h3&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #f6e199;&quot;&gt;&lt;b&gt;도메인은 인터넷에 연결된 시스템을 사람이 쉽게 기억하고 입력할 수 있도록 문자로 만든 인터넷 주소&lt;/b&gt;&lt;/span&gt;이다. 도메인은 보통 웹사이트와 연결하기 위해 등록하는데, 이때 DNS 관리 서비스를 이용한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;즉, &lt;b&gt;도메인은 문자열의 인터넷 주소&lt;/b&gt;이며, &lt;b&gt;DNS(Domain Name System)는 이 도메인 이름을 시스템이 읽을 수 있는 IP 주소로 변환하는 것&lt;/b&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;h3 data-ke-size=&quot;size23&quot;&gt;1.2 일반 최상위 도메인(gTLD)&lt;/h3&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;image.png&quot; data-origin-width=&quot;720&quot; data-origin-height=&quot;647&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bciV8b/btsL0ONvLcS/wxPVjesRd0z3x0GvZcKHeK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bciV8b/btsL0ONvLcS/wxPVjesRd0z3x0GvZcKHeK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bciV8b/btsL0ONvLcS/wxPVjesRd0z3x0GvZcKHeK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbciV8b%2FbtsL0ONvLcS%2FwxPVjesRd0z3x0GvZcKHeK%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;490&quot; height=&quot;440&quot; data-filename=&quot;image.png&quot; data-origin-width=&quot;720&quot; data-origin-height=&quot;647&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;일반 최상위 도메인(Generic Top-Level Domains)은 특정 조직과 계열에 따라 사용되는 최상위 도메인이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;.com, .net 등이 포함되어 있으며 다른 최상위 도메인들에 비해 오랜 역사를 가지고 있어 가격대가 낮고 시스템이 안정적이다.&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;ex, .com, .net, .org, .biz 등&amp;hellip;&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;1.3 국가 코드 최상위 도메인(ccTLD)&lt;/h3&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;국가 코드 최상위 도메인(Country Code Top-Level Domains)은 국가 코드로 특정 국가나 지역을 나타낸다.&lt;span style=&quot;letter-spacing: 0px;&quot;&gt;&lt;/span&gt;&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style3&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #006dd7;&quot;&gt;국가 코드는 일반적으로 ISO(국제 표준화 기구)에서 정한 ISO 3166-1 표준에 따르며,예외적으로 영국은 ISO 기준 약자는 GB이지만, 국가 도메인인 .uk이다.&lt;/span&gt;&lt;/b&gt;&lt;/blockquote&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;ex, .kr(한국), .jp(일본), .us(미국), .uk(영국) 등&amp;hellip;&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;1.4 2차 도메인(SLD)&lt;/h3&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;image 1.png&quot; data-origin-width=&quot;720&quot; data-origin-height=&quot;652&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/OM73c/btsL2GN18nk/mTCEzUkD5JxbN3fDj3Th7k/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/OM73c/btsL2GN18nk/mTCEzUkD5JxbN3fDj3Th7k/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/OM73c/btsL2GN18nk/mTCEzUkD5JxbN3fDj3Th7k/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FOM73c%2FbtsL2GN18nk%2FmTCEzUkD5JxbN3fDj3Th7k%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;496&quot; height=&quot;449&quot; data-filename=&quot;image 1.png&quot; data-origin-width=&quot;720&quot; data-origin-height=&quot;652&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;SLD(2차 도메인)은 최상위 도메인 아래에 직접 위치한 도메인이다. 도메인 확장자라고도 불리며 도메인 이름의 첫 번째 부분이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;예를 들면, &lt;a href=&quot;http://cwdev.site&quot;&gt;cwdev.site&lt;/a&gt; 에서 cwdev 부분이 2차 도메인이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;2차 도메인은 최상위 도메인과 결합되어 하나의 완전한 도메인 이름을 만든다.&lt;span style=&quot;letter-spacing: 0px;&quot;&gt;&lt;/span&gt;&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style3&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #8a3db6;&quot;&gt;2차 도메인은 등록자가 선택할 수 있으며, 특정 기업이나 개인의 고유 이름을 나타낼 수 있다. &lt;br /&gt;(도메인은 전 세계에서 고유해야 하므로 도메인 등록기관을 통해서 등록해야 한다.)&lt;/span&gt;&lt;/b&gt;&lt;/blockquote&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;1.5 루트 도메인과 서브 도메인&lt;/h3&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;루트 도메인은 지금까지 설명한 최상위 도메인(TLD), 2차 도메인(SLD)를 합친, DNS의 최상위 계층이다..&lt;span style=&quot;letter-spacing: 0px;&quot;&gt;&lt;/span&gt;&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style3&quot;&gt;&lt;span style=&quot;color: #009a87;&quot;&gt;&lt;b&gt;루트 도메인은 베어 도메인(bare domain), 에이펙스 도메인(apex domain)으로도 부른다.&lt;/b&gt;&lt;/span&gt;&lt;/blockquote&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;루트 도메인은 DNS 계층에서 최상위에 위치하고 있기 때문에, DNS 서버가 도메인 이름을 찾을 때 가장 먼저 참조하는 기준이 된다.&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차 도메인 아래에 위치한 추가적인 도메인으로, 특정 서비스를 구분하거나 웹사이트 내에서 다양한 섹션을 나누는데 사용된다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;예를 들면, &lt;a href=&quot;http://www.cwsite.com%EC%97%90%EC%84%9C&quot;&gt;www.cwsite.com에서&lt;/a&gt; www부분이 서브 도메인이다..&lt;/p&gt;
&lt;pre class=&quot;dts&quot;&gt;&lt;code&gt;# 전체 도메인 네이밍 구조
예시: www.cwsite.com
     www    .  cwsite    .     com
 &amp;lt;서브도메인&amp;gt;.&amp;lt;2차 도메인&amp;gt;.&amp;lt;최상위 도메인&amp;gt;
             &amp;lt;--------루트 도메인-------&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;다시 정리하자면, 루트 도메인은 DNS 트리에서 최상위에 있고, 그 아래 최상위 도메인, 2차 도메인, 서브 도메인이 위치하는 구조로 이루어져 있다.&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;1.6 도메인과 URL의 차이점&lt;/h3&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;도메인(Domain): 도메인은 문자열의 인터넷 주소로, DNS 서버를 통해 IP 주소로 변환시켜 연결된다.&lt;/li&gt;
&lt;li&gt;URL(Uniform Resoruce Locator): 도메인을 포함한 접근 경로. 프로토콜+도메인+경로로 나타난다.&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock widthContent&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;image 2.png&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;436&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/biOtn5/btsL1fxELO9/ZqxKeuEGxQYl8coirTcucK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/biOtn5/btsL1fxELO9/ZqxKeuEGxQYl8coirTcucK/img.png&quot; data-alt=&quot;URL 이미지. URL 안에 도메인이 포함된 개념으로 이해하면 편하다.&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/biOtn5/btsL1fxELO9/ZqxKeuEGxQYl8coirTcucK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbiOtn5%2FbtsL1fxELO9%2FZqxKeuEGxQYl8coirTcucK%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;1280&quot; height=&quot;436&quot; data-filename=&quot;image 2.png&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;436&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;URL 이미지. URL 안에 도메인이 포함된 개념으로 이해하면 편하다.&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;즉 도메인은 인터넷 주소이며, URL은 인터넷 주소를 포함한 인터넷 자원의 전체 주소이다.. 도메인은 URL의 일부분이며, URL은 특정 위치를 지정하는 더 구체적인 주소라고 볼 수 있다.&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;1.7 DNS의 흐름&lt;/h3&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;image 3.png&quot; data-origin-width=&quot;838&quot; data-origin-height=&quot;479&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/d2EMSd/btsL2PqohQd/RczkqAwDw1LSFKW3i6Dvk0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/d2EMSd/btsL2PqohQd/RczkqAwDw1LSFKW3i6Dvk0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/d2EMSd/btsL2PqohQd/RczkqAwDw1LSFKW3i6Dvk0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fd2EMSd%2FbtsL2PqohQd%2FRczkqAwDw1LSFKW3i6Dvk0%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;682&quot; height=&quot;390&quot; data-filename=&quot;image 3.png&quot; data-origin-width=&quot;838&quot; data-origin-height=&quot;479&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;위 도메인 개념에서 DNS는 도메인 이름을 IP주소로 변환하는 역할을 한다고 했었는데, 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;DNS의 동작 과정은 다음과 같다.&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%; height: 334px;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr style=&quot;height: 89px;&quot;&gt;
&lt;td style=&quot;width: 50%; height: 89px;&quot;&gt;1. 웹사이트 접속 요청&lt;/td&gt;
&lt;td style=&quot;width: 50%; height: 89px;&quot;&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;사용자가 웹 브라우저 주소(www.cwdev.site)를 입력하여 접속을 시도함&lt;/li&gt;
&lt;/ul&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 143px;&quot;&gt;
&lt;td style=&quot;width: 50%; height: 143px;&quot;&gt;2. 로컬 DNS 캐시 확인&lt;/td&gt;
&lt;td style=&quot;width: 50%; height: 143px;&quot;&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;사용자의 컴퓨터는 도메인 이름에 대한 IP 주소가 로컬 DNS 캐시에 저장되어 있는지 먼저 확인함.&lt;/li&gt;
&lt;li&gt;만약 로컬 캐시에 해당 도메인 이름에 대한 IP 주소가 있다면, 이를 즉시 반환하고 웹사이트를 표시&lt;/li&gt;
&lt;/ul&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 17px;&quot;&gt;
&lt;td style=&quot;width: 50%; height: 17px;&quot;&gt;3. DNS 질의 시작&lt;/td&gt;
&lt;td style=&quot;width: 50%; height: 17px;&quot;&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;로컬 DNS 캐시에 해당 도메인 이름 IP 주소가 없다면 컴퓨터는 DNS 서버에 질의를 시작&lt;/li&gt;
&lt;/ul&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 17px;&quot;&gt;
&lt;td style=&quot;width: 50%; height: 17px;&quot;&gt;4. 루트 DNS 서버의 IP 주소 조회&lt;/td&gt;
&lt;td style=&quot;width: 50%; height: 17px;&quot;&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;사용자의 컴퓨터는 미리 설정되어 있는 최상위 DNS 서버의 IP 주소를 참조하여, 루트 DNS 서버의 주소를 확인&lt;/li&gt;
&lt;li&gt;이 과정에서, 컴퓨터는 루트 DNS 서버에 연결하여 도메인 이름을 처리할 수 있는 정보를 찾음&lt;/li&gt;
&lt;/ul&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 17px;&quot;&gt;
&lt;td style=&quot;width: 50%; height: 17px;&quot;&gt;5. &lt;span data-token-index=&quot;0&quot;&gt;TLD DNS 서버 정보 얻기&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 50%; height: 17px;&quot;&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;루트 DNS 서버는 사용자의 요청에 대해 해당 도메인 이름을 관리하는 &lt;b&gt;TLD(Top-Level Domain) DNS 서버&lt;/b&gt;&lt;span style=&quot;letter-spacing: 0px;&quot;&gt;의 IP 주소를 제공&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&gt;예를 들어, .com, .org, .net과 같은 최상위 도메인에 해당하는 TLD 서버가 제공됨&lt;/li&gt;
&lt;/ul&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 17px;&quot;&gt;
&lt;td style=&quot;width: 50%; height: 17px;&quot;&gt;6. &lt;span data-token-index=&quot;0&quot;&gt;Authoritative DNS 서버의 IP 주소 얻기&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 50%; height: 17px;&quot;&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;사용자는 TLD DNS 서버에 질의를 보내어, 해당 도메인 이름을 관리하는 &lt;b&gt;Authoritative DNS 서버&lt;/b&gt;&lt;span style=&quot;letter-spacing: 0px;&quot;&gt;의 IP 주소를 받음.&lt;br /&gt;&lt;/span&gt;이 서버는 해당 도메인의 정확한 정보를 가지고 있다.&lt;/li&gt;
&lt;/ul&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 17px;&quot;&gt;
&lt;td style=&quot;width: 50%; height: 17px;&quot;&gt;7. &lt;span data-token-index=&quot;0&quot;&gt;IP 주소 조회&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 50%; height: 17px;&quot;&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;사용자는 &lt;b&gt;Authoritative DNS 서버&lt;/b&gt;&lt;span style=&quot;letter-spacing: 0px;&quot;&gt;에 최종 질의를 보내어, 해당 도메인 이름에 대한 &lt;/span&gt;&lt;b&gt;IP 주소&lt;/b&gt;&lt;span style=&quot;letter-spacing: 0px;&quot;&gt;를 얻음.&lt;br /&gt;&lt;/span&gt;이 IP 주소는 웹사이트를 표시하는 데 필요한 주소이다.&lt;/li&gt;
&lt;/ul&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 17px;&quot;&gt;
&lt;td style=&quot;width: 50%; height: 17px;&quot;&gt;8. &lt;span data-token-index=&quot;0&quot;&gt;IP 주소 캐시 저장 및 웹사이트 표시&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 50%; height: 17px;&quot;&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;사용자는 얻은 IP 주소를 &lt;b&gt;로컬 DNS 캐시&lt;/b&gt;&lt;span style=&quot;letter-spacing: 0px;&quot;&gt;에 저장하고, 해당 주소를 통해 웹 페이지를 브라우저에 표시&lt;br /&gt;&lt;/span&gt;이제 웹사이트가 사용자에게 로딩된다.&lt;/li&gt;
&lt;/ul&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&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;1.8 Root DNS 서버&lt;/h3&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Root DNS 서버는 인터넷에서 가장 중요한 DNS 서버 중 하나이다. 전 세계적으로 분산되어 있으며, 인터넷 상의 모든 도메인 이름에 대한 최상위 DNS 서버로, DNS 시스템의 핵심 역할을 담당한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;루트 도메인 이름을 관리하며(ex, .com), TLD DNS 서버의 IP 주소를 알고 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;즉, 위 DNS 동작 과정에서 설명한 내용처럼 Root DNS 서버는 TLS DNS 서버의 IP 주소를 반환하고 사용자의 DNS 쿼리는 TLS DNS 서버로 전달된다.&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;Root DNS 서버는 ICANN(Internet Corporation for Assigned Names and Numbers)에서 관리된다.&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;h3 data-ke-size=&quot;size23&quot;&gt;1.9 TLD DNS 서버&lt;/h3&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;TLD DNS 서버는 인터넷에서 사용되는 최상위 도메인 이름(Top-Level Domain)을 관리하는 DNS 서버이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;code&gt;.com, .org, .edu&lt;/code&gt; 등과 같이 최상위 도메인 이름에 대한 DNS 서버로, 각 도메인 이름의 DNS 쿼리를 처리한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;TLD DNS 서버는 각 TLD 도메인 이름에 대한 IP 주소와 기타 DNS 레코드 정보를 관리한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;예를 들어, &lt;code&gt;.com&lt;/code&gt; 도메인 이름에 대한 TLD DNS 서버는 &lt;code&gt;.com&lt;/code&gt; 도메인 이름에 대한 모든 DNS 쿼리를 처리합니다. 이러한 DNS 쿼리는 해당 도메인 이름에 대한 IP 주소를 찾는 것이 주된 목적이다.&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;TLD DNS 서버도 Root DNS와 마찬가지로 ICANN에 등록되어 있으며, 해당 TLD 도메인 이름을 사용하는 등록 업체와 협력하여 정보를 업데이트한다.&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;h3 data-ke-size=&quot;size23&quot;&gt;1.10 Second-Level DNS 서버(Authoritative DNS 서버)&lt;/h3&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Second-Level DNS는특정 도메인 이름에 대한 IP 주소 정보를 제공하는 DNS 서버이며, 일반적으로 도메인/호스팅 업체의 네임서버를 말한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;또한 해당 도메인 이름에 대한 정보를 가지고 있는 최종적인 답변자 역할을 한다. 예를 들어 cwdev.site 도메인 이름에 대한 IP 주소를 알고 있는 DNS 서버가 있다면 , 해당 DNS 서버는 Second-Level DNS 서버가 된다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;(ex, 가비아, 후이즈, AWS Route53, Ncloud global DNS 등&amp;hellip;)&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 data-ke-size=&quot;size26&quot;&gt;2. DNS 레코드 종류&lt;/h2&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;DNS 레코드는 DNS에서 도메인 이름과 해당 도메인과 연결된 IP 주소를 매핑하는 데 사용되는 데이터 항목이다. DNS 레코드는 도메인 이름과 관련된 정보를 담고 있으며, DNS 쿼리를 수행하는 서버에 의해 사용된다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;자주 접하는 DNS 레코드 종류는 다음과 같다.&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%; height: 254px;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr style=&quot;height: 103px;&quot;&gt;
&lt;td style=&quot;width: 50%; height: 103px;&quot;&gt;A 레코드&lt;/td&gt;
&lt;td style=&quot;width: 50%; height: 103px;&quot;&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;도메인 이름을 IP 주소로 매핑한다.
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;서버로 직접 붙는 도메인의 경우에 주로 사용한다.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 20px;&quot;&gt;
&lt;td style=&quot;width: 50%; height: 20px;&quot;&gt;CNAME 레코드&lt;/td&gt;
&lt;td style=&quot;width: 50%; height: 20px;&quot;&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;도메인 이름을 다른 도메인 이름으로 매핑한다.
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;운영 도메인에 많이 사용했다. 보통 CDN이나 로드밸런서 도메인을 등록한다.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 20px;&quot;&gt;
&lt;td style=&quot;width: 50%; height: 20px;&quot;&gt;MX 레코드&lt;/td&gt;
&lt;td style=&quot;width: 50%; height: 20px;&quot;&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;도메인 이름과 연결된 메일 서버의 우선 순위를 지정한다. 이메일을 전송할 때 도메인 이름과 연결된 메일 서버를 찾는 데 사용된다.
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;보통 웹사이트에서 메일을 연동할때 사용했다.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 20px;&quot;&gt;
&lt;td style=&quot;width: 50%; height: 20px;&quot;&gt;NS 레코드&lt;/td&gt;
&lt;td style=&quot;width: 50%; height: 20px;&quot;&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;도메인 이름에 대한 권한 DNS 서버를 식별한다.DNS 쿼리가 수행될 때 도메인 이름에 대한 권한 DNS 서버를 찾는 데 사용된다.
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;도메인 관리 서비스를 이용할때 사용했다. ex, 가비아 &amp;rarr; AWS Route53 NS 로 변경하여 사용 등&amp;hellip;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 20px;&quot;&gt;
&lt;td style=&quot;width: 50%; height: 20px;&quot;&gt;TXT 레코드&lt;/td&gt;
&lt;td style=&quot;width: 50%; height: 20px;&quot;&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;도메인 이름과 연결된 텍스트 정보를 포함된다. 이 레코드는 보안, 인증 등 다양한 목적으로 사용된다.
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;google 사이트 등록 인증과 SSL 인증서 등록을 위해 사용하였다&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 20px;&quot;&gt;
&lt;td style=&quot;width: 50%; height: 20px;&quot;&gt;SPF (Sender Policy Framework) 레코드&lt;/td&gt;
&lt;td style=&quot;width: 50%; height: 20px;&quot;&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;이메일 스팸을 방지하기 위해 도메인 이름의 이메일 발송 권한을 확인하는 데 사용된다.&lt;/li&gt;
&lt;/ul&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 17px;&quot;&gt;
&lt;td style=&quot;width: 50%; height: 17px;&quot;&gt;SRV (Service) 레코드&lt;/td&gt;
&lt;td style=&quot;width: 50%; height: 17px;&quot;&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;letter-spacing: 0px;&quot;&gt;DNS 서버가 제공하는 특정 서비스의 위치를 식별하는 데 사용된다. 이 레코드는 웹 서비스, VoIP, FTP 등과 같은 특정 서비스의 위치를 찾는 데 사용된다.&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 17px;&quot;&gt;
&lt;td style=&quot;width: 50%; height: 17px;&quot;&gt;AAAA 레코드&lt;/td&gt;
&lt;td style=&quot;width: 50%; height: 17px;&quot;&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;letter-spacing: 0px;&quot;&gt;IPv6 주소를 도메인 이름에 매핑하는 데 사용된다.&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 17px;&quot;&gt;
&lt;td style=&quot;width: 50%; height: 17px;&quot;&gt;SOA (Start of Authority) 레코드&lt;/td&gt;
&lt;td style=&quot;width: 50%; height: 17px;&quot;&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;letter-spacing: 0px;&quot;&gt;도메인 이름에 대한 기본 설정을 제공한다. (도메인 소유자, DNS 서버, 캐시 정보 유효 기간 등&amp;hellip;.)&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&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. 도메인 연결 방법&lt;/h2&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;도메인 연결 방법은 간단한데, 보통 각 도메인 구입처나, AWS, NCP 등 클라우드 DNS 서비스에 등록하여 사용하는 방법이 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;나는 vercel 사례와 비슷하게 서버(혹은 IP)에 직접 매핑하는 것이 아닌 운영중인 github 웹 페이지에 CNAME 레코드로 개인 도메인을 매핑하는 실습을 진행해보겠다.&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;3.1 개인 사이트 연결해보기(A 레코드 설정하여 변경)&lt;/h3&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;기존 내 github에서 운영중인 &lt;a href=&quot;http://chanw-pack.github.io&quot;&gt;chanw-pack.github.io&lt;/a&gt; 사이트에 가비아에서 구매한 도메인을 연결해보겠다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;(정확히는 가비아에서 대행으로 구매를 해준다는 개념이다.)&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style3&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #006dd7;&quot;&gt;! 필자는 가비아로 진행하였지만 여러 도메인 관리 업체 모두 동일한 방식이니 등록 방법보다는 위 설명한 개념적인 부분을 이해하기 위해 확인해본다고 생각하시면 좋습니다.&lt;/span&gt;&lt;/b&gt;&lt;/blockquote&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;가비아에 로그인 후, My가비아로 이동한다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;image 4.png&quot; data-origin-width=&quot;614&quot; data-origin-height=&quot;263&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cqIUp9/btsL03cB4n3/dFd8JQaAUQP0k6q6MLJirk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cqIUp9/btsL03cB4n3/dFd8JQaAUQP0k6q6MLJirk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cqIUp9/btsL03cB4n3/dFd8JQaAUQP0k6q6MLJirk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcqIUp9%2FbtsL03cB4n3%2FdFd8JQaAUQP0k6q6MLJirk%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;614&quot; height=&quot;263&quot; data-filename=&quot;image 4.png&quot; data-origin-width=&quot;614&quot; data-origin-height=&quot;263&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;My가비아에 접근하면 구매한 도메인 정보를 확인할 수 있다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;image 5.png&quot; data-origin-width=&quot;589&quot; data-origin-height=&quot;426&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bViNow/btsL02dJR9Z/f6Yd9HQFKF10K2dnLXWNH0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bViNow/btsL02dJR9Z/f6Yd9HQFKF10K2dnLXWNH0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bViNow/btsL02dJR9Z/f6Yd9HQFKF10K2dnLXWNH0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbViNow%2FbtsL02dJR9Z%2Ff6Yd9HQFKF10K2dnLXWNH0%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;589&quot; height=&quot;426&quot; data-filename=&quot;image 5.png&quot; data-origin-width=&quot;589&quot; data-origin-height=&quot;426&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;설정할 도메인으로 이동하면 DNS 레코드 설정 항목이 있다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;image 6.png&quot; data-origin-width=&quot;565&quot; data-origin-height=&quot;313&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/ctVZQk/btsL0ZonpZA/mvSoWys0oqgkesCX3stbak/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/ctVZQk/btsL0ZonpZA/mvSoWys0oqgkesCX3stbak/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/ctVZQk/btsL0ZonpZA/mvSoWys0oqgkesCX3stbak/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FctVZQk%2FbtsL0ZonpZA%2FmvSoWys0oqgkesCX3stbak%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;565&quot; height=&quot;313&quot; data-filename=&quot;image 6.png&quot; data-origin-width=&quot;565&quot; data-origin-height=&quot;313&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;DNS 레코드 설정에서 resume 라는 서브도메인을 CNAME 타입으로 레코드 생성을 진행하였다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;즉, &lt;a href=&quot;http://resume.cwdev.site&quot;&gt;resume.cwdev.site&lt;/a&gt; 로 이동하면 기존 &lt;a href=&quot;http://chanw-pack.github.io&quot;&gt;chanw-pack.github.io&lt;/a&gt; 사이트로 이동하게 된다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;image 7.png&quot; data-origin-width=&quot;821&quot; data-origin-height=&quot;288&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/qCCFd/btsL2RaHHx8/w4JEZAZNNohVlaZckzAzwK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/qCCFd/btsL2RaHHx8/w4JEZAZNNohVlaZckzAzwK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/qCCFd/btsL2RaHHx8/w4JEZAZNNohVlaZckzAzwK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FqCCFd%2FbtsL2RaHHx8%2Fw4JEZAZNNohVlaZckzAzwK%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;821&quot; height=&quot;288&quot; data-filename=&quot;image 7.png&quot; data-origin-width=&quot;821&quot; data-origin-height=&quot;288&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;b&gt;&lt;span style=&quot;background-color: #9feec3;&quot;&gt;도메인이 적용된 것을 확인한다.&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;edited_image 8.png&quot; data-origin-width=&quot;878&quot; data-origin-height=&quot;627&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/nrspr/btsMmLJsrsB/0RTklkiFrWbJIQe4nzdvIk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/nrspr/btsMmLJsrsB/0RTklkiFrWbJIQe4nzdvIk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/nrspr/btsMmLJsrsB/0RTklkiFrWbJIQe4nzdvIk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fnrspr%2FbtsMmLJsrsB%2F0RTklkiFrWbJIQe4nzdvIk%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;878&quot; height=&quot;627&quot; data-filename=&quot;edited_image 8.png&quot; data-origin-width=&quot;878&quot; data-origin-height=&quot;627&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;h2 data-ke-size=&quot;size26&quot;&gt;4. ROOT 도메인에서 CNAME 사용이 가능할까?&lt;/h2&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이제 DNS 및 도메인 설명에서 돌아와 vercel 사용중 발생한 문제에 대해서 상세히 설명해보겠다.&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;현재 개발서버에 이미 A도메인을 연결하여 사용중이다.(vercel 사용중)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 때, 새로운 B 도메인을 매핑하여, 두 도메인을 사용하려고 한다. (두 도메인 모두 사용되어야 한다.)&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;4.1 환경 소개 및 가능 여부 파악&lt;/h3&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;개발팀에게 요청받은 요구사항
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;&lt;b&gt;cname / cwdev.site / &lt;a href=&quot;http://cname.vercel-dns.com&quot;&gt;cname.vercel-dns.com&lt;/a&gt; (문제되는 요청)&lt;/b&gt;&lt;/li&gt;
&lt;li&gt;cname / &lt;a href=&quot;http://www.cwdev.site&quot;&gt;www.cwdev.site&lt;/a&gt; / cwdev.site&lt;/li&gt;
&lt;li&gt;A / admin.cwdev.site / 123.123.456.78&lt;/li&gt;
&lt;/ol&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;ROOT 도메인을 CNAME 레코드 타입으로 생성하는것은 여러 방식에 따라 가능할 수 있다. 하지만 &lt;span style=&quot;background-color: #ffc9af;&quot;&gt;&lt;b&gt;결론부터 말하자면, 위 요청은 우리 환경에서는 불가능했다.&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style3&quot;&gt;&lt;a href=&quot;https://blog.enyou.net/ko/archives/517&quot;&gt;https://blog.enyou.net/ko/archives/517&lt;/a&gt;&lt;/blockquote&gt;
&lt;figure id=&quot;og_1737873563167&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;website&quot; data-og-title=&quot;왜 CNAME은 ROOT에서 쓸 수 없는가? PTR 레코드란 무엇인가? &amp;ndash; Enyou&amp;rsquo;s Atelier&quot; data-og-description=&quot;왜 CNAME은 ROOT에서 쓸 수 없는가? PTR 레코드란 무엇인가? 글쓴이 연유 날짜 2020년 4월 30일2020년 4월 30일 개요 도메인 등록 회사를 구글 도메인으로 바꾸면서 도메인의 루트에 CNAME을 등록할 수 없&quot; data-og-host=&quot;blog.enyou.net&quot; data-og-source-url=&quot;https://blog.enyou.net/ko/archives/517&quot; data-og-url=&quot;https://blog.enyou.net/ko/archives/517&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/W6PS3/hyX73J0H1y/MSGKK7tbEdth3nT9UQ4j70/img.png?width=2180&amp;amp;height=1486&amp;amp;face=0_0_2180_1486,https://scrap.kakaocdn.net/dn/dcEv4W/hyX4ohXdVh/8UdIbsaJgW7BWeWgPx8sRk/img.png?width=2228&amp;amp;height=1332&amp;amp;face=0_0_2228_1332&quot;&gt;&lt;a href=&quot;https://blog.enyou.net/ko/archives/517&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://blog.enyou.net/ko/archives/517&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/W6PS3/hyX73J0H1y/MSGKK7tbEdth3nT9UQ4j70/img.png?width=2180&amp;amp;height=1486&amp;amp;face=0_0_2180_1486,https://scrap.kakaocdn.net/dn/dcEv4W/hyX4ohXdVh/8UdIbsaJgW7BWeWgPx8sRk/img.png?width=2228&amp;amp;height=1332&amp;amp;face=0_0_2228_1332');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;왜 CNAME은 ROOT에서 쓸 수 없는가? PTR 레코드란 무엇인가? &amp;ndash; Enyou&amp;rsquo;s Atelier&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;왜 CNAME은 ROOT에서 쓸 수 없는가? PTR 레코드란 무엇인가? 글쓴이 연유 날짜 2020년 4월 30일2020년 4월 30일 개요 도메인 등록 회사를 구글 도메인으로 바꾸면서 도메인의 루트에 CNAME을 등록할 수 없&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;blog.enyou.net&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;요약하면,&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;u&gt;&lt;b&gt;다음 DNS 표준 규칙으로 제약 사항이 있다.&lt;/b&gt;&lt;/u&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;/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. 현재 본인은 후이즈에서 도메인을 구입하였고, NCP GlobalDNS로 네임서버를 변경하여 사용중에 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;2. 위 요구사항 중, 루트 도메인을 CNAME으로 지정해야하는 사항이 있다.그러나 &lt;b&gt;CNAME은 일반적으로는 루트에 등록할 수 없다.&lt;/b&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;SOA와 NS 레코드는 루트 도메인에서 반드시 표현되어야 한다. (RFC 1912)&lt;/li&gt;
&lt;li&gt;DNSSEC의 SIG, NXT, KEY RR 레코드를 제외하고서는 CNAME 레코드는 다른 레코드와 같이 쓰일 수 없다. (RFC 2181)&lt;/li&gt;
&lt;li&gt;&lt;b&gt;물론, 기술적으로 완전히 강제되는것은 아니다.&lt;/b&gt; 사용하는 도메인 서비스마다 루트 도메인에 CNAME 레코드를 허용하기도 한다. AWS의 경우에도 Route53에 등록할 시, 외부 시스템은 불가하지만 내부(ex,EC2등) 서비스끼리는 루트 도메인의 CNAME 구성이 가능하다.(alias 매핑으로 가능합니다.)&lt;/li&gt;
&lt;li&gt;그러나 vercel DNS는 클라우드 플랫폼 외 시스템이라 alias 매핑이 불가하며 A 레코드 또한 vercel DNS가 CDN 처럼 계속 IP가 변경되기 때문에 A레코드로도 할당할 수 없는 상황이다.&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;4.2 대처방안&lt;/h3&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;1. NCP Global DNS에서 AWS Route53으로 전환&lt;br /&gt;(AWS Route53은 루트 도메인을 CNAME으로 사용 가능하다는 이야기를 얼핏 들은 것 같다.)&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;일단 route53에서도 루트 도메인에 대해 cname으로 사용이 불가하다.&lt;/li&gt;
&lt;li&gt;단, alias를 통해 aws 내부 서비스에는 가능하다.&lt;/li&gt;
&lt;li&gt;그래서 aws cli를 통해 직접 대상을 넣는다면, alias를 외부 도메인을 넣을 수도 있을법하다.
&lt;ul style=&quot;list-style-type: circle;&quot; data-ke-list-type=&quot;circle&quot;&gt;
&lt;li&gt;&lt;b&gt;&lt;span style=&quot;background-color: #ffc9af;&quot;&gt;안됨&amp;hellip;&lt;/span&gt;&lt;/b&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;4.3 결론&lt;/h3&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;background-color: #c1bef9;&quot;&gt;&lt;b&gt;루트 도메인 사용이 필요한 vercel 레코드를 A 레코드로 사용하도록 변경 요청하여 해결하였다.&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;h2 data-ke-size=&quot;size26&quot;&gt;5. 마치며&lt;/h2&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이번 작업에서 root 도메인은 CNAME 레코드 사용 불가하며, 클라우드의 alias 레코드는 내부 서비스에만 연결 가능하다는 사실을 알게 되었습니다. (AWS는 가능할 줄 알았네요..  )&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;결국 Vercel의 CNAME 레코드를 A 레코드로 변경하여 문제를 해결했지만, 작업을 진행하면서 root 도메인에 CNAME 매핑이 불가능하다는 &lt;u&gt;&lt;b&gt;DNS 정책을 미리 인지했더라면 더 수월하게 작업을 마칠 수 있었을 거란 아쉬움이 남았습니다.&lt;/b&gt;&lt;/u&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;background-color: #99cefa;&quot;&gt;&lt;b&gt;도메인의 기본 개념과 구조, 다양한 레코드 타입, 그리고 DNS 표준 규칙으로 인한 제약들의 중요성을&lt;/b&gt;&lt;/span&gt; 다시 한 번 체감했습니다. 근래 최신 인프라는 점점 더 복잡해지고, 고도화된 기술 능력을 요구하고 있지만, 이런 도메인, URL, DNS 등 기초적인 CS 지식이야말로 기반이 된다는 점을 깨닫게 되는 시간이였습니다.&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;다음은 SSL 인증서와 도메인 운영 작업에 대해서 제가 경험했던 사례들을 공유해보는 포스팅을 이어가보겠습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;읽어주셔서 감사합니다. &amp;zwj;♂️&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;&quot; data-ke-size=&quot;size26&quot;&gt;+여담. id 도메인의 사용 인증&lt;/h2&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-style=&quot;style5&quot; data-ke-type=&quot;horizontalRule&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;예전에 cwdev.id라는 도메인을 사용하는데 해당 도메인이 사용이 불가한 상황이 발생했었다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;확인해보니 도메인 Status가 &lt;b&gt;clientHold&lt;/b&gt; 상태로 나타났다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;edited_image 9.png&quot; data-origin-width=&quot;697&quot; data-origin-height=&quot;538&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cezzOq/btsL1swJrH3/bNj1TusNEW1HfdQQc7cE4K/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cezzOq/btsL1swJrH3/bNj1TusNEW1HfdQQc7cE4K/img.png&quot; data-alt=&quot;잠겨있음&amp;amp;hellip; Why??&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cezzOq/btsL1swJrH3/bNj1TusNEW1HfdQQc7cE4K/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcezzOq%2FbtsL1swJrH3%2FbNj1TusNEW1HfdQQc7cE4K%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;697&quot; height=&quot;538&quot; data-filename=&quot;edited_image 9.png&quot; data-origin-width=&quot;697&quot; data-origin-height=&quot;538&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;잠겨있음&amp;hellip; Why??&lt;/figcaption&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;이에 후이즈에 문의해보니, .id 도메인의 경우 등록완료 후 인증이 완료되어야 사용이 가능하다고 한다.. (SSL 인증서와 비슷합니다.)&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;edited_edited_image 10.png&quot; data-origin-width=&quot;772&quot; data-origin-height=&quot;654&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cSHbbH/btsL3zvwvpJ/uyMcSynMSJk5ksRyJ0K2E1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cSHbbH/btsL3zvwvpJ/uyMcSynMSJk5ksRyJ0K2E1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cSHbbH/btsL3zvwvpJ/uyMcSynMSJk5ksRyJ0K2E1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcSHbbH%2FbtsL3zvwvpJ%2FuyMcSynMSJk5ksRyJ0K2E1%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;772&quot; height=&quot;654&quot; data-filename=&quot;edited_edited_image 10.png&quot; data-origin-width=&quot;772&quot; data-origin-height=&quot;654&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&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;image 11.png&quot; data-origin-width=&quot;554&quot; data-origin-height=&quot;254&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cgXERA/btsL0XxeXai/9knyA3xOGByGkWteHUusoK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cgXERA/btsL0XxeXai/9knyA3xOGByGkWteHUusoK/img.png&quot; data-alt=&quot;드디어 됬네&amp;amp;hellip;ㅠㅜ 도메인도 인증이 필요한 경우가 있군요&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cgXERA/btsL0XxeXai/9knyA3xOGByGkWteHUusoK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcgXERA%2FbtsL0XxeXai%2F9knyA3xOGByGkWteHUusoK%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;554&quot; height=&quot;254&quot; data-filename=&quot;image 11.png&quot; data-origin-width=&quot;554&quot; data-origin-height=&quot;254&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;드디어 됬네&amp;hellip;ㅠㅜ 도메인도 인증이 필요한 경우가 있군요&lt;/figcaption&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;size18&quot;&gt;&lt;u&gt;&lt;b&gt;최상위 도메인별로 인증이 따로 발생할 수 있는점, 염두해두시면 좋을 것 같습니다.&lt;/b&gt;&lt;/u&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;h3 data-ke-size=&quot;size23&quot;&gt;참고자료&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://blog.enyou.net/ko/archives/517&quot;&gt;https://blog.enyou.net/ko/archives/517&lt;/a&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://docs.aws.amazon.com/ko_kr/Route53/latest/DeveloperGuide/resource-record-sets-choosing-alias-non-alias.html&quot;&gt;https://docs.aws.amazon.com/ko_kr/Route53/latest/DeveloperGuide/resource-record-sets-choosing-alias-non-alias.html&lt;/a&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://ssunw.tistory.com/entry/Route-53-CNAME-vs-Alias&quot;&gt;[Route 53] CNAME vs Alias&lt;/a&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://velog.io/@jangsebari/route53-%EC%9D%84-%EC%9D%B4%EC%9A%A9%ED%95%98%EC%97%AC-vercel-%EB%8F%84%EB%A9%94%EC%9D%B8-%EB%B3%80%EA%B2%BD&quot;&gt;https://velog.io/@jangsebari/route53-을-이용하여-vercel-도메인-변경&lt;/a&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://velog.io/@gun_123/Route-53-CNAME-vs-Alias&quot;&gt;https://velog.io/@gun_123/Route-53-CNAME-vs-Alias&lt;/a&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://velog.io/@jungmyeong96/AWS-SAA-Route53-TTL-CNAME-ALIAS&quot;&gt;https://velog.io/@jungmyeong96/AWS-SAA-Route53-TTL-CNAME-ALIAS&lt;/a&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://vercel.com/docs/projects/domains/add-a-domain&quot;&gt;https://vercel.com/docs/projects/domains/add-a-domain&lt;/a&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://vercel.com/docs/projects/domains/managing-dns-records&quot;&gt;https://vercel.com/docs/projects/domains/managing-dns-records&lt;/a&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://aws.amazon.com/ko/route53/what-is-dns/&quot;&gt;https://aws.amazon.com/ko/route53/what-is-dns/&lt;/a&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://blog.daouidc.com/blog/domain-definition-0&quot;&gt;https://blog.daouidc.com/blog/domain-definition-0&lt;/a&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://sudo-minz.tistory.com/13&quot;&gt;https://sudo-minz.tistory.com/13&lt;/a&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://aws.amazon.com/ko/route53/what-is-dns/&quot;&gt;https://aws.amazon.com/ko/route53/what-is-dns/&lt;/a&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://somaz.tistory.com/172&quot;&gt;https://somaz.tistory.com/172&lt;/a&gt;&lt;/p&gt;</description>
      <category>DevOps/Network_네트워크</category>
      <category>.id 도메인 사용 인증</category>
      <category>dns</category>
      <category>dns 레코드 종류</category>
      <category>root 도메인 cname 사용</category>
      <category>URL</category>
      <category>Vercel</category>
      <category>도메인</category>
      <category>도메인 연결 방법</category>
      <category>최상위도메인</category>
      <author>cwpack0730</author>
      <guid isPermaLink="true">https://cwpack0730.tistory.com/132</guid>
      <comments>https://cwpack0730.tistory.com/132#entry132comment</comments>
      <pubDate>Sun, 26 Jan 2025 14:52:19 +0900</pubDate>
    </item>
    <item>
      <title>[DELL] RAID 컨트롤러 복구 과정(Multibit ECC와 UEFI0116)</title>
      <link>https://cwpack0730.tistory.com/129</link>
      <description>&lt;h2 data-ke-size=&quot;size26&quot;&gt;개요&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;최근 사내에서 물리서버 한 대가 디스크 관련 이슈로 갑작스럽게 다운되는 일이 발생했다. 예상 못한 상황에서 긴박하게 진행했었지만, RAID 구성과 물리 디스크 상태를 점검하고 문제가 발새한 장치를 찾아 교체하여 정상적으로 복구를 완료할 수 있었다.&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;h2 data-ke-size=&quot;size26&quot;&gt;작업 히스토리&lt;/h2&gt;
&lt;pre class=&quot;angelscript&quot;&gt;&lt;code&gt;1. 서버 down 확인
2. RAID 컨트롤러 Error 발생
3. RAID 컨트롤러 캐시 메모리 초기화 시도 -&amp;gt; 실패
4. RAID 컨트롤러 교체(여분 장비)
5. 서버 Up 확인, 데이터 정상 여부 확인 완료&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;1. 서버 Down 이슈 확인(디스크 문제)&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;평소 일과를 진행하던 중 사내 개발서버에 연결이 안되는 장애가 발생했다. 정확하게는 물리 서버에서 실행중인 하이퍼바이저는 작동 중이였으나, 그 위에서 동작하는 VM들이 모두 중단되는 상황이였다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;문제 발생 직후 하이퍼바이저 서버에 접근 자체는 가능했지만, 기본적인 시스템 명령어를 입력하면 에러가 출력되었다.&lt;/p&gt;
&lt;pre class=&quot;awk&quot;&gt;&lt;code&gt;root@vm01:~# lsblk
-bash: /usr/bin/lsblk: Input/output error&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;- bash: /usr/bin/lsblk: Input/output error&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;디스크 상태를 확인하기 위해 lsblk 명령을 실행했을때 발생하였는데, 찾아보니 파일 시스템 관련 문제로 확인된다.&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;시간이 지나면서 결국 하이퍼바이저 서버 자체도 접근이 불가능한 상태가 되어 서버 재부팅을 진행하였으나, 다음과 같은 에러가 발생하며 부팅되지 않았다.&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style3&quot;&gt;&lt;a href=&quot;https://unix.stackexchange.com/questions/542554/got-input-output-error-when-execute-any-commands&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;- https://unix.stackexchange.com/questions/542554/got-input-output-error-when-execute-any-commands&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;https://askubuntu.com/questions/1216954/bash-usr-bin-top-input-output-error&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;- https://askubuntu.com/questions/1216954/bash-usr-bin-top-input-output-error&lt;/a&gt;&lt;/blockquote&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;h3 data-ke-size=&quot;size23&quot;&gt;- UEFI0116 One or more boot drivers have reported issues&lt;/h3&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock widthContent&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;edited_edited_nse-189505565692245085-1000001842.jpg&quot; data-origin-width=&quot;2992&quot; data-origin-height=&quot;2992&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bdrFbH/btsLmIGZXlQ/xFF7C9NZoVxktWnyaPs5c1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bdrFbH/btsLmIGZXlQ/xFF7C9NZoVxktWnyaPs5c1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bdrFbH/btsLmIGZXlQ/xFF7C9NZoVxktWnyaPs5c1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbdrFbH%2FbtsLmIGZXlQ%2FxFF7C9NZoVxktWnyaPs5c1%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;2992&quot; height=&quot;2992&quot; data-filename=&quot;edited_edited_nse-189505565692245085-1000001842.jpg&quot; data-origin-width=&quot;2992&quot; data-origin-height=&quot;2992&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;해당 화면처럼 UEFI0116 오류는 DELL 서버의 부트 드라이버 자체나 설정에 문제가 있다는 것이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;여러 이유가 있을 수 있는데, 아무 키(Press any key)를 눌러서 상세한 내용을 확인할 수 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;해당 에러는 DELL 서버에서 발생하는 오류로, 부트 드라이버 또는 설정에 문제가 있음을 나타낸다.&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;보통 물리 디스크 문제, RAID 구성 오류, 펌웨어 오류 등으로 발생할 수 있는데, 상세 로그를 확인하기 위해 아무 키(Press any key)를 눌러 드라이버 헬스 매니저(Driver Health Manager)로 접근하였다.&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;2. RAID 컨트롤러 Multibit ECC Error&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;서버를 재부팅하며 나타난 UEFI0116 오류 화면에서 Driver Health Manager로 진입하여 드라이버 상태를 확인하였다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock widthContent&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;nse-6470822201612684385-1000001843.jpg&quot; data-origin-width=&quot;2992&quot; data-origin-height=&quot;2992&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/baOdWK/btsLon2pDFC/XYeimWfiI2IE8bnK1WL9v0/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/baOdWK/btsLon2pDFC/XYeimWfiI2IE8bnK1WL9v0/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/baOdWK/btsLon2pDFC/XYeimWfiI2IE8bnK1WL9v0/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbaOdWK%2FbtsLon2pDFC%2FXYeimWfiI2IE8bnK1WL9v0%2Fimg.jpg&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;2992&quot; height=&quot;2992&quot; data-filename=&quot;nse-6470822201612684385-1000001843.jpg&quot; data-origin-width=&quot;2992&quot; data-origin-height=&quot;2992&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;해당 메세지는 사용중인 DELL 440 서버의 RERC H750(RAID 컨트롤러 모델명)에서 치명적인 오류가 발생하여 부팅이 불가능하는 내용이다.&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;- Multibit ECC Error&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Multibit ECC Error는 RAID 컨트롤러의 캐시 메모리에서 다중 비트 오류가 발생하여 자동 복구가 불가능한 상태를 의미한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;조사해보니 보통 ECC 메모리는 단일 비트 오류를 자동으로 수정할 수 있으나, 다중 비트 오류는 수동으로 처리하거나 하드웨어를 교체해야 하는 경우가 많다고 한다.&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;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;RAID 컨트롤러의 캐시 메모리 손상&lt;/li&gt;
&lt;li&gt;RAID 배터리 문제&lt;/li&gt;
&lt;li&gt;RAID 펌웨어 버그&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;관련 자료를 조사하던 중, 비슷한 사례를 발견했다. RAID 컨트롤러의 캐시 메모리를 초기화하여 복구하였다는 내용이다.&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style3&quot;&gt;&lt;a href=&quot;https://dasandata.tistory.com/entry/Dell-R740-%EC%84%9C%EB%B2%84-%EC%A0%95%EC%A0%84-%ED%9B%84-UEFI0116-Avago-MegaRAID-FW-Fault-MFI-Register-0xF0FF8302-%EB%B6%80%ED%8C%85-%EB%B6%88%EA%B0%80&quot;&gt;https://dasandata.tistory.com/entry/Dell-R740-서버-정전-후-UEFI0116-Avago-MegaRAID-FW-Fault-MFI-Register-0xF0FF8302-부팅-불가&lt;/a&gt;&lt;/blockquote&gt;
&lt;figure id=&quot;og_1734511697830&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;article&quot; data-og-title=&quot;Dell R740 서버 정전 후 UEFI0116 Avago MegaRAID F/W Fault MFI Register 0xF0FF8302 부팅 불가&quot; data-og-description=&quot;안녕하세요 다산데이타 입니다. Dell R740 서버를 사용하던 고객사에서 갑작스런 정전 후 BIOS POST 에서 아래와 같은 메세지가 발생하면서 RAID Controller 가 인식되지 않고 OS로 진입이 안된다는 접수&quot; data-og-host=&quot;dasandata.tistory.com&quot; data-og-source-url=&quot;https://dasandata.tistory.com/entry/Dell-R740-%EC%84%9C%EB%B2%84-%EC%A0%95%EC%A0%84-%ED%9B%84-UEFI0116-Avago-MegaRAID-FW-Fault-MFI-Register-0xF0FF8302-%EB%B6%80%ED%8C%85-%EB%B6%88%EA%B0%80&quot; data-og-url=&quot;https://dasandata.tistory.com/entry/Dell-R740-%EC%84%9C%EB%B2%84-%EC%A0%95%EC%A0%84-%ED%9B%84-UEFI0116-Avago-MegaRAID-FW-Fault-MFI-Register-0xF0FF8302-%EB%B6%80%ED%8C%85-%EB%B6%88%EA%B0%80&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/bose5X/hyXOlLppu9/VRnbtA8blrJ0ELMaU5T510/img.jpg?width=800&amp;amp;height=600&amp;amp;face=0_0_800_600,https://scrap.kakaocdn.net/dn/3kdjv/hyXOjGQh6V/K6EBPKhY4Ix1LL4btt9Qg1/img.jpg?width=800&amp;amp;height=600&amp;amp;face=0_0_800_600,https://scrap.kakaocdn.net/dn/blsQL3/hyXOo2sd7M/WAVbmrPBxxNRRxKjZeGYt0/img.jpg?width=3024&amp;amp;height=3024&amp;amp;face=0_0_3024_3024&quot;&gt;&lt;a href=&quot;https://dasandata.tistory.com/entry/Dell-R740-%EC%84%9C%EB%B2%84-%EC%A0%95%EC%A0%84-%ED%9B%84-UEFI0116-Avago-MegaRAID-FW-Fault-MFI-Register-0xF0FF8302-%EB%B6%80%ED%8C%85-%EB%B6%88%EA%B0%80&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://dasandata.tistory.com/entry/Dell-R740-%EC%84%9C%EB%B2%84-%EC%A0%95%EC%A0%84-%ED%9B%84-UEFI0116-Avago-MegaRAID-FW-Fault-MFI-Register-0xF0FF8302-%EB%B6%80%ED%8C%85-%EB%B6%88%EA%B0%80&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/bose5X/hyXOlLppu9/VRnbtA8blrJ0ELMaU5T510/img.jpg?width=800&amp;amp;height=600&amp;amp;face=0_0_800_600,https://scrap.kakaocdn.net/dn/3kdjv/hyXOjGQh6V/K6EBPKhY4Ix1LL4btt9Qg1/img.jpg?width=800&amp;amp;height=600&amp;amp;face=0_0_800_600,https://scrap.kakaocdn.net/dn/blsQL3/hyXOo2sd7M/WAVbmrPBxxNRRxKjZeGYt0/img.jpg?width=3024&amp;amp;height=3024&amp;amp;face=0_0_3024_3024');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;Dell R740 서버 정전 후 UEFI0116 Avago MegaRAID F/W Fault MFI Register 0xF0FF8302 부팅 불가&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;안녕하세요 다산데이타 입니다. Dell R740 서버를 사용하던 고객사에서 갑작스런 정전 후 BIOS POST 에서 아래와 같은 메세지가 발생하면서 RAID Controller 가 인식되지 않고 OS로 진입이 안된다는 접수&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;dasandata.tistory.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&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;b&gt;다음 사례의 요약은 다음과 같다.&lt;/b&gt;&lt;/p&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;RAID 컨트롤러에서 Multibit ECC Error로 인해 부팅 불가&lt;/li&gt;
&lt;li&gt;서버 종료 후 전원 공급 장치 제거&lt;/li&gt;
&lt;li&gt;RAID 컨트롤러 배터리 방전 유도&lt;br /&gt;-&amp;gt; RAID 컨트롤러의 BBU가 방전되도록 대기&lt;/li&gt;
&lt;li&gt;배터리가 방전되며 RAID 컨트롤러의 캐시 메모리 초기화&lt;/li&gt;
&lt;li&gt;전원 및 디스크 복구 후 재부팅&lt;/li&gt;
&lt;li&gt;정상 부팅 확인&lt;/li&gt;
&lt;/ol&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;h2 data-ke-size=&quot;size26&quot;&gt;3. RAID 컨트롤러 캐시 메모리 초기화&lt;/h2&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;RAID 컨트롤러와 캐시 메모리 역할&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;RAID 컨트롤러는 서버의 디스크를 관리하는 장치이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;본인의 경우 서버는 DELL 440, RAID 컨트롤러는 H750 모델을 사용중이라 해당 모델들을 기준으로 설명하자면, RAID 구성 정보나 데이터들은 물리적 디스크와 컨트롤러에 저장된다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;(RAID 컨트롤러 별로 기능이 상이하기 때문에 잘 확인하고 진행해야한다.)&lt;/b&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;즉, 물리 디스크에도 RAID 구성 정보가 저장되기 때문에, RAID 컨트롤러를 교체하거나 캐시 메모리를 초기화하더라도 RAID 구성이 유지된다는 것을 확인하였다.&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;위와 같은 근거로 RAID 컨트롤러 캐시 초기화를 시도하였다.&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;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;다음 절차로 캐시 메모리 초기화 작업을 진행하였다.&lt;/p&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;대기 전력 제거&lt;br /&gt;(서버 종료 후 전원 케이블, 네트워크 케이블 제거하여 대기 전력 차단)&lt;/li&gt;
&lt;li&gt;RAID 컨트롤러 재결합 진행&lt;br /&gt;(서버 내부 RAID 컨트롤러를 분리했다가 다시 결합)&lt;/li&gt;
&lt;li&gt;전원 및 네트워크 케이블 연결 후 대기&lt;br /&gt;(케이블 연결 후 전원은 키지 않은 상태로 잠시 대기)&lt;/li&gt;
&lt;li&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&gt;&lt;figure class=&quot;imageblock widthContent&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;nse-5453255954224994579-1000001847.jpg&quot; data-origin-width=&quot;2992&quot; data-origin-height=&quot;2992&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/mPF1f/btsLmHnRYpn/FSqrH3PzyeiWm6D2Ko3FRK/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/mPF1f/btsLmHnRYpn/FSqrH3PzyeiWm6D2Ko3FRK/img.jpg&quot; data-alt=&quot;작업 대상 DELL 440 서버&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/mPF1f/btsLmHnRYpn/FSqrH3PzyeiWm6D2Ko3FRK/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FmPF1f%2FbtsLmHnRYpn%2FFSqrH3PzyeiWm6D2Ko3FRK%2Fimg.jpg&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;2992&quot; height=&quot;2992&quot; data-filename=&quot;nse-5453255954224994579-1000001847.jpg&quot; data-origin-width=&quot;2992&quot; data-origin-height=&quot;2992&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;작업 대상 DELL 440 서버&lt;/figcaption&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;그리고 해당 부분이 RAID 컨트롤러이다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;2024-12-18 17 11 05.png&quot; data-origin-width=&quot;1421&quot; data-origin-height=&quot;1415&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/8njJt/btsLocUpo8z/7JDYDr11Ee579mVLQcYktk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/8njJt/btsLocUpo8z/7JDYDr11Ee579mVLQcYktk/img.png&quot; data-alt=&quot;DELL 440의 경우 서버 중앙에 위치하고 있다. 하드 디스크가 연결된 장치를 찾아보면 알기 쉽다.&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/8njJt/btsLocUpo8z/7JDYDr11Ee579mVLQcYktk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F8njJt%2FbtsLocUpo8z%2F7JDYDr11Ee579mVLQcYktk%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;1421&quot; height=&quot;1415&quot; data-filename=&quot;2024-12-18 17 11 05.png&quot; data-origin-width=&quot;1421&quot; data-origin-height=&quot;1415&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;DELL 440의 경우 서버 중앙에 위치하고 있다. 하드 디스크가 연결된 장치를 찾아보면 알기 쉽다.&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이후 약 30분간 전원을 차단한 뒤 작업을 진행했으나, 결국 동일한 문제가 재발하였다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;추측할 수 있는 원인:&lt;/p&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;캐시 메모리 초기화가 제대로 이뤄지지 않음
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;캐시 메모리 초기화에 필요한 정확한 대기 시간이 불명확하다. 초기화 과정이 실패했을 가능성이 있다.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;RAID 컨트롤러의 물리적인 장애
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;RAID 컨트롤라 자체에 손상이 발새했을 가능성도 있음&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그래서 다음 작업으로는, 여분 서버에서 RAID 컨트롤러를 교체하여 복구를 시도해보았다.&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;4. RAID 컨트롤러 교체&lt;/h2&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;9fc7f1a3-0401-49d3-8d90-9202c1be3bd0.png&quot; data-origin-width=&quot;1080&quot; data-origin-height=&quot;1667&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/VWOHM/btsLmH9bya1/YXeQ47tdtJalCE9KSHVgW1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/VWOHM/btsLmH9bya1/YXeQ47tdtJalCE9KSHVgW1/img.png&quot; data-alt=&quot;RAID 컨트롤러는 이렇게 생겼다.&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/VWOHM/btsLmH9bya1/YXeQ47tdtJalCE9KSHVgW1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FVWOHM%2FbtsLmH9bya1%2FYXeQ47tdtJalCE9KSHVgW1%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;400&quot; height=&quot;617&quot; data-filename=&quot;9fc7f1a3-0401-49d3-8d90-9202c1be3bd0.png&quot; data-origin-width=&quot;1080&quot; data-origin-height=&quot;1667&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;RAID 컨트롤러는 이렇게 생겼다.&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;캐시 메모리 초기화가 실패한 이후, RAID 컨트롤러를 교차하기로 결정하였다. 장치 교체가 가장 확실한 해결책이라고 생각했다.&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style3&quot;&gt;&lt;a href=&quot;https://www.dell.com/support/contents/ko-kr/videos/videoplayer/poweredge-r720용-raid-카드를-교체하는-방법/6079773598001&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://www.dell.com/support/contents/ko-kr/videos/videoplayer/poweredge-r720용-raid-카드를-교체하는-방법/6079773598001&lt;/a&gt;&lt;/blockquote&gt;
&lt;figure id=&quot;og_1734511752698&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;website&quot; data-og-title=&quot;PowerEdge R720용 RAID 카드를 교체하는 방법 | Dell 대한민국&quot; data-og-description=&quot;카피 링크가 복사됨&quot; data-og-host=&quot;www.dell.com&quot; data-og-source-url=&quot;https://www.dell.com/support/contents/ko-kr/videos/videoplayer/poweredge-r720%EC%9A%A9-raid-%EC%B9%B4%EB%93%9C%EB%A5%BC-%EA%B5%90%EC%B2%B4%ED%95%98%EB%8A%94-%EB%B0%A9%EB%B2%95/6079773598001&quot; data-og-url=&quot;https://www.dell.com/support/contents/ko-kr/videos/videoplayer/poweredge-r720%EC%9A%A9-raid-%EC%B9%B4%EB%93%9C%EB%A5%BC-%EA%B5%90%EC%B2%B4%ED%95%98%EB%8A%94-%EB%B0%A9%EB%B2%95/6079773598001&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/SZOwi/hyXOmQ56KX/V5bDJyEgzmRoln0IKvaVn0/img.jpg?width=1280&amp;amp;height=720&amp;amp;face=0_0_1280_720,https://scrap.kakaocdn.net/dn/7y44F/hyXOm4EavR/e2BjmqrfKwc41Gx6sJg1w1/img.jpg?width=1280&amp;amp;height=720&amp;amp;face=0_0_1280_720,https://scrap.kakaocdn.net/dn/RVSag/hyXOnJfGj0/keI8BvkIlPTMkpvNM6Gh21/img.jpg?width=1279&amp;amp;height=720&amp;amp;face=0_0_1279_720&quot;&gt;&lt;a href=&quot;https://www.dell.com/support/contents/ko-kr/videos/videoplayer/poweredge-r720%EC%9A%A9-raid-%EC%B9%B4%EB%93%9C%EB%A5%BC-%EA%B5%90%EC%B2%B4%ED%95%98%EB%8A%94-%EB%B0%A9%EB%B2%95/6079773598001&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://www.dell.com/support/contents/ko-kr/videos/videoplayer/poweredge-r720%EC%9A%A9-raid-%EC%B9%B4%EB%93%9C%EB%A5%BC-%EA%B5%90%EC%B2%B4%ED%95%98%EB%8A%94-%EB%B0%A9%EB%B2%95/6079773598001&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/SZOwi/hyXOmQ56KX/V5bDJyEgzmRoln0IKvaVn0/img.jpg?width=1280&amp;amp;height=720&amp;amp;face=0_0_1280_720,https://scrap.kakaocdn.net/dn/7y44F/hyXOm4EavR/e2BjmqrfKwc41Gx6sJg1w1/img.jpg?width=1280&amp;amp;height=720&amp;amp;face=0_0_1280_720,https://scrap.kakaocdn.net/dn/RVSag/hyXOnJfGj0/keI8BvkIlPTMkpvNM6Gh21/img.jpg?width=1279&amp;amp;height=720&amp;amp;face=0_0_1279_720');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;PowerEdge R720용 RAID 카드를 교체하는 방법 | Dell 대한민국&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;카피 링크가 복사됨&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;www.dell.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&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;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;특히 DELL 홈페이지에 동영상으로 상세히 교체 방법이 있다.&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;교체 작업 진행 : RAID 컨트롤러&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;아래 사진은 작업 대상이였던 RAID 컨트롤러이다. (위 검색 사진과 똑같다.)&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imagegridblock&quot;&gt;
  &lt;div class=&quot;image-container&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cfpAgl/btsLmXxcTeE/wQmzUCkkR3MUiDrqq9gYkk/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cfpAgl/btsLmXxcTeE/wQmzUCkkR3MUiDrqq9gYkk/img.jpg&quot; data-origin-width=&quot;2992&quot; data-origin-height=&quot;2992&quot; data-filename=&quot;nse-5282099936939586618-1000001850.jpg&quot; data-is-animation=&quot;false&quot; style=&quot;width: 49.4186%; margin-right: 10px;&quot; data-widthpercent=&quot;50&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cfpAgl/btsLmXxcTeE/wQmzUCkkR3MUiDrqq9gYkk/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcfpAgl%2FbtsLmXxcTeE%2FwQmzUCkkR3MUiDrqq9gYkk%2Fimg.jpg&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;2992&quot; height=&quot;2992&quot;/&gt;&lt;/span&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bbpW5g/btsLoHsS2R6/VY6zrVk5Q9452R5tB7EpaK/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bbpW5g/btsLoHsS2R6/VY6zrVk5Q9452R5tB7EpaK/img.jpg&quot; data-origin-width=&quot;2992&quot; data-origin-height=&quot;2992&quot; data-is-animation=&quot;false&quot; data-filename=&quot;nse-6797114389478947700-1000001851.jpg&quot; style=&quot;width: 49.4186%;&quot; data-widthpercent=&quot;50&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bbpW5g/btsLoHsS2R6/VY6zrVk5Q9452R5tB7EpaK/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbbpW5g%2FbtsLoHsS2R6%2FVY6zrVk5Q9452R5tB7EpaK%2Fimg.jpg&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;2992&quot; height=&quot;2992&quot;/&gt;&lt;/span&gt;&lt;/div&gt;
  &lt;figcaption&gt;각각 앞면 뒷면이다.&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style3&quot;&gt;&lt;span style=&quot;color: #006dd7;&quot;&gt;&lt;b&gt;TMI:&amp;nbsp; 우측 이미지에 중앙 네모난 부분이 배터리인데, 배터리 교체를 진행한다면 해당 부분을 교체해주면 된다.&lt;/b&gt;&lt;/span&gt;&lt;/blockquote&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;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;올해 IDC에서 NCP로의 마이그레이션 과정 중 남겨진 여분의 서버들 덕분에 동일 모델 RAID 컨트롤러를 확보할 수 있었다.&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;여기서 동일 모델의 서버에서 RAID 컨트롤러를 교체해보겠다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock widthContent&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;edited_edited_nse-6230459135025391131-1000001854.jpg&quot; data-origin-width=&quot;2992&quot; data-origin-height=&quot;2992&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bUbSfe/btsLnzWUGPl/JfJq9qEXq75OjklYth10KK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bUbSfe/btsLnzWUGPl/JfJq9qEXq75OjklYth10KK/img.png&quot; data-alt=&quot;상당히 많은 여분 서버들..&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bUbSfe/btsLnzWUGPl/JfJq9qEXq75OjklYth10KK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbUbSfe%2FbtsLnzWUGPl%2FJfJq9qEXq75OjklYth10KK%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;2992&quot; height=&quot;2992&quot; data-filename=&quot;edited_edited_nse-6230459135025391131-1000001854.jpg&quot; data-origin-width=&quot;2992&quot; data-origin-height=&quot;2992&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;상당히 많은 여분 서버들..&lt;/figcaption&gt;
&lt;/figure&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;imagegridblock&quot;&gt;
  &lt;div class=&quot;image-container&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/ccvvzD/btsLnnvBsWR/4MkUlEpN7CAnvrLdkNA6Bk/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/ccvvzD/btsLnnvBsWR/4MkUlEpN7CAnvrLdkNA6Bk/img.jpg&quot; data-origin-width=&quot;2992&quot; data-origin-height=&quot;2992&quot; data-is-animation=&quot;false&quot; data-filename=&quot;nse-1986632638902940455-1000001852.jpg&quot; style=&quot;width: 49.4186%; margin-right: 10px;&quot; data-widthpercent=&quot;50&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/ccvvzD/btsLnnvBsWR/4MkUlEpN7CAnvrLdkNA6Bk/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FccvvzD%2FbtsLnnvBsWR%2F4MkUlEpN7CAnvrLdkNA6Bk%2Fimg.jpg&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;2992&quot; height=&quot;2992&quot;/&gt;&lt;/span&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/ZZQJN/btsLoo1plef/VSyCyXKQXr6QBQkKWzZWp0/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/ZZQJN/btsLoo1plef/VSyCyXKQXr6QBQkKWzZWp0/img.jpg&quot; data-origin-width=&quot;2992&quot; data-origin-height=&quot;2992&quot; data-is-animation=&quot;false&quot; data-filename=&quot;nse-7248730142251100466-1000001855.jpg&quot; style=&quot;width: 49.4186%;&quot; data-widthpercent=&quot;50&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/ZZQJN/btsLoo1plef/VSyCyXKQXr6QBQkKWzZWp0/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FZZQJN%2FbtsLoo1plef%2FVSyCyXKQXr6QBQkKWzZWp0%2Fimg.jpg&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;2992&quot; height=&quot;2992&quot;/&gt;&lt;/span&gt;&lt;/div&gt;
  &lt;figcaption&gt;동일 모델인데도 Super-Capacitor 모양이 달라 맞는 컨트롤러를 찾는데 시간이 걸리기도 했다.&lt;/figcaption&gt;
&lt;/figure&gt;
&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;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;RAID 컨트롤러를 교체하고 기도하며 서버를 다시 부팅하였다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그리고 기도에 보답한걸까.... 성공적으로 부팅되었다.(본인은 무교다)&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock widthContent&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;edited_nse-1616402947298889697-1000001858.jpg&quot; data-origin-width=&quot;2992&quot; data-origin-height=&quot;2992&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/NBgsQ/btsLoEbRaLG/y4W9w7Oyq4uxLZnx0ZEHr0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/NBgsQ/btsLoEbRaLG/y4W9w7Oyq4uxLZnx0ZEHr0/img.png&quot; data-alt=&quot;RAID 구성 차이를 감지하고 적용하는 메시지이다,&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/NBgsQ/btsLoEbRaLG/y4W9w7Oyq4uxLZnx0ZEHr0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FNBgsQ%2FbtsLoEbRaLG%2Fy4W9w7Oyq4uxLZnx0ZEHr0%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;2992&quot; height=&quot;2992&quot; data-filename=&quot;edited_nse-1616402947298889697-1000001858.jpg&quot; data-origin-width=&quot;2992&quot; data-origin-height=&quot;2992&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;RAID 구성 차이를 감지하고 적용하는 메시지이다,&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;해당 메세지는 H750 RAID 컨트롤러를 교체 후 기존 RAID 구성 차이를 감지하여 적용하는 내용이다.&lt;/p&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;Message PR1: 서버에 RAID 컨트롤러가 교체된 것을 감지했다.&lt;/li&gt;
&lt;li&gt;Message PR2: 교체된 RAID 컨트롤러와 디스크의 저장된 RAID 설정 간의 차이를 감지하였다.&lt;/li&gt;
&lt;li&gt;Message PR3: RAID 컨트롤러가 디스크에 저장된 RAID 구성을 성공적으로 불러와 적용하였다.&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;결과적으로 RAID 구성이 유지되었고, 데이터 접근이 정상적으로 복구되었다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;즉, RAID 컨트롤러 교체가 정상적으로 적용되었고, 모든 물리 디스크 상태가 정상 상태임을 확인하였다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imagegridblock&quot;&gt;
  &lt;div class=&quot;image-container&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bcUqtM/btsLmhwm0jW/pMmyjrvpDsv2FRtLX1hvEk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bcUqtM/btsLmhwm0jW/pMmyjrvpDsv2FRtLX1hvEk/img.png&quot; data-origin-width=&quot;2992&quot; data-origin-height=&quot;2992&quot; data-is-animation=&quot;false&quot; data-filename=&quot;edited_nse-7106239309215848007-1000001862.jpg&quot; style=&quot;width: 49.4186%; margin-right: 10px;&quot; data-widthpercent=&quot;50&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bcUqtM/btsLmhwm0jW/pMmyjrvpDsv2FRtLX1hvEk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbcUqtM%2FbtsLmhwm0jW%2FpMmyjrvpDsv2FRtLX1hvEk%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;2992&quot; height=&quot;2992&quot;/&gt;&lt;/span&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/Ma3RC/btsLnJkZ4MQ/fT13seYk9CdOwBPl9avoWK/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/Ma3RC/btsLnJkZ4MQ/fT13seYk9CdOwBPl9avoWK/img.jpg&quot; data-origin-width=&quot;2992&quot; data-origin-height=&quot;2992&quot; data-is-animation=&quot;false&quot; data-filename=&quot;nse-6837844997381581403-1000001864.jpg&quot; style=&quot;width: 49.4186%;&quot; data-widthpercent=&quot;50&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/Ma3RC/btsLnJkZ4MQ/fT13seYk9CdOwBPl9avoWK/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FMa3RC%2FbtsLnJkZ4MQ%2FfT13seYk9CdOwBPl9avoWK%2Fimg.jpg&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;2992&quot; height=&quot;2992&quot;/&gt;&lt;/span&gt;&lt;/div&gt;
  &lt;figcaption&gt;모든 디스크에 초록불이 표시되며 정상 상태임이 확인된다.&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;데이터 백업이 잘 되어 있어서 다행이였지, RAID 컨트롤러 장애는 정말 치명적인 문제로 이어질 수 있다는 것을 실감한 경험이였다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;단순 OS나 서비스 모니터링 뿐 아니라, 하드웨어 점검과 백업 프로세스를 더 체계화 할 필요가 있음을 느끼게 되었다.&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;h2 data-ke-size=&quot;size26&quot;&gt;+여담. Tomcat 소스 연결 문제(파일시스템 손상)&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;서버 복구 후 개발 서비스를 다시 배포하던 중, 개발자분으로부터 연락을 받았다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;image.png&quot; data-origin-width=&quot;582&quot; data-origin-height=&quot;523&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/d4SqKb/btsLmWSDGxd/SDsRG7kNEM6mjprBEaLx0k/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/d4SqKb/btsLmWSDGxd/SDsRG7kNEM6mjprBEaLx0k/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/d4SqKb/btsLmWSDGxd/SDsRG7kNEM6mjprBEaLx0k/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fd4SqKb%2FbtsLmWSDGxd%2FSDsRG7kNEM6mjprBEaLx0k%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;392&quot; height=&quot;352&quot; data-filename=&quot;image.png&quot; data-origin-width=&quot;582&quot; data-origin-height=&quot;523&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&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;image 1.png&quot; data-origin-width=&quot;418&quot; data-origin-height=&quot;798&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bK8Qbh/btsLonOWGxX/xrzulexrMGSiFZCcweI0i1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bK8Qbh/btsLonOWGxX/xrzulexrMGSiFZCcweI0i1/img.png&quot; data-alt=&quot;오마이갓 비상사태&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bK8Qbh/btsLonOWGxX/xrzulexrMGSiFZCcweI0i1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbK8Qbh%2FbtsLonOWGxX%2FxrzulexrMGSiFZCcweI0i1%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;418&quot; height=&quot;798&quot; data-filename=&quot;image 1.png&quot; data-origin-width=&quot;418&quot; data-origin-height=&quot;798&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;오마이갓 비상사태&lt;/figcaption&gt;
&lt;/figure&gt;
&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;/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;이후 확인해보니 RAID 복구와는 별개의 문제였다.&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;h3 data-ke-size=&quot;size23&quot;&gt;파일 삭제 시도&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;일단 문제가 발생한 파일을 삭제하려 했으나, 아래와 같은 오류가 발생하였다.&lt;/p&gt;
&lt;pre class=&quot;routeros&quot;&gt;&lt;code&gt;rm: cannot remove 'WEB-INF/lib/log4j-api-2.17.2.jar': Structure needs cleaning&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;rm: cannot remove 'WEB-INF/lib/log4j-api-2.17.2.jar': Structure needs cleaning&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;rm 명령을 진행 시 나타났던 에러인데, 파일 시스템이 손상되었기에 해당 명령어를 동작시킬 수 없다는 것이였다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이에 나는 다음과 같은 방법들로 삭제를 시도해보았다.&lt;/p&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;&lt;b&gt;&lt;code&gt;rm -rf&lt;/code&gt;&lt;/b&gt; 명령&lt;/li&gt;
&lt;li&gt;&lt;b&gt;&lt;code&gt;inode&lt;/code&gt;&lt;/b&gt; 번호 확인하여 삭제&lt;br /&gt;(find / -inum 1234 -exec rm -rf {} ;)&lt;/li&gt;
&lt;li&gt;&lt;b&gt;&lt;code&gt;unlink&lt;/code&gt;&lt;/b&gt; 명령으로 삭제&lt;/li&gt;
&lt;li&gt;&lt;b&gt;&lt;code&gt;dev/null&lt;/code&gt;&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;h3 data-ke-size=&quot;size23&quot;&gt;파일 시스템 복구 진행(fsck 명령어)&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;파일 시스템 복구를 위해 fsck 명령을 사용했다.&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;1. 스토리지 마운트 해제&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;파일 시스템을 복구 하기 이전, 일단 해당 스토리지 umount를 진행한다.&lt;/p&gt;
&lt;pre class=&quot;jboss-cli&quot;&gt;&lt;code&gt;umount /application_data&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;2. fsck 명령으로 파일 시스템 복구&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;손상된 파티션에 대해 fsck 명령을 진행한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이번 경우는 여러 디스크를 LVM으로 묶어서 사용 중이었기 때문에 LVM 경로로 진행했다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock widthContent&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;edited_image 2.png&quot; data-origin-width=&quot;1056&quot; data-origin-height=&quot;615&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/baO8p7/btsLJjT5lsP/QNl1TEVu0f25w6timGaoOK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/baO8p7/btsLJjT5lsP/QNl1TEVu0f25w6timGaoOK/img.png&quot; data-alt=&quot;파일 시스템이 정상적으로 복원되었다.&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/baO8p7/btsLJjT5lsP/QNl1TEVu0f25w6timGaoOK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbaO8p7%2FbtsLJjT5lsP%2FQNl1TEVu0f25w6timGaoOK%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;1056&quot; height=&quot;615&quot; data-filename=&quot;edited_image 2.png&quot; data-origin-width=&quot;1056&quot; data-origin-height=&quot;615&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;파일 시스템이 정상적으로 복원되었다.&lt;/figcaption&gt;
&lt;/figure&gt;
&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;3. 복구 후 마운트&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;파일 시스템 복구가 완료된 후 다시 마운트를 진행하여 정상적으로 파일 삭제 및 재 배포가 완료되었다.&lt;/p&gt;
&lt;pre class=&quot;jboss-cli&quot;&gt;&lt;code&gt;mount /application_data&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;5. 마무리&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이번 작업을 통해 RAID 및 파일 시스템 복구라는 온프레미스 환경에서 전형적인 문제를 해결하면서 클라우드 중심의 업무 환경에서 잊고 있었던 중요한 교훈을 되새길 수 있었다.&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;b&gt;특히! 물리 서버와 관련된 문제는 하드웨어와 소프트웨어간 섬세하고 긴밀한? 상호작용으로 많은 이해가 필요&lt;/b&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;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;참고 자료&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://www.dell.com/support/manuals/ko-kr/poweredge-r440/per440_ts_pub/%ec%8a%a4%ed%86%a0%eb%a6%ac%ec%a7%80-%ec%bb%a8%ed%8a%b8%eb%a1%a4%eb%9f%ac-%ec%82%ac%ec%96%91?guid=guid-283f7608-ee08-46f0-b687-cbb9f50399e1&amp;amp;lang=ko-kr&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;- https://www.dell.com/support/manuals/ko-kr/poweredge-r440/per440_ts_pub/스토리지-컨트롤러-사양?guid=guid-283f7608-ee08-46f0-b687-cbb9f50399e1&amp;amp;lang=ko-kr&lt;/a&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://www.dell.com/support/kbdoc/ko-kr/000110444/poweredge-%ED%95%98%EB%93%9C-%EB%93%9C%EB%9D%BC%EC%9D%B4%EB%B8%8C-%EB%B0%8F-raid-%EC%8A%A4%ED%86%A0%EB%A6%AC%EC%A7%80%EC%9D%98-%EC%9D%B4%ED%95%B4-%EC%9C%A0%EC%A7%80-%EA%B4%80%EB%A6%AC-%EB%B0%8F-%EB%AC%B8%EC%A0%9C-%ED%95%B4%EA%B2%B0&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;- https://www.dell.com/support/kbdoc/ko-kr/000110444/poweredge-하드-드라이브-및-raid-스토리지의-이해-유지-관리-및-문제-해결&lt;/a&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://louky0714.tistory.com/137&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;- https://louky0714.tistory.com/137&lt;/a&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://ubuntuforums.org/showthread.php?t=2348768&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;- https://ubuntuforums.org/showthread.php?t=2348768&lt;/a&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://dasandata.tistory.com/entry/Dell-R740-%EC%84%9C%EB%B2%84-%EC%A0%95%EC%A0%84-%ED%9B%84-UEFI0116-Avago-MegaRAID-FW-Fault-MFI-Register-0xF0FF8302-%EB%B6%80%ED%8C%85-%EB%B6%88%EA%B0%80&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;- https://dasandata.tistory.com/entry/Dell-R740-서버-정전-후-UEFI0116-Avago-MegaRAID-FW-Fault-MFI-Register-0xF0FF8302-부팅-불가&lt;/a&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://www.dell.com/community/en/conversations/poweredge-hardware-general/dell-perc-h730-driver-health/647f99cef4ccf8a8ded47693&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;- https://www.dell.com/community/en/conversations/poweredge-hardware-general/dell-perc-h730-driver-health/647f99cef4ccf8a8ded47693&lt;/a&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://www.2cpu.co.kr/bbs/board.php?bo_table=4raid&amp;amp;wr_id=1730&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;- https://www.2cpu.co.kr/bbs/board.php?bo_table=4raid&amp;amp;wr_id=1730&lt;/a&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://www.2cpu.co.kr/QnA/816089&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;- https://www.2cpu.co.kr/QnA/816089&lt;/a&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://www.dell.com/support/kbdoc/ko-kr/000148741/인텔-perc-및-lsi-컨트롤러를-사용하여-raid를-생성하는-방법&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;- https://www.dell.com/support/kbdoc/ko-kr/000148741/인텔-perc-및-lsi-컨트롤러를-사용하여-raid를-생성하는-방법&lt;/a&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://pubs.lenovo.com/x3550-m5-8869/ko/t_installing_raid_adapter&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;- https://pubs.lenovo.com/x3550-m5-8869/ko/t_installing_raid_adapter&lt;/a&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>DevOps/기타_장비</category>
      <category>dell 440</category>
      <category>fsck</category>
      <category>input/output error</category>
      <category>multibit ecc error</category>
      <category>raid 캐시 메모리</category>
      <category>raid 컨트롤러 교체</category>
      <category>uefi0116</category>
      <category>uefi0116 one or more boot drivers have reported issues</category>
      <category>리눅스 파티션 복구</category>
      <category>파일 시스템 복구</category>
      <author>cwpack0730</author>
      <guid isPermaLink="true">https://cwpack0730.tistory.com/129</guid>
      <comments>https://cwpack0730.tistory.com/129#entry129comment</comments>
      <pubDate>Wed, 18 Dec 2024 18:08:27 +0900</pubDate>
    </item>
    <item>
      <title>CywellSystem X Red Hat 'OpenShift &amp;amp; AI 세미나'</title>
      <link>https://cwpack0730.tistory.com/128</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;이번에 오픈시프트 세미나에 참석할 기회가 있었는데, 참석하며 얻은 내용과 제 생각을 공유하보려고 합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;세미나는 쿠버네티스 환경과 오픈시프트 활용, AI 등 다양한 주제가 진행되었습니다.&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;평소에도 관심있던 레드햇&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;저는 평소부터 레드햇에 관심이 많았습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;첫 프로젝트에서 RHEL를 주로 다뤘던 경험이 있고, 사수 역시 레드햇을 워낙 좋아해서 자연스럽게 영향을 받았습니다. 덕분에 RHCSA를 취득하였고, RHCE도 준비 중입니다.&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&gt;&lt;figure class=&quot;imageblock widthContent&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;nse-7746992997235341927-1000000494.jpg&quot; data-origin-width=&quot;4000&quot; data-origin-height=&quot;3000&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/G04F0/btsKVzwFL5W/CEyKax8k2gmKK9s5ZjHVC0/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/G04F0/btsKVzwFL5W/CEyKax8k2gmKK9s5ZjHVC0/img.jpg&quot; data-alt=&quot;강서구 양천로 우림블루나인비즈니스센터 3층에서 진행하였습니다.&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/G04F0/btsKVzwFL5W/CEyKax8k2gmKK9s5ZjHVC0/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FG04F0%2FbtsKVzwFL5W%2FCEyKax8k2gmKK9s5ZjHVC0%2Fimg.jpg&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;4000&quot; height=&quot;3000&quot; data-filename=&quot;nse-7746992997235341927-1000000494.jpg&quot; data-origin-width=&quot;4000&quot; data-origin-height=&quot;3000&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;강서구 양천로 우림블루나인비즈니스센터 3층에서 진행하였습니다.&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;또한 지금 서비스 중인 환경을 쿠버네티스로 전환하는데 관심이 있었는데, 세미나 참석 시 오픈시프트 60일 무료 사용권을 지원해준다는 내용이 있었고 마침 좋은 기회라고 생각해서 바로 등록했습니다.&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;쿠버네티스의 목적?&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;개인적으로 쿠버네티스는 인프라적인 관점보다는 애플리케이션인 측면에서 더 중요한 기술이라고 생각합니다. 즉, 인프라 효율성을 위해 쿠버네티스를 도입한다기 보단, 분리된 애플리케이션 환경(MSA)을 효율적으로 관리하는 것이 더 큰 목적이 되어야 한다고 생각합니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imagegridblock&quot;&gt;
  &lt;div class=&quot;image-container&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bd9V5U/btsKUEyNjMO/kTiGMYwbHV7Ad4l1eiOuXk/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bd9V5U/btsKUEyNjMO/kTiGMYwbHV7Ad4l1eiOuXk/img.jpg&quot; data-origin-width=&quot;4000&quot; data-origin-height=&quot;3000&quot; data-is-animation=&quot;false&quot; data-filename=&quot;nse-3725760888771165221-1000000495.jpg&quot; style=&quot;width: 49.4186%; margin-right: 10px;&quot; data-widthpercent=&quot;50&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bd9V5U/btsKUEyNjMO/kTiGMYwbHV7Ad4l1eiOuXk/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbd9V5U%2FbtsKUEyNjMO%2FkTiGMYwbHV7Ad4l1eiOuXk%2Fimg.jpg&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;4000&quot; height=&quot;3000&quot;/&gt;&lt;/span&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dL3tRh/btsKW9XPNWq/7zukOnPD410lfjw3QXeyc0/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dL3tRh/btsKW9XPNWq/7zukOnPD410lfjw3QXeyc0/img.jpg&quot; data-origin-width=&quot;4000&quot; data-origin-height=&quot;3000&quot; data-is-animation=&quot;false&quot; data-filename=&quot;nse-2998309946328180382-1000000497.jpg&quot; style=&quot;width: 49.4186%;&quot; data-widthpercent=&quot;50&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dL3tRh/btsKW9XPNWq/7zukOnPD410lfjw3QXeyc0/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdL3tRh%2FbtsKW9XPNWq%2F7zukOnPD410lfjw3QXeyc0%2Fimg.jpg&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;4000&quot; height=&quot;3000&quot;/&gt;&lt;/span&gt;&lt;/div&gt;
  &lt;figcaption&gt;생각보다 일찍 도착해 1시간 정도 시간이 남아 카페에서 오픈시프트 관련해서 미리 살펴보고 있었습니다.&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이런 관점에서 저는 쿠버네티스 환경부터 먼저 직접 구축하기보다는 우선 동작 중인 애플리케이션을 컨테이너화하고, MSA 아키텍처를 구성하며, 이에 맞게 CI/CD 환경을 먼저 세팅하고 나서 쿠버네티스 환경으로 전환하는데 더 효율적이라고 생각했습니다.&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 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;p data-ke-size=&quot;size16&quot;&gt;카페에서 시간을 때우다 어느덧 세미나 시작 시간이 되어서 초청해주신 영업대표님에게 인사를 드린 후 강연실로 이동하였습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;입장하자마자 생각보다 사람들이 많아서 놀랐습니다.(거의 만석)&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock widthContent&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;nse-3608496520274983309-1000000532.jpg&quot; data-origin-width=&quot;4000&quot; data-origin-height=&quot;3000&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/nxdjv/btsKW6GN6Ha/33e2y1Y0aU5LLr2EHlbPhk/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/nxdjv/btsKW6GN6Ha/33e2y1Y0aU5LLr2EHlbPhk/img.jpg&quot; data-alt=&quot;사람이 생각보다 많아 맨 앞자리에 앉았습니다.&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/nxdjv/btsKW6GN6Ha/33e2y1Y0aU5LLr2EHlbPhk/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fnxdjv%2FbtsKW6GN6Ha%2F33e2y1Y0aU5LLr2EHlbPhk%2Fimg.jpg&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;4000&quot; height=&quot;3000&quot; data-filename=&quot;nse-3608496520274983309-1000000532.jpg&quot; data-origin-width=&quot;4000&quot; data-origin-height=&quot;3000&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;사람이 생각보다 많아 맨 앞자리에 앉았습니다.&lt;/figcaption&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;h3 data-ke-size=&quot;size23&quot;&gt;컨테이너의 역사부터 쿠버네티스 개요까지&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이번 세미나는 쿠버네티스의 기본 개념과 함께 오픈시프트로의 전환했을때의 이점, AI에 대한 내용으로 진행되었습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그동안 다양한 it 세미나를 참석해봤지만, 상용 제품과 관련된 세미나는 종종 기술적인 내용보다는 제품 설명이나 홍보에 치우쳐 실망했던 적이 있었습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;하지만 이번 세미나는 다르다는 점을 느낄 수 있었는데, 준비 기간만 3~4개월을 들였다고 하셨고 그만큼 내용이 정말 알찼습니다.&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;가상화와 컨테이너의 개념부터 시작해 주요 특징과 RHEL에서 컨테이너를 실행하는 방법, 쿠버네티스 환경 구성과 아키텍처에 대한 설명까지 세세하게 다뤘으며, 특히 &lt;b&gt;쿠버네티스의 주요 기능과 지원되지 않는 항목&lt;/b&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;b&gt;오픈시프트 파트를 들어갔을때 특징과 장점&lt;/b&gt;이 훨씬 와닿았습니다. 단순히 제품 설명을 넘어 실질적인 기술적인 내용을 얻을 수 있었다는 점에서 정말 만족스러웠습니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock widthContent&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;nse-403949951523639152-1000000502.jpg&quot; data-origin-width=&quot;4000&quot; data-origin-height=&quot;3000&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bGIULF/btsKU71lq3F/sb6T5k1eplzhWkWjFt4pXk/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bGIULF/btsKU71lq3F/sb6T5k1eplzhWkWjFt4pXk/img.jpg&quot; data-alt=&quot;Grafana로 저런 애니메이션 효과를 낼 수 있는건가..? 제니퍼를 보는 줄 알았네요..&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bGIULF/btsKU71lq3F/sb6T5k1eplzhWkWjFt4pXk/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbGIULF%2FbtsKU71lq3F%2Fsb6T5k1eplzhWkWjFt4pXk%2Fimg.jpg&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;4000&quot; height=&quot;3000&quot; data-filename=&quot;nse-403949951523639152-1000000502.jpg&quot; data-origin-width=&quot;4000&quot; data-origin-height=&quot;3000&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;Grafana로 저런 애니메이션 효과를 낼 수 있는건가..? 제니퍼를 보는 줄 알았네요..&lt;/figcaption&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;h3 data-ke-size=&quot;size23&quot;&gt;오픈시프트의 CI/CD&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이번 세미나에서 특히 기억에 남는건 오픈시프트의 CI/CD 기능이였습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;오픈시프트는 기본적으로 &lt;b&gt;쿠버네티스 환경 위에 모니터링과 CI/CD 기능이 통합되어 제공&lt;/b&gt;됩니다. 그래서 UI에서 Git 저장소 주소와 컨테이너 이미지만 지정하면 자동으로 해당 이미지에 소스가 빌드됩니다. (UI가 정말 직관적입니다.)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;CI/CD 도구로는 Jenkins도 사용하나 오픈시프트 환경에서는 보통 Tekton이 더 적합하다고 합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;(Redhat 공식문서에서도 Tekton 사용을 권장하고 있습니다.)&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;b&gt;오픈시프트 기반의 CI/CD는 보통 Tekton과 ArgoCD가 사용&lt;/b&gt;되는 경우가 많은 것 같습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;직접 쿠버네티스 환경의 CI/CD를 구성했을때에 비해 &lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;오픈시프트의 CI/CD 기능은&lt;span&gt; 통합되어 자동으로 &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;&lt;span&gt;구성되어 UI로 관리하기 때문에 설정이나 운영, 모니터링이 더욱 간단합니다.&lt;/span&gt;&lt;/span&gt;&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;/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;Ai의 현재와 미래 (+장애처리)&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;오픈시프트 뿐만이 아니라 AI와 관련된 챕터도 진행되었습니다.&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;발표는 Ai의 여러 학습 방식과 이에 다른 결과 차이, 발전 과정, 그리고 현재 개발되는 기술들에 대한 내용이였는데 하필 세미나 도중 서비스 장애가 발생하는 바람에 제대로 못 들은 것이 너무 아쉬웠습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;(평소에는 멀쩡하다 꼭 이럴때만..왔다갔다 전화받고 확인하는데 하필 맨 앞자리라 눈치보였네요..&lt;span&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;발표 내용 중 기억나는건 이미지 빅데이터를 분석하고 생성형 이미지를 만드는 과정, (생성형 AI중 가장 핫하죠.) 더 나아가서 이를 토대로 영상까지 생성하는 기술의 발전 과정이였습니다. 특히 발표자분이 주제에 대해 정말 많은 관심과 애정을 가지고 계신지 느껴질 정도로 발표 준비를 많이 하신 것 같았습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;예기치 못한 상황이 있어서 발표 내용을 온전히 다 듣지는 못했지만, 짧게마나 Ai에 현재와 미래에 대한 생각을 하게 되는 시간이였습니다.&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;마치며&lt;/h2&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock widthContent&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;117b2ac6-624d-4e84-b98b-e83cc46551f4.png&quot; data-origin-width=&quot;2000&quot; data-origin-height=&quot;1495&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/wdLjt/btsKVrez9NL/z9viqKkNGd8lK8JrKoMy81/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/wdLjt/btsKVrez9NL/z9viqKkNGd8lK8JrKoMy81/img.png&quot; data-alt=&quot;수료증과 사은품을 받았습니다. (세미나에서 수료증을 받은건 처음이네요.)&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/wdLjt/btsKVrez9NL/z9viqKkNGd8lK8JrKoMy81/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FwdLjt%2FbtsKVrez9NL%2Fz9viqKkNGd8lK8JrKoMy81%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;2000&quot; height=&quot;1495&quot; data-filename=&quot;117b2ac6-624d-4e84-b98b-e83cc46551f4.png&quot; data-origin-width=&quot;2000&quot; data-origin-height=&quot;1495&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;수료증과 사은품을 받았습니다. (세미나에서 수료증을 받은건 처음이네요.)&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;위 내용은 정말 일부이고, 오픈시프트의 오토스케일링이나 모니터링 그리고 VM 관리 기능이 포함된 오픈시프트 OV 등 정말 많은 내용이 있었지만 글이 너무 길어질 것 같아 전부 담지 못했습니다.&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;이렇게 CywellSystem과 Red Hat이 주관한 이번 Openshift &amp;amp; AI 세미나는 정말 만족스러웠습니다.&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;/p&gt;
&lt;figure contenteditable=&quot;false&quot; data-ke-type=&quot;emoticon&quot; data-ke-align=&quot;alignCenter&quot; data-emoticon-type=&quot;friends1&quot; data-emoticon-name=&quot;005&quot; data-emoticon-isanimation=&quot;false&quot; data-emoticon-src=&quot;https://t1.daumcdn.net/keditor/emoticon/friends1/large/005.gif&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/keditor/emoticon/friends1/large/005.gif&quot; width=&quot;150&quot; /&gt;&lt;/figure&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;좋은 자리를 마련해주신 영업대표님과 열정적으로 발표를 준비해주신 발표자분들께 감사드립니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;꾸벅 &lt;span style=&quot;background-color: #ffffff; color: #3a3a3a; 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;</description>
      <category>K8s_쿠버네티스</category>
      <category>openshift</category>
      <category>redhat</category>
      <category>세미나</category>
      <category>오블완</category>
      <category>티스토리챌린지</category>
      <author>cwpack0730</author>
      <guid isPermaLink="true">https://cwpack0730.tistory.com/128</guid>
      <comments>https://cwpack0730.tistory.com/128#entry128comment</comments>
      <pubDate>Mon, 25 Nov 2024 23:33:28 +0900</pubDate>
    </item>
    <item>
      <title>[Linux] ulimit 개념 및 설정 방법(사용자 별 자원 관리)</title>
      <link>https://cwpack0730.tistory.com/127</link>
      <description>&lt;h2 data-ke-size=&quot;size26&quot;&gt;1. ulimit 이란?&lt;/h2&gt;
&lt;p&gt;&lt;figure class=&quot;imagegridblock&quot;&gt;
  &lt;div class=&quot;image-container&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dTIWWx/btsKOlRGHuC/P2My1bUSgKPW2raYyMFdt0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dTIWWx/btsKOlRGHuC/P2My1bUSgKPW2raYyMFdt0/img.png&quot; data-origin-width=&quot;386&quot; data-origin-height=&quot;331&quot; data-is-animation=&quot;false&quot; style=&quot;width: 49.1863%; margin-right: 10px;&quot; data-widthpercent=&quot;49.76&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dTIWWx/btsKOlRGHuC/P2My1bUSgKPW2raYyMFdt0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdTIWWx%2FbtsKOlRGHuC%2FP2My1bUSgKPW2raYyMFdt0%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;386&quot; height=&quot;331&quot;/&gt;&lt;/span&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cjYkX0/btsKNey4Jcf/Htx7MFpCRkHuIEkB9qy6Nk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cjYkX0/btsKNey4Jcf/Htx7MFpCRkHuIEkB9qy6Nk/img.png&quot; data-origin-width=&quot;392&quot; data-origin-height=&quot;333&quot; data-is-animation=&quot;false&quot; style=&quot;width: 49.6509%;&quot; data-widthpercent=&quot;50.24&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cjYkX0/btsKNey4Jcf/Htx7MFpCRkHuIEkB9qy6Nk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcjYkX0%2FbtsKNey4Jcf%2FHtx7MFpCRkHuIEkB9qy6Nk%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;392&quot; height=&quot;333&quot;/&gt;&lt;/span&gt;&lt;/div&gt;
  &lt;figcaption&gt;ulimit Soft(좌) Hard(우) 설정 값&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;ulimit는 리눅스(유닉스)에서 사용자별로 프로세스의 자원 한도를 설정하거나 확인할 수 있는 명령어이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;위 ulimit soft 값과 hard 값을 비교해보면 hard의 값이 훨신 크게 잡혀 있는 것을 알 수 있다.&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;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;파일 크기&lt;/li&gt;
&lt;li&gt;열 수 있는 파일의 최대 수&lt;/li&gt;
&lt;li&gt;사용 가능 메모리&lt;/li&gt;
&lt;li&gt;CPU 시간&lt;/li&gt;
&lt;li&gt;프로세스 개수&lt;/li&gt;
&lt;li&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;h3 data-ke-size=&quot;size23&quot;&gt;ulimit [옵션] 값 ( Centos , RHEL 기준)&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;a : 모든 제한 사항을 보여줌.&lt;/li&gt;
&lt;li&gt;c : 최대 코어 파일 사이즈&lt;/li&gt;
&lt;li&gt;d : 프로세스 데이터 세그먼트의 최대 크기&lt;/li&gt;
&lt;li&gt;f : shell에 의해 만들어질 수 있는 파일의 최대 크기&lt;/li&gt;
&lt;li&gt;s : 최대 스택 크기&lt;/li&gt;
&lt;li&gt;p : 파이프 크기&lt;/li&gt;
&lt;li&gt;n : 오픈 파일의 최대수&lt;/li&gt;
&lt;li&gt;u : 오픈파일의 최대수&lt;/li&gt;
&lt;li&gt;v : 최대 가상메모리의 양&lt;/li&gt;
&lt;li&gt;S : soft 한도&lt;/li&gt;
&lt;li&gt;H : hard 한도&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;h3 data-ke-size=&quot;size23&quot;&gt;각 항목의 설명&lt;/h3&gt;
&lt;pre id=&quot;code_1731918921632&quot; class=&quot;shell&quot; data-ke-language=&quot;shell&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;# ulimit -a // Soft 설정 보기

# ulimit -aH // Hard 설정 보기

core file size (blocks, -c) 0 : 코어파일의 최대크기

data seg size (kbytes, -d) unlimited : 프로세스의 데이터 세그먼트 최대크기

scheduling priority (-e) 0

file size (blocks, -f) unlimited :쉘에서 생성되는 파일일 최대크기

pending signals (-i) 14943

max locked memory (kbytes, -l) 64

max memory size (kbytes, -m) unlimited : resident set size의 최대 크기(메모리 최대크기)

open files (-n) 1024 : 한 프로세스에서 열 수 있는 open file descriptor의 최대 숫자(열수 있는 최대 파일 수) ,Too many open files error 발생시 해당값 조절해주면됨

pipe size (512 bytes, -p) 8 : 512-바이트 블럭의 파이프 크기

POSIX message queues (bytes, -q) 819200

real-time priority (-r) 0

stack size (kbytes, -s) 10240

cpu time (seconds, -t) unlimited : 총 누적된 CPU 시간(초)

max user processes (-u) 1024 : 단일 유저가 사용가능한 프로세스의 최대 갯수

virtual memory (kbytes, -v) unlimited : 쉘에서 사용가능 한 가상 메모리의 최대 용량

file locks (-x) unlimited&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. ulimit의 종류&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;ulimit은 soft 제한과, hard 제한 두가지로 나뉜다.&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;soft : 사용자가 현재 사용할 수 있는 자원의 최대치로, 하드 제한보다 낮게 설정할 수 있다.&lt;br /&gt;일시적으로 변경할 수 있으며 재 로그인하면 기본값으로 변경된다.&lt;/li&gt;
&lt;li&gt;hard : 시스템에서 허용하는 자원의 최대치. 관리자를 제외한 일반 사용자는 하드 제한을 초과할 수 없다.&lt;/li&gt;
&lt;/ul&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;/h3&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;1. ulimit 명령을 통한 변경&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;-n -u를 사용하여 max user process와 open files 개수를 수정한다.&lt;/p&gt;
&lt;pre class=&quot;routeros&quot;&gt;&lt;code&gt;ulimit -n 2048
ulimit -u 4096

ulimit -a
open files        (-n) 2048
max user processes       (-u) 4096&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;소프트 제한 변경&lt;/p&gt;
&lt;pre class=&quot;angelscript&quot;&gt;&lt;code&gt;ulimit -n 4096&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;하드 제한 변경 (root 관리자 권한 필요)&lt;/p&gt;
&lt;pre class=&quot;angelscript&quot;&gt;&lt;code&gt;ulimit -Hn 8192&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;ulimit 명령으로 설정한 값은 현재 세션에서만 적용된다. 즉, 재 접속시에는 기본값으로 초기화되기 때문에 영구적으로 설정하러면 /etc/profile 또는 사용자 별 .bashrc 파일에 명령어를 추가해야 한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;혹은 다음과 같이 limits.conf 파일을 수정하는 방법이 있다.&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;2. /etc/security/limits.conf 설정 파일 수정&lt;/h4&gt;
&lt;pre class=&quot;angelscript&quot;&gt;&lt;code&gt;vi /etc/security/limits.conf
username hard nofile 8192
username soft nofile 4096
*       soft nproc 4096
*       hard nproc 4096&lt;/code&gt;&lt;/pre&gt;
&lt;blockquote data-ke-style=&quot;style3&quot;&gt;  User 별로 설정 가능하다.&lt;/blockquote&gt;
&lt;aside&gt;&lt;/aside&gt;
&lt;aside&gt;&lt;/aside&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;3. 확인&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;재 로그인 or 리부팅할 경우 기본 설정으로 적용된다.&lt;/p&gt;
&lt;pre id=&quot;code_1731918995728&quot; class=&quot;shell&quot; data-ke-language=&quot;shell&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;# ulimit -aH

core file size (blocks, -c) unlimited

data seg size (kbytes, -d) unlimited

scheduling priority (-e) 0

file size (blocks, -f) unlimited

pending signals (-i) 14943

max locked memory (kbytes, -l) 64

max memory size (kbytes, -m) unlimited

open files (-n) 2048

pipe size (512 bytes, -p) 8

POSIX message queues (bytes, -q) 819200

real-time priority (-r) 0

stack size (kbytes, -s) unlimited

cpu time (seconds, -t) unlimited

max user processes (-u) 4096

virtual memory (kbytes, -v) unlimited

file locks (-x) unlimited&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>DevOps/Linux_리눅스</category>
      <category>ulimit</category>
      <category>ulimit 옵션</category>
      <category>리눅스 사용자 별 자원관리</category>
      <category>오블완</category>
      <category>티스토리챌린지</category>
      <author>cwpack0730</author>
      <guid isPermaLink="true">https://cwpack0730.tistory.com/127</guid>
      <comments>https://cwpack0730.tistory.com/127#entry127comment</comments>
      <pubDate>Mon, 18 Nov 2024 17:46:04 +0900</pubDate>
    </item>
    <item>
      <title>[OpenVPN] OpenVPN Server 구축(Linux)</title>
      <link>https://cwpack0730.tistory.com/126</link>
      <description>&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;span&gt; &lt;/span&gt; 개요&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;예전 사내에 Fortigate SSL-VPN을 구성한적이 있는데 macOS를 사용하는 PC에서는 접속이 안되는 문제가 있었다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이에 원인은 잘 모르겠지만 당장 접속이 필요한 상황이기 때문에 OpenVPN Server를 구축하여 VPN 통신을 구현해보겠다.&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;1. 실습 환경&lt;/h3&gt;
&lt;pre class=&quot;makefile&quot;&gt;&lt;code&gt;# 실습 환경
cat /etc/*release*
CentOS Linux release 8.5.2111
Derived from Red Hat Enterprise Linux 8.5
NAME=&quot;CentOS Linux&quot;
VERSION=&quot;8&quot;
ID=&quot;centos&quot;
ID_LIKE=&quot;rhel fedora&quot;
VERSION_ID=&quot;8&quot;
PLATFORM_ID=&quot;platform:el8&quot;
PRETTY_NAME=&quot;CentOS Linux 8&quot;
ANSI_COLOR=&quot;0;31&quot;
CPE_NAME=&quot;cpe:/o:centos:centos:8&quot;
HOME_URL=&quot;https://centos.org/&quot;
BUG_REPORT_URL=&quot;https://bugs.centos.org/&quot;
CENTOS_MANTISBT_PROJECT=&quot;CentOS-8&quot;
CENTOS_MANTISBT_PROJECT_VERSION=&quot;8&quot;
CentOS Linux release 8.5.2111
CentOS Linux release 8.5.2111
cpe:/o:centos:centos:8&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;h3 data-ke-size=&quot;size23&quot;&gt;2. OpenVPN 서버 구축&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;openVPN을 구성할 linux 서버에 접속 후 다음 작업을 진행한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;직접 구성하는 방식과 제공하는 스크립트로 간편하게 구성하는 방식이 있다. 본인은 스크립트로 설정을 진행해보겠다.&lt;/p&gt;
&lt;pre class=&quot;vala&quot;&gt;&lt;code&gt;# openvpn 자동설치 shell file pull
wget https://git.io/vpn -O openvpn-install.sh

# 파일 실행권한 부여
sudo chmod +x openvpn-install.sh&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;vpn 설정을 진행한다.&lt;/p&gt;
&lt;pre class=&quot;sql&quot;&gt;&lt;code&gt;# 스크립트 실행
sudo bash openvpn-install.sh
or
./openvpn-install.sh

Welcome to the OpenVPN installer!
The git repository is available at: https://github.com/angristan/openvpn-install

I need to ask you a few questions before starting the setup.
You can leave the default options and just press enter if you are ok with them.

# OpenVPN에서 사용할 IP 주소이다.
**I need to know the IPv4 address of the network interface you want OpenVPN listening to.
Unless your server is behind NAT, it should be your public IPv4 address.
IP address: 192.168.100.xxx**

# 공용 IPv4 주소 혹은 호스트 이름을 입력한다.
**It seems this server is behind NAT. What is its public IPv4 address or hostname?
We need it for the clients to connect to the server.
Public IPv4 address or hostname: cwOpenVPN**

Checking for IPv6 connectivity...

Your host does not appear to have IPv6 connectivity.

# IPv6는 사용하지 않게 설정했다.
Do you want to enable IPv6 support (NAT)? [y/n]: n

# OpenVPN 포트를 설정한다. 본인은 기본으로 설정하였다.
**What port do you want OpenVPN to listen to?
   1) Default: 1194
   2) Custom
   3) Random [49152-65535]
Port choice [1-3]: 1**

# 프로토콜을 선택한다.
**What protocol do you want OpenVPN to use?
UDP is faster. Unless it is not available, you shouldnt use TCP.
   1) UDP
   2) TCP
Protocol [1-2]: 1**

# DNS resolve를 선택한다. 각 DNS 별 특징이 있으니 잘 찾아보고 선택하자.
**What DNS resolvers do you want to use with the VPN?
   1) Current system resolvers (from /etc/resolv.conf)
   2) Self-hosted DNS Resolver (Unbound)
   3) Cloudflare (Anycast: worldwide)
   4) Quad9 (Anycast: worldwide)
   5) Quad9 uncensored (Anycast: worldwide)
   6) FDN (France)
   7) DNS.WATCH (Germany)
   8) OpenDNS (Anycast: worldwide)
   9) Google (Anycast: worldwide)
   10) Yandex Basic (Russia)
   11) AdGuard DNS (Anycast: worldwide)
   12) NextDNS (Anycast: worldwide)
   13) Custom
DNS [1-12]: 11**

Do you want to use compression? It is not recommended since the VORACLE attack makes use of it.
Enable compression? [y/n]: n

Do you want to customize encryption settings?
Unless you know what you're doing, you should stick with the default parameters provided by the script.
Note that whatever you choose, all the choices presented in the script are safe. (Unlike OpenVPN's defaults)
See https://github.com/angristan/openvpn-install#security-and-encryption to learn more.

Customize encryption settings? [y/n]: n

Okay, that was all I needed. We are ready to setup your OpenVPN server now.
You will be able to generate a client at the end of the installation.
Press any key to continue...

**Tell me a name for the client.
The name must consist of alphanumeric character. It may also include an underscore or a dash.
Client name: cwVPN_Client**

**Do you want to protect the configuration file with a password?
(e.g. encrypt the private key with a password)
   1) Add a passwordless client
   2) Use a password for the client
Select an option [1-2]: 2**&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&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;Untitled.png&quot; data-origin-width=&quot;507&quot; data-origin-height=&quot;126&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/lynYB/btsKLca7Iz5/7Q08AKmpaF0R4f5Mgv9DdK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/lynYB/btsKLca7Iz5/7Q08AKmpaF0R4f5Mgv9DdK/img.png&quot; data-alt=&quot;ovpn 파일이 생성되었다.&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/lynYB/btsKLca7Iz5/7Q08AKmpaF0R4f5Mgv9DdK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FlynYB%2FbtsKLca7Iz5%2F7Q08AKmpaF0R4f5Mgv9DdK%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;507&quot; height=&quot;126&quot; data-filename=&quot;Untitled.png&quot; data-origin-width=&quot;507&quot; data-origin-height=&quot;126&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;ovpn 파일이 생성되었다.&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;설정이 완료되면 다음과 같이 ovpn 파일이 생성된다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;해당 파일로 VPN 접근이 가능하다.&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;pre class=&quot;routeros&quot;&gt;&lt;code&gt;# 포트 추가
firewall-cmd --zone=public --add-port=2294/udp --permanent 
firewall-cmd --zone=public --add-port=21194/udp --permanent 
firewall-cmd --zone=public --add-port=1194/udp --permanent

# 적용
firewall-cmd --reload
firewall-cmd --list-all&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;h3 data-ke-size=&quot;size23&quot;&gt;3. Windows에서 Client 연결&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;다운로드 및 설치를 진행한다.&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style3&quot;&gt;&lt;a href=&quot;https://openvpn.net/community-downloads/&quot;&gt;https://openvpn.net/community-downloads/&lt;/a&gt;&lt;/blockquote&gt;
&lt;figure id=&quot;og_1731846607978&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;article&quot; data-og-title=&quot;Community Downloads - Open Source VPN | OpenVPN&quot; data-og-description=&quot;The OpenVPN community shares the open source OpenVPN. Download the latest version of the open source VPN release OpenVPN 2.6.3 for a secure network.&quot; data-og-host=&quot;openvpn.net&quot; data-og-source-url=&quot;https://openvpn.net/community-downloads/&quot; data-og-url=&quot;https://openvpn.net/community-downloads/&quot; data-og-image=&quot;&quot;&gt;&lt;a href=&quot;https://openvpn.net/community-downloads/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://openvpn.net/community-downloads/&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url();&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;Community Downloads - Open Source VPN | OpenVPN&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;The OpenVPN community shares the open source OpenVPN. Download the latest version of the open source VPN release OpenVPN 2.6.3 for a secure network.&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;openvpn.net&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&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;다운받은 cwVPN_Client.ovpn 파일을 import &amp;gt; 파일 불러오기 로 연결한다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;Untitled 1.png&quot; data-origin-width=&quot;398&quot; data-origin-height=&quot;282&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/M4Lyj/btsKMke5bOL/3TtxMhuS0baGx6XMIqk030/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/M4Lyj/btsKMke5bOL/3TtxMhuS0baGx6XMIqk030/img.png&quot; data-alt=&quot;사진-2&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/M4Lyj/btsKMke5bOL/3TtxMhuS0baGx6XMIqk030/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FM4Lyj%2FbtsKMke5bOL%2F3TtxMhuS0baGx6XMIqk030%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;398&quot; height=&quot;282&quot; data-filename=&quot;Untitled 1.png&quot; data-origin-width=&quot;398&quot; data-origin-height=&quot;282&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;사진-2&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;Untitled 2.png&quot; data-origin-width=&quot;566&quot; data-origin-height=&quot;286&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bQZS11/btsKL3EFknB/plzcazOhqIcMmlTjv88rvk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bQZS11/btsKL3EFknB/plzcazOhqIcMmlTjv88rvk/img.png&quot; data-alt=&quot;사진-3&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bQZS11/btsKL3EFknB/plzcazOhqIcMmlTjv88rvk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbQZS11%2FbtsKL3EFknB%2FplzcazOhqIcMmlTjv88rvk%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;566&quot; height=&quot;286&quot; data-filename=&quot;Untitled 2.png&quot; data-origin-width=&quot;566&quot; data-origin-height=&quot;286&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;사진-3&lt;/figcaption&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;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;Untitled 3.png&quot; data-origin-width=&quot;852&quot; data-origin-height=&quot;560&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/TU25e/btsKLvnYkhW/bw8V7XRmHxS0GBvWi5wsuK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/TU25e/btsKLvnYkhW/bw8V7XRmHxS0GBvWi5wsuK/img.png&quot; data-alt=&quot;사진-4&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/TU25e/btsKLvnYkhW/bw8V7XRmHxS0GBvWi5wsuK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FTU25e%2FbtsKLvnYkhW%2Fbw8V7XRmHxS0GBvWi5wsuK%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;852&quot; height=&quot;560&quot; data-filename=&quot;Untitled 3.png&quot; data-origin-width=&quot;852&quot; data-origin-height=&quot;560&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;사진-4&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;Untitled 4.png&quot; data-origin-width=&quot;855&quot; data-origin-height=&quot;560&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/boXQ6A/btsKMlY9KJU/VfkAuu2slKJwu0kd8O6NTK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/boXQ6A/btsKMlY9KJU/VfkAuu2slKJwu0kd8O6NTK/img.png&quot; data-alt=&quot;연결 완료&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/boXQ6A/btsKMlY9KJU/VfkAuu2slKJwu0kd8O6NTK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FboXQ6A%2FbtsKMlY9KJU%2FVfkAuu2slKJwu0kd8O6NTK%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;855&quot; height=&quot;560&quot; data-filename=&quot;Untitled 4.png&quot; data-origin-width=&quot;855&quot; data-origin-height=&quot;560&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;연결 완료&lt;/figcaption&gt;
&lt;/figure&gt;
&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;style2&quot;&gt;&lt;span style=&quot;color: #006dd7;&quot;&gt;TMI: 추가로 원인은 macOS 문제가 아닌 테더링/핫스팟으로 연결한 문제였다. 보통 이 경우 ipv6로 연결되기 때문에 ipv4 연결만 구성한 기존 VPN 연결이 차단된 것이다.&lt;br /&gt;위 설정을 보면 openvpn도 ipv6를 비활성화 했기 때문에 요청한 PC에서는 openvpn으로도 접속이 불가했을 것이다.&lt;/span&gt;&lt;/blockquote&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>DevOps/Network_네트워크</category>
      <category>openvpn</category>
      <category>openvpn 설치</category>
      <category>오블완</category>
      <category>티스토리챌린지</category>
      <author>cwpack0730</author>
      <guid isPermaLink="true">https://cwpack0730.tistory.com/126</guid>
      <comments>https://cwpack0730.tistory.com/126#entry126comment</comments>
      <pubDate>Sun, 17 Nov 2024 21:34:38 +0900</pubDate>
    </item>
    <item>
      <title>[Tomcat] Apache Tomcat 실행 시 포트 정보(HTTP/HTTPS, AJP 커넥터, Shutdown 등)</title>
      <link>https://cwpack0730.tistory.com/125</link>
      <description>&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;span&gt; &lt;/span&gt; 개요&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Tomcat은 server.xml 파일에서 여러 포트를 설정할 수 있는데, 각 포트는 다른 목적으로 사용된다.&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;h3 data-ke-size=&quot;size23&quot;&gt;1. Connector Port (HTTP/HTTPS)&lt;/h3&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;image.png&quot; data-origin-width=&quot;624&quot; data-origin-height=&quot;262&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dAqS8m/btsKKzqVygq/qsN4mmCUKjMCzFQKrJnPC0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dAqS8m/btsKKzqVygq/qsN4mmCUKjMCzFQKrJnPC0/img.png&quot; data-alt=&quot;HTTP 포트 구성. 가장 많이 사용할 것이다.&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dAqS8m/btsKKzqVygq/qsN4mmCUKjMCzFQKrJnPC0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdAqS8m%2FbtsKKzqVygq%2FqsN4mmCUKjMCzFQKrJnPC0%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;624&quot; height=&quot;262&quot; data-filename=&quot;image.png&quot; data-origin-width=&quot;624&quot; data-origin-height=&quot;262&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;HTTP 포트 구성. 가장 많이 사용할 것이다.&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;클라이언트가 HTTP 혹은 HTTPS 프로토콜로 웹 애플리케이션에 접근할 수 있도록 설정하는 포트이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;태그에서 설정하며 기본적으로 HTTP: 8080, HTTPS: 8443 포트로 적용되어있다.&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;HTTPS의 경우는 기본적으로 비활성화 되어있다. 사용하러면 주석을 제거하고 SSL 인증서 경로를 지정해주면 된다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;image 1.png&quot; data-origin-width=&quot;648&quot; data-origin-height=&quot;213&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/v4eGB/btsKL9xSOEK/KUrSYmn8LMeNjOQGg7Y4o1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/v4eGB/btsKL9xSOEK/KUrSYmn8LMeNjOQGg7Y4o1/img.png&quot; data-alt=&quot;HTTPS 포트 구성. 기본적으로 비활성화 되어있다.&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/v4eGB/btsKL9xSOEK/KUrSYmn8LMeNjOQGg7Y4o1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fv4eGB%2FbtsKL9xSOEK%2FKUrSYmn8LMeNjOQGg7Y4o1%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;648&quot; height=&quot;213&quot; data-filename=&quot;image 1.png&quot; data-origin-width=&quot;648&quot; data-origin-height=&quot;213&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;HTTPS 포트 구성. 기본적으로 비활성화 되어있다.&lt;/figcaption&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;h3 data-ke-size=&quot;size23&quot;&gt;2. Shutdown Port&lt;/h3&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;image 2.png&quot; data-origin-width=&quot;713&quot; data-origin-height=&quot;291&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/ckDrz5/btsKMEEa0Xi/vlIEKKTnJPJSfYE1QP13ck/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/ckDrz5/btsKMEEa0Xi/vlIEKKTnJPJSfYE1QP13ck/img.png&quot; data-alt=&quot;경우에 따라 비활성화하여 사용하기도 한다.&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/ckDrz5/btsKMEEa0Xi/vlIEKKTnJPJSfYE1QP13ck/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FckDrz5%2FbtsKMEEa0Xi%2FvlIEKKTnJPJSfYE1QP13ck%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;713&quot; height=&quot;291&quot; data-filename=&quot;image 2.png&quot; data-origin-width=&quot;713&quot; data-origin-height=&quot;291&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;경우에 따라 비활성화하여 사용하기도 한다.&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Tomcat은 안전하게 종료하기 위해 shutdown 포트가 존재한다. 지정한 port를 통해 &lt;b&gt;&lt;code&gt;SHUTDOWN&lt;/code&gt;&lt;/b&gt; 명령어를 진행하면 tomcat 프로세스를 종료한다.&lt;/p&gt;
&lt;pre class=&quot;arduino&quot;&gt;&lt;code&gt;&amp;lt;Server port=&quot;8005&quot; shutdown=&quot;SHUTDOWN&quot;&amp;gt;
    ...
&amp;lt;/Server&amp;gt;&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;태그에서 지정할 수 있기 때문에 위 이미지에서는 한 라인만 강조하였지만 하위 모든 속성들이 모두 포함되는 형태이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;기본 포트로는 8005로 설정되어있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;해당 shutdown 포트를 사용하지 않고 싶다면, 해당 포트를 &quot;-1&quot;로 설정하면 된다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style2&quot;&gt;&lt;span style=&quot;color: #006dd7;&quot;&gt;&lt;b&gt;! tomcat 기동시 HTTP 포트뿐만이 아닌 해당 포트들도 충돌 시 동작하지 않기 때문에, 여러 tomcat이 기동할때는 모든 port 정보를 다르게 구성해야 한다.&lt;/b&gt;&lt;/span&gt;&lt;/blockquote&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;3. AJP (Apache JServ Protocol) Port&lt;/h3&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;image 3.png&quot; data-origin-width=&quot;445&quot; data-origin-height=&quot;184&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cXhRwR/btsKK1goTuC/u5YBCn7et10A1GoRilx92k/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cXhRwR/btsKK1goTuC/u5YBCn7et10A1GoRilx92k/img.png&quot; data-alt=&quot;AJP 포트 구성. 기본적으로 비활성화 되어있다.&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cXhRwR/btsKK1goTuC/u5YBCn7et10A1GoRilx92k/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcXhRwR%2FbtsKK1goTuC%2Fu5YBCn7et10A1GoRilx92k%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;445&quot; height=&quot;184&quot; data-filename=&quot;image 3.png&quot; data-origin-width=&quot;445&quot; data-origin-height=&quot;184&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;AJP 포트 구성. 기본적으로 비활성화 되어있다.&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Apache HTTP 서버(Apache HTTPd)와 같은 웹 서버와 tomcat 간에 바이너리 데이터를 주고받는 데 사용된다. (보통 프록시 서버를 설정할 때 사용된다.)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;HTTPS port와 마찬가지로 처음 구성 시 비활성화 되어있으며, 태그에서 설정이 가능하고 8009port로 기본 설정이 되어있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;HTTP와 달리 &lt;span style=&quot;color: #f89009;&quot;&gt;&lt;b&gt;*바이너리 데이터&lt;/b&gt;&lt;/span&gt;를 주고받으며, 성능이 향샹될 수 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style2&quot;&gt;&lt;span style=&quot;color: #f89009;&quot;&gt;&lt;b&gt;* 바이너리 데이터란 2진수(0과 1)로 표현된 데이터로 컴퓨터 시스템에서 효율적으로 처리할 수 있는 형태이다. 텍스트 기반의 데이터보다 효율성(바이트 크기) 속도(텍스트 파싱이 필요없음), 데이터가 압축되어 전송하기 때문에 불필요한 공백/해더 등이 제거되는 장점이 있다.&lt;/b&gt;&lt;/span&gt;&lt;/blockquote&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;4. JMX (Java Management Extensions) Port&lt;/h3&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;image 4.png&quot; data-origin-width=&quot;952&quot; data-origin-height=&quot;143&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/baaAaA/btsKM6mFPsQ/ckXFfHdEayenKBtpZV8Jf0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/baaAaA/btsKM6mFPsQ/ckXFfHdEayenKBtpZV8Jf0/img.png&quot; data-alt=&quot;webapps/docs/cluster-howto.html&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/baaAaA/btsKM6mFPsQ/ckXFfHdEayenKBtpZV8Jf0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbaaAaA%2FbtsKM6mFPsQ%2FckXFfHdEayenKBtpZV8Jf0%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;952&quot; height=&quot;143&quot; data-filename=&quot;image 4.png&quot; data-origin-width=&quot;952&quot; data-origin-height=&quot;143&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;webapps/docs/cluster-howto.html&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;image 5.png&quot; data-origin-width=&quot;810&quot; data-origin-height=&quot;81&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bJKidd/btsKM2R6NE5/k5wnkimAWimKF7LG7FZYJK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bJKidd/btsKM2R6NE5/k5wnkimAWimKF7LG7FZYJK/img.png&quot; data-alt=&quot;webapps/docs/monitoring.html&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bJKidd/btsKM2R6NE5/k5wnkimAWimKF7LG7FZYJK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbJKidd%2FbtsKM2R6NE5%2Fk5wnkimAWimKF7LG7FZYJK%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;810&quot; height=&quot;81&quot; data-filename=&quot;image 5.png&quot; data-origin-width=&quot;810&quot; data-origin-height=&quot;81&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;webapps/docs/monitoring.html&lt;/figcaption&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;애플리케이션과는 직접적인 연관은 없는 포트인데, Tomcat의 모니터링 및 관리를 위해 사용한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;(위 JMX 포트를 통해서 tomcat의 상태를 외부에서 확인할 수 있게 된다.)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;기본적으로 설정되지 않으며 이미지처럼 java 옵션으로 설정해야 한다.&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;혹은 다음과 같이 intellij 프로젝트에서 설정할 수 있다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;image 6.png&quot; data-origin-width=&quot;562&quot; data-origin-height=&quot;170&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bpsGnp/btsKNctsg0T/AkGdJapyewBeElKksbOwb1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bpsGnp/btsKNctsg0T/AkGdJapyewBeElKksbOwb1/img.png&quot; data-alt=&quot;intellji에서 다음과 같이 JMX 포트를 설정할 수 있다. 이클립스도 가능&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bpsGnp/btsKNctsg0T/AkGdJapyewBeElKksbOwb1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbpsGnp%2FbtsKNctsg0T%2FAkGdJapyewBeElKksbOwb1%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;562&quot; height=&quot;170&quot; data-filename=&quot;image 6.png&quot; data-origin-width=&quot;562&quot; data-origin-height=&quot;170&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;intellji에서 다음과 같이 JMX 포트를 설정할 수 있다. 이클립스도 가능&lt;/figcaption&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;h2 data-ke-size=&quot;size26&quot;&gt;&lt;span&gt; &lt;/span&gt; 요약&lt;/h2&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%; height: 88px;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr style=&quot;height: 20px;&quot;&gt;
&lt;td style=&quot;width: 25%; height: 20px;&quot;&gt;Port&lt;/td&gt;
&lt;td style=&quot;width: 25%; height: 20px;&quot;&gt;기본값&lt;/td&gt;
&lt;td style=&quot;width: 25%; height: 20px;&quot;&gt;역할&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 17px;&quot;&gt;
&lt;td style=&quot;width: 25%; height: 17px;&quot;&gt;HTTP&lt;/td&gt;
&lt;td style=&quot;width: 25%; height: 17px;&quot;&gt;8080&lt;/td&gt;
&lt;td style=&quot;width: 25%; height: 17px;&quot;&gt;클라이언트 HTTP 요청 처리&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 17px;&quot;&gt;
&lt;td style=&quot;width: 25%; height: 17px;&quot;&gt;HTTPS&lt;/td&gt;
&lt;td style=&quot;width: 25%; height: 17px;&quot;&gt;8443&lt;/td&gt;
&lt;td style=&quot;width: 25%; height: 17px;&quot;&gt;클라이언트 HTTPS 요청 처리&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 17px;&quot;&gt;
&lt;td style=&quot;width: 25%; height: 17px;&quot;&gt;Shutdown&lt;/td&gt;
&lt;td style=&quot;width: 25%; height: 17px;&quot;&gt;8005&lt;/td&gt;
&lt;td style=&quot;width: 25%; height: 17px;&quot;&gt;Tomcat 서버 종료&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 17px;&quot;&gt;
&lt;td style=&quot;width: 25%; height: 17px;&quot;&gt;AJP&lt;/td&gt;
&lt;td style=&quot;width: 25%; height: 17px;&quot;&gt;8009&lt;/td&gt;
&lt;td style=&quot;width: 25%; height: 17px;&quot;&gt;웹 서버와 Tomcat 간의 연결&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 25%;&quot;&gt;JMX&lt;/td&gt;
&lt;td style=&quot;width: 25%;&quot;&gt;1099&lt;/td&gt;
&lt;td style=&quot;width: 25%;&quot;&gt;모니터링 및 관리&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>DevOps/open source_오픈소스</category>
      <category>tomcat</category>
      <category>tomcat ajp</category>
      <category>tomcat jmx</category>
      <category>tomcat port</category>
      <category>tomcat shutdown</category>
      <category>오블완</category>
      <category>톰켓 포트 설정</category>
      <category>티스토리챌린지</category>
      <author>cwpack0730</author>
      <guid isPermaLink="true">https://cwpack0730.tistory.com/125</guid>
      <comments>https://cwpack0730.tistory.com/125#entry125comment</comments>
      <pubDate>Sat, 16 Nov 2024 23:29:05 +0900</pubDate>
    </item>
    <item>
      <title>[Tools] 크기가 큰 텍스트 파일 열기(파일 분할)</title>
      <link>https://cwpack0730.tistory.com/124</link>
      <description>&lt;h2 data-ke-size=&quot;size26&quot;&gt;개요&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;tomcat 로그를 확인하려하는데, 용량이 너무 커 메모장으로 열 수 없는 상황이다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;image.png&quot; data-origin-width=&quot;585&quot; data-origin-height=&quot;260&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/lUJtj/btsKLg4NAXx/ELhzSrjcNnRnj5LBreqDHk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/lUJtj/btsKLg4NAXx/ELhzSrjcNnRnj5LBreqDHk/img.png&quot; data-alt=&quot;에러 로그&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/lUJtj/btsKLg4NAXx/ELhzSrjcNnRnj5LBreqDHk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FlUJtj%2FbtsKLg4NAXx%2FELhzSrjcNnRnj5LBreqDHk%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;585&quot; height=&quot;260&quot; data-filename=&quot;image.png&quot; data-origin-width=&quot;585&quot; data-origin-height=&quot;260&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;에러 로그&lt;/figcaption&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;어느 정도의 GB 크기의 텍스트 파일은 메모장 외에도 notepad++, visual studio 등의 툴을 사용해서 open할 수 있으나, 내가 확인하려는 텍스트 파일은 40GB(&amp;hellip;)를 넘는다.&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;/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-ke-size=&quot;size26&quot;&gt;1. 텍스트 파일 분할&lt;/h2&gt;
&lt;p&gt;&lt;figure class=&quot;fileblock&quot; data-ke-align=&quot;alignCenter&quot;&gt;&lt;a href=&quot;https://blog.kakaocdn.net/dn/bKln75/btsKL70C4LB/iW0cO1RIocPKpH1mkLvMTK/Text%20Cleaver.exe?attach=1&amp;amp;knm=tfile.exe&quot; class=&quot;&quot;&gt;
    &lt;div class=&quot;image&quot;&gt;&lt;/div&gt;
    &lt;div class=&quot;desc&quot;&gt;&lt;div class=&quot;filename&quot;&gt;&lt;span class=&quot;name&quot;&gt;Text Cleaver.exe&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;size&quot;&gt;0.10MB&lt;/div&gt;
&lt;/div&gt;
  &lt;/a&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&amp;nbsp;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;용량은 큰 텍스트의 파일을 라인(줄) 기반으로 분할해주는 프로그램이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;다운로드 후 실행하면 다음과 같이 나타난다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;image 1.png&quot; data-origin-width=&quot;623&quot; data-origin-height=&quot;357&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/7M8mp/btsKJMDQahn/o03mXvtqgPrPLxkgaivKVK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/7M8mp/btsKJMDQahn/o03mXvtqgPrPLxkgaivKVK/img.png&quot; data-alt=&quot;사진-2&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/7M8mp/btsKJMDQahn/o03mXvtqgPrPLxkgaivKVK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F7M8mp%2FbtsKJMDQahn%2Fo03mXvtqgPrPLxkgaivKVK%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;623&quot; height=&quot;357&quot; data-filename=&quot;image 1.png&quot; data-origin-width=&quot;623&quot; data-origin-height=&quot;357&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;사진-2&lt;/figcaption&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;이후 GO를 선택하면 파일 분할을 시작한다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;image 2.png&quot; data-origin-width=&quot;291&quot; data-origin-height=&quot;322&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/xxm3k/btsKMjzE6DX/hEFiWwhnvHhLsNGbcDqkMK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/xxm3k/btsKMjzE6DX/hEFiWwhnvHhLsNGbcDqkMK/img.png&quot; data-alt=&quot;사진-3&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/xxm3k/btsKMjzE6DX/hEFiWwhnvHhLsNGbcDqkMK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fxxm3k%2FbtsKMjzE6DX%2FhEFiWwhnvHhLsNGbcDqkMK%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;291&quot; height=&quot;322&quot; data-filename=&quot;image 2.png&quot; data-origin-width=&quot;291&quot; data-origin-height=&quot;322&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;사진-3&lt;/figcaption&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;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;image 3.png&quot; data-origin-width=&quot;653&quot; data-origin-height=&quot;510&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cT5wOl/btsKK9Y58ex/DktT4sk0JtPo7WQn8AgAtk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cT5wOl/btsKK9Y58ex/DktT4sk0JtPo7WQn8AgAtk/img.png&quot; data-alt=&quot;사진-4&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cT5wOl/btsKK9Y58ex/DktT4sk0JtPo7WQn8AgAtk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcT5wOl%2FbtsKK9Y58ex%2FDktT4sk0JtPo7WQn8AgAtk%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;653&quot; height=&quot;510&quot; data-filename=&quot;image 3.png&quot; data-origin-width=&quot;653&quot; data-origin-height=&quot;510&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;사진-4&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>DevOps/open source_오픈소스</category>
      <category>Text Cleaver</category>
      <category>오블완</category>
      <category>용량 큰 파일 분할</category>
      <category>텍스트 파일 분할</category>
      <category>티스토리챌린지</category>
      <author>cwpack0730</author>
      <guid isPermaLink="true">https://cwpack0730.tistory.com/124</guid>
      <comments>https://cwpack0730.tistory.com/124#entry124comment</comments>
      <pubDate>Fri, 15 Nov 2024 18:03:28 +0900</pubDate>
    </item>
    <item>
      <title>[Nginx] 애플리케이션 토큰 헤더 요청 오류 (헤더 옵션 변경)</title>
      <link>https://cwpack0730.tistory.com/123</link>
      <description>&lt;h2 data-ke-size=&quot;size26&quot;&gt;개요&lt;/h2&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;image.png&quot; data-origin-width=&quot;525&quot; data-origin-height=&quot;483&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/t7LNI/btsKJlFoGmQ/oAgpMm4dwrYEfSOxvlTBB0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/t7LNI/btsKJlFoGmQ/oAgpMm4dwrYEfSOxvlTBB0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/t7LNI/btsKJlFoGmQ/oAgpMm4dwrYEfSOxvlTBB0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Ft7LNI%2FbtsKJlFoGmQ%2FoAgpMm4dwrYEfSOxvlTBB0%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;525&quot; height=&quot;483&quot; data-filename=&quot;image.png&quot; data-origin-width=&quot;525&quot; data-origin-height=&quot;483&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;현재 신규 서비스를 개발하고 있는데 빌드가 완료되어 개발서버에 배포를 진행하고 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;spring 기반의 서비스이며 nginx와 tomcat으로 운영하고 있는데 서비스 호출은 정상이나 몇몇 api 및 토큰 요청에 문제가 있는 상황이다.&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;이에 nginx 설정 중 헤더 구성에 원인이 있다고 판단하여 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;h2 data-ke-size=&quot;size26&quot;&gt;현재 구성( nginx.conf )&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;다음은 예시로 구성한 nginx.conf 이다.&lt;/p&gt;
&lt;pre class=&quot;nginx&quot;&gt;&lt;code&gt;upstream cwking {
    server 192.168.100.20:8080;
}

server {
    listen        80;
    server_name woodev.devcw.site ;

    location / {
        proxy_pass http://cwking/;
        proxy_set_header Host $host;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }

    location /robots.txt {
            return 200 &quot;User-agent: *\nDisallow: /&quot;;
        }

    access_log  /app/weblog/woodev.devcw.site-access.log  main;
    error_log /app/weblog/woodev.devcw.site-error.log;
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;tomcat(spring)은 8080 포트로 동작한다고 가정하였을때,&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;http://woodev.devcw.site&quot;&gt;woodev.devcw.site&lt;/a&gt; URL에 접근 시 root 경로로 tomcat으로 이동하도록 proxy pass를 구성하였다.&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;proxy_set_header 지시어로 tomcat이 요청을 처리할 때 클라이언트가 요청한 도메인, 서버 이름 등을 알 수 있게 한다.&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;Host $host; : 클라이언트 요청의 Host 헤더 값을 백엔드로 전달한다.&lt;/li&gt;
&lt;li&gt;X-Forwarded-For $proxy_add_x_forwarded_for; : 클라이언트의 원본 IP 주소를 포함한 X-Forwarded-For 헤더를 백엔드 서버로 전달한다.&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;위 구성으로 실행하였을때, 서비스 동작 및 api 호출에 문제가 없었다. 그러나 몇몇 호출이나 토큰 응답값 등을 전달/받아오지 못하는 현상이 발생하였는데, 다음과 같이 수정하여 해결하였다.&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;수정된 구성( nginx.conf )&lt;/h2&gt;
&lt;pre class=&quot;nginx&quot;&gt;&lt;code&gt;upstream cwking {
    server 192.168.100.20:8080;
}

server {
    listen        80;
    server_name woodev.devcw.site ;
    # 추가 1
    underscores_in_headers      on;

    location / {
        proxy_pass http://cwking/;
        # 수정 proxy_set_header Host $host;
        proxy_set_header Host $http_host;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        # 추가 2
        proxy_pass_request_headers  on;
    }

    location /robots.txt {
            return 200 &quot;User-agent: *\nDisallow: /&quot;;
        }

    access_log  /app/weblog/woodev.devcw.site-access.log  main;
    error_log /app/weblog/woodev.devcw.site-error.log;
}&lt;/code&gt;&lt;/pre&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;h3 data-ke-size=&quot;size23&quot;&gt;underscores_in_headers on;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;밑줄이 포함된 헤더를 허용한다는 설정인데, 해당 설정을 활성화하면 클라이언트가 밑줄이 포함된 헤더를 보내도 nginx에서 이를 정상적으로 허용하여 백엔드로 전달한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;nginx에서 기본적으로는 off 설정으로 되어있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style2&quot;&gt;&lt;span style=&quot;color: #f89009;&quot;&gt;&lt;b&gt;! 기본적으로 _(밑줄) 헤더 호출을 차단하는 이유 :&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: #f89009;&quot;&gt;보안 정책과 표준 HTTP 규격을 준수하기 위함인데, HTTP 표준에서는 _(밑줄) 대신 -(하이픈)을 헤더 구분자로 사용하는 것을 권장한다&lt;/span&gt;.&lt;/blockquote&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;proxy_set_header Host $http_host&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;proxy_set_header Host 설정을 $host에서 $http_host로 변경하였다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;$host는 클라이언트 요청의 Host 헤더에 따라 변경될 수 있으나 #http_host는 클라이언트의 원본 Host 헤더 값을 전달하므로, 원래 호스트 정보가 보장된다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;(조사해보니 Spring 보안 설정에서는 토큰을 생성할 때 호스트 정보가 필요할 수 있는데, $http_host 로 설정하지 않으면 올바른 정보를 전달하지 못해 요청이 실패할 수 있다고 한다.)&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;proxy_pass_request_headers on;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;nginx가 클라이언트의 모든 요청 헤더를 프록시로 전달하도록 한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;이 설정이 없으면 일부 헤더가 생략되거나 기본값으로 설정될 수 있다고 한다.&lt;/b&gt;&lt;br /&gt;인증 및 토큰 요청에서는 &lt;code&gt;Authorization&lt;/code&gt;이나 &lt;code&gt;Cookie&lt;/code&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;h2 data-ke-size=&quot;size26&quot;&gt;마무리&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;내가 직접 개발 서버 환경을 구성했는데 개발자분께서 로컬 환경과 동작이 다르게 나타난다고 하셔서 spring 부터 tomcat 설정 변경, 버전 변경, java 버전변경 등 모두 살펴봐도 시스템 상에서의 서비스 동작에는 아무런 문제가 없었다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;다시 개발자분과 구두로 직접 이야기해보면서 동작에 차이가 발생하는것이 헤더 호출 부분이라는 것을 듣자마자 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;</description>
      <category>DevOps/open source_오픈소스</category>
      <category>header</category>
      <category>nginx</category>
      <category>nginx token</category>
      <category>proxy_pass_request_headers on</category>
      <category>proxy_set_header host $http_host</category>
      <category>underscores_in_headers on</category>
      <category>오블완</category>
      <category>티스토리챌린지</category>
      <author>cwpack0730</author>
      <guid isPermaLink="true">https://cwpack0730.tistory.com/123</guid>
      <comments>https://cwpack0730.tistory.com/123#entry123comment</comments>
      <pubDate>Thu, 14 Nov 2024 23:56:05 +0900</pubDate>
    </item>
    <item>
      <title>[Proxmox] 하이퍼바이저 재시작 후 VM 실행 오류 (no quorum, vm is locked)</title>
      <link>https://cwpack0730.tistory.com/122</link>
      <description>&lt;h2 data-ke-size=&quot;size26&quot;&gt;개요&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;개발환경으로 여러대의 온프레미스를 proxmox 서버로 하이퍼바이저를 구성하여 다양한 개발환경으로 사용중에 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;오늘 비상전력 작업이 있어, 시스템 재기동을 함께 진행하였는데 proxmox가 재기동 후 몇몇 VM들이 실행되지 않는 현상이 발생하였다.&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;이에 proxmox VM 실행 오류 2가지의 해결 방법에 대해 알아보겠다.&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;1. VM is locked (snapshot)&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;현재 100 VMID의 VM이 잠금 표시가 나타나며 실행되지 않는 상황이다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;image.png&quot; data-origin-width=&quot;334&quot; data-origin-height=&quot;373&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bdptOR/btsKH3EqfVf/KvlATUwBmOeM7QK4u5r2hK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bdptOR/btsKH3EqfVf/KvlATUwBmOeM7QK4u5r2hK/img.png&quot; data-alt=&quot;잠금 표시가 나타났다.&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bdptOR/btsKH3EqfVf/KvlATUwBmOeM7QK4u5r2hK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbdptOR%2FbtsKH3EqfVf%2FKvlATUwBmOeM7QK4u5r2hK%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;334&quot; height=&quot;373&quot; data-filename=&quot;image.png&quot; data-origin-width=&quot;334&quot; data-origin-height=&quot;373&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;잠금 표시가 나타났다.&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;정확하게는 &quot;VM is locked (snapshot)&amp;rdquo; 라고 에러가 나타나며 VM이 실행되지 않는데, 이는 표기 그대로 VM이 잠금 상태가 되었기 때문이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;주로 스냅샷 작업 도중 시스템이 중단되거나 재시작된 경우 발생할 수 있다고 한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;proxmox 서버에 cli로 접근하여 다음 명령을 입력해서 상태를 확인한다.&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;b&gt;잠금 상태 확인&lt;/b&gt;&lt;/p&gt;
&lt;pre class=&quot;nginx&quot;&gt;&lt;code&gt;qm listn &amp;lsquo;VMID&amp;rsquo;&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;명령어 결과를 보면 VMID 100번이 실행되지 않는것을 확인할 수 있다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;image 1.png&quot; data-origin-width=&quot;603&quot; data-origin-height=&quot;260&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bwQKPH/btsKIB8oyq4/Bss8ijF2jmupv9rhmwb3mK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bwQKPH/btsKIB8oyq4/Bss8ijF2jmupv9rhmwb3mK/img.png&quot; data-alt=&quot;실행중이지 않기 때문에 PID가 0인 것을 확인할 수 있다.&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bwQKPH/btsKIB8oyq4/Bss8ijF2jmupv9rhmwb3mK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbwQKPH%2FbtsKIB8oyq4%2FBss8ijF2jmupv9rhmwb3mK%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;603&quot; height=&quot;260&quot; data-filename=&quot;image 1.png&quot; data-origin-width=&quot;603&quot; data-origin-height=&quot;260&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;실행중이지 않기 때문에 PID가 0인 것을 확인할 수 있다.&lt;/figcaption&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;다음 명령으로 잠금을 해제하고 vm start를 진행하겠다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;잠금 해제&lt;/b&gt;&lt;/p&gt;
&lt;pre class=&quot;nginx&quot;&gt;&lt;code&gt;qm unlock &amp;lsquo;VMID'&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;&lt;b&gt;VM 실행 (콘솔에서 GUI로 실행하는 것과 동일하다.)&lt;/b&gt;&lt;/p&gt;
&lt;pre class=&quot;livecodeserver&quot;&gt;&lt;code&gt;qm start 'VMID'&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;image 2.png&quot; data-origin-width=&quot;602&quot; data-origin-height=&quot;185&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bxsYxC/btsKIO0LZBi/3JFFR03a8RxQZQWmRm3qu1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bxsYxC/btsKIO0LZBi/3JFFR03a8RxQZQWmRm3qu1/img.png&quot; data-alt=&quot;사진-3&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bxsYxC/btsKIO0LZBi/3JFFR03a8RxQZQWmRm3qu1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbxsYxC%2FbtsKIO0LZBi%2F3JFFR03a8RxQZQWmRm3qu1%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;602&quot; height=&quot;185&quot; data-filename=&quot;image 2.png&quot; data-origin-width=&quot;602&quot; data-origin-height=&quot;185&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;사진-3&lt;/figcaption&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;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;2. cluster not ready - no quorum? (500)&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;오류가 발생한 환경을 잠시 설명하자면,&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;해당 proxmox서버의 경우는 2개의 proxmox서버를 합쳐 cluster로 동작하고 있었는데, 이후 노드 1개가 제외되어 1개의 노드(proxmox 서버)만 동작중에 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이때 vm 실행 시 no quorum 가 발생하여 실행되지 않는데, 이는 proxmox cluster 중에서 노드 중 하나 이상이 down되어 있거나 네트워크 연결이 끊겼을 때 발생한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style2&quot;&gt;&lt;span style=&quot;color: #006dd7;&quot;&gt;&lt;b&gt;! proxmox는 홀수 개의 노드로 구성하는것이 좋다. &lt;br /&gt;예를 들어 3개 노드 cluster에서라면, 2개 이상의 노드가 살아 있어야 쿼럼을 유지할 수 있다.&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;s&gt;&lt;span style=&quot;color: #006dd7;&quot;&gt;(마치 쿠버네&amp;hellip;..)&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/span&gt;&lt;/s&gt;&lt;/blockquote&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;즉, 쿼럼을 확보하러면 노드 수를 늘리거나 down된 노드를 다시 켜는 방법이 일반적이다.&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개 단일로 사용중이기 때문에 vm 실행 시 쿼럼 인증(요구) 설정을 해제하여 동작시켰다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;다음 명령으로 status를 확인한다.&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;b&gt;클러스터 상태 및 쿼럼 여부 확인&lt;/b&gt;&lt;/p&gt;
&lt;pre class=&quot;ebnf&quot;&gt;&lt;code&gt;pvecm status&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;image 3.png&quot; data-origin-width=&quot;671&quot; data-origin-height=&quot;922&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/NeD8Z/btsKIDd5Eb3/NxD9Jv9LIc8knsNeuOIgGk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/NeD8Z/btsKIDd5Eb3/NxD9Jv9LIc8knsNeuOIgGk/img.png&quot; data-alt=&quot;사진-4&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/NeD8Z/btsKIDd5Eb3/NxD9Jv9LIc8knsNeuOIgGk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FNeD8Z%2FbtsKIDd5Eb3%2FNxD9Jv9LIc8knsNeuOIgGk%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;671&quot; height=&quot;922&quot; data-filename=&quot;image 3.png&quot; data-origin-width=&quot;671&quot; data-origin-height=&quot;922&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;사진-4&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;1, 2는 하이퍼바이저 1, 2를 뜻한다.&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;Expected votes, Total votes를 확인하면 cluster가 쿼럼을 얼마나 유지하는 지 확인할 수 있다.&lt;/li&gt;
&lt;/ul&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;다음 명령을 입력하여 쿼럼 확인 절차를 비활성화한다.&lt;/p&gt;
&lt;pre class=&quot;angelscript&quot;&gt;&lt;code&gt;pvecm expected 1&lt;/code&gt;&lt;/pre&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;image 4.png&quot; data-origin-width=&quot;707&quot; data-origin-height=&quot;639&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/ccmBKm/btsKH4DhYXg/gvkcui6l32L9EqAph2IFiK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/ccmBKm/btsKH4DhYXg/gvkcui6l32L9EqAph2IFiK/img.png&quot; data-alt=&quot;사진-5&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/ccmBKm/btsKH4DhYXg/gvkcui6l32L9EqAph2IFiK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FccmBKm%2FbtsKH4DhYXg%2Fgvkcui6l32L9EqAph2IFiK%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;707&quot; height=&quot;639&quot; data-filename=&quot;image 4.png&quot; data-origin-width=&quot;707&quot; data-origin-height=&quot;639&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;사진-5&lt;/figcaption&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;</description>
      <category>DevOps/virtualization_가상화</category>
      <category>cluster not ready - no quorum? (500)</category>
      <category>no quorum</category>
      <category>Proxmox</category>
      <category>vm is locked</category>
      <category>vm is locked (snapshot)</category>
      <category>vm 실행 오류</category>
      <category>vm 잠금</category>
      <category>오블완</category>
      <category>티스토리챌린지</category>
      <author>cwpack0730</author>
      <guid isPermaLink="true">https://cwpack0730.tistory.com/122</guid>
      <comments>https://cwpack0730.tistory.com/122#entry122comment</comments>
      <pubDate>Wed, 13 Nov 2024 22:51:01 +0900</pubDate>
    </item>
  </channel>
</rss>