mimic版ceph安装及对接openshift

1. 集群规划

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

类型 主机ip 备注
deploy 192.168.1.27 部署ceph集群
admin 192.168.1.27 密钥管理等
osd 192.168.1.71 、192.168.1.28 数据存储节点,默认3副本
mon 192.168.1.28 、192.168.1.71、192.168.1.72 维护集群状态,至少3个节点保证高可用
mgr 192.168.1.71 、192.168.1.28 集群状态、darshbord、restapi等,至少两个节点
rgw 192.168.1.72、192.168.1.27 对象存储使用
mds 192.168.1.72、192.168.1.27 文件存储使用
grafana 192.168.1.27 图表,暴露3000端口
prometheus 192.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

发布了21 篇原创文章 · 获赞 0 · 访问量 914

猜你喜欢

转载自blog.csdn.net/kk3909/article/details/104884719