【Ceph】手动搭建ceph集群
手动部署Ceph集群[*]3台ceph机器
hostname
IP
mon_id
磁盘快
journal
Ceph1
192.168.1.1
0
/dev/sdb2
/dev/sdb1
Ceph2
192.168.1.2
1
/dev/sdb2
/dev/sdb1
Ceph3
192.168.1.3
2
/dev/sdb2
/dev/sdb1
[*]下载部署所需要的ceph集群的rpm包
ceph-monceph-common fcgiceph-base ceph-selinux ceph-mgr ceph-dashceph-radosgw ceph-osd
根据系统内核版本号下载对应的enhanceio包
[*]使用yum来安装这些包
[*] 初始化moniter
[*]根据uuidgen获取uuid:
ceph_uuid=$(uuidgen)
[*] 使用monmaptool创建一个空的ceph文件系统
monmaptool --create-add mon_id1 IP1 --add mon_id2 IP2 ...--fsdi $ceph_uuid --clobber /tmp/montap
其中:
--clobber表示允许 monmaptool 覆盖 mapfilename
IP1:表示第一台moniter的IP
IP2:表示第二台moniter的IP
mon_id1:表示第一台ceph的moniter的ID,随意字符
[*] 更改ceph的配置文件
改为:/etc/ceph/ceph.conf
fsid=$ceph_uuid
mon_host= IP1,IP2....
public_addr= IP1
[*] 创建ceph的mon目录
mkdir/var/lib/ceph/mon
[*]创建
ceph-mon -i mon_id--mkfs --monmap/tmp/montap
注:每台moniter对应的mon_id不同
在Ceph1上执行:
ceph-mon -i 0 --mkfs --monmap/tmp/montap
在Ceph2上执行:
ceph-mon -i 1 --mkfs --monmap/tmp/montap
[*] 改变/var/log/ceph和/var/lib/ceph的用户组和用户
chow -R ceph.ceph /var/lib/ceph /var/log/ceph
[*] 开启moniter
systemctl reset-failedceph-mon@mon_id
systemctl start ceph-mon@mon_id
[*]开启dash并加入自启动
/etc/init/ceph-dash start
echo '/etc/init.d/ceph-dash start & ' > /etc/rc.d/rc.local
[*]初始化mgr
systemctl start ceph-mgr@mon_id
[*] 初始化s3 :$name=任意值 在其中一台mon上执行
[*]新建keyring
ceph-authtool -C /etc/ceph/ceph.client.radosgw.keyring
chmod +r/etc/ceph/ceph.client.radosgw.keyring
[*]生成radosgw服务对应的用户和key,其中name为radows网关的实例名称,常为gateway
ceph-authtool/etc/ceph/ceph.client.radosgw.keyring-n client.radosgw.$name -g
[*]添加用户访问权限
ceph-authtool /etc/ceph/ceph.client.radosgw.keyring-n client.radosgw.$name--cap osd 'allow rwx'--cap mon 'allow rwx'
[*] 将秘钥添加到Ceph集群中
ceph -k /etc/ceph/ceph.client.radosgw.keyringauth addclient.radosgw.$name -i /etc/ceph/ceph.client.radosgw.keyring
[*] 配置ceph配置文件
debug_rgw =100
rgw_data=/var/lib/ceph/radosgw/radosgw-$name
rgw_socket_path=/var/run/ceph/ceph.radosgw.$name
admin_socket=/var/run/ceph/ceph.radosgw.$name
rgw_enable_usage_log = true
rgw_frontends = civetweb port=12345
注:这里采用S3的civetweb的前端方式,除此之外还有Apache和Nginx
[*] 创建S3用户
radosgw-admin user create --uid='uid' --display-name='name' --email=xxx@xxx.com
[*] 启动radosgw
radosgw -c /etc/ceph/ceph.conf-n client.radosgw.$name
[*] 初始化osd 每块盘都得执行一下命令
[*]创建OSD
osd_id=$(ceph osd create)
[*] 创建OSD目录
mkdir /var/lib/ceph/osd/$osd_id
[*] 获取UUID并写入fsid文件中
osd_uuid=$(uuidgen)
echo '$osd_uuid'> /var/lib/ceph/osd/$osd_id/fsid
[*] 格式化数据盘
ceph-mkfs -i $osd_id/dev/sdb2
如果出现格式化失败使用一下命令:
mkfs.xfs/dev/sdb2
xfs_admin -U $osd_uuid /dev/sdb2
[*]创建mkfs_done文件
touch /var/lib/ceph/$osd_id/mkfs_done
[*] 将数据盘挂在到/var/lib/ceph/osd/$osd_id目录下
mount -o noatime UUID=$osd_uuid /var/lib/ceph/osd/$osd_id
[*] 讲osd_uuid写进fsid文件,将字符串filestore写进type文件中
echo $osd_id > /var/lib/ceph/osd/$osd_id/fsid
echo "filestore"> /var/lib/ceph/osd/$osd_id/type
[*] 创建journal链接
ln -sf /dev/sdb1 /var/lib/ceph/osd/$osd_id/journal
[*] 初始化数据目录
ceph-osd -i $osd_id --mkfs
[*] 改变权限
chown -HR ceph:ceph /var/lib/ceph/osd
chown -R ceph:ceph /var/log/ceph
[*] 创建链接
ln -sf /dev/disk/ceph/by-uuid/$osd_uuid /var/lib/ceph/osd/$osd_id/journal
[*] 取消挂载
umount /var/lib/ceph/osd/$osd_id
[*] 修改ceph-osd@serivce文件
删除/usr/lib/systemd/system/ceph-osd@.service文件中ProtectHome,ProtectSystem,PrivateTmp行
[*]开启OSD
systemctl reset-failed ceph-osd@$osd_id
systemctl start ceph-osd@$osd_id
systemctl enable ceph-osd@$osd_id
页:
[1]