Python微信订餐小程序课程视频
https://edu.csdn.net/course/detail/36074
Python实战量化交易理财系统
https://edu.csdn.net/course/detail/35475
ceph-deploy部署ceph集群
环境介绍
主机名 | ip地址 | 操作系统 | 角色 | 备注 |
---|---|---|---|---|
ceph-node1 | 10.153.204.13 | Centos7.6 | mon、osd、mds、mgr、rgw、ceph-deploy | chronyd时钟同步(主) |
ceph-node2 | 10.130.22.45 | Centos7.6 | mon、osd、mds、mgr、rgw | chronyd时钟同步 |
ceph-node3 | 10.153.204.28 | Centos7.3 | mon、osd | chronyd时钟同步 |
此环境共三台机器,操作前ntp需要同步,node1为ceph-deploy部署节点,每台机器三块分区用作osd磁盘。
ceph组件介绍
名称 | 作用 |
---|---|
osd | 全称Object Storage Device,主要功能是存储数据、复制数据、平衡数据、恢复数据等。每个OSD间会进行心跳检查,并将一些变化情况上报给Ceph Monitor。 |
mon | 全称Monitor,负责监视Ceph集群,维护Ceph集群的健康状态,同时维护着Ceph集群中的各种Map图,比如OSD Map、Monitor Map、PG Map和CRUSH Map,这些Map统称为Cluster Map,根据Map图和object id等计算出数据最终存储的位置。 |
mgr | 全称Manager,负责跟踪运行时指标和Ceph集群的当前状态,包括存储利用率,当前性能指标和系统负载。 |
mds | 全称是MetaData Server,主要保存的文件系统服务的元数据,如果使用cephfs功能才会启用它,对象存储和块存储设备是不需要使用该服务。 |
rgw | 全称radosgw,是一套基于当前流行的RESTFUL协议的网关,ceph对象存储的入口,不启用对象存储,则不需要安装。 |
每个组件都需要保证高可用性:
1.osd服务越多,在相同副本的情况下高可用性就越强。
2.mon一般部署三个,保证高可用。
3.mgr一般部署两个,保证高可用。
4.mds一般部署两套保证高可用,每套都为主从。
5.rgw一般部署两个,保证高可用。
ceph版本介绍
第一个 Ceph 版本是 0.1 ,要回溯到 2008 年 1 月。多年来,版本号方案一直没变,直到 2015 年 4 月 0.94.1 ( Hammer 的第一个修正版)发布后,为了避免 0.99 (以及 0.100 或 1.00 ),制定了新策略:
- x.0.z - 开发版(给早期测试者和勇士们)
- x.1.z - 候选版(用于测试集群、高手们)
- x.2.z - 稳定、修正版(给用户们)
这里使用的 ceph version 15.2.9,ceph-deploy 2.0.1
ceph安装前准备工作
1.升级系统内核到4系或以上
我这里升级到了4.17,升级步骤此处省略。
2.firewalld、iptables、SElinux关闭
## 防火墙
systemctl stop firewalld.service
systemctl disable firewalld.service
## selinux
setenforce
sed -i 's/^SELINUX=.*/SELINUX=disabled/' /etc/selinux/config
3.chronyd时间同步
这里以node1为时钟服务端,其他节点为时钟客户端
[master下操作]
vim /etc/chrony.conf
...
## 主要下面几个点
server 10.153.204.13 iburst #指定服务端
allow 10.0.0.0/8 #把自身当作服务端
...
[slave下操作]
vim /etc/chrony.conf
...
server 10.153.204.13 iburst #指定服务端
...
## 然后重启服务,查看状态
systemctl enable chronyd
systemctl restart chronyd
timedatectl
chronyc sources -v
4.在ceph-deploy节点写临时hosts文件
# cat /etc/hosts
10.153.204.13 ceph-node1
10.130.22.45 ceph-node2
10.153.204.28 ceph-node3
5.创建普通用户,赋予sudo权限,并将ceph-deploy节点对其他节点做免密操作
## 利用ansible给所有机器创建 cephadmin 用户
ansible all -m shell -a 'groupadd -r -g 2022 cephadmin && useradd -r -m -s /bin/bash -u 2022 -g 2022 cephadmin && echo cephadmin:123456 | chpasswd'
## 赋予sudo权限,并不需要密码
ansible node -m shell -a 'echo "cephadmin ALL=(ALL) NOPASSWD:ALL" >> /etc/sudoers'
## 做免密
su - cephadmin
ssh-keygen
ssh-copy-id ceph-node2
ssh-copy-id ceph-node3
6.将osd磁盘准备好,最好一块磁盘一个osd,此环境资源紧张,我这里一个分区一个osd
[root@ceph-node1 ~]$ lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
nvme0n1 259:0 0 931.5G 0 disk
├─nvme0n1p5 259:7 0 100G 0 part
├─nvme0n1p3 259:5 0 100G 0 part
├─nvme0n1p6 259:8 0 100G 0 part
├─nvme0n1p4 259:6 0 100G 0 part
所有osd机器磁盘分布相同,仅分区就好,先不要创建lvm、格式化等。
7.如果是内网机器,需要自己构建本地ceph yum源
(1)找个外网机器,执行此脚本,可以根据自己需要更改版本信息及url地址
#!/usr/bin/env bash
URL_REPO=https://mirrors.tuna.tsinghua.edu.cn/ceph/rpm-15.2.9/el7/x86_64/
URL_REPODATA=https://mirrors.tuna.tsinghua.edu.cn/ceph/rpm-15.2.9/el7/x86_64/repodata/
function get\_repo()
{
test -d ceph_repo || mkdir ceph_repo
cd ceph_repo
for i in `curl $URL\_REPO | awk -F '"' '{print $4}' | grep rpm`;do
curl -O $URL\_REPO/$i
done
}
function get\_repodata()
{
test -d ceph_repo/repodata || mkdir ceph_repo/repodata
cd ceph_repo/repodata
for i in `curl $URL\_REPODATA | awk -F '"' '{print $4}' | grep xml`;do
curl -O $URL\_REPODATA/$i
done
}
if [ $1 == 'repo' ];then
get_repo()
elif [ $1 == 'repodata' ];then
get_repodata()
elif [ $1 == 'all' ];then
get_repo()
get_repodata()
else
echo '请输入其中一个参数[ repo | repodata | all ]'
fi
(2)上传至内网服务器,安装 配置 nginx
yum -y install nginx
## 主要修改以下字段,/home/ceph\_repo 替换为你的真实目录。
vim /etc/nginx/nginx.conf
server {
listen 8080;
listen [::]:8080;
server_name _;
root /home/ceph;
# Load configuration files for the default server block.
include /etc/nginx/default.d/*.conf;
location / {
autoindex on;
}
}
systemctl start nginx
(3)配置yum源–每个节点都要配置
cat > /etc/yum.repos.d/ceph-http.repo << EOF
[local-ceph]
name=local-ceph
baseurl=http://ceph-node1:8080/ceph_repo
gpgcheck=0
enable=1
[noarch-ceph]
name=local-ceph
baseurl=http://ceph-node1:8080/noarch_repo
gpgcheck=0
enable=1
EOF
然后
yum makecache
## 检查是否生效
yum list | grep ceph
ceph-deploy部署
1.查看并目前ceph-deploy版本
# yum list ceph-deploy --showduplicates
Loaded plugins: fastestmirror, langpacks, priorities
Loading mirror speeds from cached hostfile
Available Packages
ceph-deploy.noarch 1.5.25-1.el7 epel
ceph-deploy.noarch 1.5.29-0