[DOCS] Add ceph production example configuration
Adds a Ceph configuration example for production deployment using RBD backend for glance/cinder/nova. Change-Id: I7757ceb4f2f367f514fcde8b4ab1130e8ef4868b
This commit is contained in:
parent
bbfb9d3339
commit
057bb30547
@ -1,5 +1,5 @@
|
|||||||
==================================
|
==================================
|
||||||
Appendix H: Advanced configuration
|
Appendix I: Advanced configuration
|
||||||
==================================
|
==================================
|
||||||
|
|
||||||
.. TODO: include intro on what advanced configuration is, whether it’s required
|
.. TODO: include intro on what advanced configuration is, whether it’s required
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
====================================
|
====================================
|
||||||
Appendix I: Ceph-Ansible integration
|
Appendix J: Ceph-Ansible integration
|
||||||
====================================
|
====================================
|
||||||
|
|
||||||
OpenStack-Ansible allows `Ceph storage <https://ceph.com>`_ cluster integration
|
OpenStack-Ansible allows `Ceph storage <https://ceph.com>`_ cluster integration
|
||||||
|
131
deploy-guide/source/app-config-prod-ceph.rst
Normal file
131
deploy-guide/source/app-config-prod-ceph.rst
Normal file
@ -0,0 +1,131 @@
|
|||||||
|
.. _production-ceph-environment-config:
|
||||||
|
|
||||||
|
=============================================================
|
||||||
|
Appendix D: Example Ceph production environment configuration
|
||||||
|
=============================================================
|
||||||
|
|
||||||
|
Introduction
|
||||||
|
~~~~~~~~~~~~
|
||||||
|
|
||||||
|
This appendix describes an example production environment for a working
|
||||||
|
OpenStack-Ansible (OSA) deployment with high availability services and using
|
||||||
|
the Ceph backend for images, volumes, and instances.
|
||||||
|
|
||||||
|
This example environment has the following characteristics:
|
||||||
|
|
||||||
|
* Three infrastructure (control plane) hosts with ceph-mon containers
|
||||||
|
* Two compute hosts
|
||||||
|
* Three Ceph OSD storage hosts
|
||||||
|
* One log aggregation host
|
||||||
|
* Multiple Network Interface Cards (NIC) configured as bonded pairs for each
|
||||||
|
host
|
||||||
|
* Full compute kit with the Telemetry service (ceilometer) included,
|
||||||
|
with Ceph configured as a storage back end for the Image (glance), and Block
|
||||||
|
Storage (cinder) services
|
||||||
|
* Internet access via the router address 172.29.236.1 on the
|
||||||
|
Management Network
|
||||||
|
|
||||||
|
.. image:: figures/arch-layout-production-ceph.png
|
||||||
|
:width: 100%
|
||||||
|
|
||||||
|
Network configuration
|
||||||
|
~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
|
Network CIDR/VLAN assignments
|
||||||
|
-----------------------------
|
||||||
|
|
||||||
|
The following CIDR and VLAN assignments are used for this environment.
|
||||||
|
|
||||||
|
+-----------------------+-----------------+------+
|
||||||
|
| Network | CIDR | VLAN |
|
||||||
|
+=======================+=================+======+
|
||||||
|
| Management Network | 172.29.236.0/22 | 10 |
|
||||||
|
+-----------------------+-----------------+------+
|
||||||
|
| Tunnel (VXLAN) Network| 172.29.240.0/22 | 30 |
|
||||||
|
+-----------------------+-----------------+------+
|
||||||
|
| Storage Network | 172.29.244.0/22 | 20 |
|
||||||
|
+-----------------------+-----------------+------+
|
||||||
|
|
||||||
|
IP assignments
|
||||||
|
--------------
|
||||||
|
|
||||||
|
The following host name and IP address assignments are used for this
|
||||||
|
environment.
|
||||||
|
|
||||||
|
+------------------+----------------+-------------------+----------------+
|
||||||
|
| Host name | Management IP | Tunnel (VxLAN) IP | Storage IP |
|
||||||
|
+==================+================+===================+================+
|
||||||
|
| lb_vip_address | 172.29.236.9 | | |
|
||||||
|
+------------------+----------------+-------------------+----------------+
|
||||||
|
| infra1 | 172.29.236.11 | | |
|
||||||
|
+------------------+----------------+-------------------+----------------+
|
||||||
|
| infra2 | 172.29.236.12 | | |
|
||||||
|
+------------------+----------------+-------------------+----------------+
|
||||||
|
| infra3 | 172.29.236.13 | | |
|
||||||
|
+------------------+----------------+-------------------+----------------+
|
||||||
|
| log1 | 172.29.236.14 | | |
|
||||||
|
+------------------+----------------+-------------------+----------------+
|
||||||
|
| compute1 | 172.29.236.16 | 172.29.240.16 | 172.29.244.16 |
|
||||||
|
+------------------+----------------+-------------------+----------------+
|
||||||
|
| compute2 | 172.29.236.17 | 172.29.240.17 | 172.29.244.17 |
|
||||||
|
+------------------+----------------+-------------------+----------------+
|
||||||
|
| osd1 | 172.29.236.18 | 172.29.240.18 | 172.29.244.18 |
|
||||||
|
+------------------+----------------+-------------------+----------------+
|
||||||
|
| osd2 | 172.29.236.19 | 172.29.240.19 | 172.29.244.19 |
|
||||||
|
+------------------+----------------+-------------------+----------------+
|
||||||
|
| osd3 | 172.29.236.20 | 172.29.240.20 | 172.29.244.20 |
|
||||||
|
+------------------+----------------+-------------------+----------------+
|
||||||
|
|
||||||
|
Host network configuration
|
||||||
|
--------------------------
|
||||||
|
|
||||||
|
Each host will require the correct network bridges to be implemented. The
|
||||||
|
following is the ``/etc/network/interfaces`` file for ``infra1``.
|
||||||
|
|
||||||
|
.. note::
|
||||||
|
|
||||||
|
If your environment does not have ``eth0``, but instead has ``p1p1`` or
|
||||||
|
some other interface name, ensure that all references to ``eth0`` in all
|
||||||
|
configuration files are replaced with the appropriate name. The same
|
||||||
|
applies to additional network interfaces.
|
||||||
|
|
||||||
|
.. literalinclude:: ../../etc/network/interfaces.d/openstack_interface.cfg.prod.example
|
||||||
|
|
||||||
|
Deployment configuration
|
||||||
|
~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
|
Environment layout
|
||||||
|
------------------
|
||||||
|
|
||||||
|
The ``/etc/openstack_deploy/openstack_user_config.yml`` file defines the
|
||||||
|
environment layout.
|
||||||
|
|
||||||
|
The following configuration describes the layout for this environment.
|
||||||
|
|
||||||
|
.. literalinclude:: ../../etc/openstack_deploy/openstack_user_config.yml.prod-ceph.example
|
||||||
|
|
||||||
|
Environment customizations
|
||||||
|
--------------------------
|
||||||
|
|
||||||
|
The optionally deployed files in ``/etc/openstack_deploy/env.d`` allow the
|
||||||
|
customization of Ansible groups. This allows the deployer to set whether
|
||||||
|
the services will run in a container (the default), or on the host (on
|
||||||
|
metal).
|
||||||
|
|
||||||
|
For this environment, the ``cinder-volume`` runs in a container on the
|
||||||
|
infrastructure hosts. To achieve this, implement
|
||||||
|
``/etc/openstack_deploy/env.d/cinder.yml`` with the following content:
|
||||||
|
|
||||||
|
.. literalinclude:: ../../etc/openstack_deploy/env.d/cinder-volume.yml.container.example
|
||||||
|
|
||||||
|
User variables
|
||||||
|
--------------
|
||||||
|
|
||||||
|
The ``/etc/openstack_deploy/user_variables.yml`` file defines the global
|
||||||
|
overrides for the default variables.
|
||||||
|
|
||||||
|
For this environment, implement the load balancer on the infrastructure
|
||||||
|
hosts. Ensure that keepalived is also configured with HAProxy in
|
||||||
|
``/etc/openstack_deploy/user_variables.yml`` with the following content.
|
||||||
|
|
||||||
|
.. literalinclude:: ../../etc/openstack_deploy/user_variables.yml.prod-ceph.example
|
@ -1,5 +1,5 @@
|
|||||||
================================================
|
================================================
|
||||||
Appendix D: Customizing host and service layouts
|
Appendix E: Customizing host and service layouts
|
||||||
================================================
|
================================================
|
||||||
|
|
||||||
The default layout of containers and services in OpenStack-Ansible (OSA) is
|
The default layout of containers and services in OpenStack-Ansible (OSA) is
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
.. _limited-connectivity-appendix:
|
.. _limited-connectivity-appendix:
|
||||||
|
|
||||||
================================================
|
================================================
|
||||||
Appendix G: Installing with limited connectivity
|
Appendix H: Installing with limited connectivity
|
||||||
================================================
|
================================================
|
||||||
|
|
||||||
Many playbooks and roles in OpenStack-Ansible retrieve dependencies from the
|
Many playbooks and roles in OpenStack-Ansible retrieve dependencies from the
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
.. _network-appendix:
|
.. _network-appendix:
|
||||||
|
|
||||||
================================
|
================================
|
||||||
Appendix F: Container networking
|
Appendix G: Container networking
|
||||||
================================
|
================================
|
||||||
|
|
||||||
OpenStack-Ansible deploys Linux containers (LXC) and uses Linux
|
OpenStack-Ansible deploys Linux containers (LXC) and uses Linux
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
================================
|
================================
|
||||||
Appendix J: Additional resources
|
Appendix K: Additional resources
|
||||||
================================
|
================================
|
||||||
|
|
||||||
Ansible resources:
|
Ansible resources:
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
====================
|
====================
|
||||||
Appendix E: Security
|
Appendix F: Security
|
||||||
====================
|
====================
|
||||||
|
|
||||||
Security is one of the top priorities within OpenStack-Ansible (OSA), and many
|
Security is one of the top priorities within OpenStack-Ansible (OSA), and many
|
||||||
|
@ -8,6 +8,7 @@ Appendices
|
|||||||
app-config-test.rst
|
app-config-test.rst
|
||||||
app-config-prod.rst
|
app-config-prod.rst
|
||||||
app-config-pod.rst
|
app-config-pod.rst
|
||||||
|
app-config-prod-ceph.rst
|
||||||
app-custom-layouts.rst
|
app-custom-layouts.rst
|
||||||
app-security.rst
|
app-security.rst
|
||||||
app-networking.rst
|
app-networking.rst
|
||||||
|
BIN
deploy-guide/source/figures/arch-layout-production-ceph.png
Normal file
BIN
deploy-guide/source/figures/arch-layout-production-ceph.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 163 KiB |
File diff suppressed because one or more lines are too long
After Width: | Height: | Size: 34 KiB |
Binary file not shown.
162
etc/openstack_deploy/openstack_user_config.yml.prod-ceph.example
Normal file
162
etc/openstack_deploy/openstack_user_config.yml.prod-ceph.example
Normal file
@ -0,0 +1,162 @@
|
|||||||
|
---
|
||||||
|
cidr_networks: &cidr_networks
|
||||||
|
container: 172.29.236.0/22
|
||||||
|
tunnel: 172.29.240.0/22
|
||||||
|
storage: 172.29.244.0/22
|
||||||
|
|
||||||
|
used_ips:
|
||||||
|
- "172.29.236.1,172.29.236.50"
|
||||||
|
- "172.29.240.1,172.29.240.50"
|
||||||
|
- "172.29.244.1,172.29.244.50"
|
||||||
|
- "172.29.248.1,172.29.248.50"
|
||||||
|
|
||||||
|
global_overrides:
|
||||||
|
cidr_networks: *cidr_networks
|
||||||
|
internal_lb_vip_address: 172.29.236.9
|
||||||
|
#
|
||||||
|
# The below domain name must resolve to an IP address
|
||||||
|
# in the CIDR specified in haproxy_keepalived_external_vip_cidr.
|
||||||
|
# If using different protocols (https/http) for the public/internal
|
||||||
|
# endpoints the two addresses must be different.
|
||||||
|
#
|
||||||
|
external_lb_vip_address: openstack.example.com
|
||||||
|
tunnel_bridge: "br-vxlan"
|
||||||
|
management_bridge: "br-mgmt"
|
||||||
|
provider_networks:
|
||||||
|
- network:
|
||||||
|
container_bridge: "br-mgmt"
|
||||||
|
container_type: "veth"
|
||||||
|
container_interface: "eth1"
|
||||||
|
ip_from_q: "container"
|
||||||
|
type: "raw"
|
||||||
|
group_binds:
|
||||||
|
- all_containers
|
||||||
|
- hosts
|
||||||
|
is_container_address: true
|
||||||
|
is_ssh_address: true
|
||||||
|
- network:
|
||||||
|
container_bridge: "br-vxlan"
|
||||||
|
container_type: "veth"
|
||||||
|
container_interface: "eth10"
|
||||||
|
ip_from_q: "tunnel"
|
||||||
|
type: "vxlan"
|
||||||
|
range: "1:1000"
|
||||||
|
net_name: "vxlan"
|
||||||
|
group_binds:
|
||||||
|
- neutron_linuxbridge_agent
|
||||||
|
- network:
|
||||||
|
container_bridge: "br-vlan"
|
||||||
|
container_type: "veth"
|
||||||
|
container_interface: "eth12"
|
||||||
|
host_bind_override: "eth12"
|
||||||
|
type: "flat"
|
||||||
|
net_name: "flat"
|
||||||
|
group_binds:
|
||||||
|
- neutron_linuxbridge_agent
|
||||||
|
- network:
|
||||||
|
container_bridge: "br-vlan"
|
||||||
|
container_type: "veth"
|
||||||
|
container_interface: "eth11"
|
||||||
|
type: "vlan"
|
||||||
|
range: "1:1"
|
||||||
|
net_name: "vlan"
|
||||||
|
group_binds:
|
||||||
|
- neutron_linuxbridge_agent
|
||||||
|
- network:
|
||||||
|
container_bridge: "br-storage"
|
||||||
|
container_type: "veth"
|
||||||
|
container_interface: "eth2"
|
||||||
|
ip_from_q: "storage"
|
||||||
|
type: "raw"
|
||||||
|
group_binds:
|
||||||
|
- glance_api
|
||||||
|
- cinder_api
|
||||||
|
- cinder_volume
|
||||||
|
- nova_compute
|
||||||
|
- ceph-osd
|
||||||
|
|
||||||
|
###
|
||||||
|
### Infrastructure
|
||||||
|
###
|
||||||
|
|
||||||
|
_infrastructure_hosts: &infrastructure_hosts
|
||||||
|
infra1:
|
||||||
|
ip: 172.29.236.11
|
||||||
|
infra2:
|
||||||
|
ip: 172.29.236.12
|
||||||
|
infra3:
|
||||||
|
ip: 172.29.236.13
|
||||||
|
|
||||||
|
# nova hypervisors
|
||||||
|
compute_hosts: &compute_hosts
|
||||||
|
compute1:
|
||||||
|
ip: 172.29.236.16
|
||||||
|
compute2:
|
||||||
|
ip: 172.29.236.17
|
||||||
|
|
||||||
|
ceph-osd_hosts:
|
||||||
|
osd1:
|
||||||
|
ip: 172.29.236.18
|
||||||
|
osd2:
|
||||||
|
ip: 172.29.236.19
|
||||||
|
osd3:
|
||||||
|
ip: 172.29.236.20
|
||||||
|
|
||||||
|
# galera, memcache, rabbitmq, utility
|
||||||
|
shared-infra_hosts: *infrastructure_hosts
|
||||||
|
|
||||||
|
# ceph-mon containers
|
||||||
|
ceph-mon_hosts: *infrastructure_hosts
|
||||||
|
|
||||||
|
# repository (apt cache, python packages, etc)
|
||||||
|
repo-infra_hosts: *infrastructure_hosts
|
||||||
|
|
||||||
|
# load balancer
|
||||||
|
# Ideally the load balancer should not use the Infrastructure hosts.
|
||||||
|
# Dedicated hardware is best for improved performance and security.
|
||||||
|
haproxy_hosts: *infrastructure_hosts
|
||||||
|
|
||||||
|
# rsyslog server
|
||||||
|
log_hosts:
|
||||||
|
log1:
|
||||||
|
ip: 172.29.236.14
|
||||||
|
|
||||||
|
###
|
||||||
|
### OpenStack
|
||||||
|
###
|
||||||
|
|
||||||
|
# keystone
|
||||||
|
identity_hosts: *infrastructure_hosts
|
||||||
|
|
||||||
|
# cinder api services
|
||||||
|
storage-infra_hosts: *infrastructure_hosts
|
||||||
|
|
||||||
|
# cinder volume hosts (Ceph RBD-backed)
|
||||||
|
storage_hosts: *infrastructure_hosts
|
||||||
|
|
||||||
|
# glance
|
||||||
|
image_hosts: *infrastructure_hosts
|
||||||
|
|
||||||
|
# nova api, conductor, etc services
|
||||||
|
compute-infra_hosts: *infrastructure_hosts
|
||||||
|
|
||||||
|
# heat
|
||||||
|
orchestration_hosts: *infrastructure_hosts
|
||||||
|
|
||||||
|
# horizon
|
||||||
|
dashboard_hosts: *infrastructure_hosts
|
||||||
|
|
||||||
|
# neutron server, agents (L3, etc)
|
||||||
|
network_hosts: *infrastructure_hosts
|
||||||
|
|
||||||
|
# ceilometer (telemetry data collection)
|
||||||
|
metering-infra_hosts: *infrastructure_hosts
|
||||||
|
|
||||||
|
# aodh (telemetry alarm service)
|
||||||
|
metering-alarm_hosts: *infrastructure_hosts
|
||||||
|
|
||||||
|
# gnocchi (telemetry metrics storage)
|
||||||
|
metrics_hosts: *infrastructure_hosts
|
||||||
|
|
||||||
|
# ceilometer compute agent (telemetry data collection)
|
||||||
|
metering-compute_hosts: *compute_hosts
|
41
etc/openstack_deploy/user_variables.yml.prod-ceph.example
Normal file
41
etc/openstack_deploy/user_variables.yml.prod-ceph.example
Normal file
@ -0,0 +1,41 @@
|
|||||||
|
---
|
||||||
|
# This file contains an example of the global variable overrides
|
||||||
|
# which may need to be set for a production environment.
|
||||||
|
|
||||||
|
## Load Balancer Configuration (haproxy/keepalived)
|
||||||
|
haproxy_keepalived_external_vip_cidr: "1.2.3.4/32"
|
||||||
|
haproxy_keepalived_internal_vip_cidr: "172.29.236.0/22"
|
||||||
|
haproxy_keepalived_external_interface: ens2
|
||||||
|
haproxy_keepalived_internal_interface: br-mgmt
|
||||||
|
|
||||||
|
## Ceph cluster fsid (must be generated before first run)
|
||||||
|
## Generate a uuid using: python -c 'import uuid; print(str(uuid.uuid4()))'
|
||||||
|
generate_fsid: false
|
||||||
|
fsid: 116f14c4-7fe1-40e4-94eb-9240b63de5c1 # Replace with your generated UUID
|
||||||
|
|
||||||
|
## ceph-ansible settings
|
||||||
|
## See https://github.com/ceph/ceph-ansible/tree/master/group_vars for
|
||||||
|
## additional configuration options availble.
|
||||||
|
monitor_address_block: "{{ cidr_networks.container }}"
|
||||||
|
public_network: "{{ cidr_networks.container }}"
|
||||||
|
cluster_network: "{{ cidr_networks.storage }}"
|
||||||
|
osd_scenario: collocated
|
||||||
|
journal_size: 10240 # size in MB
|
||||||
|
# ceph-ansible automatically creates pools & keys for OpenStack services
|
||||||
|
openstack_config: true
|
||||||
|
cinder_ceph_client: cinder
|
||||||
|
glance_ceph_client: glance
|
||||||
|
glance_default_store: rbd
|
||||||
|
glance_rbd_store_pool: images
|
||||||
|
nova_libvirt_images_rbd_pool: vms
|
||||||
|
|
||||||
|
cinder_backends:
|
||||||
|
RBD:
|
||||||
|
volume_driver: cinder.volume.drivers.rbd.RBDDriver
|
||||||
|
rbd_pool: volumes
|
||||||
|
rbd_ceph_conf: /etc/ceph/ceph.conf
|
||||||
|
rbd_store_chunk_size: 8
|
||||||
|
volume_backend_name: rbddriver
|
||||||
|
rbd_user: "{{ cinder_ceph_client }}"
|
||||||
|
rbd_secret_uuid: "{{ fsid }}"
|
||||||
|
report_discard_supported: true
|
Loading…
x
Reference in New Issue
Block a user