1、机器:
10.39.3.22-26
2.优化
tcp参数优化
ntp时间同步配置
requiretty准备
执行命令visudo修改suoders文件:
1. 注释Defaults requiretty
Defaults requiretty修改为 #Defaults requiretty, 表示不需要控制终端。
否则会出现sudo: sorry, you must have a tty to run sudo
2. 增加行 Defaults visiblepw
否则会出现 sudo: no tty present and no askpass program specified
3、ceph用户添加
adduser ceph -u 2000
#必须要添加密码,否则无法配置ssh互信
(echo "123321";sleep 1;echo "123321")|passwd ceph --stdin
增加sudo权限
echo "ceph ALL = (root) NOPASSWD:ALL"| sudo tee /etc/sudoers.d/ceph
chmod 0440 /etc/sudoers.d/ceph
4、修改主机名:
将主机名添加到/etc/hosts文件中
hostnamectl set-hostname cephnode0
hostnamectl set-hostname cephnode1
hostnamectl set-hostname cephnode2
5、 生成密钥文件,默认回车即可
ssh-keygen -t rsa
cat .ssh/id_rsa.pub .ssh/authorized_keys
如果希望ssh公钥生效需满足至少下面两个条件:
1) .ssh目录的权限必须是700
2) .ssh/authorized_keys文件权限必须是600
7、为admin-node节点安装ceph-deploy
第一步:增加 yum配置文件
yum clean all
wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo
sed -i '/aliyuncs/d' /etc/yum.repos.d/CentOS-Base.repo
sed -i '/aliyuncs/d' /etc/yum.repos.d/epel.repo
sed -i 's/$releasever/7.2.1511/g' /etc/yum.repos.d/CentOS-Base.repo
添加163源:
vim /etc/yum.repos.d/ceph.repo
[ceph]
name=ceph
baseurl=http://mirrors.163.com/ceph/rpm-jewel/el7/x86_64/
gpgcheck=0
[ceph-noarch]
name=cephnoarch
baseurl=http://mirrors.163.com/ceph/rpm-jewel/el7/noarch/
gpgcheck=0
进行yum的makecache
yum makecache
第二步:更新软件源并安装ceph-deploy
sudo yum update && sudo yum install ceph-deploy
开始节点安装:
第一步:创建集群设置Monitor节点
在admin节点上用ceph-deploy创建集群,new后面跟的是monitor节点的hostname,如果有多个monitor,则它们的hostname以为间隔,多个mon节点可以实现互备。
ceph-deploy new cephnode0 cephnode1 cephnode2
第二步:利用ceph-deploy为节点安装ceph
ceph-deploy install cephnode0 cephnode1 cephnode2
如install未成功,亦可手动安装:
在每个节点单独运行安装ceph软件:yum install ceph -y
osd节点: yum install ceph-radosgw -y
初始化monitor节点
初始化监控节点并收集keyring:
ceph-deploy mon create-initial
(可添加--overwrite-conf参数)
ceph-deploy admin cephnode0 cephnode0 cephnode1 cephnode2
sudo chmod 755 /etc/ceph/ceph.client.admin.keyring
第三步: osd部署
ceph-deploy osd prepare cephnode0:/data11/ceph-osd cephnode2:/data11/ceph-osd cephnode3:/data11/ceph-osd cephnode4:/data11/ceph-osd cephnode5:/data11/ceph-osd
ceph-deploy osd activate cephnode0:/data11/ceph-osd cephnode2:/data11/ceph-osd cephnode3:/data11/ceph-osd cephnode4:/data11/ceph-osd cephnode5:/data11/ceph-osd
(此处直接挂载的目录,由于分区默认使用的ext4格式,osd日志中会有报错,在ceph.conf文件中添加指定参数解决)
添加一个元数据服务器
ceph-deploy mds create cephnode2 cephnode3
创建ceph pg:
ceph osd pool create cephfs_data 1000
ceph osd pool create cephfs_metadata 1000
ceph -s
ceph fs new cephfs cephfs_metadata cephfs_data
创建完成后,就可以使用ceph-fuse挂载了。
#ceph rbd 客户端部署:
客户端需要安装组件、 /etc/ceph/配置文件才能访问rbd?
yum install rbd-mirror.x86_64
报错处理:
#############################################
[ceph@cephnode0 cluster]$ ceph -w
2017-03-24 18:58:29.832395 7fb5d6222700 -1 auth: unable to find a keyring on /etc/ceph/ceph.client.admin.keyring,/etc/ceph/ceph.keyring,/etc/ceph/keyring,/etc/ceph/keyring.bin: (2) No such file or directory
2017-03-24 18:58:29.832414 7fb5d6222700 -1 monclient(hunting): ERROR: missing keyring, cannot use cephx for authentication
2017-03-24 18:58:29.832417 7fb5d6222700 0 librados: client.admin initialization error (2) No such file or directory
Error connecting to cluster: ObjectNotFound
[ceph@cephnode0 cluster]$
权限问题,修改为sudo chmod 755 /etc/ceph/ceph.client.admin.keyring
安装不过去的时候:
yum -y install epel-release
# ** ERROR: osd init failed: (36) File name too long
修改?/etc/ceph/ceph.conf文件,在文件中添加如下配置
osd max object name len = 256
osd max object namespace len = 64
#安装ceph时出错[ceph_deploy][ERROR ] RuntimeError: NoSectionError: No section: 'ceph',是为什么呢
yum remove ceph-release 先执行这个,把这个东西卸了,应该是这个的版本不兼容 亲测有效
################3
clock skew detected on mon.cephnode3
在admin结点上,修改ceph.conf,添加:
mon_clock_drift_allowed = 5
mon_clock_drift_warn_backoff = 30
ceph-deploy --overwrite-conf admin ceph1 ceph2 ceph3
重启monitor
systemctl restart ceph-mon@ceph1.service
osd进程过多,需要修改ceph用户的最大文件打开数:
/etc/security/limits.d/20-nproc.conf
当您运行每台主机上运行多个OSD进程时(如>20)会产生很多的线程,特别是进行recovery和relalancing操作。
许多Linux内核默认线程限最大数量比较小(例如,32k的)。
如果您遇到这方面的问题,可以考虑把kernel.pid_max设置的高一点。理论上的最大值为4,194,303