오픈스택 커뮤니티 - 제1회 공개 SW 커뮤니티데이 (2017년 9월 정기 세미나 대체)
- 일시: 9월 22일 금요일
- 발표자: 장태희 (운영진, 스터디 매니저)
- 행사 정보: https://www.facebook.com/groups/openstack.kr/permalink/1826976907316452/
2015. 09. 05 도커 서울 밋업 4번째(Open Container Korea 주최).
elasticsearch에 은전한닢 한국어 형태소 분석기를 적용하고 운영한 사례 발표.
- 사용자 사전별로 이미지를 만들기
- nginx를 이용해 http basic auth 적용하기
SELinux(Security-Enhanced Linux)는 미국 국가 안보국(NSA)에서 개발한 것으로,
관리자가 시스템 엑세스 권한을 효과적으로 제어할 수 있게 하는 Linux 시스템용 보안 아키텍처입니다.
특정 서비스의 구동이 원활하지 않거나 혹은 관리의 번거로움 등으로 인해 SELinux를 Disable 하는 경우가 많은데요,
SELinux를 사용해야 하는 이유와 작동 방식에 대해 설명합니다,
본 슬라이드는 Windows환경에서 NginX구동을 실습하기 위해, PHP를 예로 들어 진행하고 있습니다. NginX는 PHP 동적웹페이지에 대한 처리보다, 정적 HTTP 서버에 적합 합니다.
본 슬라이드는 시작과 구동에 초점을 맞추고 있습니다. 설정관련 내용은 아래 공식 문서를 참조할 수 있습니다.
http://nginx.org/en/docs/beginners_guide.html
.NET을 처음 접한 프로그래머가 P2P 네트워킹 기능을 구현하면서 마주쳤던 문제와 해결 방법등 개발 경험 전반에 걸쳐서 이야기 해 보려 합니다. 또한 C# 8.0에 추가되는 비동기 스트림을 미리 써볼 수 있는 AsyncEnumerable과 비동기 잠금(lock) 등의 편리한 기능을 갖춘 AsyncEx등의 라이브러리들도 소개합니다.
2015. 09. 05 도커 서울 밋업 4번째(Open Container Korea 주최).
elasticsearch에 은전한닢 한국어 형태소 분석기를 적용하고 운영한 사례 발표.
- 사용자 사전별로 이미지를 만들기
- nginx를 이용해 http basic auth 적용하기
SELinux(Security-Enhanced Linux)는 미국 국가 안보국(NSA)에서 개발한 것으로,
관리자가 시스템 엑세스 권한을 효과적으로 제어할 수 있게 하는 Linux 시스템용 보안 아키텍처입니다.
특정 서비스의 구동이 원활하지 않거나 혹은 관리의 번거로움 등으로 인해 SELinux를 Disable 하는 경우가 많은데요,
SELinux를 사용해야 하는 이유와 작동 방식에 대해 설명합니다,
본 슬라이드는 Windows환경에서 NginX구동을 실습하기 위해, PHP를 예로 들어 진행하고 있습니다. NginX는 PHP 동적웹페이지에 대한 처리보다, 정적 HTTP 서버에 적합 합니다.
본 슬라이드는 시작과 구동에 초점을 맞추고 있습니다. 설정관련 내용은 아래 공식 문서를 참조할 수 있습니다.
http://nginx.org/en/docs/beginners_guide.html
.NET을 처음 접한 프로그래머가 P2P 네트워킹 기능을 구현하면서 마주쳤던 문제와 해결 방법등 개발 경험 전반에 걸쳐서 이야기 해 보려 합니다. 또한 C# 8.0에 추가되는 비동기 스트림을 미리 써볼 수 있는 AsyncEnumerable과 비동기 잠금(lock) 등의 편리한 기능을 갖춘 AsyncEx등의 라이브러리들도 소개합니다.
This presentation start from basic concept such as container and container orchestration
And then go through Kubernetes internal especially Master Node components and Work Node components and show and explain core mechanism with codes.
모바일 게임 서버 런칭 과정 중 겪었던 경험들을 공유합니다.
Docker, Amazon ElasticBeanstalk, Kinesis, Elastic Stack, Elasticsearch, 부하테스트에 대한 내용을 담았습니다.
Github : https://github.com/YonghoChoi
Blog : http://yongho1037.tistory.com
오픈 소스 Actor Framework 인 Akka.NET 을 통해 온라인 게임 서버를 어떻게 구현할 수 있는지를 설명합니다. Actor Model 에 대한 기본 이해부터 Scale-out 가능한 게임 서버 구축까지 전반적인 내용에 대해 알 수 있습니다. 설명을 위해 클라이언트는 Unity3D 를 사용할 예정입니다.
Golang Project Guide from A to Z: From Feature Development to Enterprise Appl...Kyuhyun Byun
This comprehensive presentation offers a deep dive into Go language development methodologies, covering projects of all scales. Whether you're working on a small prototype or a large-scale enterprise application, this guide provides valuable insights and best practices.
Key topics covered:
Distinguishing between small and large projects in Go
Code patterns for small, feature-focused projects
Comparison of Handler and HandlerFunc approaches
Enterprise application design using Domain Driven Design (DDD)
Detailed explanations of architectural layers: Presenter, Handler, Usecase, Service, Repository, and Recorder
NoSQL (DynamoDB) modeling techniques
Writing effective test code and using mocking tools like 'counterfeiter'
Essential tools for production-ready applications: APM, error monitoring, metric collection, and logging services
This presentation is ideal for Go developers of all levels, from beginners looking to structure their first projects to experienced developers aiming to optimize large-scale applications. It provides practical advice on code organization, testing strategies, and operational considerations to help you build robust, maintainable Go applications.
Whether you're starting a new project or looking to improve an existing one, this guide offers valuable insights into Go development best practices across different project scales and complexities.
드랍박스, nDrive 등과 같은 클라우드 스토리지 서비스들은 데이터를 어떻게 저장하는지에 대한 이론적 내용과 실제 구현 내용을 살펴봅니다. 이 발표에서는 OpenStack 의 swift라는 Object Storage 를 이용하여 이론이 어떻게 구현되어있는지 알아봅니다.
[2018.10.19] Andrew Kong - Tunnel without tunnel (Seminar at OpenStack Korea ...OpenStack Korea Community
The document discusses network architectures in OpenStack. It provides diagrams to illustrate the networking components including compute nodes, virtual machines, linux bridges, agents, and routers. MPLS is introduced as a solution to address issues with tenant network separation and performance challenges with other approaches like VxLAN. MPLS uses label switching to encapsulate and forward packets instead of relying on IP routing and overlays, improving east-west traffic performance between tenants.
The document discusses the integration of Ansible with OpenStack for Infrastructure as Code (IaC) management, highlighting its features such as agentless application deployment, workflow orchestration, and security enhancements. It includes examples of using playbooks to automate tasks like installing and starting Apache servers, managing cloud infrastructure, and deploying instances efficiently. Additionally, it emphasizes Ansible's extensive module library and its relevance across various cloud services and network devices.
[OpenInfra Days Korea 2018] Day 2 - E6: "SONA: ONOS SDN Controller 기반 OpenSta...OpenStack Korea Community
This document discusses SONA, an ONOS SDN controller-based network management solution for OpenStack and Kubernetes. SONA provides scalable virtual network management to replace Neutron. It features direct VM-VM communication visibility, a scalable gateway, flow tracing UI, and statistics/traffic mirroring collection without extra software. SONA supports OpenStack, Kubernetes, and fabric networks. The document also covers SONA's continuous integration process and opportunities for open source contribution. Lastly, it discusses data plane acceleration using SmartNICs like Cavium LiquidIO for offloading overlay encapsulation/decapsulation.
[OpenInfra Days Korea 2018] Day 2 - E3-2: "핸즈온 워크샵: Kubespray, Helm, Armada를 ...OpenStack Korea Community
This document discusses running OpenStack on Kubernetes. It provides instructions for logging into the Kubernetes cluster and OpenStack dashboard. It also summarizes the logging, monitoring, and alerting tools used, including Prometheus for monitoring, Kibana and Elasticsearch for logging, and Alertmanager for alerts. Grafana is used for visualizing metrics and Prometheus is configured to monitor the OpenStack and Kubernetes components.
[OpenInfra Days Korea 2018] Day 2 - E5-1: "Invited Talk: Kubicorn - Building ...OpenStack Korea Community
This document summarizes Seungkyu Ahn's experience working with various technologies over time including transitioning from JSP/Servlet to Spring and Hibernate, CVS to Git, Ant to Maven, and Waterfall to Agile methodologies. It also lists technologies he has worked with like OpenStack, Linux, Docker, Kubernetes, and is currently learning like Deep Learning, Spring Boot, and mobile development. It provides configuration details for installing a Kubernetes cluster using Kubespray including specifying host files, roles, and cluster configuration with options like Calico networking, Kubernetes version, and enabling/disabling addons.
The document discusses using Ceph storage as a PaaS platform and service. It describes PASTA, an in-house PaaS platform that uses Ceph for persistent volumes for containers. Ceph provides strong consistency for block and filesystem volumes and is used for stateful containers in Docker Swarm farms for services like Jenkins, Elasticsearch, and DRUID storage. Operational issues with Ceph discussed include multi-mapped volumes, upgrades, network failures, scrub/deep-scrub performance impacts, recovering RBD images, and monitor failures/recovery. Configuration options and methods for addressing these issues are also provided.
[OpenInfra Days Korea 2018] Day 2 - E4 - 딥다이브: immutable Kubernetes architectureOpenStack Korea Community
Linuxkit is a toolkit for building custom minimal and immutable Linux distributions. It allows building Linux distributions from code in a declarative YAML file. The distributions are built as Docker images for security and portability. Linuxkit uses containerization to build the OS, making it modular and customizable. It aims to provide secure defaults without compromising usability through immutable infrastructure principles.
[OpenInfra Days Korea 2018] Day 2 - E6 - OpenInfra monitoring with PrometheusOpenStack Korea Community
This document discusses using Prometheus for open infrastructure and cloud monitoring. It introduces Prometheus as a time series database and monitoring tool. Key features covered include metrics collection, service discovery, graphing, and alerting. The architecture of Prometheus is explained, including scrapping metrics directly or via exporters. A demo of Prometheus and Grafana is proposed to monitor Kubernetes clusters and visualize CPU usage. Alerting configuration and routes in Prometheus and Alertmanager are also summarized.
The document outlines the agenda and prerequisites for the 2018 Open Infra Days in Korea, focusing on the integration of serverless computing and containers. It details the steps for building and deploying applications using Azure Functions and Docker, along with necessary tools and resources. Additionally, it highlights Mexia's recruitment for various roles in .NET development and integration, emphasizing their workplace culture.
1) NetApp is a leader in open source technologies like OpenStack, Docker, Kubernetes, and Mesosphere. It contributes code to many open source projects and supports customers using these technologies.
2) NetApp supports OpenStack through technologies like Cinder for block storage and Manila for shared file systems. It has contributed a significant amount of code to these projects.
3) NetApp helps customers use containers through technologies like Trident, its container storage orchestrator. It was one of the first vendors certified for Docker volumes and developed early dynamic provisioning for Kubernetes.
[OpenInfra Days Korea 2018] (Track 4) - 오픈스택기반 NFV 관리 및 HA (high Availability...OpenStack Korea Community
The document summarizes research from the Internet Infra System Technology Research Center (IISTRC) on OpenStack-based NFV management and high availability technologies. It discusses ETSI NFV architecture standards, the OpenStack Tacker project for VNF management, contributions to Tacker including Zabbix monitoring and Kubernetes support, the Vitrage project for root cause analysis, and plans for high availability features including real-time fault inspection and hybrid SFC support.
This document discusses setting up TensorFlow for GPU usage and training models in parallel across multiple GPUs. It provides instructions on limiting GPU memory usage on a per-process basis, distributing TensorFlow workload across GPUs, and monitoring GPU usage.
3. 2017년 Openstack Swift 분석 스터디
▪ Study Lead : 조성수
▪ Study Period : 2017.04.11 ~ 2017.07
▪ 장소 제공 : Naver D2
▪ 산출물 공유 : Github(https://git.io/vdvHv)
5. What is Swift?
▪ OpenStack Object Store project(Object Storage)
▪ Store data as objects.
▪ Offers cloud storage software, store and retrieve lots of data
with a simple API.
▪ swift-proxy, account, container, object로 구성됩니다.
▪ Swift-proxy는 account, container, object를 관리, Object API를 제공
▪ Account, Container는 DB로 데이터가 관리되며, Object는 저장공간에
직접 저장되는 방식으로 설계 되어 있습니다.
▪ User는 API를 통하여 데이터를 저장하거나 다운로드
For more information, please visit https://docs.openstack.org/swift/latest
Source) http://naleejang.tistory.com/104
7. Swift APIs
▪ account – accounts in swift.
▪ container – same concept of Amazon S3 bucket. objects are stored in
container.
▪ object - data such as documents, files, and movies. Available to save w
ith metadata
11. Swift Components
▪ proxy-server
▪ Provide Swift API and relay requests to backend servers(accout,
container, object)
▪ account-server
▪ Save swift account information. Shows information amounts of
container per accounts, storage usage.
▪ container-server
▪ Save container information of accounts
12. Swift Components
▪ object-server
▪ Store real objects. Each objects has basically 3 replications.
▪ Daemon
▪ Numeral daemons must be executed due to the fact that swift is
eventual consistency system so that it should sustain consistency.
28. /swift/common/middleware/tempauth.py
▪ token 인증을 처리하는 부분
▪ URL은 어떻게 제공되는가?
▪ 원하는 대상 정하기
▪ request에 보낸 내용을 가지고 보기
▪ request를 보내는 것이 없으면 log를 가지고 (log가 찍혔다면
code가 지나간 자리이므로) 해당 부분을 검색하여 string을 검
색
29. /swift/common/middleware/tempauth.py
▪ account_user = account + ':' + user -> 유저 인증 시작 부분(user와
group이 정상적인지 이전에 확인)
▪ if self.users[account_user]['key'] != key -> 키 검사
▪ account_id = self.users[account_user]['url'].rsplit('/', 1)[-1] -> 계정
id 가져오기
▪ if not token: -> token이 생성되는 과정을 볼 수 있다
▪ resp = Response(request=req, headers={ -> token이 모두 발급 된
것을 확인
▪ X-Auth Token을 언제 가져오는가?
▪ token = env.get('HTTP_X_AUTH_TOKEN',
env.get('HTTP_X_STORAGE_TOKEN'))
30. /swift/common/middleware/tempauth.py
▪ 유효성 검사
▪ breaking point : groups = self.get_groups(env, token)
▪ memcache_token_key = '%s/token/%s' % (self.reseller_prefix,
token)
▪ memcache_token_key = '%s/token/%s' % (self.reseller_prefix,
token)
▪ token의 문자열을 검사 하는 것이 아니라, memcache에서 무엇
인가를 가져와서 비교하는구나 라고 알게 됨.
31. /swift/commom/middleware/proxy-logging.py
▪ Logging middleware for the Swift proxy.
▪ `client_ip remote_addr datetime request_method request_path
protocol status_int user_agent auth_token bytes_recvd
bytes_sent client_etag transaction_id headers request_time
source log_info request_start_time request_end_time`
▪ url 인코딩되고, 스페이스로만 구분되므로 `split()`으로 간단히
구분이가능
32. /swift/commom/middleware/proxy-logging.py
▪ `remote_addr` : `REMOTE_ADDR` 환경변수 값
▪ `client_ip` : `X-Forwarded-For` 해더, `x-Cluster_Ip` 해더,
`REMOTE_ADDR` 환경 변수 값들을 나타낸다.
▪ `source` : WSGI 환경에서의 `swift.source` 를 나타낸다. 요청을 생성
한 코드를 나타냄
▪ `log_info`WSGI 환경에서의 `swfit.log_info` 값을 나타낸다.
▪ `x-delete-at` 값이나 일반 로그 정보에서 감지할 수 없는 <b>뒤에서
동작하는</b> 코드들에 대한 추가 정보를 내보냄.
▪ 로그 추가시`env.setdefault('swift.log_info', []).append(your_info)` 를
이용하여 다른 사람들과의 로그와 충돌이 없도록 해야 함.
▪ 헤더 값이 없거나, 누락된 값, 0은 일반적으로 `-` 로 표기.
33. /swift/commom/middleware/proxy-logging.py
▪ config 값
▪ `self.log_hdrs`
▪ `access_log_haders` 가 있으면 해당 값을 읽어오고 없으면
`log_headers`를 읽어오는데 그것도 없으면 `no`로 설정
▪ `log_hdrs_only` : `access_log_headers_only` 값이 존재하면
`log_hdrs_only` 값에다가 리스트로 가지고 있음.
▪ `self.valid_methods` : `access_log_statsd_valid_http_methods` 값을
가져오며, 없으면 `log_statsd_valid_http_methods` >
`GET,HEAD,POST,PUT,DELETE,COPY,OPTIONS` 순으로 값을 가져오게
된다.
▪ 해당내역도 각 항목별로 string list로 구성된다.
34. DLO / SLO
▪ /swift/commom/middleware/dlo.py
▪ D(Dynamic)LO : 파일을 무한정 올릴 수 있다. multipart 종료 시점을 알
수 없음.
▪ req = Request() 객체를 어떻게 잘 활용하는지, Debugging point, 분기
를 눈에 익히는것이 목적
▪ /swift/commom/middleware/slo.py
▪ S(Static)LO : multipart 업로드 종료 이후 더이상 part 업로드 불가.
37. Custom Middleware Development
▪ `def filter_factory`
▪ closer 기법을 통한 작성
class MyMiddleware:
def filter_factory(global_conf, **local_conf):
conf.update
def my_filter(app):
return MyMiddleware(app, conf)
return my_filter
For more information, https://docs.openstack.org/swift/pike/development_middleware.html
38. Custom Middleware Development
▪ pipeline에서 동작시 wsgi.py module이 어느 클래스를 로드 할지
결정.(paste.filter_factory 부분)
▪ wsgi가 각 middleware의 클래스들을 초기화 시켜준다.
▪ 각 middleware별 특정 변수들은 local_conf에 저장
▪ app parameter는 다음에 호출 할 middleware를 가리킴.
▪ 문서에 나온것과 달리 middleware는 따로 repository를 만들어서
관리. 이후 설치할 수 있는 설치형으로 만듬.
▪ setup.py에 pbr 설정을 한 뒤 setup.cfg에 swift를 설치하듯이 설치.
39. proxy/server.py __call__
▪ wsgi가 부르는 함수, 한번 인증된 키에 대해서는 memcached
가 가지고 있어 Keystone으로 갈 필요가 없음
▪ proxy server -> proxy/containers/server.py 가 핵심
40. Cluster
▪ cluster에서 region을 생성한다.(여러개가 될 수 있음)
▪ 여러개의 region
▪ region 간은 독립된 환경이어야 함. (전기, 네트워크 등)
▪ region 안에 여러개의 zone
▪ 여러개의 rack을 묶어 region을 만들 수도 있고, 하나의 데이터
센터를 region으로 할 수도 있다.
▪ 각 region은 독립된 전원과 네트워크 등을 사용해야 한다.
41. Cluster
▪ zone은 하나의 rack이라고 보면 된다.
▪ zone은 하나의 랙이라고 봐도 무방
▪ 한 열이 zone이 될수도, 랙 여러개가 zone이 될수도 있음
▪ zone안에 여러개의 node
▪ node는 서버라고 봐도 무방
▪ node안에 여러개의 하드디스크
▪ node는 각 서버 장비라고 보면 된다.
▪ hash 알고리즘은 md5를 기본으로 사용.
42. 분산 시스템 - consistence hash ring
Source) http://www.paperplanes.de/2011/12/9/the-magic-of-consistent-hashing.html
43. Account / Container
▪ account와 container는 database에 접근하는 코드 구조가 비슷
▪ account/server.py
▪ PUT -> proxy 서버에서 request를 받을 때에는
http://prox_svr/v1/account/container/obj
▪ PUT에서 database로 request를 보낼 때에는
http://account_server/v1/sdb1/70/account/obj 로 바뀌어 보내
게 된다.
▪ account 생성 == db file 생성
44. Account / Container
▪ db.py -> initialize == sqlite에 table을 만드는 것 까지만 진행
▪ PUT 요청 -> db 파일을 하나 생성하고 원하는 이름은 rename
으로 db 파일을 생성한다. PUT 명령이 오면 실제 sqlite에 바로
쓰는것이 아니라 pending 파일에 기록하고, pending 파일이 일
정 capacity를 넘어서면 .lock 파일로 모든 요청을 잠시 막고 db
에 기록한다.
45. Account / Container
▪ GET 요청 -> 모든 요청을 잠시 막고 pending에 있는 것을 db에
merge시킨 뒤 db를 읽어온다.
▪ DELETE -> table field에 DELETED라고 flag 표시만 하고 실제
지우지는 않는다. 나중에 auditor daemon이 돌면서 실제 파일
을 지운다.