SlideShare a Scribd company logo
1 of 18
Designing and Building
Multi-Region Swift Deployment
KINX(www.kinx.net)
CLOUD TECH GROUP
Shawn Kim
1
Table of Contents
Swift
Architecture Review
Node Roles & deployment
Ring
Enhancements
Demonstration
Q&A
2
Swift
Object Store Project of OpenStack
Characteristics
High availability and high scalability
By keeping replications, Swift avoids data loss.
Recommended copies >= 3
3 Layered data: Account / Container / Object
Account: Namespace which divides Containers.
Container: Namespace which divides Objects. Min ACL configuration unit.
3
Swift Cont
Swift Architecture
Servier Processes + Consistency Processes 로 구성됨
Server Processes provide Swift services.
Proxy server
Account / Container / Object servers
Consistency Processes maintains consistency of A/C/O objects or metadata.
A/C/O Auditor
A/C/O Replicator
4
Architecture
Review
Problem:
Region down induces all data
loss.
Alternative:
Multi region Swift.
>=3 copy replications.
Dedicate Keystones with DB
synchronization.
Multi Proxies with GSLB.
5
Figure 1. Multi-Region Architecture
Architectural Review - Design Decisions
Replication >= 3
Proxy and Keystone are deployment on the same node
Proxy and Keystone share the same DNS name and SSL configuration.
Easy Keystone HA configuration.
Multi-Region architecture:
Region level high availability
Equally distributed replications
#zones = #replictions, Each zone has one replication. 6
Architectural Review - Design Decisions Cont.
Connection btw regions
Storages across different regions cannot be connected with internal IPs.
Under the multi-region environment, storages are connected by public IPs with iptables configuration for
security consideration.
Swift Master
Master Role: Swift installation base and gateway for all nodes.
MGMT Role: Ring building, management and distribution.
Auth Module:
Keystone versus. SWAuth: Keystone Win! 7
Architectural Review - Design Result
2 Regions, 3 Zones, 3 storage
nodes with 9 volumes.
Node naming convention:
r<digit>-[z<digit>]-<role><digit>
ex) r1-p1
ex) r2-z1-s1
It can be referred when Ring is
built.
8Figure 2. Deployed Multi-Region Swift : Minimum Configuration
Node Roles &
Package Deployment
Keystone Node
Python-openstackclient
Mariadb-server-5.5
Keystone
Memcached
9
Proxy Node
Python-openstackclient
Swift
Swift-proxy
Python-swiftclient
Python-keystonemiddleware
Storage Node
Python-openstackclient
Xfsprogs, rsync
Swift
Swift-account
Swift-container
Swift-object
Keystone node is
integrated with
Proxy nodes
10
Node Roles &
Package Deployment
Swift Master + MGMT
Python-openstackclient
Swift
Python-swiftclient
LMA
EX) SwiftStack: Zabbix + ELK
Ring
Ring is abbreviation of Modified Consistent Hashing Ring.
Swift’s Object is located by using Hash function:
[Drive_id] = md5([account_x]/[container_y]/[object_z]) MOD [total_drives]
11
Each drive’s weight determine its length of range.
All drives are placed fare random order.
Ex) [hash of object] is placed in range of drive 4.
Figure 3. Drives and the hashing ring
(OpenStack Swift 2014)*
*Joe Arnold & member of the SwiftStack team. OpenStack Swift: USING,
ADMINISTERING, AND DEVELOPING FOR SWIFT OBJECT STORAGE.
O’REILLY, 2014.
Consistent
Hashing Ring Cont.
Minimize object moving even if disk is added or removed.
12
Ex)
Object is originally located at drive 4.
After adding drive 5, the hash value of object is belong to drive 5.
Figure 5. New drive added to a
ring (OpenStack Swift 2014)**
Figure 4. Drives and the hashing
ring (OpenStack Swift 2014)*
*, **Joe Annold & member of the SwiftStack team. OpenStack Swift: USING,
ADMINISTERING, AND DEVELOPING FOR SWIFT OBJECT STORAGE.
O’REILLY, 2014.
(Real) Consistent Hashing Ring Cont.
In the Swift rings, each drive is distributed with
many narrow ranges in fare random order.
When a new disk is added, new ranges are
added tail of arbitrary ranges.
See the ranges of drive 5.
13
Figure 6. Many ranges for each drive
(OpenStack Swift 2014)*
*Joe Annold & member of the SwiftStack team. OpenStack Swift: USING,
ADMINISTERING, AND DEVELOPING FOR SWIFT OBJECT STORAGE.
O’REILLY, 2014.
Modified Consistent Hashing Ring
Some ‘Modifications’ applied Consistent Hashing Ring:
Partitions
Swift ring is comprised with fixed ranged partitions.
Partition stores and indicates Object’s location(s).
Partitions power
Total partitions in cluster = 2^partitions_power
Arbitrary integer which was defined when cluster creation.
Replica count
Number of replications is defined when ring is built. 14
Modified Consistent Hashing Ring Cont.
Hash(path) = md5(path + per_cluster_suffix)
Partitions_power
Partitions_power = UPPER_BOUND[log2(number_of_disks * 100)]
After selecting partitions_power, it is Immutable.
Bigger partitions_power makes ring bigger with more indices.
Bigger rings use more memory.
Partition = hash >> part_shift
Part_shift = 32 - partitions_power
15
Enhancements
Swift3: Apply S3 API compatible Middleware.
LMA Node: ELK and Zabbix
Enable swift middlewares such as Tempurl, domap_remap, and staticweb
Test automation
Swift Tox: test coverage is 50 ~ 80%.
After S3 API (Swift3) integration, use Boto unit Test.
Swift Deployment Automation using PuppetSwift module.
Chef Cookbook-openstack-object-storage was deprecated after Mitaka release. 16
Demonstration
Uploading sample data
LOGs @ each storage nodes
Trying download after killing 2 object server.
Swift-ring-builder and builder file.
Swift-dispersion-populate and report
17
QnA
18
Q: When Swift’s PUT request returns success after making how many replications?
A: Just one object.
Q: With 3 object servers and 3 replication configured Swift, and PUT request is
occasionally failed when 2 arbitrary object servers are stopped. Is it a default
behavior? Also, can I configure this behavior?
A: Unfortunately, object’s hash values (maybe 3 counts) can indicate disabled object servers. In
this case, the object cannot be written because all object servers are not be reachable.
Q: With HA configured proxy servers, and trying to read right after writing an
object, it is possible for end-user to be unreachable to the object?
A: No. By searching its ring, swift can locate the written object among the object’s replication(s)

More Related Content

What's hot

Multi-Cell OpenStack: How to Evolve Your Cloud to Scale - November, 2014
Multi-Cell OpenStack: How to Evolve Your Cloud to Scale - November, 2014Multi-Cell OpenStack: How to Evolve Your Cloud to Scale - November, 2014
Multi-Cell OpenStack: How to Evolve Your Cloud to Scale - November, 2014Belmiro Moreira
 
Learning to Scale OpenStack
Learning to Scale OpenStackLearning to Scale OpenStack
Learning to Scale OpenStackRainya Mosher
 
20170926 cern cloud v4
20170926 cern cloud v420170926 cern cloud v4
20170926 cern cloud v4Tim Bell
 
CERN OpenStack Cloud Control Plane - From VMs to K8s
CERN OpenStack Cloud Control Plane - From VMs to K8sCERN OpenStack Cloud Control Plane - From VMs to K8s
CERN OpenStack Cloud Control Plane - From VMs to K8sBelmiro Moreira
 
How to use TripleO tools for your own project
How to use TripleO tools for your own projectHow to use TripleO tools for your own project
How to use TripleO tools for your own projectGonéri Le Bouder
 
Cern Cloud Architecture - February, 2016
Cern Cloud Architecture - February, 2016Cern Cloud Architecture - February, 2016
Cern Cloud Architecture - February, 2016Belmiro Moreira
 
Heat up your stack
Heat up your stackHeat up your stack
Heat up your stackRico Lin
 
Rally--OpenStack Benchmarking at Scale
Rally--OpenStack Benchmarking at ScaleRally--OpenStack Benchmarking at Scale
Rally--OpenStack Benchmarking at ScaleMirantis
 
Magnum first-class-resource
Magnum first-class-resourceMagnum first-class-resource
Magnum first-class-resourceAdrian Otto
 
CERN User Story
CERN User StoryCERN User Story
CERN User StoryTim Bell
 
OpenStack Magnum 2016-08-04
OpenStack Magnum 2016-08-04OpenStack Magnum 2016-08-04
OpenStack Magnum 2016-08-04Adrian Otto
 
OpenStack in 10 minutes with Devstack
OpenStack in 10 minutes with DevstackOpenStack in 10 minutes with Devstack
OpenStack in 10 minutes with DevstackSean Dague
 
10 Years of OpenStack at CERN - From 0 to 300k cores
10 Years of OpenStack at CERN - From 0 to 300k cores10 Years of OpenStack at CERN - From 0 to 300k cores
10 Years of OpenStack at CERN - From 0 to 300k coresBelmiro Moreira
 
Docker for Multi-Cloud Apps
Docker for Multi-Cloud AppsDocker for Multi-Cloud Apps
Docker for Multi-Cloud AppsAdrian Otto
 

What's hot (20)

Multi-Cell OpenStack: How to Evolve Your Cloud to Scale - November, 2014
Multi-Cell OpenStack: How to Evolve Your Cloud to Scale - November, 2014Multi-Cell OpenStack: How to Evolve Your Cloud to Scale - November, 2014
Multi-Cell OpenStack: How to Evolve Your Cloud to Scale - November, 2014
 
Docker architecture-05
Docker architecture-05Docker architecture-05
Docker architecture-05
 
Docker discovery service
Docker   discovery serviceDocker   discovery service
Docker discovery service
 
OpenStack Heat
OpenStack HeatOpenStack Heat
OpenStack Heat
 
Reviwe(docker)
Reviwe(docker)Reviwe(docker)
Reviwe(docker)
 
Learning to Scale OpenStack
Learning to Scale OpenStackLearning to Scale OpenStack
Learning to Scale OpenStack
 
20170926 cern cloud v4
20170926 cern cloud v420170926 cern cloud v4
20170926 cern cloud v4
 
CERN OpenStack Cloud Control Plane - From VMs to K8s
CERN OpenStack Cloud Control Plane - From VMs to K8sCERN OpenStack Cloud Control Plane - From VMs to K8s
CERN OpenStack Cloud Control Plane - From VMs to K8s
 
How to use TripleO tools for your own project
How to use TripleO tools for your own projectHow to use TripleO tools for your own project
How to use TripleO tools for your own project
 
Cern Cloud Architecture - February, 2016
Cern Cloud Architecture - February, 2016Cern Cloud Architecture - February, 2016
Cern Cloud Architecture - February, 2016
 
Heat up your stack
Heat up your stackHeat up your stack
Heat up your stack
 
Rally--OpenStack Benchmarking at Scale
Rally--OpenStack Benchmarking at ScaleRally--OpenStack Benchmarking at Scale
Rally--OpenStack Benchmarking at Scale
 
Magnum first-class-resource
Magnum first-class-resourceMagnum first-class-resource
Magnum first-class-resource
 
CERN User Story
CERN User StoryCERN User Story
CERN User Story
 
OpenStack Magnum 2016-08-04
OpenStack Magnum 2016-08-04OpenStack Magnum 2016-08-04
OpenStack Magnum 2016-08-04
 
OpenStack in 10 minutes with Devstack
OpenStack in 10 minutes with DevstackOpenStack in 10 minutes with Devstack
OpenStack in 10 minutes with Devstack
 
kubernetes 101
kubernetes 101kubernetes 101
kubernetes 101
 
10 Years of OpenStack at CERN - From 0 to 300k cores
10 Years of OpenStack at CERN - From 0 to 300k cores10 Years of OpenStack at CERN - From 0 to 300k cores
10 Years of OpenStack at CERN - From 0 to 300k cores
 
Paralell
ParalellParalell
Paralell
 
Docker for Multi-Cloud Apps
Docker for Multi-Cloud AppsDocker for Multi-Cloud Apps
Docker for Multi-Cloud Apps
 

Viewers also liked

Murano: Application Catalog for Openstack
Murano: Application Catalog for OpenstackMurano: Application Catalog for Openstack
Murano: Application Catalog for OpenstackAlexander Tivelkov
 
OpenStack Murano introduction
OpenStack Murano introductionOpenStack Murano introduction
OpenStack Murano introductionVictor Zhang
 
Issues of OpenStack multi-region mode
Issues of OpenStack multi-region modeIssues of OpenStack multi-region mode
Issues of OpenStack multi-region modeJoe Huang
 
Using MySQL Fabric for High Availability and Scaling Out
Using MySQL Fabric for High Availability and Scaling OutUsing MySQL Fabric for High Availability and Scaling Out
Using MySQL Fabric for High Availability and Scaling OutOSSCube
 
MAAS & Ubuntu Core: OCP Tech Day, Facebook Menlo Park, Aug 30th
MAAS & Ubuntu Core: OCP Tech Day, Facebook Menlo Park, Aug 30thMAAS & Ubuntu Core: OCP Tech Day, Facebook Menlo Park, Aug 30th
MAAS & Ubuntu Core: OCP Tech Day, Facebook Menlo Park, Aug 30thChristian "kiko" Reis
 
6 open stack_swift_panoramic_view
6 open stack_swift_panoramic_view6 open stack_swift_panoramic_view
6 open stack_swift_panoramic_viewopenstackindia
 
Aws multi-region High Availability
Aws multi-region High Availability Aws multi-region High Availability
Aws multi-region High Availability Adam Book
 
NFV for beginners
NFV for beginnersNFV for beginners
NFV for beginnersDave Neary
 
High Availability in the Cloud - Architectural Best Practices
High Availability in the Cloud - Architectural Best PracticesHigh Availability in the Cloud - Architectural Best Practices
High Availability in the Cloud - Architectural Best PracticesRightScale
 
2015 Upload Campaigns Calendar - SlideShare
2015 Upload Campaigns Calendar - SlideShare2015 Upload Campaigns Calendar - SlideShare
2015 Upload Campaigns Calendar - SlideShareSlideShare
 
What to Upload to SlideShare
What to Upload to SlideShareWhat to Upload to SlideShare
What to Upload to SlideShareSlideShare
 
Getting Started With SlideShare
Getting Started With SlideShareGetting Started With SlideShare
Getting Started With SlideShareSlideShare
 

Viewers also liked (14)

Murano: Application Catalog for Openstack
Murano: Application Catalog for OpenstackMurano: Application Catalog for Openstack
Murano: Application Catalog for Openstack
 
OpenStack Murano introduction
OpenStack Murano introductionOpenStack Murano introduction
OpenStack Murano introduction
 
Issues of OpenStack multi-region mode
Issues of OpenStack multi-region modeIssues of OpenStack multi-region mode
Issues of OpenStack multi-region mode
 
Using MySQL Fabric for High Availability and Scaling Out
Using MySQL Fabric for High Availability and Scaling OutUsing MySQL Fabric for High Availability and Scaling Out
Using MySQL Fabric for High Availability and Scaling Out
 
MAAS High Availability Overview
MAAS High Availability OverviewMAAS High Availability Overview
MAAS High Availability Overview
 
MAAS & Ubuntu Core: OCP Tech Day, Facebook Menlo Park, Aug 30th
MAAS & Ubuntu Core: OCP Tech Day, Facebook Menlo Park, Aug 30thMAAS & Ubuntu Core: OCP Tech Day, Facebook Menlo Park, Aug 30th
MAAS & Ubuntu Core: OCP Tech Day, Facebook Menlo Park, Aug 30th
 
6 open stack_swift_panoramic_view
6 open stack_swift_panoramic_view6 open stack_swift_panoramic_view
6 open stack_swift_panoramic_view
 
Aws multi-region High Availability
Aws multi-region High Availability Aws multi-region High Availability
Aws multi-region High Availability
 
NFV for beginners
NFV for beginnersNFV for beginners
NFV for beginners
 
NFV & Openstack
NFV & OpenstackNFV & Openstack
NFV & Openstack
 
High Availability in the Cloud - Architectural Best Practices
High Availability in the Cloud - Architectural Best PracticesHigh Availability in the Cloud - Architectural Best Practices
High Availability in the Cloud - Architectural Best Practices
 
2015 Upload Campaigns Calendar - SlideShare
2015 Upload Campaigns Calendar - SlideShare2015 Upload Campaigns Calendar - SlideShare
2015 Upload Campaigns Calendar - SlideShare
 
What to Upload to SlideShare
What to Upload to SlideShareWhat to Upload to SlideShare
What to Upload to SlideShare
 
Getting Started With SlideShare
Getting Started With SlideShareGetting Started With SlideShare
Getting Started With SlideShare
 

Similar to Designing and Building Multi-Region Swift Deployment

Swift Install Workshop - OpenStack Conference Spring 2012
Swift Install Workshop - OpenStack Conference Spring 2012Swift Install Workshop - OpenStack Conference Spring 2012
Swift Install Workshop - OpenStack Conference Spring 2012Joe Arnold
 
Introduction of private cloud in LINE - OpenStack最新情報セミナー(2019年2月)
Introduction of private cloud in LINE - OpenStack最新情報セミナー(2019年2月)Introduction of private cloud in LINE - OpenStack最新情報セミナー(2019年2月)
Introduction of private cloud in LINE - OpenStack最新情報セミナー(2019年2月)VirtualTech Japan Inc.
 
Openstack days taiwan 2016 0712
Openstack days taiwan 2016 0712Openstack days taiwan 2016 0712
Openstack days taiwan 2016 0712Naoto Gohko
 
あなたのScalaを爆速にする7つの方法
あなたのScalaを爆速にする7つの方法あなたのScalaを爆速にする7つの方法
あなたのScalaを爆速にする7つの方法x1 ichi
 
Kubernetes a comprehensive overview
Kubernetes   a comprehensive overviewKubernetes   a comprehensive overview
Kubernetes a comprehensive overviewGabriel Carro
 
Kubernetes acomprehensiveoverview
Kubernetes acomprehensiveoverviewKubernetes acomprehensiveoverview
Kubernetes acomprehensiveoverviewAnkit Shukla
 
Kubernetes - A Comprehensive Overview
Kubernetes - A Comprehensive OverviewKubernetes - A Comprehensive Overview
Kubernetes - A Comprehensive OverviewBob Killen
 
(Draft) Kubernetes - A Comprehensive Overview
(Draft) Kubernetes - A Comprehensive Overview(Draft) Kubernetes - A Comprehensive Overview
(Draft) Kubernetes - A Comprehensive OverviewBob Killen
 
DjangoCon 2010 Scaling Disqus
DjangoCon 2010 Scaling DisqusDjangoCon 2010 Scaling Disqus
DjangoCon 2010 Scaling Disquszeeg
 
Reusable, composable, battle-tested Terraform modules
Reusable, composable, battle-tested Terraform modulesReusable, composable, battle-tested Terraform modules
Reusable, composable, battle-tested Terraform modulesYevgeniy Brikman
 
Apache Kafka - From zero to hero
Apache Kafka - From zero to heroApache Kafka - From zero to hero
Apache Kafka - From zero to heroApache Kafka TLV
 
Kafka zero to hero
Kafka zero to heroKafka zero to hero
Kafka zero to heroAvi Levi
 
Testing kubernetes and_open_shift_at_scale_20170209
Testing kubernetes and_open_shift_at_scale_20170209Testing kubernetes and_open_shift_at_scale_20170209
Testing kubernetes and_open_shift_at_scale_20170209mffiedler
 
What is OpenStack and the added value of IBM solutions
What is OpenStack and the added value of IBM solutionsWhat is OpenStack and the added value of IBM solutions
What is OpenStack and the added value of IBM solutionsSasha Lazarevic
 
A brief study on Kubernetes and its components
A brief study on Kubernetes and its componentsA brief study on Kubernetes and its components
A brief study on Kubernetes and its componentsRamit Surana
 
ELK Ruminating on Logs (Zendcon 2016)
ELK Ruminating on Logs (Zendcon 2016)ELK Ruminating on Logs (Zendcon 2016)
ELK Ruminating on Logs (Zendcon 2016)Mathew Beane
 
What’s New in ScyllaDB Open Source 5.0
What’s New in ScyllaDB Open Source 5.0What’s New in ScyllaDB Open Source 5.0
What’s New in ScyllaDB Open Source 5.0ScyllaDB
 

Similar to Designing and Building Multi-Region Swift Deployment (20)

Swift Install Workshop - OpenStack Conference Spring 2012
Swift Install Workshop - OpenStack Conference Spring 2012Swift Install Workshop - OpenStack Conference Spring 2012
Swift Install Workshop - OpenStack Conference Spring 2012
 
Introduction of private cloud in LINE - OpenStack最新情報セミナー(2019年2月)
Introduction of private cloud in LINE - OpenStack最新情報セミナー(2019年2月)Introduction of private cloud in LINE - OpenStack最新情報セミナー(2019年2月)
Introduction of private cloud in LINE - OpenStack最新情報セミナー(2019年2月)
 
LXC NSAttach
LXC NSAttachLXC NSAttach
LXC NSAttach
 
Openstack days taiwan 2016 0712
Openstack days taiwan 2016 0712Openstack days taiwan 2016 0712
Openstack days taiwan 2016 0712
 
あなたのScalaを爆速にする7つの方法
あなたのScalaを爆速にする7つの方法あなたのScalaを爆速にする7つの方法
あなたのScalaを爆速にする7つの方法
 
Kubernetes a comprehensive overview
Kubernetes   a comprehensive overviewKubernetes   a comprehensive overview
Kubernetes a comprehensive overview
 
Kubernetes acomprehensiveoverview
Kubernetes acomprehensiveoverviewKubernetes acomprehensiveoverview
Kubernetes acomprehensiveoverview
 
Kubernetes - A Comprehensive Overview
Kubernetes - A Comprehensive OverviewKubernetes - A Comprehensive Overview
Kubernetes - A Comprehensive Overview
 
(Draft) Kubernetes - A Comprehensive Overview
(Draft) Kubernetes - A Comprehensive Overview(Draft) Kubernetes - A Comprehensive Overview
(Draft) Kubernetes - A Comprehensive Overview
 
DjangoCon 2010 Scaling Disqus
DjangoCon 2010 Scaling DisqusDjangoCon 2010 Scaling Disqus
DjangoCon 2010 Scaling Disqus
 
Research Paper
Research PaperResearch Paper
Research Paper
 
Reusable, composable, battle-tested Terraform modules
Reusable, composable, battle-tested Terraform modulesReusable, composable, battle-tested Terraform modules
Reusable, composable, battle-tested Terraform modules
 
Apache Kafka - From zero to hero
Apache Kafka - From zero to heroApache Kafka - From zero to hero
Apache Kafka - From zero to hero
 
Kafka zero to hero
Kafka zero to heroKafka zero to hero
Kafka zero to hero
 
Testing kubernetes and_open_shift_at_scale_20170209
Testing kubernetes and_open_shift_at_scale_20170209Testing kubernetes and_open_shift_at_scale_20170209
Testing kubernetes and_open_shift_at_scale_20170209
 
Hazelcast
HazelcastHazelcast
Hazelcast
 
What is OpenStack and the added value of IBM solutions
What is OpenStack and the added value of IBM solutionsWhat is OpenStack and the added value of IBM solutions
What is OpenStack and the added value of IBM solutions
 
A brief study on Kubernetes and its components
A brief study on Kubernetes and its componentsA brief study on Kubernetes and its components
A brief study on Kubernetes and its components
 
ELK Ruminating on Logs (Zendcon 2016)
ELK Ruminating on Logs (Zendcon 2016)ELK Ruminating on Logs (Zendcon 2016)
ELK Ruminating on Logs (Zendcon 2016)
 
What’s New in ScyllaDB Open Source 5.0
What’s New in ScyllaDB Open Source 5.0What’s New in ScyllaDB Open Source 5.0
What’s New in ScyllaDB Open Source 5.0
 

Recently uploaded

Human Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsHuman Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsMark Billinghurst
 
Transcript: New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024BookNet Canada
 
Artificial intelligence in the post-deep learning era
Artificial intelligence in the post-deep learning eraArtificial intelligence in the post-deep learning era
Artificial intelligence in the post-deep learning eraDeakin University
 
Connect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationConnect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationSlibray Presentation
 
SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024Scott Keck-Warren
 
Bluetooth Controlled Car with Arduino.pdf
Bluetooth Controlled Car with Arduino.pdfBluetooth Controlled Car with Arduino.pdf
Bluetooth Controlled Car with Arduino.pdfngoud9212
 
Unraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfUnraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfAlex Barbosa Coqueiro
 
Gen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfGen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfAddepto
 
Streamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupStreamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupFlorian Wilhelm
 
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...Patryk Bandurski
 
costume and set research powerpoint presentation
costume and set research powerpoint presentationcostume and set research powerpoint presentation
costume and set research powerpoint presentationphoebematthew05
 
Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Scott Keck-Warren
 
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii SoldatenkoFwdays
 
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks..."LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...Fwdays
 
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr LapshynFwdays
 
My INSURER PTE LTD - Insurtech Innovation Award 2024
My INSURER PTE LTD - Insurtech Innovation Award 2024My INSURER PTE LTD - Insurtech Innovation Award 2024
My INSURER PTE LTD - Insurtech Innovation Award 2024The Digital Insurer
 
SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024Lorenzo Miniero
 
Key Features Of Token Development (1).pptx
Key  Features Of Token  Development (1).pptxKey  Features Of Token  Development (1).pptx
Key Features Of Token Development (1).pptxLBM Solutions
 

Recently uploaded (20)

Human Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsHuman Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR Systems
 
Transcript: New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024
 
Artificial intelligence in the post-deep learning era
Artificial intelligence in the post-deep learning eraArtificial intelligence in the post-deep learning era
Artificial intelligence in the post-deep learning era
 
Connect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationConnect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck Presentation
 
SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024
 
Bluetooth Controlled Car with Arduino.pdf
Bluetooth Controlled Car with Arduino.pdfBluetooth Controlled Car with Arduino.pdf
Bluetooth Controlled Car with Arduino.pdf
 
Unraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfUnraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdf
 
DMCC Future of Trade Web3 - Special Edition
DMCC Future of Trade Web3 - Special EditionDMCC Future of Trade Web3 - Special Edition
DMCC Future of Trade Web3 - Special Edition
 
Gen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfGen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdf
 
Streamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupStreamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project Setup
 
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
 
costume and set research powerpoint presentation
costume and set research powerpoint presentationcostume and set research powerpoint presentation
costume and set research powerpoint presentation
 
Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024
 
Vulnerability_Management_GRC_by Sohang Sengupta.pptx
Vulnerability_Management_GRC_by Sohang Sengupta.pptxVulnerability_Management_GRC_by Sohang Sengupta.pptx
Vulnerability_Management_GRC_by Sohang Sengupta.pptx
 
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko
 
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks..."LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
 
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
 
My INSURER PTE LTD - Insurtech Innovation Award 2024
My INSURER PTE LTD - Insurtech Innovation Award 2024My INSURER PTE LTD - Insurtech Innovation Award 2024
My INSURER PTE LTD - Insurtech Innovation Award 2024
 
SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024
 
Key Features Of Token Development (1).pptx
Key  Features Of Token  Development (1).pptxKey  Features Of Token  Development (1).pptx
Key Features Of Token Development (1).pptx
 

Designing and Building Multi-Region Swift Deployment

  • 1. Designing and Building Multi-Region Swift Deployment KINX(www.kinx.net) CLOUD TECH GROUP Shawn Kim 1
  • 2. Table of Contents Swift Architecture Review Node Roles & deployment Ring Enhancements Demonstration Q&A 2
  • 3. Swift Object Store Project of OpenStack Characteristics High availability and high scalability By keeping replications, Swift avoids data loss. Recommended copies >= 3 3 Layered data: Account / Container / Object Account: Namespace which divides Containers. Container: Namespace which divides Objects. Min ACL configuration unit. 3
  • 4. Swift Cont Swift Architecture Servier Processes + Consistency Processes 로 구성됨 Server Processes provide Swift services. Proxy server Account / Container / Object servers Consistency Processes maintains consistency of A/C/O objects or metadata. A/C/O Auditor A/C/O Replicator 4
  • 5. Architecture Review Problem: Region down induces all data loss. Alternative: Multi region Swift. >=3 copy replications. Dedicate Keystones with DB synchronization. Multi Proxies with GSLB. 5 Figure 1. Multi-Region Architecture
  • 6. Architectural Review - Design Decisions Replication >= 3 Proxy and Keystone are deployment on the same node Proxy and Keystone share the same DNS name and SSL configuration. Easy Keystone HA configuration. Multi-Region architecture: Region level high availability Equally distributed replications #zones = #replictions, Each zone has one replication. 6
  • 7. Architectural Review - Design Decisions Cont. Connection btw regions Storages across different regions cannot be connected with internal IPs. Under the multi-region environment, storages are connected by public IPs with iptables configuration for security consideration. Swift Master Master Role: Swift installation base and gateway for all nodes. MGMT Role: Ring building, management and distribution. Auth Module: Keystone versus. SWAuth: Keystone Win! 7
  • 8. Architectural Review - Design Result 2 Regions, 3 Zones, 3 storage nodes with 9 volumes. Node naming convention: r<digit>-[z<digit>]-<role><digit> ex) r1-p1 ex) r2-z1-s1 It can be referred when Ring is built. 8Figure 2. Deployed Multi-Region Swift : Minimum Configuration
  • 9. Node Roles & Package Deployment Keystone Node Python-openstackclient Mariadb-server-5.5 Keystone Memcached 9 Proxy Node Python-openstackclient Swift Swift-proxy Python-swiftclient Python-keystonemiddleware Storage Node Python-openstackclient Xfsprogs, rsync Swift Swift-account Swift-container Swift-object Keystone node is integrated with Proxy nodes
  • 10. 10 Node Roles & Package Deployment Swift Master + MGMT Python-openstackclient Swift Python-swiftclient LMA EX) SwiftStack: Zabbix + ELK
  • 11. Ring Ring is abbreviation of Modified Consistent Hashing Ring. Swift’s Object is located by using Hash function: [Drive_id] = md5([account_x]/[container_y]/[object_z]) MOD [total_drives] 11 Each drive’s weight determine its length of range. All drives are placed fare random order. Ex) [hash of object] is placed in range of drive 4. Figure 3. Drives and the hashing ring (OpenStack Swift 2014)* *Joe Arnold & member of the SwiftStack team. OpenStack Swift: USING, ADMINISTERING, AND DEVELOPING FOR SWIFT OBJECT STORAGE. O’REILLY, 2014.
  • 12. Consistent Hashing Ring Cont. Minimize object moving even if disk is added or removed. 12 Ex) Object is originally located at drive 4. After adding drive 5, the hash value of object is belong to drive 5. Figure 5. New drive added to a ring (OpenStack Swift 2014)** Figure 4. Drives and the hashing ring (OpenStack Swift 2014)* *, **Joe Annold & member of the SwiftStack team. OpenStack Swift: USING, ADMINISTERING, AND DEVELOPING FOR SWIFT OBJECT STORAGE. O’REILLY, 2014.
  • 13. (Real) Consistent Hashing Ring Cont. In the Swift rings, each drive is distributed with many narrow ranges in fare random order. When a new disk is added, new ranges are added tail of arbitrary ranges. See the ranges of drive 5. 13 Figure 6. Many ranges for each drive (OpenStack Swift 2014)* *Joe Annold & member of the SwiftStack team. OpenStack Swift: USING, ADMINISTERING, AND DEVELOPING FOR SWIFT OBJECT STORAGE. O’REILLY, 2014.
  • 14. Modified Consistent Hashing Ring Some ‘Modifications’ applied Consistent Hashing Ring: Partitions Swift ring is comprised with fixed ranged partitions. Partition stores and indicates Object’s location(s). Partitions power Total partitions in cluster = 2^partitions_power Arbitrary integer which was defined when cluster creation. Replica count Number of replications is defined when ring is built. 14
  • 15. Modified Consistent Hashing Ring Cont. Hash(path) = md5(path + per_cluster_suffix) Partitions_power Partitions_power = UPPER_BOUND[log2(number_of_disks * 100)] After selecting partitions_power, it is Immutable. Bigger partitions_power makes ring bigger with more indices. Bigger rings use more memory. Partition = hash >> part_shift Part_shift = 32 - partitions_power 15
  • 16. Enhancements Swift3: Apply S3 API compatible Middleware. LMA Node: ELK and Zabbix Enable swift middlewares such as Tempurl, domap_remap, and staticweb Test automation Swift Tox: test coverage is 50 ~ 80%. After S3 API (Swift3) integration, use Boto unit Test. Swift Deployment Automation using PuppetSwift module. Chef Cookbook-openstack-object-storage was deprecated after Mitaka release. 16
  • 17. Demonstration Uploading sample data LOGs @ each storage nodes Trying download after killing 2 object server. Swift-ring-builder and builder file. Swift-dispersion-populate and report 17
  • 18. QnA 18 Q: When Swift’s PUT request returns success after making how many replications? A: Just one object. Q: With 3 object servers and 3 replication configured Swift, and PUT request is occasionally failed when 2 arbitrary object servers are stopped. Is it a default behavior? Also, can I configure this behavior? A: Unfortunately, object’s hash values (maybe 3 counts) can indicate disabled object servers. In this case, the object cannot be written because all object servers are not be reachable. Q: With HA configured proxy servers, and trying to read right after writing an object, it is possible for end-user to be unreachable to the object? A: No. By searching its ring, swift can locate the written object among the object’s replication(s)

Editor's Notes

  1. Roles Keystone: api endpoint 제공, 인증, 인증 정보를 통해 storage 주소로 변환 Proxy: 사용자와 storage를 중개, 연결해줌. 또한 Ring을 기반으로 object를 라우팅 해줌. Storage: account, container, object 데이터 관리. 백그라운드에서 파일 무결성 검증, 복제 등을 수행.
  2. Roles: Swift Master: swift 패키지 설치 기반. Region에 걸친 노드에 접근하기 위한 Gateway. Ring 관리 및 매포. LMA: Logging, monitoring, alarm 처리.
  3. 예제와는 달리, 다른 drive 범위도 조금씩 바뀔 수 있다. Consistent hash ring을 사용하는 이유: driver의 추가/삭제로인해 옮겨 지는 양을 최소화 할 수 있음.
  4. Modified Consistent hash ring 사용하는 이유: 수많은 작고/큰 범위의 영역들이 있는데 이것을 partition이라는 fixed width로 지정함. 그래서, 들쭉 날쭉하지 않고 일정한 양을 옮길 수 있다. 옮길 때는 replica lock 걸림.