Coder Social home page Coder Social logo

packtpublishing / ceph-designing-and-implementing-scalable-storage-systems Goto Github PK

View Code? Open in Web Editor NEW
18.0 6.0 14.0 218 KB

Design, implement and manage software-defined storage solutions that provide excellent performance

License: MIT License

Shell 37.17% C++ 17.95% Python 17.86% C 27.02%

ceph-designing-and-implementing-scalable-storage-systems's Introduction

Ceph Designing and Implementing Scalable Storage Systems

This Learning Path takes you through the basics of Ceph all the way to gaining in-depth understanding of its advanced features. You’ll gather skills to plan, deploy, and manage your Ceph cluster. After an introduction to the Ceph architecture and its core projects, you’ll be able to set up a Ceph cluster and learn how to monitor its health, improve its performance, and troubleshoot any issues.

By following the step-by-step approach of this Learning Path, you’ll learn how Ceph integrates with OpenStack, Glance, Manila, Swift, and Cinder. With knowledge of federated architecture and CephFS, you’ll use Calamari and VSM to monitor the Ceph environment. In the upcoming chapters, you’ll study the key areas of Ceph, including BlueStore, erasure coding, and cache tiering. More specifically, you’ll discover what they can do for your storage system.

In the concluding chapters, you will develop applications that use Librados and distributed computations with shared object classes, and see how Ceph and its supporting infrastructure can be optimized. By the end of this Learning Path, you'll have the practical knowledge of operating Ceph in a production environment.

Ceph Designing and Implementing Scalable Storage Systems by Michael Hackett, Vikhyat Umrao, Karan Singh, Nick Fisk, Anthony D'Atri and Vaibhav Bhembre

What you will learn

  • Understand the benefits of using Ceph as a storage solution
  • Combine Ceph with OpenStack, Cinder, Glance, and Nova components
  • Set up a test cluster with Ansible and virtual machine with VirtualBox
  • Develop solutions with Librados and shared object classes
  • Configure BlueStore and see its interaction with other configurations
  • Tune, monitor, and recover storage systems effectively
  • Build an erasure-coded pool by selecting intelligent parameters

Instructions and Navigations

  • All of the code is organized into folders. Chapter5, Chapter6, Chapter7, Chapter8, Chapter10, Chapter12, Chapter13, Chapter15, Chapter17, Chapter18 does not contain code files.

Hardware Requirements

For an optimal student experience, we recommend the following hardware configuration:

  • Processor: Intel Core i5 or equivalent
  • Memory: 4 GB RAM
  • Storage: 40 GB available space

Software Requirements

You'll also need the following software installed in advance:

Download a free PDF

If you have already purchased a print or Kindle version of this book, you can get a DRM-free PDF version at no cost.
Simply click on the link to claim your free PDF.

https://packt.link/free-ebook/9781788295413

ceph-designing-and-implementing-scalable-storage-systems's People

Contributors

bhaveshbangerapackt avatar packt-itservice avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar

ceph-designing-and-implementing-scalable-storage-systems's Issues

ERROR! 'always_run' is not a valid attribute for a Task

In step 12 in "How to do it" when I run "ansible-playbook site.yml" I get the following errors....

[root@ceph-node1 ceph-ansible]# ansible-playbook site.yml
[DEPRECATION WARNING]: The use of 'static' has been deprecated. Use 'import_tasks' for static inclusion, or
'include_tasks' for dynamic inclusion. This feature will be removed in version 2.12. Deprecation warnings can be
disabled by setting deprecation_warnings=False in ansible.cfg.
ERROR! 'always_run' is not a valid attribute for a Task

The error appears to have been in '/usr/share/ceph-ansible/roles/ceph-common/tasks/facts.yml': line 2, column 3, but may
be elsewhere in the file depending on the exact syntax problem.

The offending line appears to be:


  • name: get ceph version
    ^ here

This error can be suppressed as a warning using the "invalid_task_attribute_failed" configuration
[root@ceph-node1 ceph-ansible]#

could someone help ?

Ceph backup cluster configuration issues (chapter 2)

I am have reached the section of chapter 2 where you are supposed to configure a backup cluster.

I have brought up ceph-node5, ceph-node6, ceph-node7. On each of them I have performed the following:

  • Ceph node 5
    -- Updated OS
    -- Exchanged keys with all other ceph nodes (1-3, 5-7)
    -- Installed NTP, SNTP, ntpdate and set them to run
    -- ran required firewall commands (all ports already open)
    -- installed ceph-ansible
    -- ensured /etc/hosts was correct
    -- downgraded from ansible 2.7.x to 2.4.x so I could use the code as written
    -- created ~/ceph-ansible-keys
    -- created the group_vars symlink
    -- created the all.yml file, switching the cluster name to backup
    -- created the osds.yml file
    -- added retry_files_save_path to /usr/share/ceph-ansible/ansible.cfg under the [defaults] stanza
    -- Set up my /etc/ansible/hosts file to look like this:
#Primary site (ceph-node1):
[mons]
ceph-node1
ceph-node2
ceph-node3
[osds]
ceph-node1
ceph-node2
ceph-node3
#Secondary site (ceph-node5):
[mons]
ceph-node5
ceph-node6
ceph-node7
[osds]
ceph-node5
ceph-node6
ceph-node7

  • Ceph node 6
    -- Updated OS
    -- Installed NTP, SNTP, ntpdate and set them to run
    -- ran required firewall commands (all ports already open)
  • Ceph node 7
    -- Updated OS
    -- Installed NTP, SNTP, ntpdate and set them to run
    -- ran required firewall commands (all ports already open)

Then I create site.yml on ceph-node5 and attempt to execute it. In all instances, execution seems to freeze at

TASK [ceph.ceph-common : is ceph running already?] **************************************************************************************************
[DEPRECATION WARNING]: always_run is deprecated. Use check_mode = no instead.. This feature will be removed in version 2.4. Deprecation warnings can
 be disabled by setting deprecation_warnings=False in ansible.cfg.

Execution stops there, and never seems to move forward.

Has anyone else encountered this issue?

ceph-validate : fail on unsupported CentOS release

In chapter 1 Creating the Ceph cluster on ceph-node1, step 12 in "How to do it" when I run "ansible-playbook site.yml" I get the following errors....

TASK [ceph-validate : fail on unsupported CentOS release] ****************************************************************************************************************************************************
Monday 04 May 2020 19:31:55 +0300 (0:00:00.038) 0:00:08.026 ************
fatal: [ceph-node1]: FAILED! =>
msg: |-
The conditional check 'dashboard_enabled | true' failed. The error was: template error while templating string: no filter named 'true'. String: {% if dashboard_enabled | true %} True {% else %} False {% endif %}

The error appears to be in '/usr/share/ceph-ansible/roles/ceph-validate/tasks/check_system.yml': line 27, column 3, but may
be elsewhere in the file depending on the exact syntax problem.

The offending line appears to be:


- name: fail on unsupported CentOS release
  ^ here

`path` for shell provisioner does not exist on the host system

Hello,

Trying to follow along, and in chapter 1, after pulling down the box, I get:

$vagrant up ceph-node1 ceph-node2 ceph-node3
Bringing machine 'ceph-node1' up with 'virtualbox' provider...
Bringing machine 'ceph-node2' up with 'virtualbox' provider...
Bringing machine 'ceph-node3' up with 'virtualbox' provider...
There are errors in the configuration of this machine. Please fix
the following errors and try again:

shell provisioner:
* `path` for shell provisioner does not exist on the host system: /path/to/repo/Ceph-Designing-and-Implementing-Scalable-Storage-Systems/Chapter01/post-deploy.sh

I've used vagrant before, and sure enough, the post-deploy.sh file declared in the vagrantfile is not in that directory of the repo.

Home network uses 192.168.1.x by default. How do I properly edit the vagrant file to use a different subnet?

When trying to run the vagrant file in chapter 1, I receive this error:

msarro200:Chapter01/ (master✗) $ vagrant up ceph-node1 ceph-node2 ceph-node3                                            [20:58:43]
Bringing machine 'ceph-node1' up with 'virtualbox' provider...
Bringing machine 'ceph-node2' up with 'virtualbox' provider...
Bringing machine 'ceph-node3' up with 'virtualbox' provider...
==> ceph-node1: Importing base box 'centos7-standard'...
==> ceph-node1: Matching MAC address for NAT networking...
==> ceph-node1: Setting the name of the VM: ceph-node1
==> ceph-node1: Clearing any previously set network interfaces...
The specified host network collides with a non-hostonly network!
This will cause your specified IP to be inaccessible. Please change
the IP or name of your host only network so that it no longer matches that of
a bridged or non-hostonly network.

Bridged Network Address: '192.168.1.0'
Host-only Network 'en0: Wi-Fi (AirPort)': '192.168.1.0'

Re-IPing everything in my home network is not practical. 192.168.1.x/24 is a relatively common default subnet for most residential routers. How can I properly update the vagrant file to use a different subnet? I've attempted to edit the file as so:

node1.vm.network :private_network, ip: "192.168.57.101"

I've also updated the hosts files on each host.

But none of the VM's appear to have connectivity between one another after making the change.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.