All Posts By

manvscloud

IT/Linux/Kubernetes

Windows Server 2022의 등장과 TLS 1.3 지원

안녕하세요. ManVSCloud 김수현입니다.

벌써 Windows Server 2022가 출시됐습니다.
2022가 나왔을 거라고 전혀 생각하지도 못했는데 퇴근길 뜻밖에 2022 출시 소식을 알게되어 오늘은 Windows Server 2022에 대해 포스팅해볼까 합니다.


Windows Server 2022

2021년 09월 02일 Windows Server 2022가 출시되었습니다.
외관상 크게 달라진 점은 없어보입니다.

우선 Windows Server 2022의 새로운 기능들은 위 링크에서 잘 설명되어 있기때문에 대략적인 부분만 정리해보았습니다.

  • 보안 코어 서버 사용 가능
  • TLS 1.3 지원
    Windows Server 의 경우 TLS 1.3 Client/Server 가 2022부터 지원됩니다.
https://www.a10networks.com/blog/key-differences-between-tls-1-2-and-tls-1-3/
https://caniuse.com/tls1-3
  • SMB(서버 메시지 블록): 보안에 가장 민감한 SMB AES-256 암호화
  • Azure 하이브리드 기능이 강화되었습니다.
  • TCP, UDP 성능 향상

등 새로운 기능들이 꽤 생긴 것이 확인됐습니다.
무엇보다 Azure를 사용했을 때 이점이 추가적으로 생겨 Azure 사용자라면 이 부분을 확인해보아야겠습니다.

또한 최대 RAM이 기존 2019 버전 때보다 2배로 늘었습니다.
(Windows Server 2019에는 최대 RAM이 24TB 였습니다.)

최대 RAM48TB

Windows Server 2022에서 IIS 역할 추가 후 확인 시 HTTPS 바인딩 시
아래 이미지와 같이 기존과 조금 다르게 체크하는 부분이 생겼습니다.

? 제거된 기능
  • iSNS(Internet Storage Name Service) 서버 서비스

iSNS 서비스는 Windows Server 2022 에서 제거된다고 합니다.

” 보호된 패브릭 및 보호된 VM(Virtual Machines), 명령 프롬프트(CMD) 창에서 sconfig.cmd를 실행하여 SConfig 시작, WDS(Windows 배포 서비스) boot.wim 이미지 배포 ” 이 세 가지는 더 이상 개발하지 않는 기능이라고 하네요.


Personal Comments

오늘은 Windows Server 2022 소식을 알아보았습니다.
그나저나 벌써 2022가 나올줄은 생각도 못했네요…

그런데 막상 새로운 기능이 추가됐다고 해서 봤는데 아직 2022 환경에서 서비스 운영을 직접 해본 것이 아니라 몇가지를 제외하곤 크게 달라진 점을 못느끼겠습니다.

긴 글 읽어주셔서 감사합니다.


AWS

[AWS] EKS Fargate Logging Setting – Sharing failure experiences

안녕하세요. ManVSCloud 김수현입니다.

09월 12일 AKOS(AWS Kubernetes Online Study)가 마무리되었습니다.
CloudNet@ 가시다님과 2021년도에 ANOS, DKOS, AKOS 총 3회의 스터디를 진행했습니다.

다시 한 번 가시다님에게 감사의 인사 올립니다.
이번 포스팅은 AKOS의 졸업 과제를 포스팅 해보았습니다.


Fargate logging

Fargate logging 설정을 해보았습니다.

우선 결과적으로는 실패했습니다.
아래 방식대로 진행하는데에 있어 로그를 중앙 집중화할 때 CloudWatch와 결합하여 사용할 AWS용 Fluent Bit에 대해 자세히 몰랐기 때문이라 해당 포스팅 이후 Fluent Bit에 대해 추가적인 공부를 한 뒤 성공시킬 것입니다.

우선 Fagate 프로필은 이미 생성된 상태로 진행했습니다.

먼저 로그 라우터를 구성하기 위해 아래 .yaml 파일을 생성하였습니다.

vi fp-demo.yaml

kind: Namespace
apiVersion: v1
metadata:
  name: fp-demo
  labels:
    aws-observability: enabled
(aks-user@myeks:default) [root@myeks-host ~]# kubectl apply -f fp-demo.yaml
namespace/fp-demo created
(aks-user@myeks:default) [root@myeks-host ~]# kubens fp-demo
Context "aks-user@myeks.ap-northeast-2.eksctl.io" modified.
Active namespace is "fp-demo".
(aks-user@myeks:fp-demo) [root@myeks-host ~]# 

cloudwatch_logs 플러그인을 사용하기 위해 아래와 같은 .yaml도 생성해주었습니다.

vi aws-logging-cloudwatch.yaml

kind: ConfigMap
apiVersion: v1
metadata:
  name: aws-logging
  namespace: fp-demo
data:
  output.conf: |
    [OUTPUT]
        Name cloudwatch_logs
        Match   *
        region ap-northeast-2
        log_group_name fluent-bit-cloudwatch
        log_stream_prefix from-fluent-bit-
        auto_create_group true

  parsers.conf: |
    [PARSER]
        Name crio
        Format Regex
        Regex ^(?<time>[^ ]+) (?<stream>stdout|stderr) (?<logtag>P|F) (?<log>.*)$
        Time_Key    time
        Time_Format %Y-%m-%dT%H:%M:%S.%L%z

  filters.conf: |
     [FILTER]
        Name parser
        Match *
        Key_name log
        Parser crio
        Reserve_Data On
        Preserve_Key On

이 부분을 생성해줄 때 namespace 와 region 부분을 자신에게 맞게 설정하는 것이 중요합니다.

(aks-user@myeks:fp-demo) [root@myeks-host ~]# kubectl apply -f aws-logging-cloudwatch.yaml
configmap/aws-logging created

이후 CloudWatch IAM에 적용할 권한을 curl로 가져왔습니다.

(aks-user@myeks:fp-demo) [root@myeks-host ~]# curl -o permissions.json https://raw.githubusercontent.com/aws-samples/amazon-eks-fluent-logging-examples/mainline/examples/fargate/cloudwatchlogs/permissions.json
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100   215  100   215    0     0    637      0 --:--:-- --:--:-- --:--:--   636

위에서 받아온 파일을 이용하여 아래와 같이 정책을 생성하였습니다.

(aks-user@myeks:fp-demo) [root@myeks-host ~]# aws iam create-policy --policy-name eks-fargate-logging-policy --policy-document file://permissions.json

아래 명령어로 attach 해줍시다. 중요하게 넣어야할 부분은
“내 계정”, “위에서 생성한 정책”, “fagate role 이름” 정도인 것같습니다.

(aks-user@myeks:fp-demo) [root@myeks-host ~]# aws iam attach-role-policy \
>   --policy-arn arn:aws:iam::내계정:policy/eks-fargate-logging-policy \
>   --role-name 역할이름
내 계정
역할 이름

권한 부분을 마친 뒤 테스트를 위해 아래와 같이 pod를 하나 생성하였습니다.

nginx-pod.yaml

apiVersion: apps/v1
kind: Deployment
metadata:
  name: sample-app
  namespace: fp-demo
spec:
  replicas: 3
  selector:
    matchLabels:
      app: nginx
  template:
    metadata:
      labels:
        app: nginx
    spec:
      containers:
        - name: nginx
          image: nginx:latest
          ports:
            - name: http
              containerPort: 80
(aks-user@myeks:fp-demo) [root@myeks-host ~]# kubectl apply -f nginx-pod.yaml
deployment.apps/sample-app created

pod 생성 이후 아래 명령어로 logging 부분을 확인해보려 했으나 정상적으로 logging에 관련된 event가 발견되지 않았습니다.

(aks-user@myeks:fp-demo) [root@myeks-host ~]# kubectl get pod
NAME                             READY   STATUS    RESTARTS   AGE
kube-ops-view-5557846b44-ghhx7   1/1     Running   0          7m14s
sample-app-86b8cc866b-8njpn      1/1     Running   0          13m
sample-app-86b8cc866b-gz4x2      1/1     Running   0          13m
sample-app-86b8cc866b-l7gvb      1/1     Running   0          13m
(aks-user@myeks:fp-demo) [root@myeks-host ~]# 
(aks-user@myeks:fp-demo) [root@myeks-host ~]# kubectl describe pod sample-app-86b8cc866b-8njpn
Name:         sample-app-86b8cc866b-8njpn
Namespace:    fp-demo
Priority:     0
Node:         ip-192-168-2-43.ap-northeast-2.compute.internal/192.168.2.43
Start Time:   Sun, 19 Sep 2021 21:53:01 +0900
Labels:       app=nginx
              pod-template-hash=86b8cc866b
Annotations:  kubernetes.io/psp: eks.privileged
Status:       Running
IP:           192.168.2.137
IPs:
  IP:           192.168.2.137
Controlled By:  ReplicaSet/sample-app-86b8cc866b
Containers:
  nginx:
    Container ID:   docker://a5176ad1add9dcf2fd024e577f9c7e8af51c74d63f0c435c387220cce55ebada
    Image:          nginx:latest
    Image ID:       docker-pullable://nginx@sha256:853b221d3341add7aaadf5f81dd088ea943ab9c918766e295321294b035f3f3e
    Port:           80/TCP
    Host Port:      0/TCP
    State:          Running
      Started:      Sun, 19 Sep 2021 21:53:05 +0900
    Ready:          True
    Restart Count:  0
    Environment:    <none>
    Mounts:
      /var/run/secrets/kubernetes.io/serviceaccount from kube-api-access-mpdh4 (ro)
Conditions:
  Type              Status
  Initialized       True 
  Ready             True 
  ContainersReady   True 
  PodScheduled      True 
Volumes:
  kube-api-access-mpdh4:
    Type:                    Projected (a volume that contains injected data from multiple sources)
    TokenExpirationSeconds:  3607
    ConfigMapName:           kube-root-ca.crt
    ConfigMapOptional:       <nil>
    DownwardAPI:             true
QoS Class:                   BestEffort
Node-Selectors:              <none>
Tolerations:                 node.kubernetes.io/not-ready:NoExecute op=Exists for 300s
                             node.kubernetes.io/unreachable:NoExecute op=Exists for 300s
Events:
  Type    Reason     Age   From               Message
  ----    ------     ----  ----               -------
  Normal  Scheduled  13m   default-scheduler  Successfully assigned fp-demo/sample-app-86b8cc866b-8njpn to ip-192-168-2-43.ap-northeast-2.compute.internal
  Normal  Pulling    13m   kubelet            Pulling image "nginx:latest"
  Normal  Pulled     13m   kubelet            Successfully pulled image "nginx:latest" in 2.853770826s
  Normal  Created    13m   kubelet            Created container nginx
  Normal  Started    13m   kubelet            Started container nginx

이번 테스트는 실패했지만 추가적인 트러블 슈팅 이후 추가 포스팅 해보도록 하겠습니다.


Personal Comments

이번 졸업 과제는 바쁜 와중에 허겁지겁 하느라 고생을 한 것같습니다.
원래 다양한 주제를 고민했었는데 주말마저 당직이라 긴 시간을 투자하지 못해 아쉬움이 있습니다.

최근에 EKS Anywhere가 출시되어 이 부분을 졸업 과제로 해보는건 어떨까 생각했지만 VMware vSphere 사용하기도 애매하고 시간도 부족해 혹시라도 VMware vSphere를 사용하시는 분이 있다면 참고하여 테스트 해보시라고 아래에 링크를 남깁니다.

가시다님 한 해 스터디 준비하시느라 고생 많으셨습니다.
CloudNet@ 운영진분들에게 모두 감사의 인사드립니다.

긴 글 읽어주셔서 감사합니다.


Problems found

포스팅을 누르는 순간 실패한 원인을 찾은듯 합니다.

켜져있던 웹 창을 정리하던 중 helm chart 를 보자마자 뭔가 이상하다는 걸 알아챘습니다.
fagate logging인데 pod가 fagate로 동작하지 않는듯한?…

이후 포스팅은 이 부분을 해결하고 Fluent Bit에 대해 알아본 것을 공유하는 포스팅이 되겠네요.


NCP

[NCP] 삶의 질을 높여주는 Image Optimizer를 이용한 이미지 리사이징

안녕하세요. ManVSCloud 김수현입니다.

오늘은 Image Optimizer에 대한 포스팅을 해보았습니다.
Image Optimizer에 대한 글은 이미 네이버 클라우드 플랫폼에서도 많은 글과 영상으로 만들어두어 접근하기 쉬운 상태입니다.

제가 직접 Image Optimizer를 사용해본 소감에 대해 써보았으니 사용 전에 어떻게 사용하면 좋을지 참고하실 때 도움되리라 생각됩니다.


왜 Naver Cloud Platform의 IMAGE OPTIMIZER인가?

  • 쉬운 사용법
    (크기, 워터마크, 필터 등 UI를 통해 원하는 효과를 체크하고 수치만 입력하면 됩니다.)
    ([예시 보기]가 있어 예시를 통해 쉽게 사용할 수 있습니다.)
  • 미리 보기 제공
    (미리 보기를 제공하여 조금 더 간편함을 느낄 수 있었습니다.)
  • 콘솔에서 효과 추가
    (콘솔에서 원하는 효과만 선택하여 넣는 방식입니다.)

타 클라우드를 이용한 이미지 리사이징 경험

우선 이미지 리사이징에 대한 경험은 크게 네이버 클라우드 플랫폼과 AWS 에서 사용해보았습니다. AWS에서는 이미지 자동 리사이징을 진행해보았으며 Azure 역시 Azure Event Grid를 이용하여 이미지 리사이징이 가능한 것을 금방 찾을 수 있었습니다.

개발자가 아닌 입장에서 코드 개발 부분이 정말 막막했었습니다.

물론 이미지 자동 리사이징을 이용하여 이미지 사이즈가 고정적이지 않을 경우 개발적인 부분이 사용될 수 밖에 없겠지만 이미지 사이즈가 고정적으로 정해져있는 상태에서 빠르게 추가하는 방식으로 사용할 수는 없을까라는 생각을 하게되었습니다.

네이버 클라우드에서 Image Optimizer 서비스를 이용하면 가능합니다.
물론 자동 리사이징의 경우 동일하게 개발적인 요소가 사용되겠지만 Image Optimizer를 이용한다면 고정적인 사이즈에 대해서 리사이징은 충분히 쉽게 가능하겠다라고 생각했습니다.


Image Optimizer를 이용한 이미지 리사이징

? Object Storage

우선 Object Storage를 생성해주어야합니다.
Object Storage에 이미지를 업로드 하고 Image Optimizer를 이용하여 해당 이미지에 여러 효과를 줘보도록 하겠습니다.

버킷 이름은 고유합니다.
원하시는 고유한 버킷 이름을 정해주도록 합시다.
파일에 대한 공개 여부를 설정하는 곳입니다.
생성한 Bucket에 이미지를 리사이징 할 이미지를 업로드 해줍시다.

image 라는 폴더를 하나 생성한 후 image 폴더 안에 이미지를 업로드 했고
해당 폴더를 공개하여 외부에서 접근할 수 있도록 해주었습니다.


? Image Optimizer

이제 Image Optimizer를 생성해줄 차례입니다.

Image Optimizer 프로젝트를 생성해주고 프로젝트 이름을 입력한 뒤
원본 이미지 저장소는 위에서 만들어준 Object Storage를 선택해줍시다.

서비스 프로토콜과 서비스 도메인을 정해주어야합니다.

“고객 보유 도메인”을 선택할 경우 당연히 DNS와 연결도 해주어야합니다.
그리고 HTTP로 하니까 계속 오류가 발생해서 HTTPS로 설정해주었습니다.
HTTP로 설정하니까 CDN 도메인 접속 시 이미지를 정상적으로 불러오지 못해서 이런저런 테스트를 해봤는데 HTTPS에서만 정상 접근이 가능하다는 걸 알게됐습니다.
(음?.. HTTP는 왜 있는거지..? 내가 설정을 잘못한 부분이 있는건가..?)

위 이미지 처럼 다음 및 생성을 해주고 최종 설정은 다음과 같이 설정했습니다.
HTTP에서 이미지를 정상적으로 못불러와서 ALL로 설정하고 HTTPS에서 정상 이미지 출력이 확인되었습니다.

자, 그럼 이제 쿼리스트링을 만들어 봅시다.

크기, 워터마크, 필터 별로 원하는 쿼리스트링을 만들 수 있습니다.
리사이즈를 해주고 가로,세로 길이 변경 및 품질을 변경해줬으며 흑백으로 출력되도록 해줬습니다.
이게 참 마음에 들었던 게 이대로 클릭하고 수치만 입력했는데 쿼리스트링이 자동으로 만들어져서 자동 입력된다는게 좋았습니다.
쿼리스트링 입력 후 생성된 부분에 대해 변환 이미지 미리보기를 실행할 수 있습니다.
미리보기 결과입니다. 멋지지않나요?

미리 보기와 같이 이미지가 실제로 잘 반영되었을지 URL로 접속하여 결과를 보도록하겠습니다.


Result

제가 원하는대로 이미지가 잘 변환되었습니다.
잘 출력됐네요.

하지만 Image Optimizer에 등록되지 않은 쿼리스트링을 사용할 경우 404 Error가 발생하게됩니다.

쿼리스트링을 수동으로 입력하지 않고 자동으로 이미지를 변환하기 위해서는 Cloud Functions을 사용해야할 것으로 보입니다.


Personal Comments

Image Optimizer에 대한 포스팅을 8월부터 준비중이었으나 8월 말에 네이버 클라우드 플랫폼 공식 블로그에서 Image Optimizer에 대한 포스팅이 먼저 올라왔습니다.

아래 포스팅에서 이미 기능적인 설명이 다 적혀져있어서 오늘 포스팅은 기능적인 부분은 제외하고 AWS에서 이렇게 사용해봤는데 이런 경우엔 네이버 클라우드의 Image Optimizer가 좋은 것같다라는 경험을 이야기 해보고싶었습니다.

아래 네이버 클라우드 플랫폼 공식 블로그에 포스팅된 Image Optimizer에 대한 글도 참고하면 훨씬 사용에 도움될 것입니다.


NCP

[NCP] AWS to NCloud Server Migration – #2편

안녕하세요. ManVSCloud 김수현입니다.

오늘 “AWS TO NCLOUD SERVER MIGRATION – #2편”에서는 간단한 Install과 제가 기본적으로 설정하는 설정값들을 보여드리며 정보를 공유하고자 합니다.


Base Install

[root@manvscloud-web-pub-kr1 ~]# cat /etc/redhat-release
CentOS Linux release 7.8.2003 (Core)

“[NCP] AWS TO NCLOUD SERVER MIGRATION – #1편”에서 생성한 서버에 기본 설치와 설정 작업을 진행하기로 했습니다.

? Nginx 설치
vi /etc/yum.repos.d/Nginx.repo
[nginx]
name=nginx repo
baseurl=http://nginx.org/packages/centos/7/$basearch/
gpgcheck=0
enabled=1
[root@manvscloud-web-pub-kr1 ~]# yum install nginx -y

CentOS 7에서는 위와 같이 repo를 추가 후 설치를 진행하면 설치간에 큰 어려움은 없을 것입니다.

이후 LB를 붙이면 Nginx Access Log에서 LB의 로그로 나오기때문에 Client IP를 보기 위해서는 nginx -V 2>&1 | grep ‘http_realip_module’ 로 확인하여 http_realip_module이 있는지 확인이 되어야합니다.

RPM 설치 시 이 모듈이 들어가있는데 컴파일로 설치를 진행할 경우 이 부분을 잘 체크해주셔야합니다.

[root@manvscloud-web-pub-kr1 ~]# nginx -V 2>&1 | grep 'http_realip_module'
configure arguments: --prefix=/usr/share/nginx --sbin-path=/usr/sbin/nginx --modules-path=/usr/lib64/nginx/modules --conf-path=/etc/nginx/nginx.conf --error-log-path=/var/log/nginx/error.log --http-log-path=/var/log/nginx/access.log --http-client-body-temp-path=/var/lib/nginx/tmp/client_body --http-proxy-temp-path=/var/lib/nginx/tmp/proxy --http-fastcgi-temp-path=/var/lib/nginx/tmp/fastcgi --http-uwsgi-temp-path=/var/lib/nginx/tmp/uwsgi --http-scgi-temp-path=/var/lib/nginx/tmp/scgi --pid-path=/run/nginx.pid --lock-path=/run/lock/subsys/nginx --user=nginx --group=nginx --with-compat --with-debug --with-file-aio --with-google_perftools_module --with-http_addition_module --with-http_auth_request_module --with-http_dav_module --with-http_degradation_module --with-http_flv_module --with-http_gunzip_module --with-http_gzip_static_module --with-http_image_filter_module=dynamic --with-http_mp4_module --with-http_perl_module=dynamic --with-http_random_index_module --with-http_realip_module --with-http_secure_link_module --with-http_slice_module --with-http_ssl_module --with-http_stub_status_module --with-http_sub_module --with-http_v2_module --with-http_xslt_module=dynamic --with-mail=dynamic --with-mail_ssl_module --with-pcre --with-pcre-jit --with-stream=dynamic --with-stream_ssl_module --with-stream_ssl_preread_module --with-threads --with-cc-opt='-O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector-strong --param=ssp-buffer-size=4 -grecord-gcc-switches -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -m64 -mtune=generic' --with-ld-opt='-Wl,-z,relro -specs=/usr/lib/rpm/redhat/redhat-hardened-ld -Wl,-E'
? PHP 설치
[root@manvscloud-web-pub-kr1 src]# yum -y install http://rpms.remirepo.net/enterprise/remi-release-7.rpm
[root@manvscloud-web-pub-kr1 src]# yum -y install epel-release yum-utils
[root@manvscloud-web-pub-kr1 src]# yum-config-manager --disable remi-php54
[root@manvscloud-web-pub-kr1 src]# yum-config-manager --enable remi-php74
[root@manvscloud-web-pub-kr1 src]# yum install -y php php-json php-cli php-gd php-pear php-common php-mysqlnd php-fpm php-mbstring php-opcache php-process php-xmlrpc php-pdo php-xml php-bcmath php-devel php-zip php-mcrypt
[root@manvscloud-web-pub-kr1 src]# yum groupinstall " Development Tools" -y
[root@manvscloud-web-pub-kr1 src]# yum install ImageMagick ImageMagick-devel -y
[root@manvscloud-web-pub-kr1 src]# pecl install imagick
[root@manvscloud-web-pub-kr1 src]# echo "extension=imagick.so" >> /etc/php.ini
[root@manvscloud-web-pub-kr1 src]# systemctl enable php-fpm
[root@manvscloud-web-pub-kr1 src]# systemctl start php-fpm

PHP는 remi를 이용하여 설치를 진행했습니다.
Migration할 때 주의할 점 중 하나는 PHP의 모듈을 맞춰주는 것입니다.
기존 서버와 이전하는 서버에서 php -m 로 확인해줍시다.

? MariaDB 설치
vi /etc/yum.repos.d/MariaDB.repo
[mariadb]
name = MariaDB
baseurl = http://yum.mariadb.org/10.5/centos7-amd64
gpgkey=https://yum.mariadb.org/RPM-GPG-KEY-MariaDB
gpgcheck=1
yum install MariaDB-server MariaDB-client -y

MariaDB도 repo만 추가해주면 쉽게 설치할 수 있습니다.
MariaDB의 버전은 baseurl 부분에서 10.5 부분을 원하시는 버전으로 변경하면 원하시는 버전으로 설치가 가능합니다.

? Memcached

Memcached의 경우 개인 사이트 운영에 큰 효과를 가져다주지 못한다는 평이 있었으나 개인 블로그 용도뿐만 아니라 다양한 테스트를 해볼 예정이기에 memcached를 도입하기로 했습니다.

[root@manvscloud-web-pub-kr1 ~]# yum clean all
[root@manvscloud-web-pub-kr1 ~]# yum update -y
[root@manvscloud-web-pub-kr1 ~]# yum install memcached -y
[root@manvscloud-web-pub-kr1 ~]# cat /etc/sysconfig/memcached 
PORT="11211"
USER="memcached"
MAXCONN="1024"
CACHESIZE="64"
OPTIONS=""

/etc/sysconfig/memcached 값을 아래와 같이 변경해주었습니다.

[root@manvscloud-web-pub-kr1 ~]# cp -avp /etc/sysconfig/memcached /etc/sysconfig/memcached_org
[root@manvscloud-web-pub-kr1 ~]# vi /etc/sysconfig/memcached
PORT="11111"
USER="memcached"
MAXCONN="2048"
CACHESIZE="4096"
OPTIONS=""

[root@manvscloud-web-pub-kr1 ~]# systemctl enable memcached
[root@manvscloud-web-pub-kr1 ~]# systemctl start memcached

php-memcached도 설치해줍시다!

[root@manvscloud-web-pub-kr1 ~]# yum install php-memcached -y

php.ini를 보면 session.save_handler가 files로 되어있습니다.

이를 memcached로 변경해줄 것입니다.
아래처럼 작업을 진행할 수 있습니다.

[root@manvscloud-web-pub-kr1 ~]# cp -avp /etc/php.ini /etc/php.ini_org
[root@manvscloud-web-pub-kr1 ~]# cat -n /etc/php.ini | grep -E "session.save_handler|session.save_path"
  1214	session.save_handler = files
  1222	;     session.save_path = "N;/path"
  1238	;     session.save_path = "N;MODE;/path"
  1247	;session.save_path = "/tmp"
  1332	;       (see session.save_path above), then garbage collection does *not*
[root@manvscloud-web-pub-kr1 ~]# sed -i '1214s/files/memcached/g' /etc/php.ini
[root@manvscloud-web-pub-kr1 ~]# perl -p -i -e '$.==1222 and print "session.save_path = \"127.0.0.1:11111\"\n"' /etc/php.ini
[root@manvscloud-web-pub-kr1 ~]# cat -n /etc/php.ini | grep -E "session.save_handler|session.save_path "
  1214	session.save_handler = memcached
  1222	session.save_path = "127.0.0.1:11111"
  1223	;     session.save_path = "N;/path"
  1239	;     session.save_path = "N;MODE;/path"
  1248	;session.save_path = "/tmp"
  1333	;       (see session.save_path above), then garbage collection does *not*
[root@manvscloud-web-pub-kr1 ~]# systemctl restart memcached
[root@manvscloud-web-pub-kr1 ~]# systemctl restart php-fpm

그냥 블로그만 운영하던 서버다보니 크게 설치할 것들이 별로 없습니다.
이제 기본 세팅만 진행해보도록 합시다.


Default Settings

우선 sshd 설정을 먼저 진행하기로 했습니다.
설정 조건은 아래와 같습니다.

  • SSH 포트를 22에서 15222로 변경할 것
  • manvscloud 사용자 생성 및 sudo로 root권한 사용
  • root로 바로 접속할 수 없도록 설정
  • 접속 시 Password가 아닌 Public Key 파일을 이용하여 로그인
[root@manvscloud-web-pub-kr1 ~]# useradd manvscloud
// 먼저 서버에 key 파일을 업로드 한 뒤 작업을 진행하였습니다.

[root@manvscloud-web-pub-kr1 ~]# chmod 400 manvscloud.pem
[root@manvscloud-web-pub-kr1 ~]# mkdir /home/manvscloud/.ssh
[root@manvscloud-web-pub-kr1 ~]# ssh-keygen -y -f manvscloud.pem > /home/manvscloud/.ssh/authorized_keys
[root@manvscloud-web-pub-kr1 ~]# chown -R manvscloud:manvscloud /home/manvscloud/.ssh
[root@manvscloud-web-pub-kr1 ~]# chmod 700 /home/manvscloud/.ssh
[root@manvscloud-web-pub-kr1 ~]# chmod 600 /home/manvscloud/.ssh/authorized_keys

[root@manvscloud-web-pub-kr1 ~]# id manvscloud
uid=1001(manvscloud) gid=1001(manvscloud) groups=1001(manvscloud)
[root@manvscloud-web-pub-kr1 ~]# gpasswd -a manvscloud wheel
Adding user manvscloud to group wheel
[root@manvscloud-web-pub-kr1 ~]# gpasswd -a manvscloud systemd-journal
Adding user manvscloud to group systemd-journal

[root@manvscloud-web-pub-kr1 ~]# grep -E "wheel|systemd-journal" /etc/group
wheel:x:10:manvscloud
systemd-journal:x:190:manvscloud

[root@manvscloud-web-pub-kr1 ~]# cat << EOF > /etc/sudoers.d/10-manvscloud-users
> # User rules for manvscloud
> manvscloud ALL=(ALL) NOPASSWD:ALL
> EOF
[root@manvscloud-web-pub-kr1 ~]# chmod 440 /etc/sudoers.d/10-manvscloud-users
[root@manvscloud-web-pub-kr1 ~]# passwd -l root
Locking password for user root.
passwd: Success

///etc/ssh/sshd_config 파일 수정

[root@manvscloud-web-pub-kr1 ~]# cat -n /etc/ssh/sshd_config  | grep -E "Port|PermitRootLogin|PasswordAuthentication"
    17	#Port 22
    38	PermitRootLogin yes
    63	#PasswordAuthentication yes
    65	PasswordAuthentication yes
    88	# PasswordAuthentication.  Depending on your PAM configuration,
    90	# the setting of "PermitRootLogin without-password".
    92	# PAM authentication, then enable this but set PasswordAuthentication
   100	#GatewayPorts no


[root@manvscloud-web-pub-kr1 ~]# cp -avp /etc/ssh/sshd_config /etc/ssh/sshd_config_org
[root@manvscloud-web-pub-kr1 ~]# sed -i '38s/yes/no/g' /etc/ssh/sshd_config
[root@manvscloud-web-pub-kr1 ~]# sed -i '65s/yes/no/g' /etc/ssh/sshd_config
[root@manvscloud-web-pub-kr1 ~]# perl -p -i -e '$.==17 and print " Port 15222\n"' /etc/ssh/sshd_config

[root@manvscloud-web-pub-kr1 ~]# systemctl restart sshd

다음은 php설정을 해줄 것입니다.

우선 php.ini 파일과 www.conf 파일을 수정할건데 pm 값을 조정하는 최적화 작업은 기본 설정에서 제외하였습니다.

php.ini파일에서는 아래와 같이 값을 변경해주었습니다.

   date.timezone = "Asia/Seoul"
   expose_php = Off
   short_open_tag = On
   allow_url_fopen = Off
   max_execution_time = 60
   memory_limit = 128M

이번 이전에서 포인트로 정한 php-fpm의 파일 소켓 통신을 설정하는 부분입니다.
www.conf에서 기존 listen이 127.0.0.1:9000로 TCP/IP 소켓 통신이 기본값인데 이를 /run/php-fpm/www.sock 으로 변경하여 Unix Socket 통신이 되도록 하였습니다.

[root@manvscloud-web-pub-kr1 ~]# cat -n /etc/php-fpm.d/www.conf | grep listen | grep -v ";"
    38	listen = 127.0.0.1:9000
    64	listen.allowed_clients = 127.0.0.1
[root@manvscloud-web-pub-kr1 ~]# sed -i '38s$127.0.0.1:9000$/run/php-fpm/www.sock$g' /etc/php-fpm.d/www.conf
[root@manvscloud-web-pub-kr1 ~]# cat -n /etc/php-fpm.d/www.conf | grep listen | grep -v ";"
    38	listen = /run/php-fpm/www.sock
    64	listen.allowed_clients = 127.0.0.1

이 Unix Socket 방식은 TCP의 소켓과 동일하게 API로 데이터를 주고받을 수 있는데 이는 로컬 파일 기반 소켓이라서 Nginx와 함께 쓰기 위해 php-fpm를 같은 로컬내에 존재하도록 하였습니다. 이 방식은 localhost 내에 프로세스 간 통신이라 속도도 우월하고 메모리 소모를 줄일 수 있습니다.

? nofile 설정
vi /etc/security/limits.conf
*               soft    nofile          65535
*               hard    nofile          65535

위 설정을 해주지 않으면 파일 열기 최대 개수가 soft/1024, hard/4096이 default인 것으로 기억합니다.

? History
[root@manvscloud-web-pub-kr1 ~]# cat -n /etc/profile | grep HISTFILESIZE
    78	HISTFILESIZE=0
[root@manvscloud-web-pub-kr1 ~]# sed -i '78s/0/5000/g' /etc/profile
[root@manvscloud-web-pub-kr1 ~]# cat -n /etc/profile | grep HISTFILESIZE
    78	HISTFILESIZE=5000
[root@manvscloud-web-pub-kr1 ~]# echo export HISTTIMEFORMAT=\"[%F %T] \" > /etc/profile.d/bash_history.sh
[root@manvscloud-web-pub-kr1 ~]# chmod 755 /etc/profile.d/bash_history.sh
[root@manvscloud-web-pub-kr1 ~]# init 6

저는 history를 자주 이용하는 편입니다.
그런데 기본 설정을 하고 다음 날 서버에 접속했는데 history가 하나도 남아있지 않아 확인해보니 HISTFILESIZE가 0으로 되어있어 이를 변경해주기로 하였습니다.

값을 5000으로 변경해주고 HISTTIMEFORMAT을 주어 history에 시간대도 확인할 수 있도록 설정해두었습니다.

Nginx와 MariaDB 설정은 다음 #3편에서 스토리지 추가 및 NAS 연결과 함께 설정을 진행할 것입니다.


Personal Comments

#3편에서는 “ManVSCloud 신규 Architecture” 공개와 함께 스토리지 추가 및 NAS 연결에 대한 포스팅을 진행할 것입니다.

제가 이번에 진행하는 AWS to NCloud 이전 작업에서 설정되는 부분이나 이렇게 이전이 될 수도 있구나하는 걸 재밌게 봐주셨으면 합니다.

긴 글 읽어주셔서 감사합니다.


NCP

[NCP] AWS to NCloud Server Migration – #1편

안녕하세요. ManVSCloud 김수현입니다.

이미지 출처 : https://www.mk.co.kr/news/it/view/2021/08/819941/

네이버 클라우드의 빠른 성장이 지속되고 있습니다.
현재 국내 클라우드 기업중 네이버 클라우드가 독보적으로No.1이라 봅니다.

올해 7월 네이버 클라우드는 공공기관 시장에서 97.64%의 점유율의 성적을 보이며
왜 네이버 클라우드인지 증명해냈습니다.

제 manvscloud.com 블로그도 이제 AWS를 떠나 네이버 클라우드 플랫폼으로 이전하게 되었습니다.

현재 전체적인 환경을 파악하고 있으며 네이버 클라우드 플랫폼에서는 기존 AWS에서 사용하던 아키텍처와 다르게 사용하고 싶어 새로운 아키텍처를 구상하고 있습니다.

네이버 클라우드 플랫폼의 기술력과 발전 가능성을 고려해본다면 먼저 네이버 클라우드를 시작하고 싶다라는 생각이 듭니다.


AWS Env

우선 네이버 클라우드 플랫폼으로 이전하기 전에 기존 AWS 환경에서 구성되어있던 아키텍처와 인스턴스 내 각 서비스들의 버전들을 파악하기로 했습니다.

먼저 기존 아키텍처는 예전에 만들어둔 것으로 가져왔습니다.
조금 추가된 부분이 있다면 AWS 한국 리전에서는 SNS에서 SMS 기능을 선택할 수 없습니다. 그렇기 때문에 추가적인 Lambda 작업이 있었습니다…

(네이버 클라우드는 따로 추가적인 작업없이 간단하게 모니터링 설정에서 SMS 문자 알림을 받을 수 있도록 설정할 수 있기에 이런 고통에서 벗어날 수 있게 되었습니다…?)

[root@ip-10-0-1-68 ~]# cat /etc/*-release
NAME="Amazon Linux"
VERSION="2"
ID="amzn"
ID_LIKE="centos rhel fedora"
VERSION_ID="2"
PRETTY_NAME="Amazon Linux 2"
ANSI_COLOR="0;33"
CPE_NAME="cpe:2.3:o:amazon:amazon_linux:2"
HOME_URL="https://amazonlinux.com/"
Amazon Linux release 2 (Karoo)

Linux 버전은 Amazon Linux AMI 2 를 사용하고 있었습니다.
네이버 클라우드로 이전하게 되면 CentOS 7을 사용할 것입니다.
원래 Rocky Linux 8을 써보고 싶었지만 아직 Rocky Linux 소식이 없어 CentOS 7로 결정하게 되었습니다.

[root@ip-10-0-1-68 home]# apachectl -v
Server version: Apache/2.4.46 ()
Server built:   Aug 24 2020 18:54:20

[root@ip-10-0-1-68 home]# php -v
PHP 7.4.15 (cli) (built: Feb 11 2021 17:53:39) ( NTS )
Copyright (c) The PHP Group
Zend Engine v3.4.0, Copyright (c) Zend Technologies
    with Zend OPcache v7.4.15, Copyright (c), by Zend Technologies

두번째로 제 블로그는 APM으로 구성되어 있는데 이번 기회에 Apache에서 Nginx로 변경을 결정했습니다. 또한 Nginx 와 php 간에 TCP Socket을 사용하지 않고 Unix Socket을 사용해볼 것입니다. 이는 제가 늘 보고 배우는 Linuxer 님의 Blog를 보고 저도 이를 적용해보기로 마음먹게 되었습니다.

마지막으로 DB입니다. 원래 아키텍처는 WEB과 DB가 나뉘어져 있었습니다.
단, 인스턴스 하나가 죽으면 서비스가 마비가 되어 이번에 네이버 클라우드로 이전하면 WEB과 DB를 하나의 서버로 쓰되 이중화를 구성하기로 했습니다.

최종적으로 아키텍처가 완성되면 추가 블로깅 및 설명해볼 것입니다.


Naver Cloud Platform, Resource Creation

? VPC
manvscloud-vpc
subnet

VPC를 구성하는 부분은 이제 너무 쉬우니 이렇게 구성했습니다!만 보여주고 넘어가도록 하겠습니다.

?Server
server creation

서버는 하나만 생성해두었습니다.

서버 하나에 기본적인 설치 및 구성을 끝내두고 이미지를 생성하여 생성한 이미지를 이용하여 이중화를 구성할 것입니다.

참고로 오늘은 “AWS TO NCLOUD SERVER MIGRATION”에 대한 전반적인 느낌만 잡아가는 포스팅이며 추가 포스팅에서 완성된 아키텍처와 함께 어떻게 설치가되고 이전을 어떤 방식으로 진행했는지도 함께 적어볼 것입니다.

? Object Storage + Global CDN

현재 고민 중인 부분은 cdn을 어떻게 해결할까에 대한 부분입니다.
기존 AWS S3에 생각보다 많은 데이터가 쌓이게 되었고 이를 Object Storage에 넘겨준 뒤 나중에 DB에서도 수정해줘야하는 부분이 있기도 하고 기존에 CDN을 사용하고 있는 방식이 WordPress의 AWS 플러그인이라 이 부분이 잘 될지 확신이 되지 않기에 CDN은 조금 테스트를 진행해본 뒤 결정하게 될 것같습니다.


Personal Comments

이전을 진행하며 조금이나마 이런 기능을 만들어주었으면 좋겠다고 생각되는 부분이 있어
오늘은 네이버 클라우드에 바라는 점이 있다면 몇가지를 써보도록 하겠습니다.

  • SSL 인증서
    : Certificate Manager라는 서비스가 있는데 이는 외부에서 구매한 인증서를 입력하고 추가하는 것이라 추가적인 절차가 필요합니다.
    AWS의 ACM과 같은 서비스가 어서 생겼으면 좋겠습니다.
    (이 기능이 AWS를 사용하는동안 생각보다 매우 편리했기에 네이버 클라우드에도 도입되길 바랍니다.)
  • WAF
    : 네이버 클라우드에서 WAF를 사용하려면 Security Monitoring 라는 서비스에서 [이용 문의]를 통해서 사용이 가능합니다. 아직 AWS WAF처럼 사용자 선택하고 Count/Block 하는 방식이 아닌 신청해서 사용하는 방식으로 보입니다. 물론 네이버 클라우드 플랫폼의 WAF는 주간/월간 보고서 등의 장점도 있지만 사용자 지정 방식의 WAF도 생기다면 부담스럽지 않게 사용해볼 수 있을 것같습니다.
  • 주기적인 이미지/스냅샷 관리
    : 이미지/스냅샷을 사용자가 직접 백업 일정을 지정하고 진행하는 기능이 아직 없습니다.
    물론 Cloud Functions을 이용하면 해서 이런 기능을 만들 수는 있겠지만 개발자가 아닐 경우 난감할 수 있겠다 생각됩니다.
    그렇기 때문에 네이버 클라우드에서는 Backup이라는 서비스를 제공합니다.
    네이버 클라우드에서 직접 고객의 데이터를 백업해주고 보관해주는 서비스인데 상당히 괜찮습니다. 이 서비스만 신청해두면 사실 고객 입장에서는 직접적인 백업 관리를 하지 않아도 되니 용량별 비용만 고려하면 되어 오히려 편할 수 있습니다.

네이버 클라우드 플랫폼은 늘 빠른 업데이트와 기능 추가를 하고 있어 이러한 사용자들의 의견만 있다면 위 기능들 역시 금방 생길 거라 봅니다.

긴 글 읽어주셔서 감사합니다.


NCP

[NCP] 네이버 클라우드 9월 교육 및 행사 일정 공유 – (2)

안녕하세요. ManVSCloud 김수현입니다.

네이버 클라우드 플랫폼(Naver Cloud Platform) 9월 교육 및 행사 일정이 추가되어 공유드립니다.

Professional 과정 공인 교육과 웨비나, Brown-bag이 추가되었는데 아래 내용을 참고하여 교육을 신청해보시기 바랍니다.


공인교육 – Professional

  • Naver Cloud Platform에서는 기술자격증이 존재합니다. 이 교육은 그 중에서도 Professional Level 수준의 교육입니다.
  • 기존에는 실기 시험이 존재하였으나 2021년도 6월 이후로 실기 시험은 폐지되고 필기로만 시험이 진행됩니다.
  • 유료 교육입니다.
  • 수료증이 발급됩니다.

기존에는 NCA → NCP → NCE 순서로 시험 응시가 가능했지만 2021년도 7월 22일부터는 이전 레벨의 기술자격증이 없이 상위 기술자격증 취득이 가능합니다.

해당 교육이 유료 교육으로 되어있어 비용 부담이 될 수 있습니다.
그렇기때문에 네이버 클라우드에서는 edwith 사이트에서 공인 교육을 무료로 들을 수 있도록 강의를 게재하고 있습니다.

저 역시 Professional 자격증을 준비하며 edwith 사이트를 참고했습니다.


Webinar

이번 웨비나는 AI기반 스마트 제조 기술과 사례, 클라우드 기반 MES 부터 생산성을 높여주는 협업툴이 메인 주제라 봅니다.

아무래도 평일 오전에 진행되다보니 업무 시간과 겹쳐 집중해서 듣기 어려운 점이 있습니다.
저는 대부분의 교육을 반차나 연차를 내서 듣는 편이라 주요 관심사 주제가 아닌 경우 웨비나는 잘 안듣게됩니다.

업무 중 웨비나를 듣는데에 큰 지장이 없으시거나 관심이 있는 내용이시라면 웨비나 신청 추천드립니다!

  • 10:00 ~ 10:20 제조 기업의 스마트한 디지털 비즈니스 혁신
  • 10:20 ~ 10:30 클라우드 기반 제조업 RPA 업무자동화 도입과 활용
  • 10:30 ~ 10:50 클라우드 기반 가공/철근 MES 혁신 사례
  • 10:50 ~ 11:10 “스마트워크”로 가능한 제조기업의 혁신 전략
  • 11:10 ~ 11:30 제조 고객 사례 1. AIoT 기반 Industrial SaaS 서비스
  • 11:30 ~ 11:50 제조 고객 사례 2. 패키징 인쇄 griGoMOM
  • 11:50 ~ 12:10 AI 기반 스마트 제조 기술과 사례
  • 12:10 ~ 12:30 제조 기업을 위한 고가용성의 하이브리드 클라우드 서비스

Brown-bag

  • Zoom을 이용하여 교육을 들을 수 있어 온라인 환경이라 언제 어디서나 참여가 가능합니다.
  • 식사 쿠폰이 지급됩니다.
  • 점심 시간을 활용한 짧은 교육이므로 다소 어려운 교육이 아닙니다.
    간단하게 점심을 먹으며 들을 수 있는 난이도로 가벼운 마음으로 신청하셔도 될 것입니다.

쿠버네티스(Kubernetes)는 k8s, Kube 라고도 불리며 컨테이너화된 애플리케이션을 자동으로 배포(scheduling), 운영(HA, Failover), 확장(Scaling) 해주는 오픈소스입니다.

지난 5년간 kubernetes 관심도가 다소 많이 늘었습니다.
도커와 쿠버네티스가 아직 무엇인지 잘 모르신다면 점심 시간을 이용하여 간단하게 배워봅시다.

  • 가상화 기술
  • 컨테이너 기술의 역사
  • 도커 개요 및 주요 컴포넌트
  • 도커 핵심 기능
  • 쿠버네티스 등장 배경
  • 쿠버네티스 동작 원리 
  • 간단한 데모를 통해 pod 띄어보기

도커와 쿠버네티스에 대한 기본적인 지식을 습득하고 싶으신 분들 누구나 참가하실 수 있습니다.


Personal Comments

개인적으로 스터디를 하거나 교육을 듣는 걸 좋아합니다.
최근에는 스터디를 운영하기 위해 자료를 만드는데 생각보다 쉽지 않은 것같습니다.

너무 쉽지도 않고 어렵지도 않게 목표로 하는 수준의 내용을 맞추려하다보니 많은 고민을 하게됩니다. 항상 자료를 준비하고 교육하시는 분들… 존경합니다.

이번 포스팅을 통해 원하시는 교육 많이 참가해보시고 도움되시길 바랍니다.

긴 글 읽어주셔서 감사합니다.


IT/Linux/Kubernetes

[AKOS] Amazon EKS Study 시작

안녕하세요. ManVSCloud 김수현입니다.

오늘부터 CloudNet@에서 진행하는 AKOS(AWS Kubernetes Online Study)가 시작되었습니다. 2020년도는 Linuxer님, 2021년도는 가시다(Gasida)님과 함께하고 있습니다.

Kubernetes 스터디도 함께 했고 현재는 AWS의 EKS를 공부하고 있으며
Naver Cloud Platform의 NKS는 아마 따로 공부하게 될 것같습니다.


AWS Kubernetes Online Study

이전에 했던 DKOS(Docker Kubernetes Online Study)에 이어 AKOS(AWS Kubernetes Online Study)는 이제 배웠던 Kubernetes 과정을 이해한 뒤 AWS에서의 Kubernetes를 배워보는 시간이었습니다.

클러스터 구축
파드 생성 및 확인
RDS DB 확인

개인적으로 저는 이미 클라우드 환경에서는 AWS보다 Naver Cloud Platform을 이용해 Kubernetes를 먼저 사용해보았기 때문에 NKS가 조금 더 편하게 느껴졌습니다.

사용하기 편하고 쉬운건 Naver Cloud Platform의 NKS고 활용할 수 있는 범위는 넓은데 난이도가 높은 건 AWS의 EKS라고 해야하나? 개인적으로 그렇게 느껴졌습니다.

네이버 클라우드 플랫폼에서는 기본적으로 서비스를 만들 때 사용자가 편하게 사용할 수 있도록 배려하는 부분이 많다보니 아직 기능적인 부분에서는 다소 추가되어야할 부분이 있으나 추가된 이후가 기대되기는 합니다.


Personal Comments

끊임없이 공부하는 습관은 엔지니어에게 정말 좋은 습관이라고 생각합니다.
물론 부하가 생기지 않도록 컨디션 조절도 중요하지만요…

스케줄을 너무 가득 채워서 많은 것을 흡수 하려고 하면 오히려 번아웃이 한 번 찾아와 다시 시작하기가 너무 힘들더라구요.

오늘도 공부하는 엔지니어 분들 수고가 많으십니다.
과하게 하지말고 꾸준히 합시다.

긴 글 읽어주셔서 감사합니다.

AWS

[AWS] 수명 주기 관리자를 활용한 스냅샷 백업 (Lifecycle Manager)

안녕하세요. ManVSCloud 김수현입니다.

오늘은 오랜만에 AWS에 관련된 포스팅을 작성해보려 하는데
수명 주기 관리자를 이용하여 스냅샷을 관리하는 방법을 알아보도록 하겠습니다.


수명 주기 관리자 (LIFECYCLE MANAGER)

수명 주기 관리자를 이용하면 Snapshot이나 AMI를 생성하고 이를 원하는 기간을 설정하여 보유 및 삭제 할 수 있습니다. 또한 교차 계정 복사를 이용하여 다른 AWS 계정으로 정기적인 공유가 가능하며 교차 리전 복사를 통해 DR 구성도 쉽게 설정할 수 있습니다.

설정 방법은 간단합니다. [EC]-[Elastic Block Store]에서 “수명주기 관리자”를 찾을 수 있습니다.

“수명 주기 정책 생성” 시 아래와 같이 화면이 나타납니다.

여기서 원하는 정책 유형을 선택해주면 되는데 오늘은 EBS 스냅샷 정책으로 진행하였습니다.

대상 리소스 유형은 볼륨과 인스턴스 유형으로 나뉘어 선택할 수 있습니다.
“볼륨”은 개별 볼륨의 스냅샷을 생성하고 “인스턴스”는 인스턴스에 연결된 모든 볼륨을 스냅샷 생성을 진행합니다.

스냅샷 정책에서는 볼륨, 스냅샷을 선택할 수 있으나 AMI의 경우 당연히 인스턴스만 대상으로 지정할 수 있습니다.
우선 저는 인스턴스 단위 선택하였습니다.

간단하게 정책에 대한 설명을 기입해주고 IAM 역할을 선택하는 곳입니다.
기본적으로 기본 역할을 선택할 경우 모든 필수 권한으로 자동 생성이 되나 IAM을 직접 생성하여 특정 사용자에 대해서 권한을 줄 수 있으며 이후 스냅샷 볼륨이 암호화되는 경우 KMS 키를 사용할 권한을 주어야합니다.

위 첨부된 사진에서는 크게 참고할 것이 없습니다.
정책 상태는 생성하는 이 정책을 활성화 할 것인가, 비활성화 할 것인가 선택하는 것이며
파라미터 부분에서 [루트 볼륨 제외]를 선택할 경우 루트 볼륨은 제외하고 스냅샷이 생성됩니다.

이제 가장 중요한 생성 주기를 지정하는 “일정 세부 정보”란입니다.

빈도는 일별, 주별, 월별, 연별로도 가능하며 cron을 이용하여 사용자 지정 표현이 가능합니다.
보존 유형은 개수와 경과 시간으로 설정할 수도 있습니다.

참고로 이런 질문이 있었습니다.
“저는 30분마다 스냅샷을 생성하고 싶은데 불가능한 가요?”

일별로 매 (1,2,3,4,6,8,12,24) 시간마다 설정이 있는데 이는 다 이유가 있습니다…
cron 표현식을 이용하여 30분마다 스냅샷을 생성하도록 설정해두면 아래와 같이 에러가 발생합니다.

“허용되는 최소 예약 빈도는 1시간입니다.” 라고 알려줍니다.
수명 주기 관리자는 1시간 단위로만 가능합니다.

또한 수명 주기 관리자를 써보시면 알겠지만 이게 UTC 09:00에 시작하라고 설정을 해둬도
09:00 시간에 딱 맞춰서 실행되지 않습니다.

UTC 09:00 ~ 09:59 사이에 랜덤으로 실행됩니다.

설정 이후 태그를 지정해줍니다.

정책 생성 마지막에 빠른 스냅샷 복원, 교차 리전 복사, 교차 계정 공유도 선택할 수 있습니다.
오늘은 교차 리전 복사까지만 한 번 해보도록 하겠습니다.

DR(Disaster Recovery)을 위해 이 교차 리전 복사를 이용하여 백업을 하시는 분들이 있습니다.
이 역시 방법이 크게 어렵지 않습니다.

대상 리전을 선택해주고 생성 후 언제 만료되게 할 것인가에 대해 설정해주면 끝!

다만 스냅샷 복사본 암호화 활성화를 하게 될 경우 이제 암호화 키에 대한 권한을 고려해봐야할 것입니다.


Personal Comments

지금까지 수명 주기 관리자 사용법에 대해서 간단하게 알아보았습니다.

위에서 언급했듯 수명 주기 관리자는 1시간 단위로만 가능한데 이를 30분 단위로하는 방법은 전혀 없는 것일까요?

그렇지는 않습니다. Lambda를 이용한다면 충분히 가능합니다.
Lambda를 이용하는 방법이 아닌 또 다른 방법이 있으시다면 공유 부탁드립니다.

긴 글 읽어주셔서 감사합니다.

NCP

[NCP] 네이버 클라우드 9월 교육 및 행사 일정 공유 – (1)

안녕하세요. ManVSCloud 김수현입니다.

네이버 클라우드 플랫폼(Naver Cloud Platform) 9월 교육 및 행사 일정을 공유드리려고 합니다.

현재 게재된 일정은 총 3가지가 있는데 해당하는 조건에 맞춰서 교육 신청을 하시면 좋을 것같습니다.


Hands-on Lab

  • 첫번째로 Hands-on Lab 입니다.
    Hands-on Lab은 네이버 클라우드 플랫폼(Naver Cloud Platform) 에서 최근까지 월 2회씩 꾸준히 진행되고 있는 교육입니다.
  • 권장하는 대상자는 클라우드 환경 및 네이버 클라우드를 처음 접하시는 분에게 가장 처음으로 추천드립니다.
  • 무료 교육입니다.

저 역시 네이버 클라우드 플랫폼을 접할 때 Hands-on Lab 교육을 들은 경험이 있고
해당 교육이 많은 도움이 되었기에 커뮤니티나 주변에서
“네이버 클라우드 어떻게 시작하면 좋을까요?”라는 질문을 받으면 가장 먼저 Hands-on Lab으로 시작해보라고 추천하고 있습니다.

※ TIP : Hands-on Lab 교육이 끝나고 난 후에도 해당 주차의 일요일까지 실습 계정을 사용할 수 있어 기본적인 실습 경험을 쌓을 수 있습니다.


공인교육 – Associate

  • Naver Cloud Platform에서는 기술자격증이 존재합니다. 이 교육은 그 중에서도 Associate Level 수준의 교육이라고 볼 수 있습니다.
  • Hands-on Lab 교육 이후 Associate 자격증을 노려보실 계획이라면 추천드립니다.
  • 유료 교육입니다.
  • 수료증이 발급됩니다.

해당 교육이 유료 교육으로 되어있어 비용 부담이 될 수 있습니다.
그렇기때문에 네이버 클라우드에서는 edwith 사이트에서 공인 교육을 무료로 들을 수 있도록 강의를 게재하고 있습니다.

저도 Professional 자격증 공부를 할 때 edwith 사이트를 이용한 경험이 있습니다.


대규모 웹서비스 및 글로벌 인프라 구축

  • Intermediate Level로 최소 Hands-on Lab 교육 이후 진행하는 것을 권장드리며
    특정 주제에 대해 교육을 듣기 전 사전 기본 지식을 요구합니다.
  • 무료 교육입니다.
  • 관심있는 분야에 대한 교육이 진행된다면 바로 신청합시다. 완전 강추!
    네이버 클라우드에서는 이렇게 사용할 수 있구나! 라는 걸 배울 수 있으며 상당히 재밌습니다.

개인적으로 제가 좋아하는 교육입니다.
DevOps, Big Data, Media, Kubernetes, AI, Security, Mongo DB 등 다양한 주제로 시간이 되면 항상 신청하는 편이며 관심있는 주제로 교육을 하면 휴가를 써서라도 듣고 있는 교육입니다.
이론뿐만 아니라 실습까지 재밌게 경험할 수 있습니다.


Personal Comments

처음 교육/행사 일정을 보고 “이 교육을 내가 들어도 괜찮은 교육일까?” 망설일 때가 있었습니다. 혹시라도 저와 같은 고민을 하시는 분들이 있을까하여 제 경험을 바탕으로 교육/행사 일정과 함께 제 경험을 공유드리고자 합니다.

이후 추가적인 교육 소식이 있을 경우 추가 포스팅 예정이며 조금 더 많은 분들께서 네이버 클라우드에 쉽게 접하실 수 있는 길을 항상 고민토록 하겠습니다.

지금까지 네이버 클라우드 플랫폼 Support Master 김수현이었습니다.

긴 글 읽어주셔서 감사합니다.


NCP

[NCP] 안녕하세요. 네이버 클라우드 Support Master 입니다.

안녕하세요. ManVSCloud 김수현입니다.

오늘 네이버 클라우드 플랫폼(Naver Cloud Platform) 공식 블로그에서 9인의 Master 멤버가 공개되었습니다.

다소 부족한 점이 많으나 공식 테크 앰버서더, 즉 Master 멤버의 기회가 주어져 Support Master로서 여러분들에게 큰 도움을 드릴 수 있게되었습니다.


Support Master

Support Master로서 저는 많은 네이버 클라우드 사용자 또는 사용하시고자 하는 분들을 Supporting을 하고자 Support Master가 되었습니다.

클라우드를 배워보고자하는 학생분들이나 온프레미스 환경에서 서비스를 운영하시다가 클라우드 환경으로 서비스를 이전하고자 하는 분 등 다양한 유저들에게 제가 알고 있는 지식을 공유하여 조금 더 네이버 클라우드를 쉽게 접하고 원활한 서비스를 운영하실 수 있도록 하는 것이 저의 목적입니다.

우선 네이버 클라우드에 대한 주제로 정기적인 블로그 포스팅이 있을 것이며 추가적인 도움을 드릴 수 있을 만한 자료를 준비하고 있습니다.

이 부분은 제 블로그를 통해 추가 공지될 예정입니다.


Naver Cloud Platform

네이버 클라우드에 대해 궁금하신 부분이 있으실 경우 댓글 남겨주시면 답변 도와드리도록 하겠습니다.

또한 이런 기회를 얻을 수 있도록 클라우드에 처음 흥미를 주신 서태호(Network Master)님과 기술 성장에 늘 도움주신 Linuxer님에게 늘 감사드리며 Master 활동 준비 및 지원해주시는 네이버 클라우드 플랫폼(Naver Cloud Platform)에 감사의 인사 올립니다.