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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章