1. 클라우드 엔지니어란

=>클라우드 서비스를 잘 쓸 수 있게 해주는 것이 클라우드 엔지니어

 

 

2. 기존 온프레미스시스템부터 hosting과 Iaas와의 차이점은 virtualization이다.

-host, domain, ip주소의 개념공부의 바탕이 되어야 한다.

 

3. 클라우드의 핵심 기술

-가상화

-분산컴퓨팅

-오픈API(어플리케이션의 인터페이스)

 

네이버에서 카카오톡에서 보내는 초당 메시지의 데이터가 얼만큼인지 확인하고 싶을 때

-오픈api로 확인가능

 

토스

- 다른 은행들의 계좌이체를 중간에서 도와준다.

- 오픈api이용 (멀티 클라우드서비스를 잘활용)

- 금융보안상 일부데이터는 자체 데이터센터(프라이빗클라우드)에 보관

 

CNCF

- 유엔같은 오픈소스재단

 

네트워크의 중요성

클라우드에서도 새로운 패치가 나오거나 했을 때 동시에 어떻게 할 수 있을까?

네트워크를 이용하면 가능

il5 (원격으로 처리 가능 : 서버온오프, 데이터처리 등등 가능)

이것으로 동시에 펌웨어 업그레이드 해야 한다.

네트워크 기반으로 설치를 한다. 그래서 네트워크가 필요하다.

네트워크에 보안이 따라 다닌다. 왜냐 통로가 생기고 길이 생기면 관리를 해줄 것이 생긴다.


*apt -
보안사고의 행위에 담긴 데이터를 분석해서 예방을 한다.

 

인프라와 서비스 영역 준비개념

인프라영역 - 하드웨어 준비

서비스 영역- 소프트웨어 준비 + 소프트웨어를 사용할 수 있게 런칭

 

SaaS 사례

-ERP,CRM,SCM 과 같은 서비스를 클라우드로 한다.

(사례 - salesforce.com - SaaS)

 

VDI

- 내용 알아 둘 것

-중앙서버에 연결 되어 있는 가상머신들이 있다.

-그 가상머신을 가져와서 네트워크로 쓴다.

 

batch

- 일괄처리

 

클라우드에서 사용하는 용어 및 기존 온프레미스에서 사용하던 용어를 알아야 한다.

 

처음부터 퍼블릭을 쓰는 곳은

- 소규모 기업

 

매출 3,4천억 되는 규모의 기업은 퍼블릭을 바로 못쓴다.

넷플릭스 - 단계적으로 퍼블릭 서비스를 점차 넓혀 쓰기 시작했다.

 

미들웨어는 무엇인가

- 글자로 설명하는 것은 무엇인가 라고 검색할 때에 글자를 읽고 
  이미지를 보아라( 개념을 설명하는 이미지가 포함된 문서가 있다)
  데이터는 있고 프로그램 여러개를 미들웨어가 이어준다.

사례) 티맥스에서 만든 제우스(미들웨어, 시장 0.1프로), 대표적이다.

        was (web application server) = 미들웨어, 웹서버,

        미들웨어를 이용해서 응용프로그램을 올린다.

미들 웨어 서비스 + 응용서비스 합친 것을 was

-오픈소스에서 Apache Tomcat (was 시장의 70프로)

 

 

4. 클라우드 서버 개념

클라우드서비스에서는 instance 용어를 사용한다.

virtual machine = 가상화해서 서버를 부르는 것이 가상머신(vm)

클라우드 서비스에서는 = instance라고 한다. 왜냐 서버가 없기 때문

클라우드의 용어 90프로는 아마존에서 만들어내었다.

오픈스택에 메이저벤더가 참여함

서버리스 - 람다

데이터베이스 - 오로라

 

마이그레이션

클라우드 도입해서 클라우드화 하는 것

)커머셜 소프트웨어를 오픈소스 소프트웨어로 바꾼다.

OpenVSwitch

(장현정 작가님의 "오픈스택을 다루는 기술" 서적을 참고하였음을 밝힙니다.) 

Open vSwitch(이하 OVS)는 클라우드 서비스 내(內) 가상의 Network Bridge와 Flow rule을 사용하여

효율적으로 가상머신에 패킷을 포워딩하기 위한 가상의 스위치

 

참고링크 https://m.blog.naver.com/love_tolty/220237750951

 

네트워크 어댑터 추가하기 (host only, no dhcp, eth2)

브릿지 만들어 이용해보기

 

1. ovs-vsctl add-br [브릿지이름] #브릿지만들기

작업] ovs-vsctl add-br br-eth2

 

2. ovs-vsctl add-port [브릿지이름] [인터페이스카드이름] #브릿지 포트에 eth1을 추가

작업] ovs-vsctl add-port br-eth2 eth2

 

3. 레이어2 에이전트 설정( vi /etc/neutron/plugins/ml2/ml2_conf.ini )

마지막 줄에 추가(다른 섹션과 겹치지 않게)

[ml2_type_flat]

flat_networks = physnet1

 

4. OSV 에이전트 설정( vi /etc/neutron/plugins/ml2/openvswitch_agent.ini )

마지막 줄에 추가(다른 섹션과 겹치지 않게)

[ovs]

bridge_mappings = physnet1:br-eth2

 

5. 가상 네트워크 생성

openstack network create --project [project ID] --share \

--provider-network-type flat

--provider-physical-network [ovs에 설정된 브릿지네트워크ID] \

[가상 네트워크 이름]

 

작업1] projectID=$(openstack project list | grep service | awk '{print $2}')

-> service project의 두번째 필드 값을 추출해 변수에 저장(첫번째 필드는 |(파이프))

awk는 필드값을 추출해 표시하는 명령어 입니다. 작은 따옴표를 이용해 패턴을 표현하거나 표준입력함수를 이용합니다.

$0은 모든 필드값을 나타내며, 이후 1,2,3,4 이런식으로 필드 값을 정해 줄 수 있습니다.

 

예를 들어 ls -al을 사용했다라고 한다면

-rw-------. 1 root root 13889 1211 16:25 .bash_history

요런 형태로 나타나게 되는데,

 

ls -al | awk '{ print $3 }' 이라고 입력하면 3번째 필드인 root만 표시되게 됩니다.

물론 awk '{ print $3,4 }' 와 같이 콤마를 이용해 한번에 여러필드를 출력하는 것도 가능합니다.

위의 작업은 service라는 이름의 프로젝트를 검색해 ID만 추출하여 변수 projectID에 넣는 과정입니다.

 

작업2] openstack network create --project $projectID \

--share --provider-network-type flat \

--provider-physical-network physnet1 sharednet1

 

6. 서브넷 10.0.0.0/24를 만들어 둔 네트워크(sharednet1)에다가 만들어 넣습니다.

openstack subnet create subnet1 \

--network sharednet1 --project $projectID --subnet-range 10.0.0.0/24 \

--allocation-pool start=10.0.0.200,end=10.0.0.254 \

--gateway 10.0.0.2 --dns-nameserver 10.0.0.2

=> 10.0.0.0/24 대역대의 네트워크인 subnet1 이라는 서브넷을 만들어 sharednet1 이라는 이름으로 미리 정의해 두었던 가상의 네트워크에 넣어 주고 있습니다.

 

7. 여기까지가 기본적인 세팅의 완료. 이제 인스턴스 생성가능

 

 

 

Neutron 설치

 

1.MariaDB 데이터베이스 및 사용자 생성 후 권한 부여

mysql -u root -p

create database neutron_ml2;

grant all privileges on nuetron_ml2.* to neutron

 

2.keystoneneutron 사용자 생성 및 역할 부여

openstack user create domain default project service password 123qwe neutron

openstack role add project service user neutron admin

 

3.네트워크 서비스 추가

openstack service cerate name neutron description “OpenStack Networking service” network

 

4.네트워크 서비스 엔드포인트 생성

echo $controller

export controller=10.0.0.30

openstack endpoint create region RegionOne network public http://$controller:9696

openstack endpoint create region RegionOne network internal http://$controller:9696

openstack endpoint create region RegionOne network admin http://$controller:9696

 

 

5.Neutron 설치하기

yum y install enablerepo=centos-openstack-train,epel openstack-neutron-ml2 openstack-neutron-openvswitch

 

 

6. neutron 설정파일 내용 수정하기

mv /etc/neutron/neutron.conf /etc/neutron/neutron.conf.bak

 

vi /etc/neutron/neutron.conf

[DEFAULT]

core_plugin = ml2

service_plugins = router

auth_strategy = keystone

state_path = /var/lib/neutron

dhcp_agent_notification = True

allow_overlapping_ips = True

notify_nova_on_port_status_changes = True

notify_nova_on_port_data_changes = True

# RabbitMQ connection info

transport_url = rabbit://openstack:password@10.0.0.30

 

# Keystone auth info

[keystone_authtoken]

www_authenticate_uri = http://10.0.0.30:5000

auth_url = http://10.0.0.30:5000

memcached_servers = 10.0.0.30:11211

auth_type = password

project_domain_name = default

user_domain_name = default

project_name = service

username = neutron

password = servicepassword

 

# MariaDB connection info

[database]

connection = mysql+pymysql://neutron:password@10.0.0.30/neutron_ml2

 

# Nova connection info

[nova]

auth_url = http://10.0.0.30:5000

auth_type = password

project_domain_name = default

user_domain_name = default

region_name = RegionOne

project_name = service

username = nova

password = servicepassword

 

[oslo_concurrency]

lock_path = $state_path/tmp

 

chmod 40 neutron.conf

chgrp neutron neutron.conf

 

vi l3_agent.ini -> 두번째 줄에 추가

interface_driver=openvswitch

 

vi dhcp_agent.ini -> 두번째 줄에 추가

interface_driver=opensvswitch

dhcp_driver=neutron.agent.linux.dhcp.Dnsmasq

enable_isolated_metadata=true

 

vi metadata_agent.ini -> 두번째 줄에 추가

nova_metadata_host = 10.0.0.30

metadata_proxy_shared_secret = metadata_secret

212 memcache_servers = localhost:11211

 

cd /etc/neutron/plugins/ml2

vi ml2_conf.ini

[ml2]

type_drivers = flat,vlan,gre,vxlan

tenant_network_types =

mechanism_drivers = openvswitch

extension_drivers = port_security

 

vi openvswitch_agent.ini

[securitygroup]

firewall_driver = openvswitch

enable_security_group = true

enable_ipset = true

 

vi /etc/nova/nova.conf

[DEFAULT]섹션에 추가

use_neutron = True

linuxnet_interface_driver = nova.network.linux_net.LinuxOVSInterfaceDriver

firewall_driver = nova.virt.firewall.NoopFirewallDriver

vif_plugging_is_fatal = True

vif_plugging_timeout = 300

 

 

7. SELinux 설정하기

yum -y install --enablerepo=centos-openstack-train openstack-selinux

setsebool -P neutron_can_network on

setsebool -P haproxy_connect_any on

setsebool -P daemons_enable_cluster_mode on

 

SELinux 모듈 컴파일

vi my-ovsofctl.te

module my-ovsofctl 1.0;

 

require {

type neutron_t;

class capability sys_rawio;

}

 

8. SELinux 설정하기

yum -y install --enablerepo=centos-openstack-train openstack-selinux

setsebool -P neutron_can_network on

setsebool -P haproxy_connect_any on

setsebool -P daemons_enable_cluster_mode on

 

selinux 모듈 컴파일

cd /etc/selinux

checkmodule m M o my-ovsofctl.mod my-ovsofctl.te

semodule_package --outfile my-ovsofctl.pp --module my-ovsofctl.mod

semodule -i my-ovsofctl.pp

 

 

9. 방화벽 추가

firewall-cmd --add-port=9696/tcp --permanent

firewall-cmd --reload

 

10. Neutron서비스 실행

systemctl start openvswitch

systemctl enable openvswitch

ovs-vsctl add-br br-int

 

ln -s /etc/neutron/plugins/ml2/ml2_conf.ini /etc/neutron/plugin.ini

-> ml2_conf.ini가 실행될 때 /etc/neutron/plugin.ini 이 같이 실행 된다.

 

su -s /bin/bash neutron -c "neutron-db-manage --config-file /etc/neutron/neutron.conf --config-file /etc/neutron/plugin.ini upgrade head“    (위에줄하고 한명령어)

#장애 발생

해본 것들

grant all privileges 2개 주어야 하는데

하나만 권한을 주니 작동이 된다.

그리고 conf

 

for service in server dhcp-agent l3-agent metadata-agent openvswitch-agent; do

systemctl start neutron-$service

systemctl enable neutron-$service

done

 

systemctl restart openstack-nova-api openstack-nova-compute

openstack network agent list

#neutron이 싱글노드에서 하는 일은 없다.

 

Glance(이미지서비스)

기능

-사용자들이 가상 머신 이미지를 찾고, 등록해서 가져올수 있도록 활성화하는 역할

-가상머신 이미지를 찾은 후에는 메타데이터에 질문/요청을 던져 실제 이미지를 가져오도록 하는 REST API제공

 

1. Glance 데이터베이스 설정하기

데이터베이스에 glance 사용자 추가하기

 

mysql -u root p

create database glance;

grant all privileges on glance.* to glance@'localhost' identified by '123qwe';

grant all privileges on glance.* to glance@'%' identified by '123qwe';

flush privileges

exit

 

2. Glance사용자, 서비스 그리고 엔드포인트 생성하기

glance 사용자 추가하기

 

(유저생성)

openstack user create --domain default --project service --password servicepassword glance

 

(역할추가)

openstack role add --project service --user glance admin

 

(서비스생성)

openstack service create --name glance --description "Openstack Image service" image

 

(엔드포인트생성)

openstack endpoint create --region RegionOne image public http://$controller:9292

 

(엔드포인트내부용 생성)

openstack endpoint create --region RegionOne image internal http://$controller:9292

 

(엔드포인트어드민용 생성)

openstack endpoint create --region RegionOne image admin http://$controller:9292

 

 

3. glance 설치하기(glance 패키지 설치)

yum --enablerepo=centos-openstack-train,epel -y install openstack-glance

 

4. glance-api.conf 설정파일 백업후 설정파일 새로 생성해서 새로운 내용 추가하기

mv /etc/glance/glance-api.conf /etc/glance/glance-api.conf.bak

 

vi /etc/glance/glance-api.conf

[DEFAULT]

bind_host=0.0.0.0

 

[glance_store]

stores = file,http

default_store = file

filesystem_store_datadir = /var/lib/glance/images/

 

[database]

connection = mysql+pymysql://glance:123qwe@10.0.0.30/glance   

->내가 원하는 비번을 작성하면된다. glance:비번작성하는곳

 

[keystone_authtoken]

www_authenticate_uri = http://10.0.0.30:5000

auth_url = http://10.0.0.30:5000

memcached_servers = 10.0.0.30:11211

auth_type = password

project_domain_name = default

user_domain_name = default

project_name = service

username = glance

password = servicepassword

->키스톤의 권한토큰을 받아서 모든 노드가 돌아가므로, 항상 들어가는 정보..

 

[paste_deploy]

flavor = keystone

 

5. 직접작성해서 만든 파일이니 권한과 소유자(그룹)을 변경

chmod 640 /etc/glance/glance-api.conf

chgrp glance /etc/glance/glance-api.conf (명령어 잘확인할 것 )

#ubuntu 버전으로 chown 명령어를 사용하니 안되서 다시

glance-api.conf를 생성해서 명령어를 사용하니 되었다.

 

6. 데이터베이스 파일 생성하기 및 selinux 설정하기

su -s /bin/bash glance -c "glance-manage db_sync"

systemctl start openstack-glance-api

systemctl enable openstack-glance-api

setsebool -P glance_api_can_network on

 

22. 프로젝트 사용자, 역할 생성하기

openstack project create --domain default \

--description “Service Project” service

 

 

openstack project list

 

#openstack project list에서 해결하지 못한 장애-Internal Server Error(HTTP 500)

 

openstack domain list

openstack user create domain default\

--password-prompt demo

User Password : 비번쓰기

Repeat Password : 비번쓰기

 

openstack user list

openstack role create user

openstack role list

openstack role add --project service --user demo user

(openstack role list --user demo project service)????

openstack endpoint list

NTP설정이유

NTP(시간 동기화)가 되어있지 않다면,

-과장해서 말하면, 실제 모바일에서 요청한것은 11시인데
서버에서는
12시라고 남을 수도 있다.

-장애/이슈 발생 시간의 추적 또한 힘들어 지며, lock용으로
 사용하는 서버의 경우 서비스 영향이 있을 수 있다
.

NTP

-컴퓨터의 시스템 시간을 동기화할 때 사용하는 프로토콜
-컴퓨터와 컴퓨터간의 시간을 동기화 하기 위한 네트워크
 프로토콜

chronyd

-주기적으로 시스템의 시간을 조정하는 서비스

-네트워크 액세스가 허용될 때 NTP 프로토콜을 이용하여
 서버와 동기화를 수행

-네트워크 불가 시 마지막으로 계산된 드리프트 파일을
 참고하여 시간 교정을 수행

-chronyc 명령을 사용하여 수동으로 시간을 교정

->yum install chrony

->vi /etc/chrony.conf

line 3

#server 0.centos.pool.ntp.org iburst

#server 1.centos.pool.ntp.org iburst

#server 2.centos.pool.ntp.org iburst

#server 3.centos.pool.ntp.org iburst

server time.bora.net iburst

server time.nuri.net iburst

server time.kornet.net iburst

server time.kriss.re.kr iburst

 

#line 30

allow 10.0.0.0/24

 

firewall-cmd --add-service=ntp --permanent

firewall-cmd --reload

 

systemctl start chronyd

chronyc sources (현재 시간 소스에 대한 정보 확인)

-> * 작동중인 ntp(현재 sync 를 받고 있음을 의미)

-> + 대기중인 ntp

   (ntp 알고리즘에 의해 접속은 가능하지만 sync 를 하고 있지는 않음을 의미)

-> : ntp 알고리즘에 의해 접속은 가능하지만 sync 가능 리스트에서 제외

blank : 접속이 불가능함을 의미

 

사진

만약 chronyc sources 후에

name /ip 표에 +가 없다면

다른 ntp 사이트를 이용하여 다시 테스트해보자

(https://zetawiki.com/wiki/%EA%B3%B5%EC%9A%A9_NTP_%EC%84%9C%EB%B2%84_%EB%AA%A9%EB%A1%9D)

 

다시 한번 방화벽으로 명령어 주고 되는지 확인...

클라우드공부 방향성에 대해 조언을 얻으러

클라우드과정을 듣기 전에 나는 클라우드 전문가 분을 만났다.

그래도 이쪽 분야에 대해서 어느 정도 알고 가야 공부에 대한 방향이 잡힐 것 같아서였다.

퍼블릭 클라우드, AWS를 공부를 하라고 권유를 해주셨고, 더불어 AWS자격증도 취득하는 것을 권유해주셨다.

일단 나는 기초적인 공부가 덜되어 있고, 국비과정을 통해서 엄청나게 공부한 후에 그 뒤에 고려를 해보기로 했다.

또한, 공부를 하려고 했지만, 학원에서 배우는 내용만으로도 벅찼기 때문에 다른 것을 공부할 여유가 되지 않았다.

 

네트워크 관련 서적 구매

그리고 나는 인프라를 공부한다면 기본적으로 전부 공부하는 후니책을 샀다.

 

책이 엄청 두꺼웠고, 과정 공부를 하면서 책을 들여다 보기란 쉽지 않았다.

어떻게 할까 고민하다가 학원에 가기전 집에서 딱 5분-10분 씩, 1-2페이지를 보고 가기로 결정했다.

그리고 공부하다 보니 학원과정에서 배우는 네트워크 과정하고 겹치게 되었고, 과정에서 배우는 네트워크는 내가 보는 내용보다 앞질러 갔다. 그래도 꾸준히 아침에 5분-10분씩 복습한다는 생각으로 조금씩 봤었다.

 

클라우드 서적 구매

그리고 과정시작전에 클라우드에서 공부를 해야겠다고 생각을 했고, 디테일하게 공부하기 어려우니

쉽고 개념을 익힐 수 있는 클라우드 서적을 사야겠다고 마음을 먹고 교보문고에 가서 골랐다.

학원에가서 담임교수님이 빠르게 개념을 훓는데 이 책이 좋다고 하셨다.. 역시나 나도 책을 보는 눈이 있는건가 ㅠㅠ

 

공부를 했지만 사실 이 단어의 의미가 이런의미이구나 하고 지나가는 정도 였다.

아키텍처나 등등 봐도 각인이 잘되지 않았다.

그리고 과정이 시작되고 내가 공부한 내용은 1주일을 가지 못했다..

가상머신 세팅

설정

Memory 4GB

processors 2

hard disk (SCSI) -20GB

hard disk (SCSI) -30GB

Network Adapter Bridged (Automatic)

Network Adapter 2 NAT

Standard Partition-LVM으로 설정이 아닌 standard partition으로 설정

 

싱글노드로 오픈스택을 구축할 예정

 

1. vi /etc/default/grub 편집

-vi /etc/default/ tab 해서 grub 타입 완성

-grub cmdline linux에서 quiet 뒤에 net.ifnames=0 biosdevname=0 이 추가

 

작업하는이유

인터페이스 카드 이름과 바이오스(하드웨어의 정보를 읽어서 부팅하는역할)에서 알려주는 이름을 사용하지 않겠다!!!

- 이렇게 커널의 기본값을 변경해줘야 커널이 업데이트 되었을때 값이 변경되지 않습니.

 

2. grub 파일 재생성

명령어

-> grub2-mkconfig o /boot/grub2/grub.cfg (위에 설정한대로 대로 생성해주는 역할 : 재생성 이유)

-> reboot 또는 shutdown r now (reboot 하고 systemctl resetart network를 해주기-수정할 경우)

 

3. 인터페이스 카드 이름 변경하러 가기

cd /etc/sysconfig/network:-scripts

mv - v ifcfg-ens33 ifcfg-eth0

mv - v ifcfg-ens34 ifcfg-eht1

 

(2.3.4.번 결과사진)

 

4. vi /etc/sysconfig/network-scripts/ifcfg-eth0 (외부) 그리고 eth1(내부)

설정 eth0

static

IPADDR =192.168.0.102

GATEWAY=192.168.0.1

NETMASK=255.255.255.0

DNS1 =8.8.8.8

#마주한 장애.

swp 파일이 있어 지워라는 내용이었음

지우려고 하다가, 실패했는데, 다시 vi /etc/sysconfig/network-scripts/ifcfg-eht1 로 하니 다시 들어가진다.

파일을 앞에서 이미 작업하다가 제대로 삭제를 안하거나 내용없이 종료를 하지 않으면 나오는 문제이다.

 

설정 eth1

static

yes

IPADDR =10.0.0.30

GATEWAY=10.0.0.2

NETMASK=255.255.255.0

DNS1 =8.8.8.8

 

->yum y update (새로 바뀐 내용 업데이트)

->reboot 실행

 

5. ping 테스트를 해주어 통신이 되는지 확인해줄 것

-네트워크 상에서 호스트간 통신을 확인하는 명령어

-ICMP프로토콜 프로그램,네트워크 연결을 점검하는 도구

 

*trace-route

-패킷이 라우터 까지 도달아는 구간의 정보를 기록

-ICMP를 이용하여 TTL값을 포함하고 있는 패킷을 전송하여 반환값을 출력

-IP주소나 URL로서 목적지를 입력,게이트웨이,컴퓨터이름,주소,걸리는시간을 표시

 

설치명령어

yum -y install traceroute

 

실행명령어

traceroute 10.0.0.2

 

*netstat

-라우팅과 관련된 정보를 얻기 위한 명령어. 라우팅 테이블을 화면에 표시.

 

설치명령어

#yum -y install net-tools

 

실행명령어

netstat

 

#yum –y update 가 안되고 gateway 및 8.8.8.8 ping이 안되길래 확인했던 방법

eth1 ping 가는데 eth0 외부 gateway 8.8.8.8 이 안되길래

bridge 설정을 밖에서 안해주어서 생긴 문제이었다.

 

 

+ Recent posts