*/5 * * * * /usr/sbin/netdate time.aliyun.com &> /dev/null && hwclock -w &> /dev/null
apt install -y apt-transport-https ca-certificates curl software-properties-common
导入key
wget -q -O- 'https://download.ceph.com/keys/release.asc' | sudo apt-key add -
添加源
echo "deb https://mirrors.tuna.tsinghua.edu.cn/ceph/debian-pacific bionic main" >> /etc/apt/sources.list
ceph管理节点上创建
创建 ceph 集群部署用户 cephadmincephadmin #部署和管理ceph集群的普通用户
ceph 用户是安装ceph后自动创建的,用于启动ceph-mon/ceph-mgr等进程
cephadm #ceph v15版本开始的一个部署工具
ceph 集群安装完成后会自动创建
ceph 用户(ceph 集群默认会使用 ceph 用户运行各服务进程,如 ceph-osd 等),因此推荐
使用除了 ceph 用户之外的比如 cephuser、cephadmin 这样的普通用户去部署和 管理
ceph 集群
cephadmin 仅用于通过 ceph-deploy 部署和管理 ceph 集群的时候使用,比如首次初始
化集群和部署集群、添加节点、删除节点等,ceph 集群在 node 节点、mgr 等节点会使用
ceph 用户启动服务进程。
groupadd -r -g 2088 cephadmin && useradd -r -m -s /bin/bash -u 2088 -g 2088 cephadmin && echo cephadmin:123456 | chpasswd
活得sudo权限
echo "cephadmin ALL=(ALL) NOPASSWD: ALL" >> /etc/sudoers
su - cephadmin
ssh-keygen
ssh-copy-id [email protected]
ssh-copy-id [email protected]
ssh-copy-id [email protected]
ssh-copy-id [email protected]
ssh-copy-id [email protected]
ssh-copy-id [email protected]
ssh-copy-id [email protected]
ssh-copy-id [email protected]
ssh-copy-id [email protected]
ssh-copy-id [email protected]
sudo vim /etc/hosts
10.4.7.133 ceph-deploy.example.local ceph-deploy
10.4.7.134 ceph-mon1.example.local ceph-mon1
10.4.7.135 ceph-mon2.example.local ceph-mon2
10.4.7.136 ceph-mon3.example.local ceph-mon3
10.4.7.137 ceph-mgr1.example.local ceph-mgr1
10.4.7.138 ceph-mgr2.example.local ceph-mgr2
10.4.7.139 ceph-node1.example.local ceph-node1
10.4.7.140 ceph-node2.example.local ceph-node2
10.4.7.141 ceph-node3.example.local ceph-node3
10.4.7.142 ceph-node4.example.local ceph-node4
安装 ceph 部署工具 # apt install python-pip # pip2 install ceph-deploy
# su - cephadmin
$ mkdir ceph-cluster
$ cd ceph-cluster/
$ ceph-deploy -h 检查
集群初始化:
fsid集群id 可以指定 不指定自己会创建
网络
[--cluster-network CLUSTER_NETWORK] 内网访问 仅用于ceph集群做心跳检测 数据复制
[--public-network PUBLIC_NETWORK]
mon 集群中先启动
cephadmin@ceph-deploy:~/ceph-cluster$ ceph-deploy new --cluster-network 192.168.1.0/24 --public-network 10.4.7.0/24 ceph-mon1.example.local ceph-mon2.example.local ceph-mon3.example.local
初始化 ceph 存储节点 初始化时间:存储节点加到ceph之前 初始化 node 节点: cephadmin@ceph-deploy:~/ceph-cluster$ ceph-deploy install --no-adjust-repos (不管理目标主机的repo文件)--nogpgcheck(不做校验) ceph-node1 ceph-node2 ceph-node3 ceph-node4 安装 ceph-mon 服务: ceph-mon节点 root@ceph-mon1:~# apt-cache madison ceph-mon root@ceph-mon1:~# apt install -y ceph-mon root@ceph-mon2:~# apt install -y ceph-mon root@ceph-mon3:~# apt install -y ceph-mon ceph 集群添加 ceph-mon 服务: cephadmin@ceph-deploy:~/ceph-cluster$ ceph-deploy mon create-initial 启动集群中的mon服务
分发 admin 秘钥: 在 ceph-deploy 节点把配置文件和 admin 密钥拷贝至 Ceph 集群需要执行 ceph 管理命令的 节点,从而不需要后期通过 ceph 命令对 ceph 集群进行管理配置的时候每次都需要指定 ceph-mon 节点地址和 ceph.client.admin.keyring 文件,另外各 ceph-mon 节点也需要同步 ceph 的集群配置文件与认证文件。 如果在 ceph-deploy 节点管理集群: #先安装 ceph 的公共组件 cephadmin@ceph-deploy:~/ceph-cluster$ sudo apt install ceph-common
admin 推送配置文件 和认证文件 后面的是推送到的主机
cephadmin@ceph-deploy:~/ceph-cluster$ ceph-deploy admin ceph-node1 ceph-node2 ceph-node3 ceph-node4
推送给本机
cephadmin@ceph-deploy:~/ceph-cluster$ ceph-deploy admin ceph-deploy
认证文件权限有问题
认证文件的属主和属组为了安全考虑,默认设置为了 root 用户和 root 组,如果需要 ceph 用户也能执行 ceph 命令,那么就需要对 ceph 用户进行授权,
允许用户有读写权限 那个节点执行命令 那个节点执行
cephadmin@ceph-deploy:~$ sudo setfacl -m u:cephadmin:rw /etc/ceph/ceph.client.admin.keyring
cephadmin账号已经可以执行命令 了
cephadmin@ceph-deploy:~/ceph-cluster$ ceph -s 查看集群状态
root@ceph-node1:~# setfacl -m u:cephadmin:rw /etc/ceph/ceph.client.admin.keyring
root@ceph-node2:~# setfacl -m u:cephadmin:rw /etc/ceph/ceph.client.admin.keyring
root@ceph-node3:~# setfacl -m u:cephadmin:rw /etc/ceph/ceph.client.admin.keyring
root@ceph-node4:~# setfacl -m u:cephadmin:rw /etc/ceph/ceph.client.admin.keyring
部署 ceph-mgr 节点: root@ceph-mgr1:~# apt-cache madison ceph-mgr root@ceph-mgr1:~# apt install -y ceph-mgr root@ceph-mgr2:~# apt install -y ceph-mgr cephadmin@ceph-deploy:~$ ceph-deploy mgr create ceph-mgr1
mgr进程启动了
#需要禁用非安全模式通信
动态配置;cephadmin@ceph-deploy:~/ceph-cluster$ ceph config set mon auth_allow_insecure_global_id_reclaim false (重启后也有效)
查看版本
查看磁盘
cephadmin@ceph-deploy:~/ceph-cluster$ ceph-deploy disk list ceph-node1
cephadmin@ceph-deploy:~/ceph-cluster$ ceph-deploy disk list ceph-node2
cephadmin@ceph-deploy:~/ceph-cluster$ ceph-deploy disk list ceph-node3
cephadmin@ceph-deploy:~/ceph-cluster$ ceph-deploy disk list ceph-node4
使用 ceph-deploy disk zap 擦除各 ceph node 的 ceph 数据磁盘: ceph-node1 ceph-node2 ceph-node3 的存储节点磁盘擦除过程如下: cephadmin@ceph-deploy:~/ceph-cluster$ ceph-deploy disk zap ceph-node1 /dev/sdb
cephadmin@ceph-deploy:~/ceph-cluster$ ceph-deploy disk zap ceph-node2 /dev/sdb
cephadmin@ceph-deploy:~/ceph-cluster$ ceph-deploy disk zap ceph-node3 /dev/sdb
cephadmin@ceph-deploy:~/ceph-cluster$ ceph-deploy disk zap ceph-node4 /dev/sdb
添加 OSD: 集群重启 osd会自动重启 数据分类保存方式:提升性能 可以换成ssd nvme
cephadmin@ceph-deploy:~/ceph-cluster$ ceph-deploy osd --help
添加 OSD cephadmin@ceph-deploy:~/ceph-cluster$ ceph-deploy osd create ceph-node1 --data /dev/sdb ceph-node1这里有个对应关系
osd ID:0 ceph-node1:/dev/sdb
ceph-deploy osd create ceph-node2 --data /dev/sdb
ceph-deploy osd create ceph-node3 --data /dev/sdb
ceph-deploy osd create ceph-node4 --data /dev/sdb
从 RADOS 移除 OSD: Ceph 集群中的一个 OSD 是一个 node 节点的服务进程且对应于一个物理磁盘设备,是一个 专用的守护进程。在某 OSD 设备出现故障,或管理员出于管理之需确实要移除特定的 OSD 设备时,需要先停止相关的守护进程,而后再进行移除操作。对于 Luminous 及其之后的版 本来说,停止和移除命令的格式分别如下所示: 1. 停用设备:ceph osd out {osd-num} 2. 停止进程:sudo systemctl stop ceph-osd@{osd-num} 3. 移除设备:ceph osd purge {id} --yes-i-really-mean-it 若类似如下的 OSD 的配置信息存在于 ceph.conf 配置文件中,管理员在删除 OSD 之后手 动将其删除
cephadmin@ceph-deploy:~/ceph-cluster$ ceph osd out --help
测试上传与下载数据: 存取数据时,客户端必须首先连接至 RADOS 集群上某存储池,然后根据对象名称由相关的 CRUSH 规则完成数据对象寻址。于是,为了测试集群的数据存取功能,这里首先创建一个 用于测试的存储池 mypool,并设定其 PG 数量为 32 个。 $ ceph -h #一个更底层的客户端命令 $ rados -h #客户端命令 创建存储池cephadmin@ceph-deploy:~/cep
cephadmin@ceph-deploy:~/ceph-cluster$ ceph osd pool ls
device_health_metrics
mypool
h-cluster$ ceph osd pool create mypool 32 32
pool 'mypool' created
cephadmin@ceph-deploy:~/ceph-cluster$ ceph pg ls-by-pool mypool | awk '{print $1,$2,$15}'
每个pg有三个osd
当前的 ceph 环境还没还没有部署使用块存储和文件系统使用 ceph,也没有使用对象存储 的客户端,但是 ceph 的 rados 命令可以实现访问 ceph 对象存储的功能: 上传文件: 上传的存储池是mypool 上传后是msg1 cephadmin@ceph-deploy:~/ceph-cluster$ sudo rados put msg1 /var/log/syslog --pool=mypool
列出文件
cephadmin@ceph-deploy:~/ceph-cluster$ rados ls --pool=mypool
msg1
查看mypool中msg1的信息
cephadmin@ceph-deploy:~/ceph-cluster$ ceph osd map mypool msg1
osdmap e27 pool 'mypool' (2) object 'msg1' -> pg 2.c833d430 (2.10) -> up ([3,2,0], p3) acting ([3,2,0], p3)
下载到本地
cephadmin@ceph-deploy:~/ceph-cluster$ sudo rados get msg1 --pool=mypool /opt/my.txt
删除文件
cephadmin@ceph-deploy:~/ceph-cluster$ sudo rados rm msg1 --pool=mypool
mon禁止删除存储池
直接删出不掉
如果把存储池删除会导致把存储池内的数据全部删除,因此 ceph 为了防止误删除存储池设置了两个机制来防止误删除操作。 第一个机制是 NODELETE 标志,需要设置为 false 但是默认就是 false 了。 第二个机制是集群范围的配置参数 mon allow pool delete,默认值为 false,即监视器不允许删除存储池,可以在特定场合使用 tell 指令临时设置为(true)允许删除,在删除指定的 pool之后再重新设置为 false。cephadmin@ceph-deploy:~/ceph-cluster$ ceph tell mon.* injectargs --mon-allow-pool-delete=true 允许删除
删除存储值 cephadmin@ceph-deploy:~/ceph-cluster$ ceph osd pool rm mypool mypool --yes-i-really-really-mean-it
关掉允许删除
扩展 ceph 集群实现高可用: 主要是扩展 ceph 集群的 mon 节点以及 mgr 节点,以实现集群高可用。 mon要选举 所以是要计数 扩展 ceph-mon 节点: Ceph-mon 是原生具备自选举以实现高可用机制的 ceph 服务,节点数量通常是奇数。 apt install ceph-mon ceph-deploy mon add ceph-mon2 ceph-deploy mon add ceph-mon3 cephadmin@ceph-deploy:~/ceph-cluster$ ceph quorum_status cephadmin@ceph-deploy:~/ceph-cluster$ ceph quorum_status --format json-pretty 扩展 mgr 节点 mgr不用选举 root@ceph-mgr2:~# apt install ceph-mgr
cephadmin@ceph-deploy:~/ceph-cluster$ ceph-deploy mgr create ceph-mgr2
查看状态
:创建 RBD 创建存储池
cephadmin@ceph-deploy:~/ceph-cluster$ ceph osd pool create myrbd1 64 64 64个pg 64个组合
myrdb存储池使用rbd功能
cephadmin@ceph-deploy:~/ceph-cluster$ ceph osd pool application enable myrbd1 rbd
存储池初始化
cephadmin@ceph-deploy:~/ceph-cluster$ rbd pool init -p myrbd1
挂载不是挂载到存储池 挂载是挂载到存储池里的镜像
创建镜像 需要指定大小 位置
cephadmin@ceph-deploy:~/ceph-cluster$ rbd create myimg1 --size 5G --pool myrbd1
cephadmin@ceph-deploy:~/ceph-cluster$ rbd create myimg2 --size 3G --pool myrbd1 --image-format 2 --image-feature layering
列出指定的 pool 中所有的 imgcephadmin@ceph-deploy:~/ceph-cluster$ rbd ls --pool myrbd1
myimg1
myimg2
centos挂载ceph块存储
客户端使用块存储: 当前 ceph 状态: centos 系统客户端配置 yum 源及 ceph 认证文件 # yum install epel-release # yum install https://mirrors.aliyun.com/ceph/rpm-octopus/el7/noarch/ceph-release-1-1.el7.noarch.rpm -y yum install ceph-common scp ceph.conf ceph.client.admin.keyring [email protected]:/etc/ceph/ 客户端格式化磁盘并挂载使用 mkfs.est4 /dev/rdb0 客户端文件删除后 快存储的副本就删掉了 但是ceph空间不释放 客户端执行 fstrim -v /data #/data 为挂载点, fstrim 命令来自于英文词组 “filesystem trim” 的缩写,其功能是回收文件系统中未使用的块资源。 # mount -t xfs -o discard /dev/rbd0 /data/ #主要用于 SSD,立即触发闲置的块回收 删除文件 空间立即释放 ceph radosgw(RGW)对象存储网关: RGW 提供的是 REST 风格的 API 接口,客户端通过 http 与其进行交互,完成数据的增删改 查等管理操作。 radosgw 用在需要使用 RESTful API 接口访问 ceph 数据的场合,因此在使用 RBD 即块存 储得场合或者使用 cephFS 的场合可以不用启用 radosgw 功能。 4.2.1:部署 radosgw 服务: 如果是在使用 radosgw 的场合,则以下命令将 ceph-mgr1 服务器部署为 RGW 主机: root@ceph-mgr1:~# apt-cache madison radosgw root@ceph-mgr1:~# apt install radosgw cephadmin@ceph-deploy:~/ceph-cluster$ ceph-deploy --overwrite-conf rgw create ceph-mgr1 监听7480 Ceph-FS 文件存储: https://docs.ceph.com/en/latest/cephfs/ Ceph FS 即 ceph filesystem,可以实现文件系统共享功能,客户端通过 ceph 协议挂载并使 用 ceph 集群作为数据存储服务器。Ceph FS 需要运行 Meta Data Services(MDS)服务,其守护进程为 ceph-mds,ceph-mds 进程管理与 cephFS 上存储的文件相关的元数据,并协调对 ceph 存储集群的访问。 如下图: 数据的元数据保存在单独的一个存储池 cephfs-metadata(名字可自定义),因此元数据也是 基于 3 副本提高可用性,另外使用专用的 MDS 服务器在内存缓存元数据信息以提高对客户 端的读写响应性能部署 MDS 服务: 在指定的 ceph-mds 服务器部署 ceph-mds 服务,可以和其它服务器混用(如 ceph-mon、ceph-mgr) root@ceph-mgr1:~# apt-cache madison ceph-mds root@ceph-mgr1:~# apt install ceph-mds cephadmin@ceph-deploy:~/ceph-cluster$ ceph-deploy mds create ceph-mgr1 验证 MDS 服务: MDS 服务目前还无法正常使用,需要为 MDS 创建存储池用于保存 MDS 的数据。
cephadmin@ceph-deploy:~/ceph-cluster$ ceph mds stat
1 up:standby
cephadmin@ceph-deploy:~/ceph-cluster$ ceph osd pool create cephfs-metadata 32 32
pool 'cephfs-metadata' created
cephadmin@ceph-deploy:~/ceph-cluster$ ceph osd pool create cephfs-data 64 64
pool 'cephfs-data' created
cephadmin@ceph-deploy:~/ceph-cluster$ ceph fs new mycephfs cephfs-metadata cephfs-data
new fs with metadata pool 8 and data pool 9
cephadmin@ceph-deploy:~/ceph-cluster$ ceph fs ls
name: mycephfs, metadata pool: cephfs-metadata, data pools: [cephfs-data ]
#查看指定 cephFS 状态 cephadmin@ceph-deploy:~/ceph-cluster$ ceph fs status mycephfs 验证 cepfFS 服务状态cephadmin@ceph-deploy:~/ceph-cluster$ ceph mds stat
mycephfs:1 {0=ceph-mgr1=up:active}
客户端挂载 cephFS
root@ceph-client:~# mount -t ceph 10.4.7.134:6789:/ /data -o name=admin,secret=AQCwt6VjoyRqChAAvoUnFFi4oGQ8y6aIZU9FpQ==
这里的IP写mon的 可以写三个可以写一个
共享存储 ceph 会调用他
标签:deploy,--,ceph,cluster,mon,cephadmin From: https://www.cnblogs.com/tshxawen/p/16999742.html