Ceph 安装部署
为保证一个干净的安装环境,需要重置workstation的网络环境,并重新设置nat和hostonly网卡的ip范围。
安装环境:
VMware Workstation 虚拟机
CentOS 7
安装准备
本次实验仅安装1台管理机和1台存储。
Ceph-Mon:向客户端提供集群的完整视图
Ceph-Osd:ceph集群中最多的节点,存储节点
网络规划
Public 网段 192.168.200.101-102 ,nat网卡(ens33),供客户端使用
Cluster 网段 192.168.100.101-102 ,hostonly网卡(ens34),供ceph内部通信
初始虚拟机配置
-
虚拟机准备两块网卡,默认的NAT+HostOnly
-
设置网卡,然后删除掉网卡配置中的UUID属性
#vi /etc/sysconfig/network-scripts/ifcfg-ens33 ... BOOTPROTO=static ... ONBOOT=yes IPADDR=192.168.200.100 NETMASK=255.255.255.0 GATEWAY=192.168.200.2 DNS1=114.114.114.114 DNS2=8.8.8.8 # vi /etc/sysconfig/network-scripts/ifcfg-ens34 ... BOOTPROTO=static ... DEVICE=ens34 ONBOOT=yes IPADDR=192.168.100.100 NETMASK=255.255.255.0
-
关闭防火墙与SeLinux
systemctl status firewalld.service #查看防火墙状态 systemctl stop firewalld.service #关闭防火墙 systemctl disable firewalld.service # 防止开机后防火墙启动 getenforce # 查看selinux状态 # vi /etc/sysconfig/selinux # 把文件中的SELINUX=enforcing 改为 disabled 即可 setenforce 0 # 关闭当前selinux
-
配置ceph源
#vi /etc/yum.repos.d/ceph.repo [Ceph] name=Ceph packages for $basearch baseurl=https://mirrors.aliyun.com/ceph/rpm-nautilus/el7/$basearch enabled=1 gpgcheck=1 type=rpm-md gpgkey=https://mirrors.aliyun.com/ceph/keys/release.asc [Ceph-noarch] name=Ceph noarch packages baseurl=https://mirrors.aliyun.com/ceph/rpm-nautilus/el7/noarch/ enabled=1 gpgcheck=1 type=rpm-md gpgkey=https://mirrors.aliyun.com/ceph/keys/release.asc [ceph-source] name=Ceph source packages baseurl=http://mirrors.aliyun.com/ceph/rpm-nautilus/el7/SRPMS enabled=1 gpgcheck=1 type=rpm-md gpgkey=https://mirrors.aliyun.com/ceph/keys/release.asc
-
配置EPEL源
#vi /etc/yum.repos.d/epel.repo [epel] name=Extra Packages for Enterprise Linux 7 - $basearch baseurl=http://mirrors.aliyun.com/epel/7/$basearch failovermethod=priority enabled=1 gpgcheck=0 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-7 [epel-debuginfo] name=Extra Packages for Enterprise Linux 7 - $basearch - Debug baseurl=http://mirrors.aliyun.com/epel/7/$basearch/debug failovermethod=priority enabled=0 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-7 gpgcheck=0 [epel-source] name=Extra Packages for Enterprise Linux 7 - $basearch - Source baseurl=http://mirrors.aliyun.com/epel/7/SRPMS failovermethod=priority enabled=0 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-7 gpgcheck=0
-
配置完源之后,执行
yum clean all yum repolist yum makecache #生成缓存
-
添加 cepher 用户,并添加sudo权限
useradd cepher echo '12345678' | passwd --stdin cepher #设置cepher密码 echo "cepher ALL = (root) NOPASSWD:ALL" | sudo tee /etc/sudoers.d/cepher #sudo无需密码 chmod 0440 /etc/sudoers.d/cepher #不可删除该用户
完毕后关闭基础虚拟机,进入后续步骤。
开始
准备工作
- 克隆虚拟机。
> 克隆前请关闭虚拟机
-
编辑虚拟机设置,给克隆后的虚拟机添加两块100G的磁盘,将来用作OSD管理的磁盘
-
用cepher用户登录
-
修改克隆后的虚拟机IP地址和hostname
sudo hostnamectl set-hostname ceph-mon1 # 设置主机名 exec bash -l #使之即时生效 # vi /etc/hosts # 编辑主机名称,重启后依然生效 192.168.100.101 ceph-mon1 192.168.100.102 ceph-osd2 192.168.200.101 ceph-mon1 192.168.200.102 ceph-osd2
-
在管理节点(此处的管理节点即mon1)上以root用户的身份来做各节点ssh免密登录
su - root
ssh-keygen -t rsa -P ''
ssh-copy-id root@ceph-mon1
ssh-copy-id root@ceph-osd2
- 在管理节点(此处的管理节点即mon1)上以cepher用户的身份来做各节点ssh免密登录
su - cepher
ssh-keygen -t rsa -P ''
ssh-copy-id cepher@ceph-mon1
ssh-copy-id cepher@ceph-osd2
- 管理节点安装ceph-deploy
# 安装ceph
sudo yum update -y
sudo yum install -y ceph-deploy python-setuptools python2-subprocess32 ceph-common --nogpgcheck
- 在管理节点以cepher用户身份家目录建立ceph-cluster目录
~~~
mkdir ceph-cluster
cd ceph-cluster
~~~
MON 服务
在管理节点以cepher用户运行运行:
ceph-deploy new ceph-mon1 --cluster-network 192.168.100.0/24 --public-network 192.168.200.0/24 #mon节点,可以写第一个,也可以写多个
在所有节点安装:
sudo yum install ceph ceph-radosgw -y --nogpgcheck
在管理节点以cepher用户运行
cd ceph-cluster
ceph-deploy install --no-adjust-repos ceph-mon1 ceph-osd2
在管理节点以cepher用户运行
ceph-deploy mon create-initial #这一步其实是在生成keyring文件
在管理节点以cepher用户运行
ceph-deploy admin ceph-mon1 ceph-osd2
#将配置和client.admin秘钥环推送到远程主机。
#每次更改ceph的配置文件,都可以用这个命令推送到所有节点上
#此时要求输入root密码 - 如果做了root免密登录即可避免这点中断
在所有节点以root的身份运行
sudo setfacl -m u:cepher:r /etc/ceph/ceph.client.admin.keyring
#ceph.client.admin.keyring文件是 ceph命令行 所需要使用的keyring文件
#不管哪个节点,只要需要使用cephadm用户执行命令行工具,这个文件就必须要让cephadm用户拥有访问权限,就必须执行这一步
#这一步如果不做,ceph命令是无法在非sudo环境执行的。
Mgr 服务
在管理节点执行:
cd ceph-cluster
ceph-deploy mgr create ceph-mon1
sudo cp {ceph.client.admin.keyring,ceph.conf} /etc/ceph/
ceph -s #健康检查
OSD 服务
在管理节点执行,列出osd节点上的所有可用磁盘
ceph-deploy disk list ceph-mon1 ceph-osd2
#要以cepher 用户在~/ceph-cluster/目录下执行
在管理节点执行,清空osd节点上用来作为osd设备的磁盘
sudo ceph-deploy disk zap ceph-mon1 /dev/sdb /dev/sdc
sudo ceph-deploy disk zap ceph-osd2 /dev/sdb /dev/sdc
在管理节点执行,创建OSD
ceph-deploy osd create ceph-mon1 --data /dev/sdb
ceph-deploy osd create ceph-osd2 --data /dev/sdb
ceph-deploy osd create ceph-mon1 --data /dev/sdc
ceph-deploy osd create ceph-osd2 --data /dev/sdc
查看集群状态
ceph -s
#到这一步其实已经基本能用了
在管理节点执行,创建一个存储池,要想使用ceph的存储功能,必须先创建存储池
ceph osd pool create data-pool 64 64 #创建存储池
ceph osd pool ls #用ceph osd查看
rados lspools # 用rados查看
简单测试
rados put issue /etc/issue -p data-pool #上传一个文件
rados get issue my_issue -p data-pool #下载一个文件
rados rm issue -p data-pool #删除一个文件
rados ls -p data-pool #列出pool中有哪些文件
ceph osd map data-pool issue # 查看文件在Ceph集群内是怎样做映射的