ceph ansible部署ceph

安装 Python 构建依赖项

dnf install -y git  python3 sshpass tmux python3-devel libffi-devel gcc openssl-devel python3-libselinux python3-netaddr

下载ceph-ansible

git clone -b stable-6.0 https://github.com/ceph/ceph-ansible.git

生成ceph虚拟环境

python3 -m venv /opt/oslostack/ceph-venv

激活虚拟环境

source /opt/oslostack/ceph-venv/bin/activate

更新pip

pip install -U pip  -i https://mirrors.aliyun.com/pypi/simple

下载ansible

pip install -r /opt/oslostack/ceph-ansible/requirements.txt  -i https://mirrors.aliyun.com/pypi/simple

安装 ceph-ansible ansible galaxy 依赖项

cd ceph-ansible
ansible-galaxy install -r requirements.yml

创建host_vars目录

mkdir ceph-ansible/host_vars

为每个节点单独配置osd磁盘信息,文件名以主机名命名

[root@ceph1 ceph-ansible]# cat /opt/ceph/ceph-ansible/host_vars/ceph1.yaml |grep -v -e '^[[:space:]]$' -e '^[[:space:]]#'
dummy:
devices:
/dev/sdb
/dev/sdc
/dev/sdd
bluestore_wal_devices:
/dev/sdf
[root@ceph1 ceph-ansible]#
[root@ceph1 ceph-ansible]#
[root@ceph1 ceph-ansible]#
[root@ceph1 ceph-ansible]# cat /opt/ceph/ceph-ansible/host_vars/ceph2.yaml |grep -v -e '^[[:space:]]$' -e '^[[:space:]]#'
dummy:
devices:
/dev/sdb
[root@ceph1 ceph-ansible]#
[root@ceph1 ceph-ansible]# cat /etc/hosts
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
198.18.2.124	controller
198.18.2.125	compute1
198.18.2.126	compute2
198.18.2.137	ceph1
198.18.2.138	ceph2
[root@ceph1 ceph-ansible]#

主配置文件放在group_vars/all.yml里,包含ceph调优部分

(venv) [root@ceph1 ceph-ansible]# cat group_vars/all.yml
# ceph
cephx: true

ceph_origin: distro
configure_firewall: false

osd_scenario: lvm
osd_objectstore: bluestore
#osd_auto_discovery: true
# 显式设置 db 空间大小,单位为 bytes,默认 -1 为平分空间
block_db_size: -1
osd_journal_size: 20480 

# 根据实际情况填写
public_network: "172.16.1.0/24"
cluster_network: "172.16.1.0/24"
monitor_interface: eno2
ntp_service_enabled: false


dashboard_enabled: false
#dashboard_admin_password: PsD26%g-H_<a
#grafana_admin_password: PsD26%g-H_<a

# crush_rule_config: true


ceph_conf_overrides:
  global:
    max_open_files: 131072
  osd:
  #  osd_memory_target: 4294967296
    #每个OSD进程能申请到的内存大小
    osd_pool_default_min size: 1
    #个PG能接受IO的最小副本数
    osd_journal_size: 20000
    #osd journal大小
    osd_max_write_size: 512
    # OSD一次可写入的最大值
    osd_client_message_size_cap: 2147483648
    #客户端允许在内存中的最大数据(bytes) 
    osd_deep_scrub_stride: 131072
    #在Deep Scrub时候允许读取的字节数(bytes)。
    osd_op_threads: 16
    #并发文件系统操作数
    osd_disk_threads: 4
    #OSD密集型操作例如恢复和Scrubbing时的线程
    osd_map_cache_size: 1024
    #保留OSD Map的缓存(MB)
    osd_map_cache_bl_size: 128
    #OSD进程在内存中的OSDMap缓存(MB)
    osd_recovery_op_priority: 2
    #恢复操作优先级,取值1-63,值越高占用资源越高
    osd_recovery_max_active: 10
    #同一时间内活跃的恢复请求数
    osd_max_backfills: 4
    #一个OSD允许的最大backfills数。
    osd_min_pg_log_entries: 30000
    #修建PGLog是保留的最小PGLog数
    osd_max_pg_log_entries: 100000
    #修建PGLog是保留的最大PGLog数
    osd_mon_heartbeat_interval: 40           
    # 默认值30s,OSD ping一个monitor的时间间隔
    ms_dispatch_throttle_bytes: 1048576000   
    # 默认值104857600,等待派遣的最大消息数(bytes)
    objecter_inflight_ops: 819200
    # 默认值1024,客户端流控,允许的最大未发送io请求数,超过阀值会堵塞应用io,为0表示不受限
    osd_op_log_threshold: 50                 
    # 默认值5,一次显示多少操作的log
    osd_crush_chooseleaf_type: 0             
    # 默认值为1,CRUSH规则用到chooseleaf时的bucket的类型,0 表示让数据尽量散列
    osd_recovery_max_single_start: 1
    # OSD在某个时刻会为一个PG启动恢复操作数。
    # 和osd_recovery_max_active一起使用,假设我们配置osd_recovery_max_single_start为1,osd_recovery_max_active为10,
    # 那么,这意味着OSD在某个时刻会为一个PG启动一个恢复操作,而且最多可以有10个恢复操作同时处于活动状态。
    osd_recovery_max_chunk: 1048576         
    # 默认为8388608, 设置恢复数据块的大小,以防网络阻塞
    osd_recovery_threads: 10                 
    # 恢复数据所需的线程数
    osd_recovery_sleep: 0
    # 默认为0,recovery的时间间隔,会影响recovery时长,如果recovery导致业务不正常,可以调大该值,增加时间间隔
    # 通过sleep的控制可以大大的降低迁移磁盘的占用,对于本身磁盘性能不太好的硬件环境下,可以用这个参数进行一下控制,能够缓解磁盘压力过大引起的osd崩溃的情况
    # 参考值: sleep=0;sleep=0.1;sleep=0.2;sleep=0.5
    osd_crush_update_on_start: true          
    # 默认true。false时,新加的osd会up/in,但并不会更新crushmap,prepare+active期间不会导致数据迁移
    osd_op_thread_suicide_timeout: 600       
    # 防止osd线程操作超时导致自杀,默认150秒,这在集群比较卡的时候很有用
    osd_op_thread_timeout: 300               
    # osd线程操作超时时间,默认15秒
    osd_recovery_thread_timeout: 300         
    # osd恢复线程超时时间,默认30秒
    osd_recovery_thread_suicide_timeout: 600 
    # 防止osd恢复线程超时导致自杀,默认300秒,在集群比较卡的时候也很有用
    osd_scrub_begin_hour: 0                   
    # 开始scrub的时间(含deep-scrub),为每天0点
    osd_scrub_end_hour: 8                     
    # 结束scrub的时间(含deep-scrub),为每天8点,这样将deep-scrub操作尽量移到夜间相对client io低峰的时段,避免影响正常client io
    osd_max_markdown_count: 10               
    # 当osd执行缓慢而和集群失去心跳响应时,可能会被集群标记为down(假down),默认为5次,超过此次数osd会自杀,必要时候可设置osd nodown来避免这种行为
    


  mon:
    mon_clock_drift_allowed: 1
    #  monitor间的clock drift
    mon_osd_min_down_reporters: 13
    # 向monitor报告down的最小OSD数
    mon_osd_down_out_interval: 600
    # 标记一个OSD状态为down和out之前Ceph等待的秒数。
  client:
    rbd_cache_enabled: true                   
    # 默认值 true,RBD缓存
    rbd_cache_size: 335544320                 
    # 默认值33554432,RBD能使用的最大缓存大小(bytes)
    rbd_cache_max_dirty: 235544320
    # 默认值25165824,缓存为write-back时允许的最大dirty(脏)字节数(bytes),不能超过 rbd_cache_size,如果为0,使用write-through
    rbd_cache_target_dirty: 134217728         
    # 默认值16777216,开始执行回写过程的脏数据大小,不能超过rbd_cache_max_dirty
    rbd_cache_max_dirty_age: 30
    # # 默认值1,在被刷新到存储盘前dirty数据存在缓存的时间(seconds),避免可能的脏数据因为迟迟未达到开始回写的要求而长时间存在
    rbd_cache_writethrough_until_flush: false
    # # 默认值true,该选项是为了兼容linux-2.6.32之前的virtio驱动,避免因为不发送flush请求,数据不回写。
    # # 设置该参数后,librbd会以writethrough的方式执行io,直到收到第一个flush请求,才切换为writeback方式。
    rbd_cache_max_dirty_object: 2
    # # 默认值0,最大的Object对象数,默认为0,表示通过rbd cache size计算得到,librbd默认以4MB为单位对磁盘Image进行逻辑切分。
    # # 每个chunk对象抽象为一个Object;librbd中以Object为单位来管理缓存,增大该值可以提升性能。

执行部署(必须在ceph-ansible目录下)
ansible-playbook -i /opt/ceph/inventory site.yml.sample

自定义crushmap与openstack对接

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值