设为首页 收藏本站
查看: 1928|回复: 0

[经验分享] ceph0.94安装部署(centos7.1)

[复制链接]
累计签到:1 天
连续签到:1 天
发表于 2015-8-31 09:01:51 | 显示全部楼层 |阅读模式
1:系统:
more /etc/redhat-release
CentOS Linux release 7.1.1503 (Core)

2:内核:
uname -a
Linux localhost.localdomain 3.10.0-229.el7.x86_64 #1 SMP Fri Mar 6 11:36:42 UTC 2015 x86_64 x86_64 x86_64 GNU/Linux

3:ceph版本:
ceph -v
ceph version 0.94.3

4:集群服务部署分配:
主机名           运  行       服  务
ceph-deploy                              ceph-deploy
node241                         mon                  osd
node242                  mds                  osd
node243                                            osd

5:IP对应主机名
192.168.2.40 ceph-deploy  
192.168.2.41 node241
192.168.2.42 node242
192.168.2.43 node243

四:集群主机系统配置准备

        所有 Ceph 集群节点采用 CentOS 7.1 版本(CentOS-7-x86_64-Minimal-1503-01.iso),所有文件系统采用 Ceph 官方推荐的 xfs,
所有节点的操作系统都装在 RAID1 上,其他的硬盘单独用,不做任何 RAID.

安装完 CentOS 后我们需要在每个节点上(包括 ceph-deploy)做以下配置:


1:规范系统主机名;
centos使用以下命令:
hostnamectl set-hostname 主机名

2:添加hosts文件实现集群主机名与主机名之间相互能够解析(host 文件添加主机名不要使用fqdn方式)
[iyunv@ceph-deploy ceph]# more /etc/hosts
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.2.40 ceph-deploy  
192.168.2.41 node241
192.168.2.42 node242
192.168.2.43 node243

3:每台 ssh-copy-id 完成这些服务器之间免ssh密码登录;
ssh-copy-id   node###

4:关闭防火墙或者开放 6789/6800~6900端口、关闭SELINUX;
#关闭 SELINUX
sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config
setenforce 0

#修改SELINUX模式
sed -i 's/SELINUX=enforcing/SELINUX=disabled/' /etc/sysconfig/selinux
sed -i 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config

#打开 Ceph 需要的端口
firewall-cmd --zone=public --add-port=6789/tcp --permanent
firewall-cmd --zone=public --add-port=6800-7100/tcp --permanent
firewall-cmd --reload

systemctl stop firewalld.server

5:配置ntp服务,开启时间服务,保证集群服务器时间统一;
安装 ntp 同步时间
yum -y install ntp ntpdate ntp-doc

ntpdate 0.us.pool.ntp.org
hwclock --systohc
systemctl enable ntpd.service
systemctl start ntpd.service

或者添加crontab ,执行自动时间同步;

[iyunv@admin yum.repos.d]# more /etc/crontab
SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
HOME=/

# For details see man 4 crontabs

# Example of job definition:
# .---------------- minute (0 - 59)
# |  .------------- hour (0 - 23)
# |  |  .---------- day of month (1 - 31)
# |  |  |  .------- month (1 - 12) OR jan,feb,mar,apr ...
# |  |  |  |  .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat
# |  |  |  |  |
# *  *  *  *  * user-name command to be executed

20 */1 * * * root ntpdate s1a.time.edu.cn && --systohc

6:系统优化类
#set max user processes
sed -i 's/4096/102400/' /etc/security/limits.d/20-nproc.conf

#set ulimit
cat /etc/rc.local | grep "ulimit -SHn 102400" || echo "ulimit -SHn 102400" >> /etc/rc.local

#修改最大打开文件句柄数
cat /etc/security/limits.conf | grep "^* - sigpending 256612" ||
cat >>/etc/security/limits.conf<<EOF
*           soft   nofile       102400
*           hard   nofile       102400
*           soft   nproc        102400
*           hard   nproc        102400
* - sigpending 256612
EOF



五:软件基础包初始化:

1:安装 EPEL 软件源:
rpm -Uvh https://dl.fedoraproject.org/pub ... ease-7-5.noarch.rpm
yum -y update
yum -y upgrade

2:常用软件包、常用工具等(非必须、推荐安装)
yum -y install gcc gcc-c++ autoconf libjpeg libjpeg-devel libpng libpng-devel freetype freetype-devel libxml2 libxml2-devel \
zlib zlib-devel glibc glibc-devel glib2 glib2-devel bzip2 bzip2-devel zip unzip ncurses ncurses-devel curl curl-devel e2fsprogs \
e2fsprogs-devel krb5-devel libidn libidn-devel openssl openssh openssl-devel nss_ldap openldap openldap-devel openldap-clients \
openldap-servers libxslt-devel libevent-devel ntp  libtool-ltdl bison libtool vim-enhanced python wget lsof iptraf strace lrzsz \
kernel-devel kernel-headers pam-devel Tcl/Tk  cmake  ncurses-devel bison setuptool popt-devel net-snmp screen perl-devel \
pcre-devel net-snmp screen tcpdump rsync sysstat man iptables sudo idconfig git system-config-network-tui bind-utils update \
arpscan tmux elinks numactl iftop  bwm-ng

3:提前填坑,根据以往配置部署经验,安装配置部署过程中会有不断报错,部分是因为个别依赖软件包没有安装导致,提前安装避免不必要的错误;
centos6.x 系统配置时总结提炼池的方法,centos7.X 版本系统没有没有安装,也顺利完成集群配置,在配置过程中如果提示缺少软件包可以考虑安装。
for ip in $(cat /workspace/ceph/cephlist.txt);do echo -----$ip-----;ssh root@$ip yum install *argparse* redhat-lsb xfs* -y;done


3:安装部署主机(ceph-deploy)安装环境准备

4:为所有集群主机创建一个 ceph 工作目录,以后的操作都在这个目录下面进行:
for ip in $(cat /workspace/ceph/cephlist.txt);do echo -----$ip-----;ssh root@$ip mkdir -p  /etc/ceph ;done

5:建立主机列表
vim /workspace/ceph/cephlist.txt   
192.168.2.40 ceph-deploy  
192.168.2.41 node241
192.168.2.42 node242
192.168.2.43 node243


6:传输key、hosts文件到其它节点服务器
--delete 删除那些DST中SRC没有的文件

#同步key文件
for ip in $(cat /workspace/ceph/cephlist.txt);do echo -----$ip-----;rsync -avp --delete /root/.ssh/* $ip:/root/.ssh/;done

#同步hosts文件
for ip in $(cat /workspace/ceph/cephlist.txt);do echo -----$ip-----;rsync -avp --delete /etc/hosts  $ip:/etc/;done

#测试主机名解析
for ip in $(cat /workspace/ceph/cephlist.txt);do echo -----$ip-----;ssh $ip ping -c3 ceph-deploy;done


六:ceph-deploy安装配置

###########################cephdeploy节点执行,在/etc/ceph/目录下面进行#################################################

1:安装ceph-deploy
cd /etc/ceph/
yum install ceph-deploy -y


2:初始化集群,告诉 ceph-deploy 哪些节点是监控节点,命令成功执行后会在 ceps-cluster 目录下生成 ceph.conf, ceph.log, ceph.mon.keyring 等相关文件:
ceph-deploy new node241 node242 node243

3:传输key 配置文件到其它节点服务器
for ip in $(cat /workspace/ceph/cephlist.txt);do echo -----$ip-----;rsync -avp --delete /etc/ceph $ip:/etc/;done

验证:
for ip in $(cat /workspace/ceph/cephlist.txt);do echo -----$ip-----;ssh root@$ip ls /etc/ceph/ ;done


七: 创建mon节点:

#######################集群服务部署分配#######################
主机名           运  行       服  务
ceph-deploy                              ceph-deploy
node241                         mon                  osd
node242                  mds                  osd
node243                                            osd

1:在安装部署节使用ceph-deploy创建,生成MON信息:

命令格式:

cd /etc/ceph/
ceph-deploy new node241


执行成功后该目录下会增加三个文件
[iyunv@ceph-deploy ceph]# ll
total 16
-rw-r--r-- 1 root root  229 Aug 28 14:30 ceph.conf
-rw-r--r-- 1 root root 5878 Aug 28 14:30 ceph.log
-rw------- 1 root root   73 Aug 28 14:30 ceph.mon.keyring


2:安装部署集群软件包:
在所有节点安装ceph软件包 ceph-deploy install{ceph-node}[{ceph-node}...]
(注:如果已经用yum在每台机器上安装了ceph,这步可省略)

ceph-deploy install  node241  node242  node243


3:添加初始monitor节点和收集秘钥 ceph-deploy mon create-initial {node}

ceph-deploy mon create-initial

4:收集密钥

ceph-deploy gatherkeys node241

在本地目录下可看到如下密钥环文件:

     1. {cluster-name}.client.admin.keyring
     2. {cluster-name}.bootstrap-osd.keyring
     3. {cluster-name}.bootstrap-mds.keyring

5:传输key 配置文件到其它节点服务器

for ip in $(cat /workspace/ceph/cephlist.txt);do echo -----$ip-----;rsync -avp --delete /etc/ceph $ip:/etc/;done
--delete 删除那些DST中SRC没有的文件

至此mon节点配置基本告一段落;

6:验证集群mon节点安装成功
[iyunv@node241 ceph]# ceph -s
    cluster 3adc4d9d-587e-424f-ab67-dd4d50493782
     health HEALTH_ERR
            64 pgs stuck inactive
            64 pgs stuck unclean
            no osds
     monmap e1: 1 mons at {node241=192.168.2.41:6789/0}
            election epoch 2, quorum 0 node241
     osdmap e1: 0 osds: 0 up, 0 in
      pgmap v2: 64 pgs, 1 pools, 0 bytes data, 0 objects
            0 kB used, 0 kB / 0 kB avail
                  64 creating

7:登录mon节点查看进程已启动
ps -ef|grep ceph
[iyunv@node241 ceph]# ps -ef|grep ceph
root      7087     1  0 15:04 ?        00:00:00 /bin/bash -c ulimit -n 32768; /usr/bin/ceph-mon -i node241 --pid-file /var/run/ceph/mon.node241.pid -c /etc/ceph/ceph.conf --cluster ceph -f
root      7097  7087  0 15:04 ?        00:00:00 /usr/bin/ceph-mon -i node241 --pid-file /var/run/ceph/mon.node241.pid -c /etc/ceph/ceph.conf --cluster ceph -f
root      9179  5080  0 16:59 pts/0    00:00:00 grep --color=auto ceph



八:安装集群osd服务

1:执行osd初始化命令
每台有1块磁盘,为 /dev/sdb

查看一下 Ceph 存储节点的硬盘情况:

ceph-deploy disk list node241 node242 node243

初始化 Ceph 硬盘,然后创建 osd 存储节点,(执行此步骤,osd自动激活了,不用执行激活操作);

for ip in $(cat /workspace/ceph/cephlist.txt);do echo ----$ip-----------;ceph-deploy --overwrite-conf osd prepare $ip:/dev/sdb;done



2:验证:
root     13531     2  0 21:32 ?        00:00:00 [xfsaild/sdb1]
root     13844     1  0 21:32 ?        00:00:00 /bin/bash -c ulimit -n 32768; /usr/bin/ceph-osd -i 0 --pid-file /var/run/ceph/osd.0.pid -c /etc/ceph/
root     13848 13844  1 21:32 ?        00:00:00 /usr/bin/ceph-osd -i 0 --pid-file /var/run/ceph/osd.0.pid -c /etc/ceph/ceph.conf --cluster ceph -f

[iyunv@ceph-deploy ceph]# ceph osd tree
ID WEIGHT  TYPE NAME        UP/DOWN REWEIGHT PRIMARY-AFFINITY
-1 0.26999 root default                                       
-2 0.09000     host node241                                   
0 0.09000         osd.0         up  1.00000          1.00000
-3 0.09000     host node242                                   
1 0.09000         osd.1         up  1.00000          1.00000
-4 0.09000     host node243                                   
2 0.09000         osd.2         up  1.00000          1.00000


[iyunv@node241 ceph]# ceph-disk  activate-all
=== osd.0 ===
Starting Ceph osd.0 on node241...already running


[iyunv@ceph-deploy ceph]# ceph health
HEALTH_OK


lsblk看一下,如果sdk sdl是挂载在/var/lib/ceph/osd/ceph-0  ceph上,#没有问题

[iyunv@node241 ceph]# lsblk
NAME   MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sda      8:0    0   50G  0 disk
├─sda1   8:1    0  500M  0 part /boot
├─sda2   8:2    0    2G  0 part [SWAP]
└─sda3   8:3    0 47.5G  0 part /
sdb      8:16   0  100G  0 disk
├─sdb1   8:17   0   95G  0 part /var/lib/ceph/osd/ceph-0
└─sdb2   8:18   0    5G  0 part
sr0     11:0    1 1024M  0 rom

3:最后,我们把生成的配置文件从 ceph-deploy 同步部署到其他几个节点,使得每个节点的 ceph 配置一致:
ceph-deploy --overwrite-conf admin ceph-deploy node241 node242 node243


九:安装部署mds服务

1:添加元数据服务器

cd /etc/ceph
ceph-deploy --overwrite-conf mds create node242
命令顺利执行完成,无报错为oK


2:状态查看。还没有创建时候的状态。
对于一个刚创建的MDS服务,虽然服务是运行的,但是它的状态直到创建 pools 以及文件系统的时候才会变为Active.

[iyunv@dn-5-221 ceph]# ceph mds stat
e1: 0/0/0 up

[iyunv@ceph-deploy ceph]# ceph mds stat
e1: 0/0/0 up
[iyunv@ceph-deploy ceph]# ceph mds dump
dumped mdsmap epoch 1
。。。。。。。。。。。。。。。。。
modified        2015-08-28 15:04:31.857259
。。。。。。。。。。。。。。。。
compat  compat={},rocompat={},incompat={}
................................
data_pools
metadata_pool   0
inline_data     disabled

3:通过下面的操作创建Filesystem
[iyunv@ceph-deploy ceph]# ceph osd pool create cephfs_data 10
pool 'cephfs_data' created

[iyunv@ceph-deploy ceph]# ceph osd pool create cephfs_metadata 10
pool 'cephfs_metadata' created

[iyunv@ceph-deploy ceph]# ceph fs new leadorfs  cephfs_metadata cephfs_data
new fs with metadata pool 2 and data pool 1
[iyunv@ceph-deploy ceph]#

4:成功创建后,mds stat的状态如下
[iyunv@ceph-deploy ceph]# ceph mds stat
e5: 1/1/1 up {0=node242=up:active}

[iyunv@ceph-deploy ceph]# ceph mds dump
dumped mdsmap epoch 5
。。。。。。。。。。。。。。。。。。。。
created 2015-08-28 22:04:05.252797
modified        2015-08-28 22:04:09.322223
................................
session_timeout 60
session_autoclose       300
max_file_size   1099511627776
last_failure    0
last_failure_osd_epoch  0
compat  compat={},rocompat={},incompat={1=base v0.20,2=client writeable ranges,3=default file layouts on dirs,4=dir inode in separate object,5=mds uses versioned encoding,6=dirfrag is stored in omap,8=no anchor table}
max_mds 1
。。。。。。。。。。。。。。。
data_pools      1
metadata_pool   2
inline_data     disabled
4132:   192.168.2.42:6804/13556 'node242' mds.0.1 up:active seq 68

5:ceph集群的状态,pg的数量以及pool的数量都得到了对应的增加
[iyunv@ceph-deploy ceph]# ceph -s
    cluster 3adc4d9d-587e-424f-ab67-dd4d50493782
     health HEALTH_OK
     monmap e1: 1 mons at {node241=192.168.2.41:6789/0}
            election epoch 2, quorum 0 node241
     mdsmap e5: 1/1/1 up {0=node242=up:active}
     osdmap e18: 3 osds: 3 up, 3 in
      pgmap v30: 84 pgs, 3 pools, 1962 bytes data, 20 objects
            101 MB used, 284 GB / 284 GB avail
                  84 active+clean



十:扩展集群

1:增加一个OSD
在你的ceph-deloy节点上,准备OSD。
ceph-deploy osd prepare {ceph-node}:/path/to/directory
ceph-deploy osd prepare ceph-node1:/tmp/osd2

最后,激活OSD。
ceph-deploy osd activate {ceph-node}:/path/to/directory
ceph-deploy osd activate ceph-node1:/tmp/osd2

一旦你增加新的OSD,Ceph将会迁移已有的放置置到新的OSD上以达到集群的重新平衡,你可通过ceph命令界面观察这个过程。
你将会看到PG状态由活跃且干净状态变成活跃态,其中存在部分降级对象。当迁移完成后,将再次返回活跃且干净状态。(可按Control+c组合键退出)
ceph -w

2:增加一个mds服务器

为了使用CephFS文件系统,你需要至少一台元数据服务器。执行如下步骤以创建一台元数据服务器。
ceph-deploy mds create {ceph-node}
ceph-deploy mds create ceph-node1
注意:当前Ceph产品中仅支持运行一个元数据服务器。你可尝试在一个集群中运行多个元数据服务器,但对此尚无商业支持。

3:增加mon节点

一个Ceph存储集群至少需要一台Ceph监视器。为了保证高可用性,Ceph存储集群中通常会运行多个Ceph监视器,任意单台Ceph监视器的宕机都不会影响整个Ceph存储集群正常工作。由于Ceph使用Paxos算法,这需要多个Ceph监视器组成Quoram(如1,2:3,3:4,3:5,4:6等)。

向你的集群增加2台Ceph监视器。
ceph-deploy mon create {ceph-node}
ceph-deploy mon create ceph-node2 ceph-node3

当你增加Ceph监视器后,Ceph将开始同步各监视器并形成Quoram。你可通过如下方式检查Quoram状态:
ceph quorum_status
或者
ceph quorum_status --format json-pretty

Ceph提供了3种使用场景:
1、分布式文件系统CephFS。
多个客户端mount CephFS到本地,CephFS遵循POSIX接口,使用体验类似于ext4等本地文件系统。
类似于其他分布式文件系统,各个CephFS客户端共享同一命名空间。

2、RadosGW(rgw)对象存储。
rgw使用场景类似于Amazon S3,据个人理解也类似于七牛云存储。

3、块设备rbd(Rados Block Device)。
Ceph提供虚拟的rbd块设备,用户像使用SATA盘那样的物理块设备一样使用rbd。
rbd的使用是排他的,每个rbd块设备是用户私有的,相对的,CephFS的使用方式是共享的。
虚拟化和云计算的发展正当盛年,IaaS结合rbd块设备这一使用方式有如干柴遇烈火,因此rbd是Ceph社区开发的重心之一。本文也主要从rbd的视角来了解Ceph。


十一:配置清理
##################以下操作在ceph-deploy节点操作:###########
部署过程中如果出现任何奇怪的问题无法解决,可以简单的删除一切从头再来:
sudo stop ceph-all                                                     停止所有ceph进程
ceph-deploy uninstall  [{ceph-node}]                                   卸载所有ceph程序
ceph-deploy purge   [[ceph-node} [{ceph-node}]                         删除ceph相关的包
ceph-deploy purgedata {ceph-node} [{ceph-node}]                        删除ceph相关的包
ceph-deploy forgetkeys                                                 删除key

另外清理一下配置文件,重建一下安装配置目录
for ip in $(cat /workspace/ceph/cephlist.txt);do echo -----$ip-----;ssh root@$ip rm -rf /etc/ceph/* ;done
for ip in $(cat /workspace/ceph/cephlist.txt);do echo -----$ip-----;ssh root@$ip mkdir -p  /etc/ceph ;done
###############################################################

十二:故障排查:
健康状态检查
ceph health

有告警信息如下:
# ceph health
HEALTH_WARN too few PGs per OSD (10 < min 30)

增加 PG 数目,根据 Total PGs = (#OSDs * 100) / pool size 公式来决定 pg_num(pgp_num 应该设成和 pg_num 一样),所以 20*100/2=1000,Ceph 官方推荐取最接近2的指数倍,所以选择 1024。
如果顺利的话,就应该可以看到 HEALTH_OK 了:

# ceph osd pool set rbd size 2
set pool 0 size to 2

# ceph osd pool set rbd min_size 2
set pool 0 min_size to 2

# ceph osd pool set rbd pg_num 1024
set pool 0 pg_num to 1024

# ceph osd pool set rbd pgp_num 1024
set pool 0 pgp_num to 1024

# ceph health
HEALTH_OK



运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-106609-1-1.html 上篇帖子: Ceph 9.0.3 发布,分布式文件系统 下篇帖子: [分布式文件系统]各分布式文件系统比较、适用领域、原理、选型(MooseFS,fastDFS,mogileFS,glusterFS,ceph,NFS,lustr
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表