Ceph-集群安装记录(ansible版本)

使用背景

ceph最近这两年挺火,打算尝试下它的块存储是怎么玩的,简单记录下

硬盘配置
1、集群需要用到OSD存储,OSD只支持物理卷
2、可使用cfdisk进行分区,先分好逻辑分区,再创建物理卷
3、集群中用作OSD的物理卷的机器,物理卷分区命名必须保持一致

部分配置命令

 #卸载挂载点
umount /dev/sda5
#创建物理卷
 pvcreate /dev/sda5
#检查物理卷
pvscan

配置主机名
1、配置永久静态主机名,主机配置为ceph1ceph3,客户机配置为client1client3

a、配置主机节点

ceph1节点:
hostnamectl --static set-hostname ceph1

ceph2节点:
hostnamectl --static set-hostname ceph2

ceph3节点:
hostnamectl --static set-hostname ceph3

b、同理配置客户机节点

client1节点:
hostnamectl --static set-hostname client1
其余节点以此类推…

2、修改域名解析文件

vi /etc/hosts

在各个集群和客户端节点的/etc/hosts中添加如下内容:

192.168.3.166   ceph1
192.168.3.167   ceph2
192.168.3.168   ceph3
192.168.3.175   client1
192.168.3.176   client2
192.168.3.177   client3
配置免密登录
需配置ceph1节点对所有主/客户机节点的免密(包括ceph1本身),此外需要配置client1节点对所有主/客户机节点的免密(包括client1本身)。

1、在ceph1节点生成公钥,并发放到各个主机/客户机节点

ssh-keygen -t rsa 

#回车采取默认配置
for i in {1..3}; do ssh-copy-id ceph$i; done

#根据提示输入yes及节点密码
for i in {1..3}; do ssh-copy-id client$i; done

#根据提示输入yes及节点密码

在这里插入图片描述
在这里插入图片描述

2、在client1节点生成公钥,并发放到各个主机/客户机节点(同1)。

ssh-keygen -t rsa #回车采取默认配置

for i in {1..3}; do ssh-copy-id ceph$i; done

for i in {1..3}; do ssh-copy-id client$i; done
关闭防火墙
关闭本节点防火墙,需在所有Ceph节点和client端依次执行如下命令。
systemctl stop firewalld
systemctl disable firewalld
systemctl status firewalld

在这里插入图片描述

关闭SELinux
关闭本节点SELinux,需在所有主客户机节点执行。
  • 永久关闭,重启后生效。
    vi /etc/selinux/config,修改SELINUX=disabled

在这里插入图片描述

配置repo源
本文档提供在线和离线两种repo源的安装方式,推荐使用在线安装方式。
方法一:在线方式安装

1、在所有集群和客户端节点建立ceph.repo。
vi /etc/yum.repos.d/ceph.repo

并加入如下内容:

[epel]
name=Extra Packages for Enterprise Linux 7 - $basearch
baseurl=http://download.fedoraproject.org/pub/epel/7/$basearch
#metalink=https://mirrors.fedoraproject.org/metalink?repo=epel-7&arch=$basearch
failovermethod=priority
enabled=1
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-7


[epel-debuginfo]
name=Extra Packages for Enterprise Linux 7 - $basearch - Debug
baseurl=http://download.fedoraproject.org/pub/epel/7/$basearch/debug
#metalink=https://mirrors.fedoraproject.org/metalink?repo=epel-debug-7&arch=$basearch
failovermethod=priority
enabled=0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-7
gpgcheck=1

[epel-source]
name=Extra Packages for Enterprise Linux 7 - $basearch - Source
baseurl=http://download.fedoraproject.org/pub/epel/7/SRPMS
#metalink=https://mirrors.fedoraproject.org/metalink?repo=epel-source-7&arch=$basearch
failovermethod=priority
enabled=0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-7
gpgcheck=1

2、更新yum源。
yum clean all && yum makecache

3、安装epel源
yum -y install epel-release

4、集群如果是外网环境,这条不用看!但如果是内网环境,则除堡垒机外其他修改所有节点代理配置。
添加如下内容使其支持相关依赖包的安装:
vim /etc/environment

export http_proxy=http://{Proxy-User-Name}:{Proxy-Password}@<Proxy-Server-IP-Address>:<Proxy-Port>
export https_proxy= http://{Proxy-User-Name}:{Proxy-Password}@<Proxy-Server-IP-Address>:<Proxy-Port>
export ftp_proxy= http://{Proxy-User-Name}:{Proxy-Password}@<Proxy-Server-IP-Address>:<Proxy-Port>
export no_proxy=127.0.0.1,localhost
配置NTP服务
1、安装NTP服务

a、所有集群和客户端节点安装ntp
yum -y install ntp ntpdate

b、在所有集群和客户端节点备份旧配置
cd /etc && mv ntp.conf ntp.conf.bak

c、在ceph1新建文件

vim /etc/ntp.conf

#尾部新增

restrict 127.0.0.1
restrict ::1
restrict 192.168.3.0 mask 255.255.255.0
server 127.127.1.0
fudge 127.127.1.0 stratum 8

d、在其余所有节点新建文件

vim /etc/ntp.conf

#尾部新增

server 192.168.3.166

2、启动NTP服务

a、在ceph1节点启动NTP服务,并检查状态。

systemctl start ntpd
systemctl enable ntpd
systemctl status ntpd

b、在除ceph1的所有节点同步ceph1的时间

ntpdate ceph1

c、在除ceph1的所有节点写入硬件时钟,避免重启后失效

hwclock -w

d、同步后过一段时间可能会出现时间有误差的情况,尽管误差不大,但是Ceph对时间精度要求较高,建议配置定时任务每隔一段时间自动同步时间。

添加定时任务

crontab -e

*/10 * * * * /usr/sbin/ntpdate 192.168.3.166

说明:
192.168.3.166是ceph1的public IP地址,此条命令表示每10分钟与ceph1进行一次时间同步。
安装Ceph-ansible
在线安装,仅需在ceph1上进行操作。

1、安装ansible
yum -y install ansible

2、安装git
yum -y install git
3、配置“http.sslVerify”参数为“false”,跳过系统证书
git config --global http.sslVerify false

4、下载安装Ceph-ansible
git clone -b stable-4.0 https://github.com/ceph/ceph-ansible.git --recursive

安装Ceph-ansible依赖
在线安装,仅需在ceph1上进行操作。

1、安装python-pip
yum install -y python-pip

2、将pip更新到19.3.1版本
pip install --upgrade pip

3、进入ceph-ansible目录
cd /home/ceph-ansible/

4、检查并安装需要的软件版本
pip install -r requirements.txt

解决环境依赖
1、所有节点安装依赖:

yum install -y yum-plugin-priorities

  • rpm_key解决:
    进入redhat_community_repository.yml。
    vim /home/ceph-ansible/roles/ceph-common/tasks/installs/redhat_community_repository.yml

在这里插入图片描述

  • grafana依赖问题

进入configure_grafana.yml。
vim /home/ceph-ansible/roles/ceph-grafana/tasks/configure_grafana.yml

需要注释部分如下:
在这里插入图片描述

服务节点配置

在ceph-ansible目录内新建hosts文件
vi /home/ceph-ansible/hosts

[mons]
ceph1

[mgrs]
ceph1

[osds]
ceph1
ceph2
ceph3

[clients]
client1

[clients]
client1

[grafana-server]
ceph1

该操作用于定义集群中的主机,以及每个主机在Ceph集群中扮演的角色。可根据整个集群的需要在集群节点上部署相应的应用。

参数说明
[mons]Monitor节点
[mgrs]MGR节点
[osds]OSD节点,具体osd配置在osds.yml文件中配置
[mdss]MDS节点,文件存储中需要指定
[rgws]RGW节点,对象存储中需要指定
[clients]客户端节点
[grafana-server]一般需要保留该参数,不然会报缺少的错误
修改ceph-ansible配置文件
在ansible部署时,必须传递相应的playbook给ansible-playbook命令

1、修改相应的playbook名称,然后修改对应的内容,使之满足集群部署的要求。
2、使用Ceph-ansible提供的ansible变量用来设置ceph集群的配置。
所有选项及默认配置放在group_vars目录下,每种ceph进程对应相关的配置文件。

[root@ceph1 ceph-ansible]# cd /home/ceph-ansible/group_vars/
[root@ceph1 group_vars]# cp mons.yml.sample mons.yml
[root@ceph1 group_vars]# cp mgrs.yml.sample mgrs.yml
[root@ceph1 group_vars]# cp mdss.yml.sample mdss.yml
[root@ceph1 group_vars]# cp rgws.yml.sample rgws.yml
[root@ceph1 group_vars]# cp osds.yml.sample osds.yml
[root@ceph1 group_vars]# cp clients.yml.sample clients.yml
[root@ceph1 group_vars]# cp all.yml.sample all.yml

说明: all.yml.sample是应用于集群所有主机的特殊配置文件。

添加ceph.conf配置参数
“all.yml”文件中,“ceph_conf_overrides”变量可用于覆盖ceph.conf中已配置的选项,或是增加新选项。
进入“all.yml”文件,修改“ceph_conf_overrides”这个参数,添加如下内容。

[root@ceph1 group_vars]# vim all.yml

ceph_conf_overrides: 
  global:
    osd_pool_default_pg_num: 64
    osd_pool_default_pgp_num: 64
    osd_pool_default_size: 2
  mon:
    mon_allow_pool_create: true

说明: 对于配置文件中public和cluster不建议在“ceph_conf_overrides”中添加,建议在“OSD options”中增加。

定义OSD(推荐方法三)
osds.yml支持两种方式设置OSD(object storage device)盘、wal(write ahead log)盘和db(data base)盘。
  • 方法一:
    使用ceph-volume lvm batch方式创建OSD,此种模式只需指定OSD,db,wal,程序会根据每个Disk对应的OSD数量,以及db磁盘设备和wal磁盘设备对应的数据盘数量,对磁盘大小进行均分。

  • 方法二:
    使用ceph-volume,从逻辑卷中创建OSD。

方法一:ceph-volume lvm batch方式

修改groups_vars路径下的osds.yml文件,根据需要指定devices,dedicated_devices和bluestore_wal_devices中的设备:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-2CX0Qmk2-1604106717900)(evernotecid://7A7EDC21-DF8C-4D54-A2F1-093DFC4742F1/appyinxiangcom/20217442/ENResource/p1804)]

  • devices表示系统中的数据盘,可以与osds_per_device选项结合,设置每个磁盘上创建的OSD数量。
  • dedicated_devices即block.db。
  • bluestore_wal_devices即block.wal。
  • dedicated_devices和bluestore_wal_devices的磁盘不能为相同磁盘。
  • dedicated_devices和bluestore_wal_devices可以包含一个或多个磁盘。
  • 系统会根据devices中的磁盘数量,以及osds_per_device,将dedicated_devices和bluestore_wal_devices下的磁盘进行均分。

提示: 单个OSD的block.db大于等于50G,否则可能会以为block.db过小而安装报错。

方法二:ceph-volume,从逻辑卷中创建osd

修改groups_vars路径下的osds.yml文件,根据需要指定lvm_volumes属性下的所有OSD设备,包含几种不同的组合场景:

1、只指定数据盘。
2、指定数据盘+wal。
3、指定数据盘+wal+db。
4、指定数据盘+db。

使用此模式时需要事先在所有集群节点上创建对应的逻辑卷:

创建对应的vg。

/usr/sbin/vgcreate --yes -s 1G ceph-data /dev/sdd #创建名称为ceph-data的vg,-s指定创建逻辑卷的基本单位

基于vg创建lv。

/usr/sbin/lvcreate -l 300 -n osd-data2 ceph-data # 在ceph-data上创建名称为osd-data2的大小为300G的lv

确认lv创建情况。

lvs
[root@ceph1 ceph-ansible-stable-4.0.bak]# lvs
LV        VG        Attr       LSize   Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
home      centos    -wi-ao---- 839.05g
root      centos    -wi-ao----  50.00g
swap      centos    -wi-a-----   4.00g
osd-data1 ceph-data -wi-ao---- 300.00g
osd-data2 ceph-data -wi-ao---- 300.00g
osd-db1   ceph-db   -wi-ao---- 100.00g
osd-db2   ceph-db   -wi-ao---- 100.00g
osd-wal1  ceph-wal  -wi-ao----  50.00g
osd-wal2  ceph-wal  -wi-ao----  50.00g

以下为创建两个OSD,每个OSD都包含db和wal盘的场景:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-fMFgXs0E-1604106717901)(evernotecid://7A7EDC21-DF8C-4D54-A2F1-093DFC4742F1/appyinxiangcom/20217442/ENResource/p1813)]

方法三:简单粗暴配置文件

vim ceph-ansible/group-vars/all.yml

############下载包相关的源配置###############
ceph_origin: repository
ceph_repository: community
ceph_mirror: https://mirrors.aliyun.com/ceph/
ceph_stable_key: "{{ ceph_mirror }}/keys/release.asc"
ceph_stable_release: nautilus
ceph_stable_repo: "{{ ceph_mirror }}/debian-{{ ceph_stable_release }}"
ceph_stable_distro_source: bionic

cephx: "true"

############非常重要参数###################
public_network: 172.17.162.0/24
cluster_network: 172.17.162.0/24

mon_host: 172.17.162.157
mon_initial_members: ceph-1,ceph-2,ceph-3
monitor_interface: ens192
#########################################

rbd_cache: "true"
rbd_cache_writethrough_until_flush: "true"
rbd_concurrent_management_ops: 21
rbd_client_directories: true

############创建osd必要的参数###############
devices:
  - /dev/sda5
  - /dev/sda6
  - /dev/sda7
osd_scenario: collocated
osd_objectstore: bluestore
#########################################

mds_max_mds: 1
radosgw_frontend_type: beast
radosgw_thread_pool_size: 512
radosgw_interface: "{{ monitor_interface }}"
email_address: zhailihu@ruijie.com.cn

dashboard_enabled: True
dashboard_protocol: http
dashboard_port: 8443
dashboard_admin_user: root
dashboard_admin_password: 1qa@WS3ed

grafana_admin_user: root
grafana_admin_password: 1qa@WS3ed
grafana_uid: 472
grafana_datasource: Dashboard
grafana_dashboard_version: nautilus
grafana_port: 3000
grafana_allow_embedding: True


######################################

ceph_conf_overrides: 
  global:
    osd_pool_default_pg_num: 64
    osd_pool_default_pgp_num: 64
    osd_pool_default_size: 2
  mon:
    mon_allow_pool_create: true
正式安装
1、执行命令:

[root@ceph1 ceph-ansible]# ansible-playbook -i hosts site.yml

执行结束,在执行页面会有相关的提示,如图所示,所有节点显示failed=0,则处于部署过程中。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-8p6rmPUD-1604106717903)(evernotecid://7A7EDC21-DF8C-4D54-A2F1-093DFC4742F1/appyinxiangcom/20217442/ENResource/p1814)]

2、查看集群健康状态,显示HEALTH_OK则集群状态健康。

ceph health

3、查看dashboard和grafana是否正常拉起
#Dashboard
http://172.17.162.157:8443

#Grafana 
http://172.17.162.157:3000
4、Well Done 小伙子:)
参考资料

https://support.huaweicloud.com/dpmg-kunpengsdss/kunpengcephansible_04_0001.html

https://docs.ceph.com/projects/ceph-ansible/en/latest/

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Ceph是一个可靠的、数据自动重均衡、自动恢复的SDS(软件定义存储)分布式存储系统,功能主要有三大块:块存储、对象存储、文件系统。Ceph不但是提供了统一存储,并且同时还充分利用了客户端的计算能力,在存储每一个数据时,都会通过计算得出该数据存储的位置,尽量将数据分布均衡,同时由于Ceph的设计,采用了CRUSH算法、HASH环等方法,使得它不存在传统的单点故障的问题,且随着规模的扩大性能并不会受到影响。不管是私有云还是公有云,随着云架构的发展,Ceph 成为了OpenStack、Proxmox标配的后端存储,不光如此,就连目前最火的容器编排 Kubernetes 持久存储也都支持 Ceph ,让 Ceph 成为当前主流的存储系统,而对 Ceph 存储的学习也就变的刻不容缓。 该课程属于比较基础的 Ceph 存储课程,旨在让大家能快速上手对 Ceph 集群的部署以及操作,主要讲解以下几个方面: 1.     架构的介绍2.     集群的多种部署方式3.     块存储部署,客户端使用及快照、克隆和镜像4.     对象存储的部署及简单使用5.     Ceph FS 文件系统的部署、客户端使用及导出为NFS6.     集群的操作和管理,包括服务,集群扩展,缩减和集群维护7.     Ceph 基础知识的介绍,包括集群map,PG和身份验证8.     Ceph 集群的监控
要使用ceph-ansible安装14.2.0版本Ceph,可以按照以下步骤进行操作: 1. 安装ansibleceph-ansible 在执行ceph-ansible之前,需要先安装ansibleceph-ansible。可以使用以下命令安装: ``` $ sudo apt-get update $ sudo apt-get install software-properties-common $ sudo apt-add-repository ppa:ansible/ansible $ sudo apt-get update $ sudo apt-get install ansible $ sudo apt-get install ceph-ansible ``` 2. 准备inventory文件 在使用ceph-ansible之前,需要先准备一个inventory文件,该文件包含了Ceph集群的各个节点的信息,例如IP地址、主机名等。可以从ceph-ansible的源代码中复制一个样例文件,并根据自己的实际情况进行修改。例如: ``` $ cp /usr/share/ceph-ansible/infrastructure-playbooks/sample-inventory/hosts /etc/ansible/hosts ``` 3. 修改inventory文件 在修改inventory文件之前,需要先了解一些基本的配置项。在14.2.0版本Ceph中,可以配置的一些基本选项包括: ``` [mons] mon1 mon2 mon3 [osds] osd1 osd2 osd3 [mdss] mds1 [rgws] rgw1 [grafanas] grafana1 [clients] client1 ``` 这里,[mons]、[osds]、[mdss]、[rgws]、[grafanas]和[clients]是各个节点的组名,mon1、osd1、mds1等是各个节点的主机名,可以根据自己的实际情况进行修改。 除了节点信息外,还需要配置一些其他选项,例如Ceph版本号、网络接口、存储池等。可以在inventory文件中添加如下内容: ``` [all:vars] ceph_version=14.2.0 public_network=192.168.1.0/24 cluster_network=192.168.2.0/24 [osds] osd1 osd_journal_size=1024 osd2 osd_journal_size=1024 osd3 osd_journal_size=1024 [mons] mon1 mon_initial_members=mon1,mon2,mon3 mon2 mon_initial_members=mon1,mon2,mon3 mon3 mon_initial_members=mon1,mon2,mon3 [mdss] mds1 [rgws] rgw1 [grafanas] grafana1 [clients] client1 ``` 这里,ceph_version指定了要安装Ceph版本号;public_network和cluster_network分别指定了Ceph集群的公共网络和集群网络;osd_journal_size指定了每个OSD的journal大小;mon_initial_members指定了每个mon节点的初始成员。 4. 执行ceph-ansible 准备好inventory文件后,就可以执行ceph-ansible了。可以使用以下命令: ``` $ cd /usr/share/ceph-ansible $ ansible-playbook site.yml ``` 执行过程中,ceph-ansible会自动下载14.2.0版本Ceph软件包,并在各个节点上进行安装安装完成后,可以使用以下命令检查Ceph集群的状态: ``` $ ceph -s ``` 如果一切正常,应该能够看到Ceph集群的状态信息。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值