因为工作需要离线部署一个ceph分布式存储集群,这里针对工作进行记录。需要相关资源私信作者。
安装ntp
系统自带的有ntpdate但没有ntp服务 ,ntpdate为同步服务。ntp为守护进程。
需要下载rpm包手动安装ntp
设置一台主机为服务端。服务端配置、etc/ntp.conf 内容为 server 127.127.1.0 #本机作为ntp服务器进行时间同步。
安装依赖包括 autogen-libopts-5.18-5.el7.x86_64.rpm
ntp-4.2.6p5-29.el7.centos.2.x86_64.rpm
修改配置文件
ntp.conf
restrict 192.168.16.0 mask 255.255.255.0 nomodify
restrict 0.0.0.0 mask 0.0.0.0 nomodify notrap noquery notrust
restrict 127.0.0.1
restrict -6 ::1
server 127.127.1.0
fudge 127.127.1.0 startum 8
在客户端执行定时任务配置
crontab -e#对crontab定时器编辑命令
00 23 * * * /usr/sbin/ntpdate 192.168.16.162 #执行定时更新每天23:00执行更新命令。
搭建本地的yum仓库和下载相关的软件包
使用createrepo制作本地及内网yum源_yum createrepo-CSDN博客
利用createrepo工具在联网计算机制作yum源,将生成的仓库拷贝到新主机上我这里叫cephDeps,运行脚本即可使用yum进行安装,这里附上脚本信息。
buid_localrepo.sh
#!/bin/bash
parent_path=$(cd"$(dirname "${BASH_SOURCE}")";pwd -P)
cd "$parent_path"
mkdir /etc/yum.repos.d/backup
mv /etc/yum.repos.d/*.repo /etc/yum.repos.d/backup
#create local repositry
rm -rf /tmp/localrepo
mkdir -p /tmp/localrepo
cp -rf ./cephDeps/* /tmp/localrepo
echo "
[localrepo]
name=Local Repository
baseurl=file:///tmp/localrepo
gpgcheck=0
enabled=1" > /etc/yum.repos.d/ceph.repo
yum clean all
安装ceph
- 配置源(所有节点),阿里源保证下载速度
-
cat >/etc/yum.repos.d/ceph.repo<<EOF
[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.163.com/ceph/rpm-jewel/el7/SRPMS
enabled=0
gpgcheck=1
type=rpm-md
gpgkey=http://mirrors.163.com/ceph/keys/release.asc
priority=1
EOF -
yum makecache
- master节点安装ceph-deploy(master节点执行)
-
sudo yum install -y ceph-deploy
- 创建master为monitor(master节点执行)
-
sudo ceph-deploy new master
- 执行完上一步骤之后,会在当前目录生才ceph.conf文件,修改文件内容(fsid用你自己机器生成的,不要改) (master节点执行)
-
[global] fsid = 37f0ff26-d8e3-4aa6-ae47-99a5f0e1eed3 mon_initial_members = master mon_host = 192.168.1.21 auth_cluster_required = cephx auth_service_required = cephx auth_client_required = cephx public network = 192.168.1.0/24 cluster network = 192.168.1.0/24 osd pool default size = 2
-
安装ceph包(master节点都执行)
-
ceph-deploy install master node1 node2
- 配置初始 monitor(s)、并收集所有密钥 (master节点)
-
ceph-deploy mon create-initial ls -l *.keyring
- 复制文件到node节点(master节点执行)
-
ceph-deploy admin master node1 node2
- 在所有节点创建目录(master节点也作为一个node数据节点)
-
sudo rm -rf /data/osd sudo mkdir -pv /data/osd sudo chmod 777 -R /data/osd sudo chown ceph.ceph -R /data/osd
- 以文件挂载的方式添加osd(master节点执行)
-
##ceph-deploy osd prepare master:/data/osd node1:/data/osd node2:/data/osd ##ceph-deploy osd activate master:/data/osd node1:/data/osd node2:/data/osd ceph-deploy disk zap $HOSTNAME /dev/sd$ ceph-deploy osd create $HOSTNAME --data /dev/sd$ ceph-deploy mgr create kube-node-1 这里会遇到这样一个错误。在系统安装时会给硬盘配置一个挂载区。但是ceph创建新的lv卷会修改硬盘挂载但不会更改配置文件, 需要去/etc/fstab文件下修改配置(注释掉)才能使系统在重启时正常启动
- 查看状态
-
[aipaas@master ceph-conf]$ sudo ceph health HEALTH_OK [aipaas@master ceph-conf]$ sudo ceph -s cluster 14489e3d-f96d-452d-a99c-951362857668 health HEALTH_OK monmap e1: 1 mons at {master=192.168.1.21:6789/0} election epoch 3, quorum 0 master osdmap e14: 3 osds: 3 up, 3 in flags sortbitwise,require_jewel_osds pgmap v31: 64 pgs, 1 pools, 0 bytes data, 0 objects 26297 MB used, 124 GB / 149 GB avail 64 active+clean 如果ceph health不加sudo直接执行报错,则是权限问题,可使用下列方式解决 sudo chmod +r /etc/ceph/ceph.client.admin.keyring
- 删除集群 (若安装出错,可以删除集群配置重新安装)
-
ceph-deploy purge master node1 node2 ceph-deploy purgedata master node1 node2 ceph-deploy forgetkeys rm ceph.*
- 扩展集群(在node1 node2上启动monitor和manager提高集群可用性)
-
# 添加monitor ceph-deploy mon add node1 ceph-deploy mon add node2 在添加monitor时可能会出现这样一个错误。报错信息为 admin_socket: exception getting command descriptions: [Errno 2] No such file or directory 检查日志信息如下提示 kube-master-1 is not defined in `mon initial members` monitor kube-master-1 does not exist in monmap neither `public_addr` nor `public_network` keys are defined for monitors 解决方法 在ceph文件中【global】下增加 public_network 在覆盖给其他节点,更新ceph.conf文件。 ceph-deploy --overwrite-conf config push kube-master-1 kube-node-2 kube-master-2 再执行mon增加指令可以正常增加mon # 在monitor节点查看状态 ceph quorum_status --format json-pretty