0、说明:

采用ceph-deploy工具来安装N版,文中出现【all】表示需要在所有节点执行。【hostname】表示在当前主机节点执行

1、准备工作

1.1、节点配置

节点名称 网络 配置
ceph-node-1 双网卡,一个数据网,一个通信网 2C/4G,一块数据硬盘
ceph-node-2 双网卡,一个数据网,一个通信网 2C/4G,一块数据硬盘
ceph-node-3 双网卡,一个数据网,一个通信网 2C/4G,一块数据硬盘

网卡只有一个的话可以搭建。知识通信和osd数据都走一个网卡

1.2、初始化

1.2.1、设置主机名

  1. [all]
  2. hostnamectl set-hostname [hostname]

1.2.2、免密登录

  1. [ceph-node-1]
  2. ssh-keygen
  3. ssh-copy-id ceph-node-1
  4. ssh-copy-id ceph-node-2
  5. ssh-copy-id ceph-node-3

1.2.3、关闭防火墙和selinux

  1. [all]
  2. #关闭防火墙或者配置规则
  3. monitor节点放行tcp 6789端口
  4. ceph-osd节点放行tcp端口 6800:7300

1.3、时间同步

语雀内容

1.4、配置yum源

centos源:

curl -o /etc/yum.repos.d/CentOS-Base.repohttps://mirrors.aliyun.com/repo/Centos-7.repo

epel源:

wget -O /etc/yum.repos.d/epel.repohttp://mirrors.aliyun.com/repo/epel-7.repo

ceph源:

  1. tee /etc/yum.repos.d/ceph-nautilus.repo <<-EOF
  2. [noarch]
  3. name=noarch
  4. baseurl=https://mirrors.aliyun.com/ceph/rpm-nautilus/el7/noarch/
  5. enabled=1
  6. gpgcheck=0
  7. [x86_64]
  8. name=x86_64
  9. baseurl=https://mirrors.aliyun.com/ceph/rpm-nautilus/el7/x86_64/
  10. enabled=1
  11. gpgcheck=0
  12. EOF
  1. #重新缓存
  2. yum clean all
  3. yum makecache

2、安装ceph

2.1、在管理节点安装ceph-deploy

  1. [ceph-node-1]
  2. #安装
  3. yum install ceph-deploy python-setuptools -y
  4. #查看版本
  5. ceph-deploy --version
  6. 2.0.1
  7. #创建工作目录,用于存放配置文件
  8. mkdir ~/ceph-deploy

2.2、创建mon节点

  1. [ceph-node-1]
  2. #创建cpeh-node-1为mon节点
  3. ceph-deploy new --public-network 192.168.189.0/24 --cluster-network 192.168.190.0/24 ceph-node-1
  4. #创建多个mon节点
  5. #ceph-deploy new --public-network 192.168.189.0/24 --cluster-network 192.168.190.0/24 ceph-node-1 ceph-node-2 ceph-node-3
  6. #查看生成的配置文件
  7. ll

2.3、安装ceph软件包

  1. #自动安装,默认使用官方yum源安装,也可以指定yum源
  2. [ceph-node-1]
  3. ceph-deploy install ceph-node-1 ceph-node-2 ceph-node-3
  4. ceph-deploy install ceph-node-1 ceph-node-2 ceph-node-3 --repo-url http://mirrors.163.com/ceph/rpm-nautilus/el7/ --gpg-url http://mirrors.163.com/ceph/keys/release.asc
  5. #手动安装,建议手动安装,需要在所有节点执行
  6. [all]
  7. yum install ceph ceph-mon ceph-mgr ceph-radosgw ceph-mds ceph-mgr-dashboard -y

2.4、初始化mon节点

  1. [ceph-node-1]
  2. #配置初始 monitor(s)、并收集所有密钥 ,后在当前目录会产生一些*.keyring,这是ceph组件间进行安全访问时所需要的
  3. ceph-deploy mon create-initial
  4. #查看mon服务是否允许
  5. [all]
  6. ps -ef|grep ceph-mon

2.5、复制配置文件到所有节点

  1. [ceph-node-1]
  2. #配置admin key到每个节点
  3. ceph-deploy admin ceph-node-1 ceph-node-2 ceph-node-3
  4. #查看
  5. ll /etc/ceph
  6. #查看集群状态
  7. ceph -s
  8. #Ceph 存储集群需要至少一个 Monitor 才能运行。为达到高可用,典型的 Ceph 存储集群会运行多个 Monitors,这样在单个 Monitor 失败时不会影响 Ceph 存储集群的可用性
  9. #添加mon ,也可以创建mon时,直接指定多个mon节点
  10. ceph-deploy mon add ceph-node-2 ceph-node-3
  11. #新增 Monitor 后,Ceph 会自动开始同步并形成法定人数。你可以用下面的命令检查法定人数状态:
  12. ceph quorum_status --format json-pretty

2.6、创建mgr节点并启用dashboard

  1. [ceph-node-1]
  2. #创建mgr节点
  3. ceph-deploy mgr create ceph-node-1
  4. #创建多个mgr节点
  5. #ceph-deploy mgr create ceph-node-2 ceph-node-3
  6. [all]
  7. # 检测ceph-mgr是否已经运行起来->每个节点执行
  8. ps -ef | grep ceph-mgr
  9. #为每个节点安装ceph-mgr-dashboard,开启dashboard
  10. ceph mgr module enable dashboard
  11. # 确认开启mgr模块->每个节点执行
  12. ceph mgr module ls | less
  13. # 查看mgr/dashboard相关参数,这一步有值的话,可以进行配置->每个节点执行
  14. ceph config ls | grep mgr/dashboard
  15. # 配置dashboard相关->admin节点执行 可以试试每个节点执行?
  16. ceph config set mgr mgr/dashboard/server_addr 0.0.0.0
  17. ceph config set mgr mgr/dashboard/server_port 7000
  18. ceph config set mgr mgr/dashboard/ssl false
  19. # 删除配置->admin节点执行
  20. ceph config rm mgr mgr/dashboard/server_addr
  21. ceph config rm mgr mgr/dashboard/server_port
  22. ceph config rm mgr mgr/dashboard/ssl
  23. # 确认dashboard服务开启->每个节点执行
  24. ceph mgr services
  25. {
  26. "dashboard": "http://0.0.0.0:7000/"
  27. }
  28. # 查看配置的最近10条日志,+代表新增配置,-代表删除配置->每个节点执行
  29. ceph config log 10
  30. # 创建该地址http://192.168.2.11:7000的访问用户密码->所有节点都可执行
  31. # 注意访问地址以ceph -s 显示的active mgr节点地址为主,不一定为192.168.2.11
  32. ceph dashboard ac-user-create cephuser cephpwd administrator
  33. {"username": "cephuser", "lastUpdate": 1556949263, "name": null, "roles": ["administrator"], "password": "$2b$12$/jh6ww8qXVcRYXfw4x9LkOQk7WXORIfig1/5ikA5FBNhai2fXGNQG", "email": null}
  34. # 访问页面的时候报500错误,通过查看/var/log/ceph/ceph-mgr.admin.log日志出现以下错误,重启三个节点就恢复正常了
  35. 2019-05-04 22:03:39.244 7f869b27e700 0 mgr[dashboard] [192.168.2.1:55174] [GET] [500] [0.004s] [cephuser] [1.3K] /api/summary
  36. 2019-05-04 22:03:39.244 7f869b27e700 0 mgr[dashboard] ['{"status": "500 Internal Server Error", "version": "3.2.2", "detail": "The server encountered an unexpected condition which prevented it from fulfilling the request.", "traceback": "Traceback (most recent call last):\\n File \\"/usr/lib/python2.7/site-packages/cherrypy/_cprequest.py\\", line 656, in respond\\n response.body = self.handler()\\n File \\"/usr/lib/python2.7/site-packages/cherrypy/lib/encoding.py\\", line 188, in __call__\\n self.body = self.oldhandler(*args, **kwargs)\\n File \\"/usr/lib/python2.7/site-packages/cherrypy/_cptools.py\\", line 221, in wrap\\n return self.newhandler(innerfunc, *args, **kwargs)\\n File \\"/usr/share/ceph/mgr/dashboard/services/exception.py\\", line 88, in dashboard_exception_handler\\n return handler(*args, **kwargs)\\n File \\"/usr/lib/python2.7/site-packages/cherrypy/_cpdispatch.py\\", line 34, in __call__\\n return self.callable(*self.args, **self.kwargs)\\n File \\"/usr/share/ceph/mgr/dashboard/controllers/__init__.py\\", line 649, in inner\\n ret = func(*args, **kwargs)\\n File \\"/usr/share/ceph/mgr/dashboard/controllers/summary.py\\", line 79, in __call__\\n \'mgr_host\': self._get_host(),\\n File \\"/usr/share/ceph/mgr/dashboard/controllers/summary.py\\", line 68, in _get_host\\n return services[\'dashboard\']\\nKeyError: \'dashboard\'\\n"}']
  37. # 老本版写法
  38. ceph config-key put mgr/dashboard/server_addr 0.0.0.0
  39. ceph config-key put mgr/dashboard/server_port 7000

2.7、创建osd

  1. #需要在每个节点上添加一个磁盘,
  2. [ceph-node-1]
  3. #添加osd节点
  4. ceph-deploy osd create ceph-node-1 --data /dev/sdb
  5. ceph-deploy osd create ceph-node-2 --data /dev/sdb
  6. ceph-deploy osd create ceph-node-3 --data /dev/sdb
  7. #查看osd状态
  8. ceph osd tree
  9. ceph -s
  10. # 老版本写法
  11. ceph-deploy disk zap node1 /dev/sdb
  12. ceph-deploy disk zap node2 /dev/sdb

2.8、添加元数据服务器mds

  1. #至少需要一个元数据服务器才能使用 CephFS,需要安装ceph-mds
  2. [ceph-node-1]
  3. ceph-deploy mds create ceph-node-1

2.9、添加rgw

  1. #要使用 Ceph 的 Ceph对象网关组件,必须部署 RGW 例程,需要安装ceph-radosgw
  2. [ceph-node-1]
  3. ceph-deploy rgw create ceph-node-2
  4. #配置对象网关实例
  5. 通过修改 Ceph 配置文件可以更改默认端口7480(比如改成 80 )。增加名为 [client.rgw.<client-node>] 的小节,
  6. #把 <client-node> 替换成你自己 Ceph 客户端节点的短名称(即 hostname -s 的输出)。例如,你的节点名就是 client-node ,在 [global] 节后增加一个类似于下面的小节:
  7. [ceph-node-2]
  8. vim /etc/ceph/ceph.conf
  9. [client.rgw.client-node]
  10. rgw_frontends = "civetweb port=80"
  11. #访问:http://<client-node>:80
  12. #响应:
  13. <?xml version="1.0" encoding="UTF-8"?>
  14. <ListAllMyBucketsResult xmlns="http://s3.amazonaws.com/doc/2006-03-01/">
  15. <Owner>
  16. <ID>anonymous</ID>
  17. <DisplayName></DisplayName>
  18. </Owner>
  19. <Buckets>
  20. </Buckets>
  21. </ListAllMyBucketsResult>