1、环境准备
环境准备好,避免踩坑!
4台机器,s10为ceph-deploy。
s7 s8 s9为3个node,拥有空闲磁盘sdb,10G
ceph-deploy –version 1.5.39
ceph version 10.2.11
1、时间同步
s7作为ntp服务器,s8-10作为客户端
sudo yum -y install ntp ntpdate
1.s7 节点配置
sudo vim /etc/ntp.conf
restrict 10.3.3.7 mask 255.255.255.0 nomodify notrap #配置集群的IP段
server 127.127.1.0 # local clock
fudge 127.127.1.0 stratum 10
sudo systemctl enable ntpd
sudo systemctl restart ntpd
sudo systemctl status ntpd
ntpstat
ntpq -p
date
2.其他节点配置
sudo vim /etc/ntp.conf
restrict 10.3.3.7 mask 255.255.255.0 nomodify notrap #IP为node1的ip地址
server 10.3.3.7 # #IP为node1的ip地址
sudo systemctl enable ntpd
sudo systemctl restart ntpd
sudo systemctl status ntpd
ntpstat
ntpq -p
date
2、ssh免密登录和sudo无需密码权限
s10 需要使用cephuser用户ssh免密登录3个node。
- 4台机器创建cephuser用户。用户名 “ceph” 保留给了 Ceph 守护进程。如果 Ceph 节点上已经有了 “ceph” 用户,升级前必须先删掉这个用户。
sudo useradd cephuser ; echo cephuser | sudo passwd --stdin cephuser
- 4台机器设定cephuser用户无密码sudo权限
echo "cephuser ALL = (root) NOPASSWD:ALL" | sudo tee /etc/sudoers.d/cephuser
sudo chmod 0440 /etc/sudoers.d/cephuser
- 在S10上使用cephuser用户执行ssh免密登录配置脚本sshops-init.sh “s7,s8,s9,s10”
3、在4台机器上配置ceph 的yum源,安装依赖包
-
yum源
sudo vi /etc/yum.repos.d/ceph.repo
把如下内容粘帖进去,保存到 /etc/yum.repos.d/ceph.repo 文件中。
[ceph] name=ceph baseurl=http://mirrors.aliyun.com/ceph/rpm-jewel/el7/x86_64/ gpgcheck=0 priority=1 [ceph-noarch] name=cephnoarch baseurl=http://mirrors.aliyun.com/ceph/rpm-jewel/el7/noarch/ gpgcheck=0 priority=1 [ceph-source] name=Ceph source packages baseurl=http://mirrors.aliyun.com/ceph/rpm-jewel/el7/SRPMS gpgcheck=0 priority=1
-
安装pip包:
wget https://files.pythonhosted.org/packages/5f/ad/1fde06877a8d7d5c9b60eff7de2d452f639916ae1d48f0b8f97bf97e570a/distribute-0.7.3.zip
sudo yum -y install unzip
unzip distribute-0.7.3.zip
cd distribute-0.7.3
sudo python setup.py install
- 安装rpm包:
sudo yum -y install deltarpm
排错参考:http://www.voidcn.com/article/p-rougfoll-ov.html
集群搭建:http://docs.ceph.org.cn/start/quick-ceph-deploy/
4、s10安装ceph-deploy
安装ceph-deploy
sudo yum -y install ceph-deploy
查看ceph-deploy是否安装成功
ceph-deploy --version
2、搭建集群
1、说明
第一次练习时,我们创建一个 Ceph 存储集群,它有一个 Monitor 和两个 OSD 守护进程。一旦集群达到 active + clean
状态,再扩展它:增加第三个 OSD 、增加元数据服务器和两个 Ceph Monitors。为获得最佳体验,先在管理节点上创建一个目录,用于保存 ceph-deploy
生成的配置文件和密钥对。
mkdir my-cluster
cd my-cluster
注意: ceph-deploy
会把文件输出到当前目录,所以请确保在此目录下执行 ceph-deploy
。
Important:
如果你是用另一普通用户登录的,不要用 sudo
或在 root
身份运行 ceph-deploy
,因为它不会在远程主机上调用所需的 sudo
命令。
如果在某些地方碰到麻烦,想从头再来,可以用下列命令清除配置:
ceph-deploy purgedata {ceph-node} [{ceph-node}]
ceph-deploy forgetkeys
用下列命令可以连 Ceph 安装包一起清除:
ceph-deploy purge {ceph-node} [{ceph-node}]
如果执行了 purge
,你必须重新安装 Ceph 。
2、创建ceph集群
Note: 在管理节点上,进入刚创建的放置配置文件的目录,用 ceph-deploy
执行如下步骤。
1、创建集群。
ceph-deploy new s7
在当前目录下用 ls
和 cat
检查 ceph-deploy
的输出,应该有一个 Ceph 配置文件、一个 monitor 密钥环和一个日志文件。详情见 ceph-deploy new -h 。
2、把 Ceph 配置文件里的默认副本数从 3
改成 2
,这样只有两个 OSD 也可以达到 active + clean
状态。把下面这行加入 [global]
段:
sed -i '$a\osd pool default size = 2' ceph.conf
3、如果你有多个网卡,可以把 public network
写入 Ceph 配置文件的 [global]
段下。详情见网络配置参考。
public network = {ip-address}/{netmask}
4、安装 Ceph 。
ceph-deploy install s7 s8 s9 s10
ceph-deploy
将在各节点安装 Ceph 。 **注:**如果你执行过 ceph-deploy purge
,你必须重新执行这一步来安装 Ceph 。
5、配置初始 monitor(s)、并收集所有密钥:
ceph-deploy mon create-initial
完成上述操作后,当前目录里应该会出现这些密钥环:
{cluster-name}.client.admin.keyring
{cluster-name}.bootstrap-osd.keyring
{cluster-name}.bootstrap-mds.keyring
{cluster-name}.bootstrap-rgw.keyring
3、增加/删除osd
创建 OSD
你可以用 create
命令一次完成准备 OSD 、部署到 OSD 节点、并激活它。 create
命令是依次执行 prepare
和 activate
命令的捷径。
如果创建osd失败,怎么弄都是失败,那就将各node sdb都分区为sdb1,xfs格式,并且创建osd时使用s7:/dev/sdb1, 而不是/dev/sdb。 因为没有时间和精力为了一个别人的BUG而执着于此,切记!
ceph-deploy osd create s7:/dev/sdb s8:/dev/sdb #在两个节点创建osd
ceph-deploy osd create osdserver1:sdb:/dev/ssd1 #数据放sdb,日志放ssd盘
把配置文件和 admin 密钥拷贝到管理节点和 Ceph 节点
ceph-deploy admin s7 s8 s9 s10
ceph mds stat 查看MDS
确保ceph.client.admin.keyring的权限正确
sudo chmod +r /etc/ceph/ceph.client.admin.keyring
安装 radosgw
ceph-deploy rgw create s7
检查集群的健康状况和OSD节点状况
ceph health
ceph -s
cluster 3756d8ae-6f85-40f0-abd3-2a2863ec37dc
health HEALTH_OK
monmap e1: 1 mons at {node1=192.168.6.150:6789/0}
election epoch 3, quorum 0 node1
osdmap e20: 2 osds: 2 up, 2 in
flags sortbitwise,require_jewel_osds
pgmap v44: 112 pgs, 7 pools, 1588 bytes data, 171 objects
225 MB used, 3563 GB / 3563 GB avail
112 active+clean
client io 50376 B/s rd, 0 B/s wr, 49 op/s rd, 32 op/s wr
查看是否安装成功
curl http://s7:7480
<ListAllMyBucketsResult xmlns="http://s3.amazonaws.com/doc/2006-03-01/">
<Owner>
<ID>anonymous</ID>
<DisplayName/>
</Owner>
<Buckets/>
</ListAllMyBucketsResult>
4、ceph文件系统
Ceph 文件系统要求 Ceph 存储集群内至少有一个 Ceph 元数据服务器。
1、增加一元数据服务器
部署完监视器和 OSD 后,还可以部署元数据服务器。
ceph-deploy mds create s7:{daemon-name}] [{host-name}[:{daemon-name}] ...]
如果你想在同一主机上运行多个守护进程,可以为每个进程指定名字(可选)。
2、拆除一元数据服务器
尚未实现……?
3、创建文件系统
一个 Ceph 文件系统需要至少两个 RADOS 存储池,一个用于数据、一个用于元数据。配置这些存储池时需考虑:
- 为元数据存储池设置较高的副本水平,因为此存储池丢失任何数据都会导致整个文件系统失效。
- 为元数据存储池分配低延时存储器(像 SSD ),因为它会直接影响到客户端的操作延时。
关于存储池的管理请参考 存储池 。例如,要用默认设置为文件系统创建两个存储池,你可以用下列命令:
$ ceph osd pool create cephfs_data <pg_num>
$ ceph osd pool create cephfs_metadata <pg_num>
创建好存储池后,你就可以用 fs new
命令创建文件系统了:
$ ceph fs new <fs_name> <metadata> <data>
例如:
$ ceph fs new cephfs cephfs_metadata cephfs_data
$ ceph fs ls
name: cephfs, metadata pool: cephfs_metadata, data pools: [cephfs_data ]
文件系统创建完毕后, MDS 服务器就能达到 active 状态了,比如在一个单 MDS 系统中:
$ ceph mds stat
e5: 1/1/1 up {0=a=up:active}
建好文件系统且 MDS 活跃后,你就可以挂载此文件系统了:
要挂载 Ceph 文件系统,如果你知道监视器 IP 地址可以用 mount
命令、或者用 mount.ceph
工具来自动解析监视器 IP 地址。例如:
sudo mkdir /mnt/mycephfs
sudo mount -t ceph 192.168.0.1:6789:/ /mnt/mycephfs
要挂载启用了 cephx
认证的 Ceph 文件系统,你必须指定用户名、密钥。
sudo mount -t ceph 192.168.0.1:6789:/ /mnt/mycephfs -o name=admin,secret=AQATSKdNGBnwLhAAnNDKnH65FmVKpXZJVasUeQ==
前述用法会把密码遗留在 Bash 历史里,更安全的方法是从文件读密码。例如:
sudo mount -t ceph 192.168.0.1:6789:/ /mnt/mycephfs -o name=admin,secretfile=/etc/ceph/admin.secret
关于 cephx 参见认证。
要卸载 Ceph 文件系统,可以用 unmount
命令,例如:
sudo umount /mnt/mycephfs
其他:
我的thinkpad,克隆虚拟机后的操作:
sudo sed -i "s/1f76218ec253/1f76218ec222/g" /etc/sysconfig/network-scripts/ifcfg-ens33
sudo sed -i "s/IPADDR=10.3.3.253/IPADDR=10.3.3.222/g" /etc/sysconfig/network-scripts/ifcfg-ens33
sudo systemctl restart network
cd