001.Ansible部署RHCS存储集群
一 前期准备
1.1 前置条件
- 至少有三个不同的主机运行monitor (MON)节点;
- 至少三个直接存储(非外部SAN硬件)的OSD节点主;
- 至少两个不同的manager (MGR)节点;
- 如果使用CephFS,则至少有两个完全相同配置的MDS节点;
- 如果使用Ceph对象网关,则至少有两个不同的RADOSGW节点。
- 一个部署节点,可以使用ceph-ansible包中的Ansible剧本来部署和配置集群。
1.2 准备工作
- 具备相同操作系统的集群节点,建议RHEL7;
- 配置软件仓库(centos epel源、ubuntu apt源、redhat使用subscription-manager命令注册系统);
- 所有节点配置网络及NTP时间同步;
- 关闭selinux与防火墙,或放通所有相关流量和端口;
- 在部署节点安装ansbile;
- 添加hosts,并确保能正确解析到所有主机;
- 配置部署节点使用Ansible任务的用户到其他所有节点可以ssh免密登录;
- 验证部署节点能够在集群节点上能正常运行ansible任务。
1.3 其他注意事项
- OSD磁盘不建议使用RAID,Ceph使用复制或纠删码来保护数据
- 在生产环境部署Ceph集群,为便于管理,OSD主机应尽量使用统一的硬件。尽可能配置数量、大小和名称都相同的磁盘,有助于确保性能一致,并且简化故障排除;
- 需要确认每个OSD主机提供的OSD的数量。密度较小的存储集群意味着osd守护进程分布到更多的主机上,分发工作负载。密度较高的存储意味着重平衡和数据恢复需要更高的流量
附一:组件端口说明
二 部署相关知识点
2.1 Ansible介绍
2.2 Ansible部署Ceph相关yml
2.3 yml主要相关参数
- all.yml参数
|
变量
|
值
|
含义
|
|
fetch_directory
|
~/ceph-ansible-keys
|
用于将身份验证密钥复制到集群节点的临时目录的位置。
|
|
ceph_origin
|
repository
|
Ceph来源,repository表示使用包存储库
|
|
ceph_repository
|
rhcs
|
用于安装Red Hat的存储库Ceph存储。rhcs使用官方红帽Ceph存储包。
|
|
ceph_repository_type
|
cdn or iso
|
rhcs的安装源,CDN或本地ISO映像。
|
|
ceph_rhcs_iso_path
|
path to iso
|
如果使用iso存储库类型,则指向Red Hat Ceph存储iso的路径。
|
|
ceph_rhcs_version
|
3
|
Red Hat Ceph安装的版本。
|
|
monitor_interface
|
network interface
|
Monitor用于侦听的网络接口。
|
|
public_network
|
address and netmask
|
集群的公共网络的子网,如192.168.122.0/24。
|
|
cluster_network
|
address and netmask
|
集群专用网络的子网。默认设置为public_network的值。
|
|
journal_size
|
size in MB
|
分配给OSD日志的大小。应该是预期的两倍。在大多数情况下不应小于5120 MB。
|
- osds.ym
|
变量
|
值
|
含义
|
|
osd_scenario
|
collocated
or non-collocated
|
OSD日志部署类型。
|
|
devices
|
用于OSDs的设备的名称列表。
|
用于并行OSD数据和日志分区或非并行OSD数据分区的设备。
|
|
dedicated_devices
|
用于非并列OSD期刊的设备名称列表。
|
OSD日志设备。
|
2.4 客户端相关命令
|
命令
|
含义
|
|
ceph -s
|
查看集群状态。
|
|
ceph -w
|
动态观察集群更改。
|
|
ceph df
|
查看集群剩余空间状态。
|
|
ceph osd df
|
查看OSD使用情况。
|
|
ceph auth get-or-create
|
创建用户。
|
|
aeph auth list
|
查看用户列表。
|
|
ceph auth caps
|
查看用户权限。
|
|
ceph auth del
|
删除用户。
|
2.5 对象object相关命令
|
命令
|
含义
|
|
rados -p pool_name ls
|
查看一个pool中的object。
|
|
rados -p pool_name put object_name file_path
|
上传一个文件作为对象。
|
|
rados -p pool_name get object_name file_path
|
以文件的形式检索object。
|
|
rados -p pool_name stat object_name
|
显示object的统计数据。
|
|
rados -p pool_name rm object_name
|
删除一个object。
|
三 正式部署
|
节点
|
类型
|
IP
|
备注
|
|
servera
|
部署节点
|
172.25.250.10
|
|
|
serverc
|
mons
mgrs
osds
|
172.25.250.12
|
|
|
serverd
|
mons
mgrs
osds
|
172.25.250.13
|
|
|
servere
|
mons
mgrs
osds |
172.25.250.14
|
3.1 部署节点配置主机名
1 [root@servera ~]# vi /etc/hosts
2 172.25.250.10 servera
3 172.25.250.12 serverc
4 172.25.250.13 serverd
5 172.25.250.14 servere
3.2 创建相关用户
1 [root@servera ~]# useradd student
2 [root@servera ~]# echo student | passwd --stdin student #创建非root的管理用户
3 [root@servera ~]# for i in {a..e}; do echo "====server${i}====";ssh root@server${i} 'useradd -d /home/student -m student; echo "student" | passwd --stdin student'; done #所有OSD server节点创建student用户
5 [root@servera ~]# for i in {a..e}; do echo "====server${i}====";ssh root@server${i} 'useradd -d /home/ceph -m ceph; echo "redhat" | passwd --stdin ceph'; done
6 [root@servera ~]# for i in {a..e}; do echo "====server${i}====";ssh root@server${i} 'echo "student ALL = (root) NOPASSWD:ALL" > /etc/sudoers'; done
7 [root@servera ~]# for i in {a..e}; do echo "====server${i}====";ssh root@server${i} 'chmod 0440 /etc/sudoers'; done
3.3 配置部署节点免密钥
1 [root@servera ~]# su - student
2 [student@servera ~]$ ssh-keygen -f ~/.ssh/id_rsa -N ''
3 [student@servera ~]$ for i in {a..e}; do echo "====server${i}====";ssh-copy-id student@server$i;ssh-copy-id ceph@server$i; done
3.4 配置Ansible Inventory
1 [student@servera ~]$ sudo vi /usr/share/ceph-ansible/ansible.cfg
2 log_path = /tmp/ansible.log #修改日志路径为student用户可写入的/tmp路径
3 deprecation_warnings = False #禁用在ansible-playbook输出结果相关必须要警告
1 [student@servera ~]$ sudo vi /etc/ansible/hosts
2 [mons]
3 server[c:e]
4
5 [mgrs]
6 server[c:e]
7 [student@servera ~]$ ansible mons -m ping #测试mons组节点通信
8 [student@servera ~]$ ansible mgrs -m ping #测试mgrs组节点通信
9 [student@servera ~]$ ansible mons -m command -a id #通过命令测试mons组节点
10 [student@servera ~]$ ansible mgrs -m command -a id #通过命令测试mgrs组节点
3.5 创建site.yml
1 [student@servera ~]$ cd /usr/share/ceph-ansible/
2 [student@servera ceph-ansible]$ sudo cp site.yml.sample site.yml
3 [student@servera ceph-ansible]$ sudo vi site.yml
4 #……
5 - hosts: osds
6 gather_facts: false
7 become: True
8 serial: 1 #在osd(80行左右)添加此行
3.6 创建all.yml
1 [student@servera ~]$ cd /usr/share/ceph-ansible/group_vars/
2 [student@servera group_vars]$ sudo cp all.yml.sample all.yml
3 [student@servera group_vars]$ sudo vi all.yml
4 ---
5 dummy:
6 ntp_service_enabled: false #本实验采用chrony进行时钟同步
7 ceph_origin: repository
8 ceph_repository: rhcs
9 ceph_rhcs_version: "3"
10 ceph_repository_type: cdn
11 rbd_cache: "true" #开启RBD回写缓存
12 rbd_cache_writethrough_until_flush: "false" #在切换回写之前,不从写透开始。
13 rbd_client_directories: false #不要创建客户机目录(它们应该已经存在)。
14 monitor_interface: eth0
15 journal_size: 1024 #本环境存储设备很小,OSD日志比通常建议的要小
16 public_network: 172.25.250.0/24
17 cluster_network: "{{ public_network }}"
18 ceph_conf_overrides:
19 global:
20 mon_osd_allow_primary_affinity: 1
21 mon_clock_drift_allowed: 0.5 #允许MON时钟间隔最多0.5秒
22 osd_pool_default_size: 2
23 osd_pool_default_min_size: 1 #降低存储池复制大小的默认设置
24 mon_pg_warn_min_per_osd: 0 #见提示一
25 mon_pg_warn_max_per_osd: 0 #见提示二
26 mon_pg_warn_max_object_skew: 0 #见提示三
27 client:
28 rbd_default_features: 1 #仅为以后的练习启用一组特定的客户机功能
3.7 正式部署Ceph集群
1 [student@servera ~]$ cd /usr/share/ceph-ansible/
2 [student@servera ceph-ansible]$ ansible-playbook site.yml

3.8 确认验证Ceph集群
1 [student@servera ~]$ ssh ceph@serverc ceph -s

1 [student@servera ~]$ ssh ceph@serverc cat /etc/ceph/ceph.conf

1 [student@servera ~]$ ssh ceph@serverc ps aux | grep ceph-mon

3.9 创建osds.yml
1 [student@servera ~]$ cd /usr/share/ceph-ansible/group_vars/
2 [student@servera group_vars]$ sudo cp osds.yml.sample osds.yml
3 [student@servera group_vars]$ sudo vi osds.yml
4 ---
5 dummy:
6 osd_scenario: "collocated" #OSD使用并列的OSD形式
7 devices:
8 - /dev/vdb #使用/dev/vdb作为后端存储设备
3.10 配置Ansible Inventory
1 [student@servera ~]$ sudo vi /etc/ansible/hosts
2 [mons]
3 server[c:e]
4
5 [mgrs]
6 server[c:e]
7
8 [osds]
9 server[c:e] #追加osds组
3.11 正式部署OSD节点
1 [student@servera ~]$ cd /usr/share/ceph-ansible/
2 [student@servera ceph-ansible]$ ansible-playbook site.yml

3.12 确认验证OSD节点
1 [student@servera ~]$ ssh ceph@serverc ceph -s

1 [student@servera ~]$ ssh ceph@serverc ceph -w #使用此命令监视集群事件
3.13 测试及验证
1 [ceph@serverc ~]$ sudo systemctl stop ceph-mon.target #停止serverc的mon进程
2 [ceph@serverc ~]$ ceph -s #观察Ceph状态

1 [ceph@serverc ~]$ sudo systemctl start ceph-mon.target #重启开启mon进程
2 [ceph@serverc ~]$ sudo systemctl stop ceph-osd.target #停止serverc的osd进程
3 [ceph@serverc ~]$ ceph -s #观察Ceph状态

1 [ceph@serverc ~]$ ceph osd tree #查看osd情况

1 [ceph@serverc ~]$ sudo systemctl start ceph-osd.target #重启开启osd进程
2 [ceph@serverc ~]$ sudo systemctl stop ceph-osd@0 #停止serverc的osd id为0的进程
3 [ceph@serverc ~]$ ceph osd tree #查看osd情况

1 [ceph@serverc ~]$ sudo systemctl start ceph-osd@0 #重启开启osd 0进程
2 [ceph@serverc ~]$ ceph -s #观察Ceph状态

1 [ceph@serverc ~]$ ceph -v #查看Ceph版本
3.14 创建client.yml
1 [student@servera ~]$ cd /usr/share/ceph-ansible/group_vars/
2 [student@servera group_vars]$ sudo cp clients.yml.sample clients.yml
3 [student@servera group_vars]$ sudo vi clients.yml
4 ---
5 dummy:
6 copy_admin_key: true
3.15 配置Ansible Inventory
1 [student@servera ~]$ sudo vi /etc/ansible/hosts
2 [mons]
3 server[c:e]
4
5 [mgrs]
6 server[c:e]
7
8 [osds]
9 server[c:e]
10
11 [clients]
12 servera #追加client客户端
3.16 正式部署client节点
1 [student@servera ~]$ cd /usr/share/ceph-ansible/
2 [student@servera ceph-ansible]$ ansible-playbook site.yml

3.17 确认验证
1 [kiosk@foundation0 ~]$ ssh ceph@servera #使用ceph用户登录servera
2 [ceph@servera ~]$ ceph -s #查看Ceph集群

四 扩容Ceph集群
4.1 扩容前置条件
- 在不中断服务的前提下,扩展ceph集群存储容量
- 可通过ceph-ansible以两种方式扩展集群中的存储:
- 可以添加额外OSD主机到集群(scale-out)
- 可以添加额外存储设备到现有的OSD主机(scale-up)
- 开始部署额外的OSD前,需确保集群处于HEALTH_OK状态
- 相关主机解析已正常添加指hosts
4.2 创建相关用户
1 [root@serverf ~]# useradd student
2 [root@serverf ~]# echo student | passwd --stdin student #创建非root的管理用户
3 [root@serverf ~]# useradd -d /home/student -m student; echo "student" | passwd --stdin student' #所有OSD server节点创建student用户
4 [root@serverf ~]# useradd -d /home/ceph -m ceph; echo "redhat" | passwd --stdin ceph'
5 [root@serverf ~]# echo "student ALL = (root) NOPASSWD:ALL" > /etc/sudoers'
6 [root@serverf ~]# chmod 0440 /etc/sudoers
4.3 配置部署节点免密钥
1 [root@servera ~]# su - student
2 [student@servera ~]$ ssh-copy-id student@serverf;ssh-copy-id ceph@serverf
4.4 扩容额外的OSD主机
1 [student@servera ~]$ sudo vi /etc/ansible/hosts #配置Ansible Inventory
2 [student@servera ~]$ sudo vi /etc/ansible/hosts
3 [mons]
4 server[c:e]
5
6 [mgrs]
7 server[c:e]
8
9 [osds]
10 server[c:e]
11 serverf #追加serverf
12
13 [clients]
14 servera
4.5 添加额外OSD存储设备
1 devices:
2 - /dev/vdb
3 - /dev/vdc
4 - /dev/vdd #追加存储设备
4.6 正式部署OSD节点
1 [student@servera ~]$ cd /usr/share/ceph-ansible/
2 [student@servera ceph-ansible]$ ansible-playbook site.yml

4.7 确认验证
1 [ceph@servera ~]$ ceph -s

1 [ceph@servera ~]$ ceph osd tree

1 [ceph@servera ~]$ ceph osd df

001.Ansible部署RHCS存储集群的更多相关文章
- 部署ceph存储集群及块设备测试
集群环境 配置基础环境 添加ceph.repo wget -O /etc/yum.repos.d/ceph.repo https://raw.githubusercontent.com/aishang ...
- 利用ceph-deploy部署ceph存储集群
一.环境准备 创建两台主机,ip地址和主机名如下 192.168.2.100,主机名ceph-1 192.168.2.101,主机名ceph-2 每个主机 新增加一块数据盘,分区根据自己需要分区即可, ...
- 002.RHCS-配置Ceph存储集群
一 前期准备 [kiosk@foundation0 ~]$ ssh ceph@serverc #登录Ceph集群节点 [ceph@serverc ~]$ ceph health #确保集群状态正常 H ...
- 从零开始,无DNS vcenter 6.7 vmotion热迁移,存储集群部署文档。
1,环境准备 准备:Vmware workstation环境 IP地址段规划 ESXI主机IP地址段 192.168.197.4-192.168.197.10 Vcenter Server集群IP地址 ...
- Ceph 存储集群第一部分:配置和部署
内容来源于官方,经过个人实践操作整理,官方地址:http://docs.ceph.org.cn/rados/ 所有 Ceph 部署都始于 Ceph 存储集群. 基于 RADOS 的 Ceph 对象存储 ...
- Centos6.5下一个Ceph存储集群结构
简单的介绍 Ceph的部署模式下主要包括下面几个类型的节点 • Ceph OSDs: A Ceph OSD 进程主要用来存储数据,处理数据的replication,恢复,填充.调整资源组合以及通过检查 ...
- Ceph 存储集群
Ceph 存储集群 Ceph 作为软件定义存储的代表之一,最近几年其发展势头很猛,也出现了不少公司在测试和生产系统中使用 Ceph 的案例,尽管与此同时许多人对它的抱怨也一直存在.本文试着整理作者了解 ...
- 基于Docker一键部署大规模Hadoop集群及设计思路
一.背景: 随着互联网的发展.互联网用户的增加,互联网中的数据也急剧膨胀.每天产生的数据量数以万计,本地文件系统和单机CPU已无法满足存储和计算要求.Hadoop分布式文件系统(HDFS)是海量数据存 ...
- Ceph 存储集群 - 搭建存储集群
目录 一.准备机器 二.ceph节点安装 三.搭建集群 四.扩展集群(扩容) 一.准备机器 本文描述如何在 CentOS 7 下搭建 Ceph 存储集群(STORAGE CLUSTER). 一共4 ...
随机推荐
- CodeForces 868F Yet Another Minimization Problem(决策单调性优化 + 分治)
题意 给定一个序列 \(\{a_1, a_2, \cdots, a_n\}\),要把它分成恰好 \(k\) 个连续子序列. 每个连续子序列的费用是其中相同元素的对数,求所有划分中的费用之和的最小值. ...
- 从Java角度修复SQL注入漏洞
很多情况因为过滤不严导致很多网站存在sql注入,这里以用户登陆为例,简单举例 首先创建一个测试的数据库 比较基础,不写创建过程了 java代码如下: package cn.basic.jdbc; im ...
- tomcat8 源码分析 | 组件及启动过程
tomcat 8 源码分析 ,本文主要讲解tomcat拥有哪些组件,容器,又是如何启动的 推荐访问我的个人网站,排版更好看呦: https://chenmingyu.top/tomcat-source ...
- Cucumber使用中问题
1.cucumber自动化执行提示chrome使用不支持的命令标记 --ignore-certificate-errors 大概问题是chrome版本和chrmedriver版本不对应 2." ...
- win7 远程连接服务器出现身份验证错误,又找不到加密Oracle修正
今天想用远程桌面连接登录服务器,结果,弹出一个错误的提示框:发生身份验证错误,要求的函数不受支持. 然后在网上找了相关的教程,基本上所有的方法都是如下所示: 策略路径:"计算机配置" ...
- gitlab升级迁移(二)
前面我们写了一篇gitlab升级迁移的文章(https://www.cnblogs.com/liangyou666/p/9434158.html),这次我们主要是讲另一种升级迁移方法和其中遇到的一些问 ...
- 基于vue cli 3.0创建前端项目并安装cube-ui
前提条件: 安装node.js. 国内的开发者最好先配置淘宝镜像. 之后用cnpm来代替npm命令. 项目创建过程: 打开cmd,输入命令进入目标工作空间,以本机项目为例: cd /d d: cd D ...
- HT for Web框架使用心得
一.简单介绍 在HT for Web的官网首页写着,构建先进2D和3D可视化所需要的一切. 是的,只要你看过官网,你就会知道,这是一个企业的.并非开源的且需要收费的框架. 因为公司的业务需要,且公司使 ...
- 主机服务绑定IP
在用 netstat -na 查看当前主机提供的服务,例如显示如下结果: tcp 0 0 127.0.0.1:9000 0.0.0.0:* ...
- HTTP协议11-cookie和seesion
因为HTTP协议是无状态的,但是很多网站的功能需要先登录才能使用.这就引入了cookie. Cookie机制 服务器用HTTP头向客户端发送cookies.客户端(浏览器)解析cookies并将它们保 ...