
centos7安装ceph(单节点)(ceph-deploy)
同时,Ceph的去中心化设计也提供了更大的灵活性,使得集群的扩展更加容易和高效。Ceph的诞生主要是为了解决统一存储的I/O问题、高性能分布式文件系统的需求、数据容错和无缝复制以及可扩展性和灵活性等问题。随着云计算的发展,Ceph成为了一个受关注的开源项目,并乘上了OpenStack的春风,得到了广泛的应用和推广。Ceph提供对象、块和文件存储,是一个统一存储解决方案,旨在解决不同类型数据存储的I
目录
2.3在指定的节点上创建一个 Ceph 管理器(MGR)守护进程。
5.5创建一个名为 rbd-demo 的专门用于 RBD 的存储池
理论部分
Ceph的诞生主要是为了解决以下问题:
统一存储的I/O问题:
Ceph提供对象、块和文件存储,是一个统一存储解决方案,旨在解决不同类型数据存储的I/O问题。
通过整合多种存储接口,Ceph能够满足不同应用对数据存储的需求。
高性能分布式文件系统的需求:
Ceph最初是作为一个PhD研究项目开始的,目标是开发下一代高性能分布式文件系统。
随着云计算的发展,Ceph成为了一个受关注的开源项目,并乘上了OpenStack的春风,得到了广泛的应用和推广。
数据容错和无缝复制:
Ceph被设计成一个没有单点故障的完全分布式存储系统。
通过数据复制和容错机制,确保数据的可靠性和稳定性。这种设计使得Ceph能够在硬件故障时自动进行数据修复和管理,提高了存储系统的可用性。
可扩展性和灵活性:
Ceph支持PB级别的数据扩展,并且可以部署到上千台通用服务器上。
这种可扩展性使得Ceph能够满足不断增长的数据存储需求。同时,Ceph的去中心化设计也提供了更大的灵活性,使得集群的扩展更加容易和高效。
Ceph的诞生主要是为了解决统一存储的I/O问题、高性能分布式文件系统的需求、数据容错和无缝复制以及可扩展性和灵活性等问题。
操作部分
第一部分(虚拟机配置)
一、修改主机名
[root@localhost ~]# hostnamectl set-hostname user33
[root@localhost ~]# hostname
[root@localhost ~]# bash
二、修改防火墙、SELinux状态
[root@user33 ~]# setenforce 0
[root@user33 ~]# sed -i "s/SELINUX=enforcing/SELINUX=permissive/g" /etc/selinux/config
[root@user33 ~]# systemctl disable firewalld.service
[root@user33 ~]# systemctl stop firewalld.service
三、修改hosts文件
[root@user33 ~]# echo "10.18.33.143 user33" | tee -a /etc/hosts
四、验证网络环境(请参阅 第一步、第四步)
五、配置 ceph 源
[root@user33 ~]# ls /etc/yum.repos.d/
[root@user33 ~]# mkdir /etc/yum.repos.d/bak
[root@user33 ~]# mv /etc/yum.repos.d/* /etc/yum.repos.d/bak/
[root@user33 ~]# curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo
[root@user33 ~]# curl -o /etc/yum.repos.d/epel-7.repo https://mirrors.aliyun.com/repo/epel-7.repo
[root@user33 ceph]# cat -n /etc/yum.repos.d/ceph.repo
1 [Ceph]
2 name=Ceph packages for $basearch
3 baseurl=http://download.ceph.com/rpm-mimic/el7/$basearch
4 enabled=1
5 gpgcheck=1
6 type=rpm-md
7 gpgkey=https://download.ceph.com/keys/release.asc
8 priority=1
9
10 [Ceph-noarch]
11 name=Ceph noarch packages
12 baseurl=http://download.ceph.com/rpm-mimic/el7/noarch
13 enabled=1
14 gpgcheck=1
15 type=rpm-md
16 gpgkey=https://download.ceph.com/keys/release.asc
17 priority=1
18
19 [ceph-source]
20 name=Ceph source packages
21 baseurl=http://download.ceph.com/rpm-mimic/el7/SRPMS
22 enabled=1
23 gpgcheck=1
24 type=rpm-md
25 gpgkey=https://download.ceph.com/keys/release.asc
26 priority=1
六、开始执行yum安装
[root@user33 ~]# yum clean all && yum makecache && yum repolist
源标识 源名称 状态
Ceph/x86_64 Ceph packages for x86_64 524
Ceph-noarch Ceph noarch packages 16
base/7/x86_64 CentOS-7 - Base - mirrors.aliyun.com 10,072
ceph-source Ceph source packages 0
epel/x86_64 Extra Packages for Enterprise Linux 7 - x86_64 13,798
extras/7/x86_64 CentOS-7 - Extras - mirrors.aliyun.com 526
updates/7/x86_64 CentOS-7 - Updates - mirrors.aliyun.com 5,802
repolist: 30,738
[root@user33 ceph]# yum -y install ceph-deploy ceph ceph-radosgw python-setuptools python2-subprocess32 pyhton-pip epel-release
七、创建目录
[root@user33 ~]# mkdir ./ceph
[root@user33 ~]# cd ceph/
第二部分(部署ceph)
1.1初始化ceph集群
[root@user33 ceph]# ceph-deploy new user33
1.2修改ceph.conf配置文件为单节点
[root@user33 ceph]# echo "osd pool default min_size = 1" | tee -a ceph.conf
[root@user33 ceph]# echo "osd pool default size = 1" | tee -a ceph.conf
[root@user33 ceph]# echo "public_network = 10.18.33.0/24" | tee -a ceph.conf
osd pool default min_size = 1
这行配置追加到ceph.conf
文件的末尾。这设置了OSD(对象存储设备)池的默认最小大小为1。这意味着,为了保持数据完整性,Ceph将尝试确保至少有一个OSD是可用的。
osd pool default size = 1
这行配置追加到ceph.conf
。这设置了OSD池的默认大小为1。这通常与复制策略和其他相关的设置一起工作,以确定数据应如何在OSD之间进行复制。
public_network = 10.18.33.0/24
这行配置追加到ceph.conf
。这指定了Ceph集群用于公共通信(例如,客户端与集群之间的通信)的网络。
2.1初始化 Ceph 监视器(MON)节点
[root@user33 ceph]# ceph-deploy mon create-initial
2.2 Ceph 配置文件和密钥分发到指定的管理节点
[root@user33 ceph]# ceph-deploy admin user33
2.3在指定的节点上创建一个 Ceph 管理器(MGR)守护进程。
[root@user33 ceph]# ceph-deploy mgr create user33
3.1磁盘部署
部署数据盘可参阅文献(请参阅 第三步):
3.2 创建OSD
[root@user33 ~]# ceph-deploy osd create user33 --data /dev/sdb1
4.1启动rgw
[root@user33 ceph]# ceph-deploy rgw create user33
4.2测试rgw是否正常启动
[root@user33 ceph]# ss -nltp | grep 7480
LISTEN 0 128 *:7480 *:* users:(("radosgw",pid=12013,fd=38))
[root@user33 ceph]# curl 10.18.33.143:7480
<?xml version="1.0" encoding="UTF-8"?><ListAllMyBucketsResult xmlns="http://s3.amazonaws.com/doc/2006-03-01/"><Owner><ID>anonymous</ID><DisplayName></DisplayName></Owner><Buckets></Buckets></ListAllMyBucketsResult>
参数 | 讲解 |
---|---|
-n | 用于不解析服务名称 |
-t | 表示TCP套接字 |
-l | 用于仅显示正在监听的套接字 |
-p | 用于显示与每个套接字关联的进程信息 |
4.3设置pool 和 pgs的值
[root@user33 ceph]# ceph osd pool set .rgw.root pg_num 40
set pool 1 pg_num to 40
[root@user33 ceph]# ceph osd pool set .rgw.root pgp_num 40
set pool 1 pgp_num to 40
.rgw.root
通常是Ceph对象存储网关(RADOS Gateway, RGW)使用的内部存储池。
pg_num
: 设置存储池的Placement Group(PG)数量。Placement Groups是Ceph用于在OSDs(Object Storage Daemons)之间分散存储对象的逻辑容器。
合理设置PG数量对于性能和数据分布非常重要。
太少的PGs可能导致OSD之间负载不均衡,而太多的PGs则可能导致额外的管理开销。
pgp_num
: 设置用于Placement Group的放置目的的PGP(Placement Group for Placement)数量。在大多数情况下,
pg_num
和pgp_num
应该设置为相同的值。PGP是用于计算数据应该放置到哪个OSD上的逻辑结构,通常与PGs一一对应。
4.4利用s3创建 桶来测试
[root@user33 ceph]# radosgw-admin user create --uid="admin" --display-name="admin"
4.5查看用户信息
# 记录access_key和secret_access_key的值
[root@user33 ceph]# radosgw-admin user info --uid="admin"
5.5创建一个名为 rbd-demo 的专门用于 RBD 的存储池
[root@admin03 ceph]# ceph osd pool create rbd-demo 64 64
pool 'rbd-demo' created
5.6将存储池转换为 RBD 模式
[root@admin03 ceph]# ceph osd pool application enable rbd-demo rbd
enabled application 'rbd' on pool 'rbd-demo'
5.7初始化存储池
# -p 等同于 --pool
[root@admin03 ceph]# rbd pool init -p rbd-demo
5.8创建镜像
[root@admin03 ~]# ls
anaconda-ks.cfg ceph ceph-deploy-ceph.log cirros-0.3.4-x86_64-disk.img
[root@admin03 ~]# rbd create -p rbd-demo --image cirros-0.3.4-x86_64-disk.img --size 1G
5.9镜像管理
# 列出Ceph集群中所有的存储池(pools)
[root@admin03 ~]# ceph osd lspools
1 .rgw.root
2 default.rgw.control
3 default.rgw.meta
4 default.rgw.log
5 default.rgw.buckets.index
6 rbd-demo
# 列出指定存储池(在这里是rbd-demo)中的所有RBD镜像
[root@admin03 ~]# rbd ls -l -p rbd-demo
NAME SIZE PARENT FMT PROT LOCK
cirros-0.3.4-x86_64-disk.img 1 GiB 2
#列出指定存储池(在这里是rbd-demo)中的所有RBD镜像
[root@admin03 ~]# rbd info -p rbd-demo --image cirros-0.3.4-x86_64-disk.img
rbd image 'cirros-0.3.4-x86_64-disk.img':
size 1 GiB in 256 objects
order 22 (4 MiB objects)
id: d3816b8b4567
block_name_prefix: rbd_data.d3816b8b4567
format: 2
features: layering, exclusive-lock, object-map, fast-diff, deep-flatten
op_features:
flags:
create_timestamp: Thu May 9 10:48:55 2024
6.1创建ceph文件系统(ceph fs)池
# 创建了一个名为cephfs_data的存储池,并设置了其PG(Placement Group)的数量为64
[root@admin03 ~]# ceph osd pool create cephfs_data 64
pool 'cephfs_data' created
# 创建了一个名为cephfs_metadata的存储池,并设置了其PG的数量为32
[root@admin03 ~]# ceph osd pool create cephfs_metadata 32
pool 'cephfs_metadata' created
6.2创建文件系统
[root@admin03 ~]# ceph fs new cephfs cephfs_metadata cephfs_data
new fs with metadata pool 8 and data pool 7
# 查看文件系统
[root@admin03 ~]# ceph fs ls
name: cephfs, metadata pool: cephfs_metadata, data pools: [cephfs_data ]
# 查看文件系统状态
[root@admin03 ~]# ceph fs status cephfs
cephfs - 0 clients
======
+------+-------+-----+----------+-----+------+
| Rank | State | MDS | Activity | dns | inos |
+------+-------+-----+----------+-----+------+
+------+-------+-----+----------+-----+------+
+-----------------+----------+-------+-------+
| Pool | type | used | avail |
+-----------------+----------+-------+-------+
| cephfs_metadata | metadata | 0 | 46.4G |
| cephfs_data | data | 0 | 46.4G |
+-----------------+----------+-------+-------+
+-------------+
| Standby MDS |
+-------------+
+-------------+
+---------+---------+
| version | daemons |
+---------+---------+
+---------+---------+
7.1创建dashboard
[root@user33 ~]# ceph mgr module enable dashboard
7.2禁用ssl加密
[root@user33 ~]# ceph config set mgr mgr/dashboard/ssl false
7.3配置IP和端口
# 配置IP和端口
[root@user33 ~]# name="user33"
[root@user33 ~]# ip=10.18.33.143
[root@user33 ~]# POART=8443
[root@user33 ~]# ceph config set mgr "mgr/dashboard/$name/server_addr" "$IP"
[root@user33 ~]# ceph config set mgr "mgr/dashboard/$name/server_port" "$PORT"
[root@user33 ~]# ceph config set mgr "mgr/dashboard/$name/ssl_server_port" "$PORT"
[root@user33 ~]# ceph config set mgr mgr/dashboard/user33/server_addr 10.18.33.143
[root@user33 ~]# ceph config set mgr mgr/dashboard/user33/server_port 8443
# 设置账户密码
[root@user33 ~]# ceph dashboard set-login-credentials admin admin
# 更改ceph配置文件
[root@user33 ~]# echo "mgr_modules = dashboard" >> ./ceph/ceph.config
[root@user33 ~]# echo "mgr/dashboard/user33/server_addr = 10.18.33.143" >> ./ceph/ceph.config
[root@user33 ~]# echo "mgr/dashboard/user33/server_port = 8443" >> ./ceph/ceph.config
[root@user33 ceph]# systemctl restart ceph-mgr@user33.service
# 创建dashboard使用的用户
[root@admin03 ceph]# radosgw-admin user create --uid=admin --display-name=admin --system
#将两个key保存到单独一个文件中,以便下一步使用
[root@admin03 ceph]# echo "9AJ3IIIR4RA4TKOYFZGI" | tee -a access_key
9AJ3IIIR4RA4TKOYFZGI
[root@admin03 ceph]# echo "ruXgDbxCEoPus1LTSbNUdotN2v3B21jI1k26GvQy" | tee -a secret_key
ruXgDbxCEoPus1LTSbNUdotN2v3B21jI1k26GvQy
# 向仪表板提供凭据
# 配置Ceph集群的仪表盘(Dashboard)与Rados Gateway(RGW)之间的身份验证信息
[root@admin03 ceph]# ceph dashboard set-rgw-api-access-key access_key
Option RGW_API_ACCESS_KEY updated
[root@admin03 ceph]# ceph dashboard set-rgw-api-secret-key secret_key
Option RGW_API_SECRET_KEY updated
# Shell命令替换功能来从文件中读取密钥,并将其设置为RGW API的访问密钥
[root@admin03 ceph]# ls
access_key ceph.bootstrap-osd.keyring ceph.conf ceph.mon.keyring
ceph.bootstrap-mds.keyring ceph.bootstrap-rgw.keyring ceph-deploy-ceph.log secret_key
ceph.bootstrap-mgr.keyring ceph.client.admin.keyring ceph.log
[root@admin03 ceph]# ceph dashboard set-rgw-api-access-key $(cat access_key)
Option RGW_API_ACCESS_KEY updated
[root@admin03 ceph]# ceph dashboard set-rgw-api-secret-key $(cat secret_key)
Option RGW_API_SECRET_KEY updated
[root@admin03 ceph]# mkdir /mnt/cephfs
[root@admin03 ceph]# echo "Hello, CephFS\!" > /mnt/cephfs/testfile.txt
[root@admin03 ceph]# sudo mount -t ceph 10.18.33.143:8443:/ /mnt/cephfs -o name=client.admin,secret=
ruXgDbxCEoPus1LTSbNUdotN2v3B21jI1k26GvQy
adding ceph secret key to kernel failed: Invalid argument.
failed to parse ceph_options
# 重启dashboard
[root@user33 ~]# ceph mgr module disable dashboard
[root@user33 ~]# ceph mgr module enable dashboard
第三部分(S3cmd的部署配置)
1.S3cmd安装
[root@user33 ~]# yum install -y s3cmd
2.创建s3cmd使用的用户生成key
[root@user33 ~]# radosgw-admin user create --uid=admin --display-name=admin
3.1 配置s3使其可以连接到ceph集群
[root@user33 ~]# s3cmd --configure
Enter new values or accept defaults in brackets with Enter.
Refer to user manual for detailed description of all options.
Access key and Secret key are your identifiers for Amazon S3. Leave them empty for using the env variables.
Access Key: 9AJ3IIIR4RA4TKOYFZGI # 复制上一步的对应key值
Secret Key: ruXgDbxCEoPus1LTSbNUdotN2v3B21jI1k26GvQy # 复制上一步的对应key值
Default Region [US]: # 默认回车
Use "s3.amazonaws.com" for S3 Endpoint and not modify it to the target Amazon S3.
S3 Endpoint [s3.amazonaws.com]: # 默认回车
Use "%(bucket)s.s3.amazonaws.com" to the target Amazon S3. "%(bucket)s" and "%(location)s" vars can be used
if the target S3 system supports dns based buckets.
DNS-style bucket+hostname:port template for accessing a bucket [%(bucket)s.s3.amazonaws.com]: # 默认回车
Encryption password is used to protect your files from reading
by unauthorized persons while in transfer to S3
Encryption password:
Path to GPG program [/usr/bin/gpg]: # 默认回车
When using secure HTTPS protocol all communication with Amazon S3
servers is protected from 3rd party eavesdropping. This method is
slower than plain HTTP, and can only be proxied with Python 2.7 or newer
Use HTTPS protocol [Yes]: no # 输入no
On some networks all internet access must go through a HTTP proxy.
Try setting it here if you can't connect to S3 directly
HTTP Proxy server name: # 默认回车
New settings:
Access Key: 9AJ3IIIR4RA4TKOYFZGI
Secret Key: ruXgDbxCEoPus1LTSbNUdotN2v3B21jI1k26GvQy
Default Region: US
S3 Endpoint: s3.amazonaws.com
DNS-style bucket+hostname:port template for accessing a bucket: %(bucket)s.s3.amazonaws.com
Encryption password:
Path to GPG program: /usr/bin/gpg
Use HTTPS protocol: False
HTTP Proxy server name:
HTTP Proxy server port: 0
Test access with supplied credentials? [Y/n] n # 输入n
Save settings? [y/N] y # 输入y
Configuration saved to '/root/.s3cfg'
3.2 修改刚生成的/root/.s3cfg中的三处配置
[root@user33 ~]# cat /root/.s3cfg | grep -n cloudfront_host
11:cloudfront_host = 10.18.33.143
[root@user33 ~]# cat /root/.s3cfg | grep -n host_base
35:host_base = 10.18.33.143:7480
[root@user33 ~]# cat /root/.s3cfg | grep -n host_bucket
36:host_bucket = 10.18.33.143:7480
3.3 创建名为test-bucket的bucket
[root@user33 ~]# s3cmd mb s3://test-bucket
Bucket 's3://test-bucket/' created
3.6 查看bucket桶列表
[root@user33 ~]# s3cmd ls
2024-04-22 06:49 s3://test-bucket
更多推荐
所有评论(0)