mimic版ceph安装及对接openshift

1. 集群规划

准备4台机器,操作系统为centos 7.5.1804,其中192.168.1.71、192.168.1.28各有一块未使用的磁盘/dev/sdb

类型主机ip备注
deploy192.168.1.27部署ceph集群
admin192.168.1.27密钥管理等
osd192.168.1.71 、192.168.1.28数据存储节点,默认3副本
mon192.168.1.28 、192.168.1.71、192.168.1.72维护集群状态,至少3个节点保证高可用
mgr192.168.1.71 、192.168.1.28集群状态、darshbord、restapi等,至少两个节点
rgw192.168.1.72、192.168.1.27对象存储使用
mds192.168.1.72、192.168.1.27文件存储使用
grafana192.168.1.27图表,暴露3000端口
prometheus192.168.1.27监控数据,暴露9283端口

2. 准备工作

2.1. 修改主机名

ssh到相应主机修改,可以执行hostnamectl查看修改是否生效

hostnamectl set-hostname node-192-168-1-28
hostnamectl set-hostname node-192-168-1-71
hostnamectl set-hostname monitor-192-168-1-72
hostnamectl set-hostname admin-192-168-1-27
2.2. 添加主机名(域名)解析

将下面的配置项添加到每台主机/etc/hosts文件中,能通过主机名通信,配置后可以通过ping主机名检查配置是否生效

192.168.1.28 node-192-168-1-28
192.168.1.71 node-192-168-1-71
192.168.1.72 monitor-192-168-1-72
192.168.1.27 admin-192-168-1-27
2.3. 添加用户

以下步骤每个节点都需要执行

  • 添加用户
useradd -d /home/ceph -m ceph
passwd ceph
输入密码
  • 添加sudo权限(免输密码)
echo "ceph ALL = (root) NOPASSWD:ALL" | sudo tee /etc/sudoers.d/ceph
sudo chmod 0440 /etc/sudoers.d/ceph
2.4. 配置免登录
  • 使用ceph用户ssh到deploy节点
ssh ceph@admin-192-168-1-27
  • 生成密钥 ,需要按几次会车
ssh-keygen
  • 将公钥拷贝到其他机器(会追加到节点的~/.ssh/authorized_keys文件后),期间需要输入yes和远程主机密码
ssh-copy-id ceph@monitor-192-168-1-72
ssh-copy-id ceph@node-192-168-1-28
ssh-copy-id ceph@node-192-168-1-71
ssh-copy-id ceph@admin-192-168-1-27
  • 测试免登录,如果需要输入密码则配置有问题
ssh node-192-168-1-28
...
2.5. 时间同步

本示例使用chrony作为时间同步服务,当然也可以使用ntp,centos7.4后自带chrony。
这里将admin-192-168-1-27作为服务端,其他的节点为客户端

  • 安装
yum install -y chrony
  • 服务端配置 /etc/chrony.conf
# 上游时间同步服务器地址 
server 0.centos.pool.ntp.org iburst
server 1.centos.pool.ntp.org iburst
server 2.centos.pool.ntp.org iburst
server 3.centos.pool.ntp.org iburst
# 允许哪些客户端网络连接
allow 192.168.0.0/16
  • 客户端配置 /etc/chrony.conf
server admin-192-168-1-27
  • 开机自动启动,重启并查看状态
 systemctl enable chronyd.service
 systemctl restart chronyd.service
 systemctl status chronyd.service
2.6. 关闭防火墙或设定iptables规则

关闭防火墙是非生产环境最简单省事的办法

 #关闭防火墙
 systemctl stop firewalld  && systemctl disable firewalld

iptables规则可以根据此文档设置:
http://docs.ceph.org.cn/start/quick-start-preflight/#id7

2.7. 关闭selinux
  • 禁用 SELINUX:修改配置文件(重启生效)+ 手动设定(立即生效)
sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config
setenforce 0  

#启用
sed -i 's/SELINUX=disabled/SELINUX=enforcing/g' /etc/selinux/config
setenforce 1
  • 确认配置修改的是否生效:
grep SELINUX= /etc/selinux/config  
getenforce  
2.8. 升级内核

最新cenos版本为7.5.1804

yum update
2.9. 配置epel及ceph yum源
  • epel
sudo yum install -y yum-utils&& sudo yum -y install yum-plugin-priorities &&  \
sudo yum-config-manager --add-repo https://dl.fedoraproject.org/pub/epel/7/x86_64/ && \
sudo yum install --nogpgcheck -y epel-release &&  \
sudo rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-7 &&  \
sudo rm /etc/yum.repos.d/dl.fedoraproject.org*
  • ceph
    使用ceph-deploy安装会自动安装官方相同版本的ceph源

3. 安装ceph-deploy

ssh到admin(deploy)节点

  • 安装ansible
yum install -y ansible
  • /etc/ansible/hosts文件最后添加以下配置,这样可以使用ansilbe cephhost -m shell -a 'shell command’执行相关命令,而不必登录到每台主机去执行
[cephhost]
node-192-168-1-28
node-192-168-1-71
monitor-192-168-1-72
admin-192-168-1-27

  • 安装mimic版ceph-deploy,后续其他节点的ceph安装都是通过ceph-deploy
sudo yum install -y http://mirrors.aliyun.com/ceph/rpm-mimic/el7/noarch/ceph-deploy-2.0.1-0.noarch.rpm
  • 如果人工安装ceph 可以修改将官方的地址替换成阿里的地址(否则可能失败,国内网络环境不好)
sudo yum install -y  http://mirrors.aliyun.com/ceph/rpm-mimic/el7/noarch/ceph-release-1-1.el7.noarch.rpm
sudo sed -i "s/download.ceph.com/mirrors.aliyun.com\/ceph/g" /etc/yum.repos.d/ceph.repo

4. 安装ceph

4.1. 初始化一个新的集群

使用ceph用户ssh到admin(deploy)节点,执行ceph-deploy会在当前目录下生成相关配置文件,需要指定一个或多个主机作为初始monitor,这里我们先指定monitor-192-168-1-72,后续再通过添加指定添加,默认创建的集群名称为ceph

mkdir /home/ceph/my-cluster && cd /etc/my-cluster
ceph-deploy new monitor-192-168-1-72
4.2. 修改集群配置(ceph.conf )

由于我们只有两个空闲磁盘需要将副本数osd pool default size修改为2
public network和cluster network在有两种网卡或两个网络时非常有用,一个网络用于集群内部通讯,一个用于对外通讯

[ceph@admin-192-168-1-27 my-cluster]$ vi ceph.conf
[global]
fsid = 1868beef-958f-4d1e-9e72-55742b0ebb68
mon_initial_members = monitor-192-168-1-72
mon_host = 192.168.1.72
auth_cluster_required = cephx
auth_service_required = cephx
auth_client_required = cephx
filestore_xattr_use_omap = true
osd pool default size=2
public network = 192.168.1.0/16
cluster network = 192.168.1.0/16
4.3.安装ceph相关包
  • 每个节点安装 ceph 相关包,指定阿里的源可以提高安装速度
ceph-deploy install  admin-192-168-1-27  monitor-192-168-1-72  node-192-168-1-71  node-192-168-1-28 \ --repo-url=http://mirrors.aliyun.com/ceph/rpm-mimic/el7/ \
--gpg-url=https://mirrors.aliyun.com/ceph/keys/release.asc
4.4.集群组件部署
  • 配置初始 monitor、并收集所有密钥
ceph-deploy mon  create-initial
  • 把配置文件和 admin 密钥拷贝到管理节点和 Ceph 节点,这样你每次执行 Ceph 命令行时就无需指定 monitor 地址和 ceph.client.admin.keyring 了
ceph-deploy admin admin-192-168-1-27 monitor-192-168-1-72 node-192-168-1-71 node-192-168-1-28
  • 部署管理组件
ceph-deploy mgr create node-192-168-1-71 
ceph-deploy mgr create node-192-168-1-28 
  • 部署mds组件
ceph-deploy mds create admin-192-168-1-27
ceph-deploy mds create monitor-192-168-1-72
  • 添加其他mon,已将在72上安装,要高可用需要至少3个以上的奇数节点
ceph-deploy mon create node-192-168-1-28
ceph-deploy mon create node-192-168-1-71
  • 部署rgw组件
ceph-deploy rgw create monitor-192-168-1-72
ceph-deploy rgw create admin-192-168-1-27
  • 部署osd组件,需要指定磁盘位置,使用create代替prepare 和 activate 两步操作
ceph-deploy osd create --data /dev/sdb node-192-168-1-71
ceph-deploy osd create --data /dev/sdb node-192-168-1-28
4.5.创建资源池
  • 创rbd 建pool
ceph osd pool create rbd 8
  • 创建mds pool,fs
ceph osd pool create cephfs_data 8
ceph osd pool create cephfs_metadata 8

#创建filesystem,并查看状态
ceph fs new cephfs cephfs_metadata cephfs_data
ceph fs ls
ceph mds stat
4.6.其他问题
  • 检查集群是否健康
sudo ceph health
  • 如果提示未认证,可以给admin.keyring授权
sudo chmod 755 /etc/ceph/ceph.client.admin.keyring
  • 如果ceph配置修改(ceph.conf) 需推送配置
 ceph-deploy --overwrite-conf config push  admin-192-168-1-27 monitor-192-168-1-72 node-192-168-1-71 node-192-168-1-28
  • 如果安装有问题,可以通过以下命令卸载
# 要清理掉 /var/lib/ceph 下的所有数据、并卸载 Ceph 软件包
ceph-deploy purge   admin-192-168-1-27 monitor-192-168-1-72 node-192-168-1-71 node-192-168-1-28

# 如果只想清除 /var/lib/ceph 下的数据、并保留 Ceph 安装包: 
ceph-deploy purgedata  admin-192-168-1-27 monitor-192-168-1-72 node-192-168-1-71 node-192-168-1-28

5. 启用管理控制台(仪表盘)

5.1. 启用模块
ceph mgr module enable dashboard  
5.2. 创建证书(使用https访问)
ceph dashboard create-self-signed-cert  
5.3. 创建控制台访问用户名密码
ceph dashboard set-login-credentials admin admin  
5.4. 查看访问入口
ceph mgr services  
5.5.启用对象存储网关

执行命令后会输出json数据记下 access_key 和 secret_key。也可使用radosgw-admin user info --uid=admin再次查看

radosgw-admin user create --uid=admin --display-name=admin --system

ceph dashboard set-rgw-api-access-key H3GKVU6HB3N2GABK7ZE8
ceph dashboard set-rgw-api-secret-key u1h6QEsIcCsj3MYMBj5RQkUKyvR0Qq7x9aKfPjLH

6. rbd对接openshift

6.1. 所有openshift节点安装ceph-common
yum install -y ceph-common
6.2. 从ceph-deploy上获取key的值
  • 方式一:
$ cat ceph.client.admin.keyring
[client.admin]
	key = AQB3Cp1bstIGDBAAM/zwI3xzSVk8yVUXKKXt4Q==
	caps mds = "allow *"
	caps mgr = "allow *"
	caps mon = "allow *"
	caps osd = "allow *"
  • 方式二:
ceph auth get-key client.admin
6.3. 创建ceph-secret

from-literal=key为上一步获取的值,需要使用的命名空间都需要创建
ps:如果不想每个项目都去创建一次可以修改项目模板

oc  create secret generic ceph-secret --type="kubernetes.io/rbd" --from-literal=key='AQB3Cp1bstIGDBAAM/zwI3xzSVk8yVUXKKXt4Q==' --namespace=kube-system
6.4. 创建StorageClass

下面为ceph-rbd-sc.yaml文件内容,
monitors为mon主机列表,用逗号分割

apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
  name: ceph-rbd
provisioner: kubernetes.io/rbd
parameters:
  monitors: 192.168.1.72:6789
  adminId: admin
  adminSecretName: ceph-secret
  adminSecretNamespace: kube-system
  pool: rbd
  userId: admin
  userSecretName: ceph-secret
  fsType: ext4
  imageFormat: "1"
  imageFeatures: "layering"
  • 执行创建脚本
oc create -f ceph-storageclass.yaml
  • 将此StorageClass设置为默认(可选)
oc patch storageclass ceph-rbd -p '{"metadata": {"annotations":{"storageclass.kubernetes.io/is-default-class":"true"}}}'
6.5. 创建pvc测试

ceph-rbd-pvc.yaml

kind: PersistentVolumeClaim
apiVersion: v1
metadata:
  name: test-ceph
spec:
  accessModes:
    - ReadWriteOnce
  resources:
    requests:
      storage: 100Mi
  storageClassName: ceph-rbd
6.6. 检查pvc是否创建成功
oc get pvc 
oc describle pvc pvc test-ceph

7. 监控安装

7.1. grafana
wget https://s3-us-west-2.amazonaws.com/grafana-releases/release/grafana-5.2.4-1.x86_64.rpm
sudo yum localinstall grafana-5.2.4-1.x86_64.rpm
sudo systemctl start grafana-server
sudo systemctl enable grafana-server
7.2. prometheus
  • 安装
wget https://github.com/prometheus/prometheus/releases/download/v2.0.0/prometheus-2.0.0.linux-amd64.tar.gz
tar zxvf prometheus-2.0.0.linux-amd64.tar.gz
cd prometheus-2.0.0.linux-amd64/
  • 修改配置prometheus.yml
scrape_configs:
  - job_name: 'prometheus'
    static_configs:
      - targets: ['localhost:9090']
  - job_name: 'ceph-exporter'
    static_configs:
      - targets: ['192.168.1.28:9128']
        labels:
          alias: ceph-exporter
  • 运行
nohup ./prometheus &
7.3. 在grafana图表上配置ceph cluster

dashboard id为917

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值