[自动化]基于kolla的自动化部署ceph集群
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)
- 在线部署: 下载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
- 在线部署: 下载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共用一块盘打标签方式
- 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 打标签方式
- 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集群的更多相关文章
- [自动化]基于kolla-ceph的自动化部署ceph集群
kolla-ceph来源: 项目中的部分代码来自于kolla和kolla-ansible kolla-ceph的介绍: 1.镜像的构建很方便, 基于容器的方式部署,创建.删除方便 2.kolla-ce ...
- 使用虚拟机CentOS7部署CEPH集群
第1章 CEPH部署 1.1 简单介绍 Ceph的部署模式下主要包含以下几个类型的节点 Ø CephOSDs: A Ceph OSD 进程主要用来存储数据,处理数据的replication,恢复 ...
- ceph-deploy离线部署ceph集群及报错解决FAQ
ceph-deploy部署ceph集群 环境介绍 主机名 ip地址 操作系统 角色 备注 ceph-node1 10.153.204.13 Centos7.6 mon.osd.mds.mgr.rgw. ...
- 基于TLS证书手动部署kubernetes集群(下)
一.master节点组件部署 承接上篇文章--基于TLS证书手动部署kubernetes集群(上),我们已经部署好了etcd集群.flannel网络以及每个节点的docker,接下来部署master节 ...
- 二十八. 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虚 ...
- (转)基于TLS证书手动部署kubernetes集群(下)
转:https://www.cnblogs.com/wdliu/p/9152347.html 一.master节点组件部署 承接上篇文章--基于TLS证书手动部署kubernetes集群(上),我们已 ...
- 003 ansible部署ceph集群
介绍:在上一次的deploy部署ceph,虽然出了结果,最后的结果并没有满足最初的目的,现在尝试使用ansible部署一遍,看是否会有问题 一.环境准备 ceph1充当部署节点,ceph2,ceph3 ...
- 基于Ubuntu 18.04.5 LTS 部署Ceph集群测试及Ceph RDB的使用。
1.ceph简介 Ceph在一个统一的系统中独特地提供对象.块和文件存储 1.1 ceph官网架构图 1.2 架构解释 CEPH 对象存储 CEPH 块设备 CEPH 文件系统 RESTful 接 ...
- 基于TLS证书手动部署kubernetes集群(上)
一.简介 Kubernetes是Google在2014年6月开源的一个容器集群管理系统,使用Go语言开发,Kubernetes也叫K8S. K8S是Google内部一个叫Borg的容器集群管理系统衍生 ...
随机推荐
- 微服务架构 | 3.3 Apache Zookeeper 注册中心
@ 目录 前言 1. Zookeeper 基础知识 1.1 Zookeeper 是什么 1.2 Zookeeper 的数据结构 1.3 Watcher 机制 1.4 常见应用场景分析 1.5 Zook ...
- 通过Javascript实现把数组里的内容以表格方式呈现到页面从
一.把数组里的内容呈现到页面从,以表格方式 <!doctype html> <html> <head> <meta charset="utf-8&q ...
- 触发器中获取sql
CREATE trigger 触发器名 on 表名 for update,delete as set nocount on create table #t(EvebtType varchar(60), ...
- [Keil 学习] printf, scanf函数的用法
C语言库函数中有一批"标准输入输出函数",它是以标准的输入输出设备(一般为终端设备)为输入输出对象的,其中用得比较多的是printf和scanf函数了. 在嵌入式设备中加入C语言的 ...
- 【刷题-LeetCode】123 Best Time to Buy and Sell Stock III
Best Time to Buy and Sell Stock III Say you have an array for which the ith element is the price of ...
- 使用Cesium Stories来可视化时序数据
Cesium中文网:http://cesiumcn.org/ | 国内快速访问:http://cesium.coinidea.com/ Cesium可以用来可视化随时间变化的数据,无论是跨越数百年的地 ...
- 集合框架-LinkedList集合练习(堆栈和队列)
1 package cn.itcast.p2.linkedlist.test; 2 3 import java.util.LinkedList; 4 5 /* 6 * 请使用LinkedList来模拟 ...
- 前端HTML基础之form表单
目录 一:form表单 1.form表单功能 2.表单元素 二:form表单搭建(注册页面) 1.编写input会出现黄色阴影问题 三:完整版,前端代码(注册页面) 四:type属性介绍 1.inpu ...
- 带你十天轻松搞定 Go 微服务系列(七)
序言 我们通过一个系列文章跟大家详细展示一个 go-zero 微服务示例,整个系列分十篇文章,目录结构如下: 环境搭建 服务拆分 用户服务 产品服务 订单服务 支付服务 RPC 服务 Auth 验证( ...
- @ResponeBody 和 @RequestBody
一.补充注解?1.@ResponseBody 将数据转成json 并输出到响应流中2.@RequestBody 将请求中的json数据转换成java对象.1.1 jsp页面 增添两个点击事件. 1.2 ...