• ceph-ansible5.0部署文档


    ceph-ansible 5.0

    优势:需要部署的节点数量越多,ceph-ansible的效率就越高

    版本信息:

    ceph-ansible:5.0.5 ceph 15.2.11

    os:centos 7.9.2009

    kernel version : 5.4.116-1.el7.elrepo

    集群拓扑
    ceph-admin192.168.200.120192.168.100.120
    ceph-node01192.168.200.121192.168.100.121
    ceph-node02192.168.200.122192.168.100.122
    ceph-node03192.168.200.123192.168.100.123
    ceph-node04 lb01192.168.200.124192.168.100.124
    ceph-node05 lb02192.168.200.125192.168.100.125
    ceph-admin192.168.200.126192.168.100.126
    Prerequisites
    • 本文档适用于创建具有mon、mgr、mds、osds四类进程的Ceph集群,如需启用nfs-ganesha、rgw、rbd-mirror等其他功能的Ceph集群,请参阅ceph-ansible github仓库中的示例文件说明,或在集群创建完成之后,手动进行配置。
    • ceph-ansible项目的版本号与Ceph版本有依赖关系,ceph-ansible 4.0用于创建Ceph N版本的集群,ceph-ansible 5.0用于创建Ceph O版的集群,以此类推。
    • 部分Ceph功能依赖于新版内核的特性,在部署之前请将内核升级至最新的Long Term版本,升级内核请参阅另外一篇文档
    • 在ceph-admin节点上,配置好对其他所有节点的免密登录,所有节点关闭防火墙和SELinux
    • 所有节点配置好EPEL源

    在ceph-admin节点上安装ansible,admin节点可以是任意能连接到目标集群的节点,并且按照ansible的要求,需要配置免密登录至目标集群的所有节点。

    yum install ansible python-netaddr unzip PyYAMLpython36-six.noarch  python36-PyYAML.x86_64 -y
    # python-netaddr是一个用来处理IP地址的Python模块
    yum update -y
    # 在7.7上 ,ceph-volume命令会出错
    
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    在所有节点上安装如下Python模块

    yum install python3-pip -y
    pip3 install pecan
    pip3 install werkzeug
    pip3 install pyyaml
    # 在所有mgr节点上安装必须的python 3 模块
    
    • 1
    • 2
    • 3
    • 4
    • 5

    在ceph-admin节点上获取ceph-ansible项目文件

    wget https://github.com/ceph/ceph-ansible/archive/refs/tags/v5.0.5.zip
    # 可能需要科学上网,或者使用迅雷下载
    unzip ceph-ansible-5.0.5.zip -d /usr/local/
    cd /usr/local/ceph-ansible-5.0.5
    
    • 1
    • 2
    • 3
    • 4

    group_vars目录

    Ceph集群的配置将通过使用ceph-ansible提供的ansible变量来设置。所有这些选项及其默认值都定义在ceph-ansible项目根部的group_vars/目录中。在group_vars/目录里面有很多Ansible配置文件的样本,通过文件名与每种Ceph守护进程相关。例如,osds.yml.sample包含了OSD守护进程的所有默认配置。all.yml.sample文件是一个特殊的group_vars文件,适用于集群中的所有主机。

    all.yml文件中定义的配置,作用于集群中的所有进程类型上,在安装过程中,所有进程的安装步骤都可以使用

    其他类似于osd.yml的文件,只适用于特定的进程组,只作用于特定进程的安装过程;例如osd.yml只适用于与osd相关的配置

    重点来看all.yml文件中的配置

    all.yml文件

    cd至group_vars目录

    cd /usr/local/ceph-ansible-5.0.5/group_vars/
    
    • 1

    group_vars目录下创建all.yml文件,内容如下

    mon_group_name: mons
    # 在Inventory文件(ansible的hosts文件),要安装mon组件的主机是在哪个资产组内,上面这个例子指的就是在[mons]组内
    # 以下同理
    osd_group_name: osds
    # rgw_group_name: rgws
    mds_group_name: mdss
    # nfs_group_name: nfss
    # rbdmirror_group_name: rbdmirrors
    client_group_name: clients
    # iscsi_gw_group_name: iscsigws
    mgr_group_name: mgrs
    # rgwloadbalancer_group_name: rgwloadbalancers
    configure_firewall: false
    # 是否自动配置防火墙,如果设置为true,ceph-ansible会自动去配置集群内组件相互通信所需的防火墙规则
    # 这一步建议手动做
    ceph_origin: repository
    # 自动配置源
    # 设置为distro表示不自动配置源
    # 设置为local表示从本地计算机——即ceph-admin节点去复制ceph二进制文件分发至其他节点
    ceph_repository: community
    # 表示使用ceph社区的版本,ceph-ansible可以安装rhcs等厂家发行的版本
    # 此处只安装社区的版本,如果指定了此参数,需要设置ceph_stable_release和cepph_mirror
    ceph_mirror: http://mirrors.163.com/ceph
    ceph_stable_release: octopus
    # yum源如果提示404,编辑下面这个文件定制yum源baseurl的路径
    # 编辑此文件/usr/local/ceph-ansible-5.0.5/roles/ceph-common/tasks/installs/redhat_community_repository.yml
    
    # 删除ceph_stable_release这个变量,将自定义路径输入,效果具体如下:
    #  baseurl: "{{ ceph_mirror }}/rpm-15.2.9/el{{ ansible_distribution_major_version }}/noarch"
    # 
    
    # 要部署哪个ceph版本
    ceph_version_num: 15
    ceph_stable_repo: "{{ ceph_mirror }}/rpm-{{ ceph_stable_release }}"
    # 两个{{}}表示使用ansible变量
    ceph_stable_key: http://mirrors.163.com/ceph/keys/release.asc
    ip_version: ipv4
    monitor_interface: ens33
    public_network: 192.168.200.0/24
    cluster_network: 192.168.100.0/24
    monitor_address_block: 192.168.200.0/24
    cephx: true
    copy_admin_key: true
    # 将'copy_admin_key'设置为'true'会将管理员密钥复制到[clients]主机中的/etc/ceph/目录下
    
    # ceph_iscsi_config_dev: true 
    # nfs_ganesha_stable: true 
    # nfs 
    # nfs_file_gw: true
    # 是否启用通过NFS的形式来访问CephFS的功能,将此项设置为true依赖于mds角色,即必须启用mds安装
    # nfs_obj_gw: true
    # 是否启用通过NFS的形式来访问RGW的功能,将此项设置为true依赖于rgws角色,即必须启用rgw安装
    
    # 自定义的ceph配置选项可以写在这里
    # ceph_conf_overrides:
    #  global:
    #    osd_pool_default_size: 3
    #  mon:
    #    mon_allow_pool_delete: true
    
    
    # osd相关的配置
    osd_objectstore: bluestore
    # filestore bluestore SeaStore
    # SeaStore面向全NVMe场景设计
    # 对象存储引擎,如有必要可以将其更改为filestore
    osd_auto_discovery: true
    # 是否启用OSD设备自动发现,如果这个选项设置为true,将不再需要填写osds.yml中的device设置
    # 因为ceph-ansible将会使用ansible_devices发现的所有可用的块设备
    # 不必担心会将系统盘也给做成OSD,ceph-ansible将检测所有块设备,已有分区表的设备将不会被使用
    # 与之相关的还有另外一个配置项osd_auto_discovery_exclude,用于设置一个规则来排除指定的设备
    # 例如rbd*表示所有rbd开头的设备将不会被自动创建为osd
    
    
    dashboard_enabled: false
    # 这一步如果不设置为false,默认启动的grafana容器将会到github下载必须的json文件,需科学上网
    # 
    # rgw相关的配置
    # radosgw_frontend_type: beast
    # 使用什么实现来作为RGW的前端,beast表示使用Boost.Beast库来作为前端web服务器,以及使用
    # Boost.Asio库来进行异步网络i/o,此实现于Mimic版本中引入
    # 当前共有两个实现,beast和civetweb
    # 端口默认是8080
    
    # radosgw_interface: ens33
    # radosgw_address_block: 192.168.200.0/24
    
    # 
    # radosgw_civetweb_port: 8080
    # 设置civetweb的端口
    
    # cephx,是否启用cephx认证功能
    
    
    # dashboard
    # dashboard_enabled: false
    # dashboard_protocol: http
    # dashboard_admin_user_ro: false
    # dashboard_port: 8443
    # dashboard_admin_user: admin
    # dashboard_admin_password: 123456
    # grafana_admin_user: admin
    # grafana_admin_password: 123456
    # dashboard_grafana_api_no_ssl_verify: True
    # dashboard_rgw_api_user_id: ceph-dashboard
    # dashboard_rgw_api_no_ssl_verify: True
    # prometheus和grafana
    # docker_pull_timeout: 600s
    # grafana_datasource: Dashboard
    # grafana_dashboards_path: "/etc/grafana/dashboards/ceph-dashboard"
    # grafana_dashboard_version: nautilus
    # grafana_dashboard_files:
    #  - ceph-cluster.json
    #  - cephfs-overview.json
    #  - host-details.json
    #  - hosts-overview.json
    #  - osd-device-details.json
    #  - osds-overview.json
    #  - pool-detail.json
    #  - pool-overview.json
    #  - radosgw-detail.json
    #  - radosgw-overview.json
    #  - rbd-overview.json
    # grafana_plugins:
    #  - vonage-status-panel
    #  - grafana-piechart-panel
    # node_exporter_container_image: "prom/node-exporter:v0.17.0"
    # node_exporter_port: 9100
    # grafana_container_image: "grafana/grafana:5.4.3"
    # grafana_allow_embedding: True
    # grafana_port: 3000
    # prometheus_container_image: "prom/prometheus:v2.7.2"
    # prometheus_data_dir: /var/lib/prometheus
    # prometheus_conf_dir: /etc/prometheus
    # prometheus_port: 9092
    # alertmanager_container_image: "prom/alertmanager:v0.16.2"
    # alertmanager_container_memory: 4
    # alertmanager_data_dir: /var/lib/alertmanager
    # alertmanager_conf_dir: /etc/alertmanager
    # alertmanager_port: 9093
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59
    • 60
    • 61
    • 62
    • 63
    • 64
    • 65
    • 66
    • 67
    • 68
    • 69
    • 70
    • 71
    • 72
    • 73
    • 74
    • 75
    • 76
    • 77
    • 78
    • 79
    • 80
    • 81
    • 82
    • 83
    • 84
    • 85
    • 86
    • 87
    • 88
    • 89
    • 90
    • 91
    • 92
    • 93
    • 94
    • 95
    • 96
    • 97
    • 98
    • 99
    • 100
    • 101
    • 102
    • 103
    • 104
    • 105
    • 106
    • 107
    • 108
    • 109
    • 110
    • 111
    • 112
    • 113
    • 114
    • 115
    • 116
    • 117
    • 118
    • 119
    • 120
    • 121
    • 122
    • 123
    • 124
    • 125
    • 126
    • 127
    • 128
    • 129
    • 130
    • 131
    • 132
    • 133
    • 134
    • 135
    • 136
    • 137
    • 138
    • 139
    • 140

    复制mon、osd、mgr、mds的yml文件

    # 在group_vars目录下执行
    for i in {mons,osds,mgrs,mdss};do cp $i.yml.sample $i.yml;done
    
    • 1
    • 2

    group_vars的上一级目录,即ceph-ansible项目的根目录下,新建一个hosts文件,作为ansible的资产清单使用

    [mons]
    192.168.200.121
    192.168.200.122
    192.168.200.123
    [mgrs]
    192.168.200.121
    192.168.200.122
    192.168.200.123
    [mdss]
    192.168.200.121
    192.168.200.122
    192.168.200.123
    [osds]
    192.168.200.121
    192.168.200.122
    192.168.200.123
    192.168.200.124
    192.168.200.125
    [clients]
    192.168.200.126
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20

    如果不需要单独指明db和wal设备,那么现在已经开始部署了,如果需要,请参照下文的参考。

    在ceph-ansible的根目录下,执行如下命令,开始部署过程

    cp site.yml.sample site.yml
    ansible-playbook -i hosts site.yml
    
    • 1
    • 2

    单独指明DB和WAL设备

    指明block-db设备

    编辑group_vars/osds.yml,添加

    dedicated_devices:
    - /dev/sdg
    # 会自动平均分配这个设备上的所有空间给host上的osd
    
    • 1
    • 2
    • 3

    编辑group_vars/all.yml,添加

    osd_auto_discovery_exclude: "dm-*|loop*|md*|rbd*|sdg"
    # 如果有多个设备,在此处全部写上,表示在做osd设备自动发现的时候,将这些设备排除在外。
    
    • 1
    • 2
    指明block-wal设备
    bluestore_wal_devices:
    - /dev/nvme0n1
    
    • 1
    • 2

    编辑group_vars/all.yml,添加

    osd_auto_discovery_exclude: "dm-*|loop*|md*|rbd*|nvme0n1"
    # 如果有多个设备,在此处全部写上,表示在做osd设备自动发现的时候,将这些设备排除在外。
    
    • 1
    • 2
  • 相关阅读:
    Sulfo CY3-DBCO蛋白质标记实验-星戈瑞
    MeshLab相关&纹理贴图
    10、IOC 之类路径扫描和托管组件
    5.23 BCC工具之drsnoop.py解读
    【python】我用python写了一个可以批量查询文章质量分的小项目(纯python、flask+html、打包成exe文件)
    lftp服务与http服务(包含scp服务)详解
    【论文阅读】Distilling the Knowledge in a Neural Network
    2022.7.26 模拟赛
    AugMixDataset的一些示例
    【Vue五分钟】五分钟了解webpack的高级概念
  • 原文地址:https://blog.csdn.net/a772304419/article/details/126194896