AN
作者AN·2018-11-02 17:15
资深技术专家·某金融企业

Ubuntu16.04.5 三节点部署Ceph mimic版本

字数 6924阅读 5282评论 1赞 5

注意:
1.要配置可以访问外网,需要通过apt源安装介质
2.虚拟机配置可以很低,1core 512M 2个10G磁盘即可,学习环境网络只需要配置一个IP即可
3.设置正确的apt源地址,要和操作系统版本匹配,楼主就因为一个小失误,刚接触Ubuntu不懂操作系统默认命名规则,导致install ceph一直找不到源。
4.Ceph mimic版本的dashboard功能较Luminous强大很多,而且配置上也复杂很多,大家要注意不同版本间的配置差异,可以少走很多弯路
5.由于是匆忙间的记录,可能有些细节不够清楚,也可能存在错误,请大家谅解

设置ssh免密登录
登陆每个节点(所有节点),root用户下分别执行

ssh-keygen #每一步默认即可

Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
The key fingerprint is:
31:3c:be:40:70:9e:f2:8c:c3:2d:05:39:b2:97:80:79 root@ceph01
The key's randomart image is:
+--[ RSA 2048]----+
| o o.. |
|o E o= o |
| . +.o= = |
| ..oO . + |
| .= = S |
| o . . |

拷贝密钥:ssh-copy-id your_dst_node 到其他2个节点

ssh-copy-id <root>:<IP>
例如
ssh-copy-id your_dst_node
节点之前互作互信,登陆节点2,将节点2的公钥拷贝至节点3
ssh-copy-id <root>:<IP>
登陆节点3,将自己的公钥写入authorized_keys文件
cat /root/.ssh/id_rsa.pub >> /root/.ssh/authorized_keys
拷贝节点3 authorized_keys到其他节点
scp /root/.ssh/authorized_keys root@ip:/root/.ssh/

    验证节点间是否root用户可以不输入密码登陆,如可以,则配置成功,如失败,可删除/root/.ssh下所有文件,按照步骤重新操作

配置hosts解析
(所有节点)登陆节点1,su - root用户下,vim /etc/hosts,输入其他节点ip hostname 对应关系
将节点1hosts表,scp到其他所有节点,期间无需输入密码
root@ceph03:~# scp /etc/hosts 172.16.0.111:/etc/
hosts 100% 229 0.2KB/s 00:00
root@ceph03:~# scp /etc/hosts 172.16.0.112:/etc/
hosts 100% 229 0.2KB/s 00:00
root@ceph03:~#
防火墙及安全设置
(所有节点)Ceph Monitors 之间默认使用 6789 端口通信, OSD 之间默认用 6800:7300 这个范围内的端口通信。
Ceph节点间,可以关闭防火墙,使用如下命令ufw status检查,如为inactive,则为关闭,否则用如下命令关闭防火墙
ufw disable

添加ceph用户,并设置权限
(所有节点)
创建用户

操作可在节点1上执行命令:
ssh <IP> sudo useradd -d /home/ceph -m ceph

更新hosts表,在127.0.0.1    localhost改行后,添加主机名
可在第节点1上使用如下命令添加

host=ssh &lt;IP> hostname

ssh <IP>  "sed -i '/127.0.0.1/ s/localhost/localhost  '"${host}"'/' /etc/hosts"
新建ceph用户设置sudo权限
    ssh <IP> echo "ceph ALL = (root) NOPASSWD:ALL" | sudo tee /etc/sudoers.d/ceph
    ssh <IP> sudo chmod 0440 /etc/sudoers.d/ceph

安装NTP服务
所有节点安装
首先安装依赖包
dpkg -i liboptsxx.xx-2ubuntu2_amd64.deb
再安装ntp包
ntp_4.2.6.p5+dfsg-3ubuntux.xx.xx.x_amd64.deb

将包拷贝到各个节点/root/packages目录下,可以在节点1上同时安装其他节点2个包

ssh <IP> dpkg -i /root/packages/ liboptsxx.xx-2ubuntu2_amd64.deb
/root/packages/ ntp_4.2.6.p5+dfsg-3ubuntux.xx.xx.x_amd64.deb

添加Ceph安装源
所有节点安装,后续步骤需要通过外网源进行安装
获取源(如搭建其他版本,可修改apt源,加粗红色斜体)

root@ceph01:~# wget -q -O- ' http://mirrors.163.com/ceph/keys/release.asc' > ceph.asc

root@ceph01:~# apt-key add ceph.asc


可在节点1执行
ssh <IP> “wget -q -O- 'http://mirrors.163.com/ceph/keys/release.asc' >ceph.asc”
ssh <IP>  apt-key add  ceph.asc
ssh <IP> “echo deb http://mirrors.163.com/ceph/debian-mimic/ $(lsb_release -sc) main| sudo tee /etc/apt/sources.list.d/ceph.list”

安装ceph-deploy部署工具
(仅节点1)安装
更新仓库
sudo apt-get update
安装依赖包
dpkg -i python-setuptools_3.3-1ubuntu2_all.deb
安装ceph-deploy
sudo apt-get install ceph-deploy
(所有节点需要安装python python2.7包)
apt-get install python python2.7 -y
5.3.10 安装ceph
安装Ceph基本库 ceph ceph-osd ceph-mds ceph-mon radosgw
该步骤在节点1上执行(这一步很重要,可以快速安装,不要设置错误版本,而且国内有多个源可以选择)
export CEPH_DEPLOY_REPO_URL=http://mirrors.163.com/ceph/debian-mimic/
export CEPH_DEPLOY_GPG_URL=http://mirrors.163.com/ceph/keys/release.asc
配置新节点
ceph-deploy new ceph01 ceph02 ceph03 输入几个yes,回车
设置ceph.conf
注释如下行,关闭认证,后续Openstack对接更为便捷
auth_cluster_required = cephx
auth_service_required = cephx
auth_client_required = cephx
改为
auth_cluster_required = none
auth_service_required = none
auth_client_required = none

增加一行public network = xxx.xxx.xxx.0/24[取决于实际的网络]
查看网络 ifconfig
eth0 Link encap:Ethernet HWaddr 08:00:27:0f:3c:d2

      inet addr:172.16.0.111  Bcast:172.16.0.255  Mask:255.255.255.0
      inet6 addr: fe80::a00:27ff:fe0f:3cd2/64 Scope:Link
      UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
      RX packets:725336 errors:0 dropped:0 overruns:0 frame:0
      TX packets:1315234 errors:0 dropped:0 overruns:0 carrier:0
      collisions:0 txqueuelen:1000 
      RX bytes:73938375 (73.9 MB)  TX bytes:3603646773 (3.6 GB)

应增加内容,掩码24位
public network = 172.16.0.0/24
再添加如下行
osd pool default size = 2 #默认2个副本
安装节点
ceph-deploy install ceph01 ceph02 ceph03
所有节点显示如下则表示安装成功
显示 ceph version 12.3.3

配置并启动ceph-mon
ceph-deploy mon create-initial
如报错,看WARNIN信息:no mon key found in host: e1092,后面的WARNIN也是一样的。这时候可以看下my-cluster目录下有没有生成key,出现这个错误应该是没有生成,解决办法就是将my-cluster目录下的ceph-mon.keying 文件拷贝到所有节点的/var/lib/ceph/mon/ceph-$hostname目录下。即
scp /root/mycluster/ceph.mon.keyring ceph01:/var/lib/ceph/mon/ceph-ceph01/keyring
scp /root/mycluster/ceph.mon.keyring ceph03:/var/lib/ceph/mon/ceph-ceph03/keyring
scp /root/mycluster/ceph.mon.keyring ceph02/var/lib/ceph/mon/ceph-ceph02/keyring
运行
ceph -s 可以看到当前集群的状态,3个mon,暂时没有osd,有个pool,pool的pg数目是64个。

拷贝adminkey和配置文件
ceph-deploy ceph01 ceph02 ceph03
修改权限,所有节点执行
chmod +r /etc/ceph/ceph.client.admin.keyring

添加ceph-osd节点[注意磁盘需要JBOD模式,或者raid0模式,被操作系统识别后才能加入,可以用空格分隔开多个磁盘]
如果不是裸盘需要先格式化 新版bluestore模式下,不再使用journal磁盘
ceph-deploy disk zap ceph01 /dev/sdb

ceph-deploy osd create --data /dev/sdb ceph01
ceph-deploy osd create --data /dev/sdb ceph02
ceph-deploy osd create --data /dev/sdb ceph03

查看集群副本状态
ceph osd dump | grep 'replicated size'

pool 0 'rbd' replicated size 2 min_size 1 crush_ruleset 0 object_hash rjenkins pg_num 64 pgp_num 64 last_change 1 flags hashpspool stripe_width 0

设置集群参数
关于pgmap的数目,osd_num 100 / replica_num,向上取2的幂。比如15个osd,三备份,15 100/3=500,得到pg_num = 512,线上重新设定这个数值时会引起数据迁移,请谨慎处理。
当前配置计算 3*100/3=100,取2的幂,128
设置参数pg_num pgp_num
ceph osd pool set rbd pg_num 128
ceph osd pool set rbd pgp_num 128

配置dashboard

生成并安装自签名的证书
ceph -s 找到红色圈出的节点,登陆该节点

root@ceph1:~# ceph dashboard create-self-signed-cert
Self-signed certificate created

生成key pair,并配置给ceph mgr
mkdir mgr-dashboard
openssl req -new -nodes -x509 -subj "/O=IT/CN=ceph-mgr-dashboard" -days 3650 -keyout dashboard.key -out dashboard.crt -extensions v3_ca
开启模块
ceph mgr module disable dashboard
ceph mgr module enable dashboard
ceph config set mgr mgr/dashboard/server_addr 172.16.0.111
ceph config set mgr mgr/dashboard/server_port 8080
ceph mgr services 查看dashboard

生成密码
ceph dashboard set-login-credentials admin admin

root@ceph01:~# ceph -s 查看状态正常
cluster:

id:     a4e54150-f19f-4c20-859e-b22fad0f603b
health: HEALTH_ERR
        Module 'dashboard' has failed: IOError("Port 8080 not free on '172.16.0.111'",)
        clock skew detected on mon.ceph02, mon.ceph03

services:

mon: 3 daemons, quorum ceph01,ceph02,ceph03
mgr: mon_mgr3(active), standbys: mon_mgr, mon_mgr2
osd: 3 osds: 3 up, 3 in

data:

pools:   2 pools, 184 pgs
objects: 0  objects, 0 B
usage:   3.0 GiB used, 27 GiB / 30 GiB avail

pgs: 184 active+clean

dashboard首页,还能看到很多日志信息。
1g6ka4s5na5j

群集角色分布,如果没有部署keepalive,建议mgr就部署在一个节点,否则宕机后服务在其他节点启动会出现一系列问题
ogzwc6y0tun

ogzwc6y0tun

如果觉得我的文章对您有用,请点赞。您的支持将鼓励我继续创作!

5

添加新评论1 条评论

wuwenpinwuwenpin软件开发工程师南京
2018-11-12 22:28
非常不错,值得收藏!
Ctrl+Enter 发表

作者其他文章

  • VMDK转QCOW2镜像操作
    评论 0 · 赞 4
  • 相关文章

    相关问题

    相关资料

    X社区推广