高可用OpenStack(Queen版)集群-13.分布式存储Ceph
参考文档:
- Install-guide:https://docs.openstack.org/install-guide/
- OpenStack High Availability Guide:https://docs.openstack.org/ha-guide/index.html
- 理解Pacemaker:http://www.cnblogs.com/sammyliu/p/5025362.html
- Ceph原理:https://www.cnblogs.com/kevingrace/p/8387999.html
十七.分布式存储Ceph
1. 设置yum源
# 在全部控制与计算节点设置epel与ceph yum源(base yum源已更新),以controller01节点为例; # epel:http://mirrors.aliyun.com/repo/
[root@controller01 ~]# wget -O /etc/yum.repos.d/epel-7.repo http://mirrors.aliyun.com/repo/epel-7.repo # ceph:http://mirrors.aliyun.com/ceph/
# 编辑ceph.repo文件,使用luminous版本
[root@controller01 ~]# vim /etc/yum.repos.d/ceph.repo
[ceph]
name=ceph
baseurl=http://mirrors.aliyun.com/ceph/rpm-luminous/el7/x86_64/
enabled=1
gpgcheck=1
type=rpm-md
gpgkey=http://mirrors.aliyun.com/ceph/keys/release.asc
[ceph-noarch]
name=cephnoarch
baseurl=http://mirrors.aliyun.com/ceph/rpm-luminous/el7/noarch/
enabled=1
gpgcheck=1
type=rpm-md
gpgkey=http://mirrors.aliyun.com/ceph/keys/release.asc
[ceph-source]
name=ceph-source
baseurl=http://mirrors.aliyun.com/ceph/rpm-luminous/el7/SRPMS/
enabled=1
gpgcheck=1
type=rpm-md
gpgkey=http://mirrors.aliyun.com/ceph/keys/release.asc# 重新加载yum源
[root@controller01 ~]# yum clean all
[root@controller01 ~]# yum makecache # 查看yum源
[root@controller01 ~]# yum repolist
2. 环境
基础环境,如hosts,时间同步ntp,开放端口iptables等相关操作,请见:https://www.cnblogs.com/netonline/p/9180299.html
3. 创建用户
1)创建用户
[root@controller01 ~]# useradd -d /home/ceph -m cephde
[root@controller01 ~]# passwd cephde
New password: storage_pass
Retype new password: storage_pass # 修改visudo文件,使cephde用户在sudo列表中;
# 在92行” root ALL=(ALL) ALL”下新增一行:” cephde ALL=(ALL) ALL”
[root@controller01 ~]# visudo
93 cephde ALL=(ALL) ALL
2)用户赋权
# 设置cephde用户具备无密码sudo(root)权限;
# 切换到cephde用户下操作
[root@controller01 ~]# su - cephde
[cephde@controller01 ~]$ echo "cephde ALL = (root) NOPASSWD:ALL" | sudo tee /etc/sudoers.d/cephde
[sudo] password for cephde:storage_pass
[cephde@controller01 ~]$ sudo chmod 0440 /etc/sudoers.d/cephde
4. 设置ssh免密登陆
1)生成秘钥
# ceph-deploy不支持密码输入,需要在管理控制节点生成ssh秘钥,并将公钥分发到各ceph节点;
# 在用户cephde下生成秘钥,不能使用sudo或root用户;
# 默认在用户目录下生成~/.ssh目录,含生成的秘钥对;
# “Enter passphrase”时,回车,口令为空;
# 另外3个控制节点均设置为ceph管理节点,应该使3个控制管理节点都可以ssh免密登陆到其他所有控制与存储节点
[root@controller01 ~]# su - cephde
[cephde@controller01 ~]$ ssh-keygen -t rsa
Enter file in which to save the key (/home/ceph/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
2)分发密钥
# 前提是各控制与存储节点已生成相关用户;
# 初次连接其他节点时需要确认;
# 首次分发公钥需要密码;
# 分发成功后,在~/.ssh/下生成known_hosts文件,记录相关登陆信息;
# 以controller01节点免密登陆controller02节点为例;另外3个控制节点均设置为ceph管理节点,应该使3各控制管理节点都可以ssh免密登陆到其他所有控制与存储节点
[cephde@controller01 ~]$ ssh-copy-id cephde@controller02
Are you sure you want to continue connecting (yes/no)? yes
cephde@controller02's password:
3)设置环境变量(optional)
# 在root账号~目录下,生成~/.ssh/config文件,这样在控制管理节点上执行”ceph-deploy”时可不切换用户或指定”--username {username}”;
[root@controller01 ~]# cat ~/.ssh/config
# ceph-deploy
Host controller02
Hostname controller02
User cephde Host controller03
Hostname controller03
User cephde Host compute01
Hostname compute01
User cephde Host compute02
Hostname compute02
User cephde Host compute03
Hostname compute03
User cephde
5. 安装ceph-deploy
# 在规划的全部控制管理节点安装ceph-deploy工具,以controller01节点为例
[root@controller01 ~]# yum install ceph-deploy -y
6. 创建ceph集群
1)创建集群
# 在cephde账户下操作,切忌使用sudo操作;
# 在管理节点上生成一个目录用于存放集群相关配置文件;
[root@controller01 ~]# su - cephde
[cephde@controller01 ~]$ mkdir cephcluster # 后续ceph-deploy相关操作全部在所创建的目录执行;
# 将规划中的MON(monitor)节点纳入集群,即创建集群
[cephde@controller01 ~]$ cd ~/cephcluster/
[cephde@controller01 cephcluster]$ ceph-deploy new controller01 controller02 controller03
2)修改集群配置文件(optional)
# 生成集群后在集群目录下生成3个文件,其中ceph.conf即是配置文件;
# 默认可不修改,为使服务按规划启动,可做适当修改;
# 以下红色字体部分是在默认生成的conf文件上新增的配置
[cephde@controller01 cephcluster]$ cat ceph.conf
[global]
fsid = 9b606fef-1cde-4d4c-b269-90079d1d45dd
mon_initial_members = controller01, controller02, controller03
mon_host = 172.30.200.31,172.30.200.32,172.30.200.33
auth_cluster_required = cephx
auth_service_required = cephx
auth_client_required = cephx # public network:前端mon网络,client访问网络;确保public network与mon_host在相同网段,否则初始化时可能会有错误;
# cluster network:后端osd心跳,数据/流复制恢复等网络
public network = 172.30.200.0/24
cluster network = 10.0.0.0/24 # 默认的副本数为3,实验环境变更为2
osd pool default size = 2 # 默认保护机制不允许删除pool,根据情况设置
mon_allow_pool_delete = true
7. 安装ceph
# 在全部控制管理与存储节点安装ceph;
# 理论上在控制节点的ceph集群目录使用ceph-deploy可统一安装,命令:ceph-deploy install controller01 controller02 controller03 compute01 compute02 compute03;
# 但由于网速原因大概率会失败,可在各存储节点独立安装ceph与ceph-radosgw,以controller01节点为例
[root@controller01 ~]# yum install -y ceph ceph-radosgw # 查看版本
[root@controller01 ~]# ceph -v
8. 初始化ceph_mon
# 在控制管理节点初始化monitor
[cephde@controller01 cephcluster]$ ceph-deploy mon create-initial # 初始化完成后,在集群目录下新增多个秘钥文件
[cephde@controller01 cephcluster]$ ls -l
# 查看状态
[cephde@controller01 cephcluster]$ sudo systemctl status ceph-mon@controller01
9. 分发ceph.conf与秘钥
# 分发ceph配置文件与秘钥到其他控制管理节点与存储节点;
# 注意分发节点本身也需要包含在内,默认没有秘钥文件,需要分发;
# 如果被分发节点已经配置文件(统一变更配置文件场景),可以使用如下命令:ceph-deploy --overwrite-conf admin xxx
# 分发的配置文件与秘钥在各节点/etc/ceph/目录
[cephde@controller01 cephcluster]$ ceph-deploy admin controller01 controller02 controller03 compute01 compute02 compute03
10. 安装ceph_mgr
1)安装mgr
# luminous版本必须安装mgr(dashboard)
[cephde@controller01 cephcluster]$ ceph-deploy mgr create controller01:controller01_mgr controller02:controller02_mgr controller03:controller03_mgr
# 查看状态;
[cephde@controller01 cephcluster]$ systemctl status ceph-mgr@controller01_mgr
[cephde@controller01 cephcluster]$ sudo netstat -tunlp | grep mgr
2)启动mgr
# 可查看mgr默认开启的服务:(sudo) ceph mgr module ls;
# 默认dashboard服务在可开启列表中,但并未启动,需要手工开启
[cephde@controller01 cephcluster]$ sudo ceph mgr module enable dashboard # dashboard服务已开启,默认监听全部地址的tcp7000端口;
# 如果需要设置dashboard的监听地址与端口,如下:
# 设置监听地址:(sudo) ceph config-key put mgr/dashboard/server_addr x.x.x.x
# 设置监听端口:(sudo) ceph config-key put mgr/dashboard/server_port x
[cephde@controller01 cephcluster]$ sudo netstat -tunlp | grep mgr
web登陆:http://172.30.200.31:7000/
11. 查看集群状态
# 查看monitor状态
[cephde@controller01 cephcluster]$ sudo ceph mon stat
# 查看ceph状态:ceph health (detail),ceph -s,ceph -w等;
# 状态显示mgr处于active-standby模式
[cephde@controller01 cephcluster]$ sudo ceph -s
# 可在各节点查看认证信息等
[cephde@controller01 cephcluster]$ sudo ceph auth list
# 检查状态:ceph quorum_status --format json-pretty
# 查看集群详细配置:ceph daemon mon.{CEPH-NODE} config show | more
# 查看mon详细状态:ceph daemon mon.{CEPH-NODE} mon_status
# 查看ceph log所在目录:ceph-conf --name mon.{CEPH-NODE} --show-config-value log_fil
# 查看mon节点的admin socket:ceph-conf --name mon.ceph01 --show-config-value admin_socket
12. 创建osd(存储)
1)创建osd
# osd位于存储节点,可查看存储节点磁盘状况,以compute01节点为例;
# 或在管理节点采用命令:ceph-deploy disk list NODE1 NODE2 … NODEN;
# 如果节点磁盘有数据,可通过命令初始化(谨慎):ceph-deploy disk zap {NODE} {DISK},这里{DISK}可以是物理盘符,也可是分区
[root@compute01 ~]# lsblk
# 实际创建osd时,可通过管理节点使用ceph-deploy创建;
# 参数"--data"指定数据盘,参数"--journal"指定journal日志盘,日志盘可以是logical volume(vg/lv)或GPT patition,是option操作;
# 本例中有3个osd节点,每个osd节点可运行4个osd进程(在6800~7300端口范围内,每进程监听1个本地端口);
# 另有命令:ceph-deploy osd prepare {NODE}:{DISK}[:{/PATH/TO/JOURNAL}]; ceph-deploy osd activate {NODE}:{DISK}[:{/PATH/TO/JOURNAL}],其中[:{/PATH/TO/JOURNAL}]是option操作,可创建具有journal日志的osd守护进程(节点)
[cephde@controller01 cephcluster]$ ceph-deploy osd create compute01 --data /dev/sdb
[cephde@controller01 cephcluster]$ ceph-deploy osd create compute01 --data /dev/sdc
[cephde@controller01 cephcluster]$ ceph-deploy osd create compute01 --data /dev/sdd
[cephde@controller01 cephcluster]$ ceph-deploy osd create compute01 --data /dev/sde
[cephde@controller01 cephcluster]$ ceph-deploy osd create compute02 --data /dev/sdb
[cephde@controller01 cephcluster]$ ceph-deploy osd create compute02 --data /dev/sdc
[cephde@controller01 cephcluster]$ ceph-deploy osd create compute02 --data /dev/sdd
[cephde@controller01 cephcluster]$ ceph-deploy osd create compute02 --data /dev/sde
[cephde@controller01 cephcluster]$ ceph-deploy osd create compute03 --data /dev/sdb
[cephde@controller01 cephcluster]$ ceph-deploy osd create compute03 --data /dev/sdc
[cephde@controller01 cephcluster]$ ceph-deploy osd create compute03 --data /dev/sdd
[cephde@controller01 cephcluster]$ ceph-deploy osd create compute03 --data /dev/sde
2)查看osd状态
# 在管理节点查看
[cephde@controller01 cephcluster]$ ceph-deploy osd list compute01
# 在管理节点查看osd状态等
[cephde@controller01 cephcluster]$ sudo ceph osd stat
[cephde@controller01 cephcluster]$ sudo ceph osd tree
# 在管理节点查看容量及使用情况
[cephde@controller01 cephcluster]$ sudo ceph df
# 在osd节点查看
[root@compute01 ~]# lsblk
# ceph-osd进程,根据启动顺序,每个osd进程有特定的序号
[root@compute01 ~]# systemctl status ceph-osd@0
# osd进程端口号;
# 或:ps aux | grep osd | grep -v grep
[root@compute01 ~]# netstat -tunlp | grep osd
或登陆mgr_dashboard:http://172.30.200.31:7000
高可用OpenStack(Queen版)集群-13.分布式存储Ceph的更多相关文章
- Corosync+Pacemaker+DRBD+MySQL 实现高可用(HA)的MySQL集群
大纲一.前言二.环境准备三.Corosync 安装与配置四.Pacemaker 安装与配置五.DRBD 安装与配置六.MySQL 安装与配置七.crmsh 资源管理 推荐阅读: Linux 高可用(H ...
- 高可用,完全分布式Hadoop集群HDFS和MapReduce安装配置指南
原文:http://my.oschina.net/wstone/blog/365010#OSC_h3_13 (WJW)高可用,完全分布式Hadoop集群HDFS和MapReduce安装配置指南 [X] ...
- 16套java架构师,高并发,高可用,高性能,集群,大型分布式电商项目实战视频教程
16套Java架构师,集群,高可用,高可扩展,高性能,高并发,性能优化,设计模式,数据结构,虚拟机,微服务架构,日志分析,工作流,Jvm,Dubbo ,Spring boot,Spring cloud ...
- 分布式架构高可用架构篇_03-redis3集群的安装高可用测试
参考文档 Redis 官方集群指南:http://redis.io/topics/cluster-tutorial Redis 官方集群规范:http://redis.io/topics/cluste ...
- 分布式架构高可用架构篇_01_zookeeper集群的安装、配置、高可用测试
参考: 龙果学院http://www.roncoo.com/share.html?hamc=hLPG8QsaaWVOl2Z76wpJHp3JBbZZF%2Bywm5vEfPp9LbLkAjAnB%2B ...
- Linux 高可用(HA)集群之keepalived详解
http://freeloda.blog.51cto.com/2033581/1280962 大纲 一.前言 二.Keepalived 详解 三.环境准备 四.LVS+Keepalived 实现高可用 ...
- LVS+keeplived+nginx+tomcat高可用、高性能jsp集群
原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://kerry.blog.51cto.com/172631/557749 #!/bin ...
- JMS之——ActiveMQ 高可用与负载均衡集群安装、配置(ZooKeeper + LevelDB + Static discovery)
一.说明 从 ActiveMQ 5.9 开始, ActiveMQ 的集群实现方式取消了传统的 Master-Slave 方式,增加了基于ZooKeeper + LevelDB 的 Master-Sla ...
- haproxy + keepalived + mycat 高可用与负载均衡集群配置 centos7
架构如上,但是其实keepalived.haproxy.Mycat都可以多台(比如keepalived.haproxy.Mycat各3台,3台keepalived抢占vip,然后抢到vip的hapro ...
随机推荐
- 最简单的php学习
php文件操作函数 filetype()判断文件的基本类型 egg 目录文件 文件 等 dir文件夹 file 文件 stat()函数获得指定文件名参数目标文件的基本属性 在php中以is_开头 ...
- 关于Koala 中文编译出错
关于koala: 我们知道koala是一个前端预处理器语言图形编译工具,支持Less.Sass.Compass.CoffeeScript,帮助web开发者更高效地使用它们进行开发.跨平台运行,完美兼容 ...
- ROS計算圖級(通訊架構)
查看节点构成的计算图 rqt_graph 节点node就是运行了的可执行文件
- JS实现sleep()方法
这种实现方式是利用一个伪死循环阻塞主线程.因为JS是单线程的.所以通过这种方式可以实现真正意义上的sleep(). function sleep(delay) { var start = (new D ...
- (转)CentOS 7 —— /etc/rc.local 开机不执行 - 解决方法
chmod +x /etc/rc.d/rc.localsystemctl enable rc-local.service Note: rc.local is obsolete. ----------- ...
- MapReduce -- 统计天气信息
示例 数据: -- :: 34c -- :: 36c -- :: 32c -- :: 37c -- :: 23c -- :: 45c -- :: 50c -- :: 33c -- :: 41c -- ...
- Html+Css实现梯形选项卡
1,先看一下效果图 2,梯形通过定位和设置Border来实现的,平行四边形通过旋转来实现的. 3,代码如下 (1)HTML代码 <html lang="en" xmlns=& ...
- opatch auto 安装11.2.0.4.20190115 PSU遇到 OUI-67133: Execution of PRE script failed,with returen value 1 报错
AIX 7.2 下Oracle 11.2.0.4 RAC数据库root用户在使用 /u01/app/11.2.0/grid/OPatch/opatch auto /soft/28813878 -oc ...
- JS form跳转到新标签页并用post传参
通过js实现跳转到一个新的标签页,并且传递参数.(使用post传参方式) 1 超链接<a>标签 (get传参) <a href="http://www.cnblogs. ...
- golang 实现海明距离 demo
Simhash的算法简单的来说就是,从海量文本中快速搜索和已知simhash相差小于k位的simhash集合,这里每个文本都可以用一个simhash值来代表,一个simhash有64bit,相似的文本 ...