日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

mysql存储数据到cephfs_采用cephfs实现Elasticsearch数据持久化

發布時間:2024/4/13 数据库 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 mysql存储数据到cephfs_采用cephfs实现Elasticsearch数据持久化 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

一、cephfs

參考了以下文章

在172.20.0.10上搭建了三節點ceph cluster

10.0.169.87? ? ? ? ?node1.cephfs-cluster (mons at {node1=10.0.169.87:6789/0})

10.0.149.141? ? ? ?node2.cephfs-cluster

10.0.235.158? ? ? ?node3.cephfs-cluster

每節點上掛在了一塊300G數據云盤(采用lvm創建分區,方便以后擴容),在每個節點上將格式化后的文件系統掛載到/var/local/osd[123]

[root@node1 ~]# mount -l | grep cephfs

/dev/mapper/vg--for--cephfs-lvm--for--cephfs on /var/local/osd1 type xfs (rw,relatime,seclabel,attr2,inode64,noquota)

[root@node2 ~]# mount -l | grep cephfs

/dev/mapper/vg--for--cephfs-lvm--for--cephfs on /var/local/osd2 type xfs (rw,relatime,seclabel,attr2,inode64,noquota)

[root@node3 ~]# mount -l | grep cephfs

/dev/mapper/vg--for--cephfs-lvm--for--cephfs on /var/local/osd3 type xfs (rw,relatime,seclabel,attr2,inode64,noquota)

后續可以參考之前給出的兩篇文章完成cephfs的創建,然后將cephfs掛載到本地

[root@node1 ~]# mount -t ceph :6789:/ /opt -o name=admin,secret=

其中admin-key用如下方式獲取

[root@node1 opt]# ceph auth get client.admin

[root@node1 ~]# mount -l | grep opt

10.0.169.87:6789:/ on /opt type ceph (rw,relatime,name=admin,secret=,acl,wsize=16777216)

然后在cephfs中創建出后續需要的三個目錄

[root@node1 opt]# pwd

/opt

[root@node1 opt]# ll

總用量 0

drwxr-xr-x 1 1000 root 1 8月 1 22:07 elasticsearch_node1

drwxr-xr-x 1 1000 root 1 8月 1 22:07 elasticsearch_node2

drwxr-xr-x 1 1000 root 1 8月 1 22:07 elasticsearch_node3

二、persistent storage

使用簡單,建議使用。

在elasticsearch/persistent_storage目錄下有如下文件。

drwxr-xr-x. 2 root root 30 7月 31 14:42 cephfs? (包含文件 -rw-r--r--. 1 root root 173 7月 30 15:20 ceph-secret.yaml)

-rw-r--r--. 1 root root 1115 7月 31 15:50 replicset_elasticsearch_1.yaml

-rw-r--r--. 1 root root 1115 7月 31 15:50 replicset_elasticsearch_2.yaml

-rw-r--r--. 1 root root 1115 7月 31 15:50 replicset_elasticsearch_3.yaml

其中cephfs的secret文件用于在k8s中創建出secret資源,保存了訪問cephfs的key等信息。

replicaset_elasticsearch_1.yaml中需要注意以下內容

volumeMounts:

-? name: cephfs

mountPath: /usr/share/elasticsearch/data? ? ?#將cephfs中的elsticsearch_node1掛載到pod elasticsearch_node1中的/usr/share/elasticsearch/data目錄下。

volumes:

-? name: cephfs

cephfs:

monitors:

-? 10.0.169.87:6789? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?# cephfs的管理節點

path: /elasticsearch_node1? ? ? ? ? ? ? ? ? ? ? ?#之前創建的目錄

secretRef:? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?#引用訪問cephfs的secret

name: ceph-secret

2.persistent storage架構圖

data數據會被永久保存到cephfs中,除非在elasticsearch中刪除相關index;或者將cephfs掛載到本地,然后將elasticsearch_node[123]中的內容刪除。

這里特別要注意的是elasticsearch_node[123]目錄的權限問題,用之前方式創建出來的目錄用戶為root:root,但是在elasticsearch中需要elasticsearch用戶來運行elasticsearch進程,并將數據保存在data中,在elasticsearch的docker image中,已添加更改目錄所有者操作,將elasticsearch_node[123]的所有者改為elasticsearch:root,對外映射看到的所有者為1000:root。

3.為什么要創建3個replicaset來管理3個elasticsearch pod實例,而不是在一個replicaset中將replicas設置為3 ?

在沒有添加cephfs存儲之前,采用的是使用一個replicaset來管理3個elasticsearch pod。

每個elasticsearch需要不同的空間來存儲自己的data數據,不能在replicaset中設置replicas為3,這樣會導致每個elasticsearch的/usr/share/elasticsearch/data目錄掛載到相同cephfs目錄下。不建議在一個pod中創建創建3個container來掛載不同cephfs的目錄,這樣雖然能工作,但是這些container在同一個worker node上會導致該node負載過重。

三、persistent volume and persistent volume claim

pv/pvc原理同persistent storage類似,此處僅給出相關原理便于理解。

pv/pvc架構圖

需要以下幾點

persitent storage和pv/pvc一樣都是利用cephfs提供的posix接口將cephfs掛載到相應的worker node上后再利用docker volume將該目錄掛載到container中,可在相應worker node上利用docker inspect查看container的mount信息。

pv/pvc中聲明的大小可能并非cephfs中的大小(通常不是),具體能存放多少數據取決于cephfs。pv聲明的存儲大小是為了pvc選擇能夠滿足其需求的pv時使用。

pv是一類cluster level級別的資源,不屬于任何namespace,所以可以被任何namespace中pvc使用。

以cephfs為后端存儲的pv,經過驗證,其persistentVolumeReclaimPolicy只支持Retain,而不支持Delete和Recycle。意味著刪除pvc后,pv中的數據(其實是存儲在cephfs文件系統中的數據)不會被刪除,但此時該pv不能再被任何pvc所使用,只能刪除該pv然后重新創建。因為數據存儲在cephfs文件系統中,所以不用擔心數據會丟失。Delete會將數據刪除,Recycle將數據刪除后重新創建pv以為其他pvc提供服務。

四、后期優化

cephfs讀寫性能。

需要對cephfs的讀寫性能進行優化,否則elasticsearch在初始化時需要較長時間。如果發現elasticsearch一直無法初始化完成(kubectl get pod 發現ready的數量為0),可能是liveness檢測的initialDelaySeconds時間過短,導致elasticsearch還未完成初始化就被liveness kill掉然后重啟了相關pod,可以將這個值設置得更長一些。

超強干貨來襲 云風專訪:近40年碼齡,通宵達旦的技術人生

總結

以上是生活随笔為你收集整理的mysql存储数据到cephfs_采用cephfs实现Elasticsearch数据持久化的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。