kolla-ceph来源:

项目中的部分代码来自于kolla和kolla-ansible

kolla-ceph的介绍:

1、镜像的构建很方便, 基于容器的方式部署,创建、删除方便

2、kolla-ceph的操作幂等,多次执行不会产生副作用

3、使用kolla-ceph(基于ansible)流程化部署

4、通过给磁盘打上相应标签,创建osd非常简单

5、升级便捷,通过构建新的ceph镜像,upgrade既可

6、自动根据osd节点数量来设置故障域: "osd" 或 "host",及配置对应的副本数

项目结构

Auto_Ceph
├── 00-hosts
├── README.md
├── action_plugins
├── action.yml
├── bin
├── build
├── config
├── group_vars
├── library
├── os.yml
├── requirements.txt
├── roles
└── site.yml

点击查看项目:kolla-ceph自动化部署ceph集群

系统: Centos

环境: 3台虚拟机(可采用单节点或多节点),下载Auto_Ceph项目放在/root/目录下

ceph集群节点规划、网络规划

vi /root/Auto_Ceph/00-hosts

# storage_interface=eth0 ceph集群管理接口,必须配置
# cluster_interface=eth1 ceph集群数据同步接口,为空默认就是storage_interface [all:vars]
storage_interface=eth0
cluster_interface=eth1 [mon]
172.20.163.244 # 同时是部署节点
172.20.163.67
172.20.163.238 [mgr]
172.20.163.244
172.20.163.67
172.20.163.238 [osd]
172.20.163.244
172.20.163.67
172.20.163.238 [rgw]
172.20.163.244
172.20.163.67
172.20.163.238 [mds]

下载ceph镜像<部署节点操作>

部署节点:可以是任意一台mon组的节点(172.20.163.244)

  1. 在线部署: 下载ceph镜像、安装ansible、kolla-ceph<部署节点操作>
1. type wget || yum install wget -y

2. wget https://bootstrap.pypa.io/pip/2.7/get-pip.py --no-check-certificate

3. python get-pip.py

4.ceph镜像下载安装依赖
pip install -r /root/Auto_Ceph/requirements.txt --ignore-installed 当出现以下报错的时候执行:pip install GitPython, 再执行pip install kolla==9.4.0
ERROR: pip's legacy dependency resolver does not consider dependency conflicts when selecting packages. This behaviour is the source of the following dependency conflicts.
gitdb2 4.0.2 requires gitdb>=4.0.1, but you'll have gitdb 0.6.4 which is incompatible.
gitpython 2.1.15 requires gitdb2<3,>=2, but you'll have gitdb2 4.0.2 which is incompatible. 5. 下载docker
sh /root/Auto_Ceph/bin/install -D 6. 运行docker
sh /root/Auto_Ceph/bin/install -I
systemctl status docker 7. 下载registry
sh /root/Auto_Ceph/bin/install -R 8. 运行registry
docker run -d -v /opt/registry:/var/lib/registry -p 5000:5000 --restart=always --name registry registry:latest 7. 修改配置
vi /root/Auto_Ceph/build/ceph-build.conf
registry = 172.17.2.179:5000 # 必须按照实际修改, 其它默认既可 8. 开始构建ceph镜像, 查看镜像
cd /root/Auto_Ceph/build/ && sh build.sh --tag nautilus
docker image ls
REPOSITORY TAG IMAGE ID CREATED SIZE
172.20.163.77:5000/kolla-ceph/centos-binary-ceph-mon nautilus a5e8a5ff08fc 13 days ago 792MB
172.20.163.77:5000/kolla-ceph/centos-binary-ceph-osd nautilus 118b704bcf88 13 days ago 793MB
172.20.163.77:5000/kolla-ceph/centos-binary-cephfs-fuse nautilus 6b00fc4b6e2e 13 days ago 792MB
172.20.163.77:5000/kolla-ceph/centos-binary-ceph-mds nautilus b206c578e594 13 days ago 792MB
172.20.163.77:5000/kolla-ceph/centos-binary-ceph-rgw nautilus e9f5e4bca8ab 13 days ago 792MB
172.20.163.77:5000/kolla-ceph/centos-binary-ceph-mgr nautilus b561bf427142 13 days ago 792MB
172.20.163.77:5000/kolla-ceph/centos-binary-ceph-base nautilus eae0898ce208 13 days ago 792MB
172.20.163.77:5000/kolla-ceph/centos-binary-base nautilus d48db6e179f9 13 days ago 410MB 9. type ansible || yum install ansible -y 10. 部署节点与节点之间ssh免密配置 11. 安装kolla-ceph工具
cd /root/Auto_Ceph/bin && sh install -K
  1. 在线部署: 下载docker<除部署节点外, 在其它节点操作以下步骤>
1. type wget || yum install wget -y

2. wget https://bootstrap.pypa.io/pip/2.7/get-pip.py --no-check-certificate

3. python get-pip.py

4. 安装docker模块
pip install docker 5. 安装并运行docker
scp /root/Auto_Ceph/bin/install ${target_host}:/root/
sh /root/install -D && sh /root/install -I

部署ceph集群

1. 修改参数<部署节点操作>
vi /root/Auto_Ceph/config/globals.yml 

   ceph_tag: "nautilus"
docker_registry: "仓库地址:端口"
ceph_osd_store_type: "bluestore"
ceph_pool_pg_num: 32 # 设置你的pg数
ceph_pool_pgp_num: 32 # 设置你的pgp数
enable_ceph_rgw: "true or false"
enable_ceph_mds: "true or false"
2. kolla-ceph部署使用<部署节点操作>

2.1 初始化ceph主机节点 kolla-ceph -i /root/Auto_Ceph/00-hosts os 2.2 部署前检查配置 kolla-ceph -i /root/Auto_Ceph/00-hosts prechecks 2.3 部署ceph集群 1、bluestore osd: 为每个osd节点的磁盘打上标签
parted /dev/vdc -s -- mklabel gpt mkpart KOLLA_CEPH_OSD_BOOTSTRAP_BS 1 -1
2、部署ceph-mon、ceph-osd、ceph-mgr、ceph-rgw、ceph-mds
kolla-ceph -i /root/Auto_Ceph/00-hosts deploy
3、docker exec ceph_mon ceph -s
cluster:
id: 4a9e463a-4853-4237-a5c5-9ae9d25bacda
health: HEALTH_OK services:
mon: 3 daemons, quorum 172.20.163.67,172.20.163.77,172.20.163.238 (age 2h)
mgr: 172.20.163.238(active, since 2h), standbys: 172.20.163.77, 172.20.163.67
mds: cephfs:1 {0=devops2=up:active} 2 up:standby
osd: 4 osds: 4 up (since 2h), 4 in (since 13d)
rgw: 1 daemon active (radosgw.gateway) data:
pools: 7 pools, 104 pgs
objects: 260 objects, 7.6 KiB
usage: 4.1 GiB used, 76 GiB / 80 GiB avail
pgs: 104 active+clean 2.4 删除操作: ceph集群容器和volume kolla-ceph -i /root/Auto_Ceph/00-hosts destroy --yes-i-really-really-mean-it 2.5 升级操作 1、cd /root/Auto_Ceph/build/ && sh build.sh --tag new_ceph_version
2、修改最新ceph_tag: "new_ceph_version"
3、kolla-ceph -i /root/Auto_Ceph/00-hosts upgrade 2.6 单独更换部署osd kolla-ceph -i /root/Auto_Ceph/00-hosts -t ceph-osd 2.7 开启ceph dashborad
enable_ceph_dashboard: true
kolla-ceph -i /root/Auto_Ceph/00-hosts start-dashborad 2.8 启用对象网关管理前端
enable_ceph_rgw: true
kolla-ceph -i /root/Auto_Ceph/00-hosts start-rgw-front
3. 磁盘打标签介绍
3.1. bluestore wal db共用一块盘打标签方式
  1. parted /dev/vdc -s -- mklabel gpt mkpart KOLLA_CEPH_OSD_BOOTSTRAP_BS 1 -1
3.2. bluestore 分离db和wal打标签方式

为了提高 ceph 性能,且ssd磁盘数量有限,通常将db和wal存放在单独的 ssd 磁盘上

  # SSD磁盘:vdb vdd HDD磁盘:vdc
1. 指定元数据分区
parted /dev/vdc -s -- mklabel gpt mkpart KOLLA_CEPH_OSD_BOOTSTRAP_BS_BLUE1 1 100
2. 指定block 分区
parted /dev/vdc -s -- mkpart KOLLA_CEPH_OSD_BOOTSTRAP_BS_BLUE1_B 101 100% 3. 指定block.wal分区
parted /dev/vdb -s -- mklabel gpt mkpart KOLLA_CEPH_OSD_BOOTSTRAP_BS_BLUE1_W 1 1000
4. 指定block.db分区
parted /dev/vdd -s -- mklabel gpt mkpart KOLLA_CEPH_OSD_BOOTSTRAP_BS_BLUE1_D 1 10000

block.db 分区的大小为 block 分区 的 4%大小

3.3 filestore 打标签方式
  1. parted /dev/vdc -s -- mklabel gpt mkpart KOLLA_CEPH_OSD_BOOTSTRAP 1 -1
3.4 filestore 指定日志单独分区

filestore 为了提高 ceph 性能,通常将日志存放在单独的 ssd 磁盘上

# SSD磁盘:vdb    HDD磁盘:vdc vdd
1. vdc 作为数据盘
parted /dev/vdc -s -- mklabel gpt mkpart KOLLA_CEPH_OSD_BOOTSTRAP_FILE1 1 -1
2. vdd 作为数据盘
parted /dev/vdd -s -- mklabel gpt mkpart KOLLA_CEPH_OSD_BOOTSTRAP_FILE2 1 -1
3. vdb作为vdc、vdd 的journal盘
parted /dev/vdb -s -- mklabel gpt
parted /dev/vdb -s -- mkpart KOLLA_CEPH_OSD_BOOTSTRAP_FILE1_J 4M 2G
parted /dev/vdb -s -- mkpart KOLLA_CEPH_OSD_BOOTSTRAP_FILE2_J 2G 4G

运维操作

1、任意一台montior节点进入ceph环境. 既可以正常执行ceph命令运维操作
docker exec -it ceph_mon bash
ceph -s 2、或者直接外部操作
docker exec ceph_mon ceph -s 3、osd故障操作
docker exec ceph_mon ceph osd crush rm osd.1
docker exec ceph_mon ceph osd auth rm osd.1
docker exec ceph_mon ceph osd rm osd.1
到故障osd节点把容器给干掉,然后换新盘: docker rm -f ceph_osd_1
为新磁盘盘打标签: parted /dev/vdc -s -- mklabel gpt mkpart KOLLA_CEPH_OSD_BOOTSTRAP_BS 1 -1
部署新osd: kolla-ceph -i /root/Auto_Ceph/00-hosts -t ceph-osd

ceph dashboard

ceph 集群状态



ceph rgw

[自动化]基于kolla的自动化部署ceph集群的更多相关文章

  1. [自动化]基于kolla-ceph的自动化部署ceph集群

    kolla-ceph来源: 项目中的部分代码来自于kolla和kolla-ansible kolla-ceph的介绍: 1.镜像的构建很方便, 基于容器的方式部署,创建.删除方便 2.kolla-ce ...

  2. 使用虚拟机CentOS7部署CEPH集群

    第1章   CEPH部署 1.1  简单介绍 Ceph的部署模式下主要包含以下几个类型的节点 Ø CephOSDs: A Ceph OSD 进程主要用来存储数据,处理数据的replication,恢复 ...

  3. ceph-deploy离线部署ceph集群及报错解决FAQ

    ceph-deploy部署ceph集群 环境介绍 主机名 ip地址 操作系统 角色 备注 ceph-node1 10.153.204.13 Centos7.6 mon.osd.mds.mgr.rgw. ...

  4. 基于TLS证书手动部署kubernetes集群(下)

    一.master节点组件部署 承接上篇文章--基于TLS证书手动部署kubernetes集群(上),我们已经部署好了etcd集群.flannel网络以及每个节点的docker,接下来部署master节 ...

  5. 二十八. Ceph概述 部署Ceph集群 Ceph块存储

    client   :192.168.4.10 node1 :192.168.4.11 ndoe2 :192.168.4.12 node3 :192.168.4.13   1.实验环境 准备四台KVM虚 ...

  6. (转)基于TLS证书手动部署kubernetes集群(下)

    转:https://www.cnblogs.com/wdliu/p/9152347.html 一.master节点组件部署 承接上篇文章--基于TLS证书手动部署kubernetes集群(上),我们已 ...

  7. 003 ansible部署ceph集群

    介绍:在上一次的deploy部署ceph,虽然出了结果,最后的结果并没有满足最初的目的,现在尝试使用ansible部署一遍,看是否会有问题 一.环境准备 ceph1充当部署节点,ceph2,ceph3 ...

  8. 基于Ubuntu 18.04.5 LTS 部署Ceph集群测试及Ceph RDB的使用。

    1.ceph简介 Ceph在一个统一的系统中独特地提供对象.块和文件存储 1.1 ceph官网架构图 1.2 架构解释   CEPH 对象存储 CEPH 块设备 CEPH 文件系统 RESTful 接 ...

  9. 基于TLS证书手动部署kubernetes集群(上)

    一.简介 Kubernetes是Google在2014年6月开源的一个容器集群管理系统,使用Go语言开发,Kubernetes也叫K8S. K8S是Google内部一个叫Borg的容器集群管理系统衍生 ...

随机推荐

  1. CTF-sql-sql约束注入

    create table user( id int not null auto_increment, username varchar(30) not null, password varchar(3 ...

  2. day 8 求平均数

    fun()函数的功能:计算形参x所指数组中N个数的平均值,(这里全部取浮点数) 并输出,在将大于平均值的数放在形参y所指的数组中,在主函数输出. 效果还不错: 还存在需要优化的分析:其实存到y数组中的 ...

  3. 微服务架构 | 3.3 Apache Zookeeper 注册中心

    @ 目录 前言 1. Zookeeper 基础知识 1.1 Zookeeper 是什么 1.2 Zookeeper 的数据结构 1.3 Watcher 机制 1.4 常见应用场景分析 1.5 Zook ...

  4. 【算法】nSum问题

    LeetCode中出现了2sum, 3sum, 4sum的问题,文章给出了一种通用的解法,想法是将n_sum问题转换为(n-1)_sum问题,具体步骤如下: 定义函数sum(n, target),表示 ...

  5. 如何通俗地理解docker

    Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化.容器是完全使用沙箱机制,相互之间不会有任何 ...

  6. 【Azure Developer】Azure Logic App 示例: 解析 Request Body 的 JSON 的表达式? triggerBody()?

    问题描述 通过Azure Logic App(逻辑应用)实现无代码的处理JSON数据.但是如何获取Request Body中的一个属性值呢? 例如:如何来获取以下JSON结构中的 ObjectName ...

  7. 日志模块详细介绍 hashlib模块 动态加盐

    目录 一:hashlib模块 二:logging 一:hashlib模块 加密: 将明文数据通过一系列算法变成密文数据(目的就是为了数据的安全) 能够做文件一系列校验 python的hashlib提供 ...

  8. HBuilderX频繁关闭,导致启动不了?

    根据官方给出的指南(http://ask.dcloud.net.cn/article/35583),在我的电脑打开%appdata%下面的会有HBuilderX目录,把这个目录删除或改名就可以启动了:

  9. VC 为程序创建唯一标识

    转载请注明来源:https://www.cnblogs.com/hookjc/ 应用: 一台机器上只许运行一个客户端 同一个账号只允许登陆一个客户端 BOOl m_IsRun=false; HANDL ...

  10. VC 获取多个mac地址

    转载请注明来源:https://www.cnblogs.com/hookjc/ #include <IPHlpApi.h>#include <iostream>#pragma ...