ceph安裝配置

簡介

ceph是一個開源分布式存儲系統,支持PB級別的存儲,支持對 象存儲,塊存儲和文件存儲,高性能,高可用,可擴展。

部署網絡建議架構圖

1

部署

部署架構圖,本次實驗部署jewel版本

1

實驗環境的Vagrantfile

lab1節點既作admin節點又作node節點,lab2,lab3只作為node節點,lab4作為作測試使用ceph的節點

# -*- mode: ruby -*-
# vi: set ft=ruby :ENV["LC_ALL"] = "en_US.UTF-8"Vagrant.configure("2") do |config|(1..4).each do |i|config.vm.define "lab#{i}" do |node|node.vm.box = "centos-7.4-docker-17"node.ssh.insert_key = falsenode.vm.hostname = "lab#{i}"node.vm.network "private_network", ip: "11.11.11.11#{i}"node.vm.provision "shell",inline: "echo hello from node #{i}"node.vm.provider "virtualbox" do |v|v.cpus = 3v.customize ["modifyvm", :id, "--name", "lab#{i}", "--memory", "3096"]file_to_disk = "lab#{i}_vdb.vdi"unless File.exist?(file_to_disk)# 50GBv.customize ['createhd', '--filename', file_to_disk, '--size', 50 * 1024]endv.customize ['storageattach', :id, '--storagectl', 'IDE', '--port', 1, '--device', 0, '--type', 'hdd', '--medium', file_to_disk]endendend
end
復制代碼

配置阿里ceph源

在所有節點執行如下操作

cat >/etc/yum.repos.d/ceph.repo<<EOF
[ceph]
name=ceph
baseurl=http://mirrors.aliyun.com/ceph/rpm-jewel/el7/x86_64/
gpgcheck=0
priority=1[ceph-noarch]
name=cephnoarch
baseurl=http://mirrors.aliyun.com/ceph/rpm-jewel/el7/noarch/
gpgcheck=0
priority=1[ceph-source]
name=Ceph source packages
baseurl=http://mirrors.163.com/ceph/rpm-jewel/el7/SRPMS
enabled=0
gpgcheck=1
type=rpm-md
gpgkey=http://mirrors.163.com/ceph/keys/release.asc
priority=1
EOF
yum makecache
復制代碼

在admin節點安裝ceph-deploy

lab1 節點

# 官方源
# 如果已經配置了上面的阿里源,不需要再配置如下的源
# 推薦使用阿里源,因為官方源速度太慢
cat >/etc/yum.repos.d/ceph.repo<<EOF
[ceph-noarch]
name=Ceph noarch packages
baseurl=https://download.ceph.com/rpm-jewel/el7/noarch
enabled=1
gpgcheck=1
type=rpm-md
gpgkey=https://download.ceph.com/keys/release.asc
EOF# 更新系統軟件
# 此操作可省略
# yum update -y# 安裝 ceph-deploy
yum install -y ceph-deploy
復制代碼

配置admin節點連接node節點

安裝之后需要配置admin節點可以ssh無密碼登錄每個node節點和測試節點,用戶需要有sudo權限

# 在每一個node節點執行
useradd ceph
echo 'ceph' | passwd --stdin ceph
echo "ceph ALL = (root) NOPASSWD:ALL" > /etc/sudoers.d/ceph
chmod 0440 /etc/sudoers.d/ceph
# 配置sshd可以使用password登錄
sed -i 's/PasswordAuthentication no/PasswordAuthentication yes/' /etc/ssh/sshd_config
systemctl reload sshd
# 配置sudo不需要tty
sed -i 's/Default requiretty/#Default requiretty/' /etc/sudoers# 在所有節點配置hosts
# 包括要進行ceph測試的機器
# 使用vagrant實驗時注意
# 由于vagrant會自動把主機名解析為 127.0.0.1
# 所以在實驗時如果在ceph集群內任意一臺機器進行實驗時
# 注意把本機名解析為 127.0.0.1 的行注釋,如下所示
# 127.0.0.1	lab1	lab1
cat >>/etc/hosts<<EOF
11.11.11.111 lab1
11.11.11.112 lab2
11.11.11.113 lab3
11.11.11.113 lab4
EOF# 在admin節點執行
# 創建ceph用戶,配置sshkey登錄
# 由于lab1節點作為node節點時已經創建過ceph用戶
# 第一條命令可能會出錯,忽略即可
useradd ceph
su - ceph
ssh-keygen
ssh-copy-id ceph@lab1
ssh-copy-id ceph@lab2
ssh-copy-id ceph@lab3
ssh-copy-id ceph@lab4
復制代碼

在admin節點創建集群

在lab1節點執行如下操作,node的主機名一定要設置正確 lab1, lab2, lab3。否則可能會無法實驗成功

# 不要使用sudo也不要使用root用戶運行如下的命令
su - ceph
mkdir my-cluster
cd my-cluster
# 創建lab1為monitor
ceph-deploy new lab1# 查看配置文件
ls -l# 配置ceph.conf
[global]
...
# 如果有多個網卡,應該配置如下選項,
# public network是公共網絡,負責集群對外提供服務的流量
# cluster network是集群網絡,負載集群中數據復制傳輸通信等
# 本次實驗使用同一塊網卡,生境環境建議分別使用一塊網卡
public network = 11.11.11.0/24
cluster network = 11.11.11.0/24# 安裝 ceph 包
# 如果按照官方文檔安裝方法 會重新配置安裝官方ceph源
# 由于網絡問題,安裝可能會出錯,需要多次執行
# ceph-deploy install 其實只是會安裝 ceph ceph-radosgw 兩個包
# ceph-deploy install lab1 lab2 lab3
# 推薦使用阿里源安裝,因為使用ceph-deploy安裝會很慢
# 使用如下命令手動安裝包,替代官方的 ceph-deploy install 命令
# 如下操作在所有node節點上執行
yum install -y ceph ceph-radosgw# 部署monitor和生成keys
ceph-deploy mon create-initial
ls -l *.keyring# 復制文件到node節點
ceph-deploy admin lab1 lab2 lab3# 部署manager (luminous+)12及以后的版本需要部署
# 本次部署 jewel 版本 ,不需要執行如下命令
# ceph-deploy mgr create lab1# 添加osd 以磁盤方式
# 本次實驗采用此種方法
# sdb 為虛擬機添加的磁盤設置名
ceph-deploy osd create lab1:sdb lab2:sdb lab3:sdb# 在node節點創建目錄
rm -rf /data/osd1
mkdir -pv /data/osd1
chmod 777 -R /data/osd1
chown ceph.ceph -R /data/osd1# 添加osd 以文件目錄方式
ceph-deploy osd prepare lab1:/data/osd1 lab2:/data/osd1 lab3:/data/osd1
ceph-deploy osd activate lab1:/data/osd1 lab2:/data/osd1 lab3:/data/osd1# 查看狀態
ssh lab1 sudo ceph health
ssh lab1 sudo ceph -s
復制代碼

清理集群

# 如果安裝過程出錯,使用如下命令清理之后重新開始
ceph-deploy purge lab1 lab2 lab3
ceph-deploy purgedata lab1 lab2 lab3
ceph-deploy forgetkeys
rm ceph.*
復制代碼

擴展集群

提高可用性

  • 在lab1上運行metadata server 為后續使用cephfs
  • 在lab2,lab3運行monitor和manager提高集群可用性
# 為了使用CephFS,必須啟動 metadata server
ceph-deploy mds create lab1# 添加monitor
ceph-deploy mon add lab2
ceph-deploy mon add lab3
ssh lab1 sudo ceph -s# 在monitor節點查看狀態(需要以root用戶或者sudo查看)
ceph quorum_status --format json-pretty# 添加manager (luminous+)12及以后的版本需要部署
# 本次部署 jewel 版本 ,不需要執行如下命令
# ceph-deploy mgr create lab2 lab3
復制代碼

部署RGW使用Ceph Object Gateway

提供S3/Swift存儲功能,實現S3和Swift兼容的接口,可以使用S3或Swift的命令行工具或SDK來使用ceph

# 啟動 rgw
ceph-deploy rgw create lab1# 修改配置 /etc/ceph/ceph.conf
# 使用 rgw 監聽在 80 端口
# lab1 為啟動 rgw 的主機名
[client.rgw.lab1]
rgw_frontends = "civetweb port=80"# 重啟 rgw
systemctl restart ceph-radosgw@rgw.lab1# 訪問測試
curl -I http://11.11.11.111/
復制代碼

使用ceph存儲

應用存儲使用架構圖

11

對象存儲

# 安裝ceph
yum install -y ceph# 復制相關文件到要使用ceph-client的機器
ceph-deploy admin lab4# 測試
# 存儲文件
echo 'hello ceph oject storage' > testfile.txt
ceph osd pool create mytest 8
rados put test-object-1 testfile.txt --pool=mytest# 查看讀取文件
rados -p mytest ls
rados get test-object-1 testfile.txt.1 --pool=mytest
cat testfile.txt.1# 查看文件位置
ceph osd map mytest test-object-1# 刪除文件
rados rm test-object-1 --pool=mytest# 刪除pool
ceph osd pool rm mytest mytest --yes-i-really-really-mean-it
復制代碼

塊存儲

# 安裝ceph
yum install -y ceph# 復制相關文件到要使用ceph-client的機器
ceph-deploy admin lab4# 創建塊設備鏡像
rbd create foo --size 4096 --image-feature layering
rbd info foo
rados -p rbd ls# 映射鏡像到塊設備
sudo rbd map foo --name client.admin# 使用塊設備創建文件系統
sudo mkfs.ext4 -m0 /dev/rbd/rbd/foo# 掛載使用
sudo mkdir /mnt/ceph-block-device
sudo mount /dev/rbd/rbd/foo /mnt/ceph-block-device
cd /mnt/ceph-block-device
echo 'hello ceph block storage' > testfile.txt# 清理
cd ~
sudo umount -lf /mnt/ceph-block-device
sudo rbd unmap foo
rbd remove foo
rados -p rbd ls
復制代碼

S3對象存儲

11.11.11.111 為安裝了 RGW 的機器

# 安裝
yum install -y ceph ceph-radosgw# 復制相關文件到要使用ceph-client的機器
ceph-deploy admin lab4# 創建S3所需要的pool
ceph osd pool create .rgw 128 128
ceph osd pool create .rgw.root 128 128
ceph osd pool create .rgw.control 128 128
ceph osd pool create .rgw.gc 128 128
ceph osd pool create .rgw.buckets 128 128
ceph osd pool create .rgw.buckets.index 128 128
ceph osd pool create .rgw.buckets.extra 128 128
ceph osd pool create .log 128 128
ceph osd pool create .intent-log 128 128
ceph osd pool create .usage 128 128
ceph osd pool create .users 128 128
ceph osd pool create .users.email 128 128
ceph osd pool create .users.swift 128 128
ceph osd pool create .users.uid 128 128# 查看
rados lspools# 訪問測試
curl -I http://11.11.11.111/# 創建S3用戶
# 保存如下命令返回的 user access_key secret_key
radosgw-admin user create --uid=foo --display-name=foo --email=foo@foo.com# 創建admin用戶
radosgw-admin user create --uid=admin --display-name=admin# 允許admin讀寫users信息
radosgw-admin caps add --uid=admin --caps="users=*"# 允許admin讀寫所有的usage信息
radosgw-admin caps add --uid=admin --caps="usage=read,write"# 安裝s3測試工具
yum install -y s3cmd# 配置s3cmd, 只需指定Access Key和Secret Key,其他默認即可
s3cmd --configure# 修該生成的配置文件
vim $HOME/.s3cfg
host_base = 11.11.11.111
host_bucket = 11.11.11.111/%(bucket)
use_https = False# 創建Bucket
s3cmd mb s3://mybucket
s3cmd ls# 上傳Object
echo 'hello ceph block storage s3' > hello.txt
s3cmd put hello.txt s3://mybucket# 查看Object
s3cmd ls s3://mybucket# 下載Object
cd /tmp
s3cmd get s3://mybucket/hello.txt
cd ~# 刪除bucket下所有對象
s3cmd del -rf s3://mybucket/
s3cmd ls -r s3://mybucket# 刪除Bucket
s3cmd mb s3://mybucket1
s3cmd rb s3://mybucket1# 刪除S3用戶
radosgw-admin user rm --uid=foo
radosgw-admin user rm --uid=admin# 刪除pool
ceph osd pool delete .rgw .rgw --yes-i-really-really-mean-it
ceph osd pool delete .rgw.root .rgw.root --yes-i-really-really-mean-it
ceph osd pool delete .rgw.control .rgw.control --yes-i-really-really-mean-it
ceph osd pool delete .rgw.gc .rgw.gc --yes-i-really-really-mean-it
ceph osd pool delete .rgw.buckets .rgw.buckets --yes-i-really-really-mean-it
ceph osd pool delete .rgw.buckets.index .rgw.buckets.index --yes-i-really-really-mean-it
ceph osd pool delete .rgw.buckets.extra .rgw.buckets.extra --yes-i-really-really-mean-it
ceph osd pool delete .log .log --yes-i-really-really-mean-it
ceph osd pool delete .intent-log .intent-log --yes-i-really-really-mean-it
ceph osd pool delete .usage .usage --yes-i-really-really-mean-it
ceph osd pool delete .users .users --yes-i-really-really-mean-it
ceph osd pool delete .users.email .users.email --yes-i-really-really-mean-it
ceph osd pool delete .users.swift .users.swift --yes-i-really-really-mean-it
ceph osd pool delete .users.uid .users.uid --yes-i-really-really-mean-it
復制代碼

CephFS存儲

# 安裝ceph
yum install -y ceph ceph-fuse# 復制相關文件到要使用ceph-client的機器
ceph-deploy admin lab4# CephFS需要使用兩個Pool來分別存儲數據和元數據
ceph osd pool create fs_data 128
ceph osd pool create fs_metadata 128
ceph osd lspools# 創建一個CephFS
ceph fs new cephfs fs_metadata fs_data# 查看
ceph fs ls# 使用內核提供的功能 掛載CephFS
# 由于可能會有bug,建議使用 4.0 以上的內核
# 優點是性能比使用ceph-fuse更好
# name,secret 為 /etc/ceph/ceph.client.admin.keyring 里的內容
mkdir /mnt/mycephfs
mount -t ceph lab1:6789,lab2:6789,lab3:6789:/ /mnt/mycephfs -o name=admin,secret=AQBoclRaiilZJBAACLjqg2OUOOB/FNa20UJXYA==
df -h
cd /mnt/mycephfs
echo 'hello ceph CephFS' > hello.txt
cd ~
umount -lf /mnt/mycephfs
rm -rf /mnt/mycephfs# 使用 ceph-fuse 掛載CephFS
mkdir /mnt/mycephfs
ceph-fuse -m lab1:6789 /mnt/mycephfs
df -h
cd /mnt/mycephfs
echo 'hello ceph CephFS' > hello.txt
cd ~
umount -lf /mnt/mycephfs
rm -rf /mnt/mycephfs# 清理
# 停止 metadata server
# 本次部署在lab1,去lab1停止服務
systemctl stop ceph-mds@lab1
ceph fs rm cephfs --yes-i-really-mean-it
ceph osd pool delete fs_data fs_data --yes-i-really-really-mean-it
ceph osd pool delete fs_metadata fs_metadata --yes-i-really-really-mean-it# 開啟 metadata server
# 方便以后使用 cephfs
systemctl start ceph-mds@lab1

本文轉自掘金-ceph安裝配置

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/537300.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/537300.shtml
英文地址,請注明出處:http://en.pswp.cn/news/537300.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

推薦好用的JavaScript模塊

2019獨角獸企業重金招聘Python工程師標準>>> 譯者按&#xff1a; 作者將自己常用的JavaScript模塊分享給大家。 原文&#xff1a;? JavaScript Modules Worth Using ?譯者: Fundebug為了保證可讀性&#xff0c;本文采用意譯而非直譯。另外&#xff0c;本文版權歸原…

python直接連接oracle_python連接oracle

一&#xff1a;弄清版本&#xff0c;最重要&#xff01;&#xff01;&#xff01;首先安裝配置時&#xff0c;必須把握一個點&#xff0c;就是版本一致&#xff01;包括&#xff1a;系統版本&#xff0c;python版本&#xff0c;oracle客戶端的版本&#xff0c;cx_Oracle的版本&…

項目計劃不要拖,要趕緊排

目錄 案例 復盤 應對 總結 案例 業主:這個項目很急,趕緊干活吧,明天就安排人來干活。 于是,項目經理問公司要來資源,第二天就投入到項目里。 公司只有一個項目,這樣搞,項目能順利實施,業主滿意,公司老板感覺這種方法不錯哦。 當公司項目越來越多了,員工也越來…

select函數_SQL高級功能:窗口函數

一、窗口函數有什么用&#xff1f;在日常生活中&#xff0c;經常會遇到需要在每組內排名&#xff0c;比如下面的業務需求&#xff1a;排名問題&#xff1a;每個部門按業績來排名topN問題&#xff1a;找出每個部門排名前N的員工進行獎勵面對這類需求&#xff0c;就需要使用sql的…

客戶端C++與前端js交互

客戶端與前端交互 qwebchannel.js文件引入建立通信// c發送消息給js new QWebChannel(qt.webChannelTransport, function(channel){var content channel.objects.jsContext;// 建立通信后&#xff0c;客戶端通過調用 sMsg 方法來執行后面的回調函數&#xff0c;從而實現c與j…

python動態映射_sqlalchemy動態映射

似乎您可以直接使用屬性&#xff0c;而不是使用columnsdict。考慮以下設置&#xff1a;from sqlalchemy import Table, Column, Integer, Unicode, MetaData, create_enginefrom sqlalchemy.orm import mapper, create_sessionclass Word(object):passwordColumns [english, k…

linux外接顯示屏,關掉本身的筆記本電腦

https://blog.csdn.net/a2020883119/article/details/79561035 先用xrandr命令查看&#xff1a; eDP-1 connected eDP-1是連接著的 關掉&#xff1a;sudo xrandr --output eDP-1 --off 打開&#xff1a;sudo xrandr --output eDP-1 --auto

發揮項目“臨時性”威力,讓項目順利實施

所謂臨時性,就是要有明確的“開始”和“結束”。雖然大家都知道項目一定會有開始和結束的,但要更多地關注“明確“。 問題1:問商務(售前)或業主,這個項目什么時候結束? 答:商務或業主他們有時候也不知道,因為國內的項目大多數是提前開始交付,是一邊交付,一邊把里程…

上拉加載更多后臺數據_6-7【微信小程序全棧開發課程】記錄頁面(七)--分頁加載記錄數據...

現在是一次性加載所有的記錄數據&#xff0c;數據多的時候&#xff0c;會加載比較慢&#xff0c;所以我們改成分頁加載&#xff0c;一次最多加載15條數據每次拉倒底部都會自動加載下一頁的數據&#xff0c;知道所有的數據加載完成1、添加data變量編輯record.vue文件&#xff0c…

spring cloud eureka服務注冊和調用

SPRING INITIALIZR構建工程 spring boot 可通過SPRING INITIALIZR構建項目訪問SPRING INITIALIZR官網&#xff0c;填寫項目相關信息后&#xff0c;生成項目。將下載的項目解壓&#xff0c;打開idea&#xff0c;file-->new-->project from existing sources。import proje…

去從事有門檻有積累的工作

現在社會的IT工作&#xff0c;一時風光無限&#xff0c;但是積累性不足。跟老外比較起來&#xff0c;國內的IT算是民工級別的。再加上&#xff0c;前些年的培訓機構&#xff0c;不斷的輸出水平很次但很能加班的「人才」進入這個行業&#xff0c;「劣幣驅逐良幣」的效果下&#…

打印工資條怎么做到每個人都有表頭明細_朋友說:能不能用python,幫我寫一個“制作工資條”的自動化程序?...

本文說明今天和一個朋友吃飯&#xff0c;她說我經常使用Excel制作工資條&#xff0c;但是每個月都要做一遍&#xff0c;你能不能用python寫一個代碼&#xff0c;能夠自動化完成這個工作。這當然可以啦&#xff0c;就是這么牛逼&#xff01;我們先來看看原始數據是什么樣子的。那…

自定義按鈕 圖片標題位置隨意放置

自定義按鈕UIControl 寫在前面 #圖標和文字在一起是開發難免的問題&#xff0c;系統的按鈕默認是圖片居左的文字居右的&#xff0c; 且圖片和文字的距離不好調整&#xff0c;圖片的位置更是讓人頭疼&#xff0c; 故在閑暇之余封裝了一個控件。 復制代碼所用到知識的 # 1、蘋果系…

做優化的數據庫工程師請參考!CynosDB的計算層設計優化揭秘

本文由云社區發表本文作者&#xff1a;孫旭&#xff0c;騰訊數據庫開發工程師&#xff0c;9年數據庫內核開發經驗&#xff1b;熟悉數據庫查詢處理&#xff0c;并發控制&#xff0c;日志以及存儲系統&#xff1b;熟悉PostgreSQL&#xff08;Greenplum&#xff0c;PGXC等&#xf…

netty發送數據_看完這篇還不清楚Netty的內存管理,那我就哭了

說明在學習Netty的時候&#xff0c;ByteBuf隨處可見&#xff0c;但是如何高效分配ByteBuf還是很復雜的&#xff0c;Netty的池化內存分配這塊還是比較難的&#xff0c;很多人學習過&#xff0c;看過但是還是云里霧里的&#xff0c;本篇文章就是主要來講解&#xff1a;Netty分配池…

數字化改革體系架構“152”兩次迭代升級為“1612”

數字化改革體系架構已經完成兩次迭代&#xff0c;152-1512-1612。 2021年&#xff0c;浙江在全國率先啟動一項關系全局、影響深遠、制勝未來的重大集成改革——數字化改革&#xff0c;并確定為全面深化改革的總抓手。 2021年2月18日&#xff0c;數字化改革大會“152”工作體系…

微軟希望每個人有自己的人工智能朋友

微軟正在和其他公司那樣投資和研發人工智能技術&#xff0c;同時微軟也希望人工智能技術能夠深入我們的日常生活。 為此微軟正在申請新的專利技術希望每個人在社交網絡上都有自己的人工智能朋友可以隨時隨地的溝通交流。 實際上該專利屬于已經實踐的內容再來申請專利技術的&…

python 40位的數減個位數_Python數據分析入門教程(五):數據運算

作者 | CDA數據分析師進行到這一步就可以算是開始正式的烹飪了&#xff0c;在這部分之前的數據操作部分我們列舉了一些不同維度的分析指標&#xff0c;這一章我們主要看看這些指標都是怎么計算出來的。一、算術運算算術運算就是基本的加減乘除&#xff0c;在Excel或者Python中數…

數字化改革“152”體系詳解

架構圖 “1” 即一體化智能化公共數據平臺&#xff08;平臺大腦&#xff09;&#xff0c;按照“統一規劃、統一支撐、統一架構、統一平臺、統一標準、統一建設、統一管理、統一運維"的要求&#xff0c;建設省市縣三級公共數據平臺&#xff0c;疊加三級“大腦功能&#xf…

數字化改革“141”體系

縣級以上是“152”大框架&#xff0c;縣以下是“141”體系。 141體系是&#xff1a;縣級社會治理中心、鄉鎮&#xff08;街道&#xff09;基層治理“四個平臺”、村社網格。 “1” 第一個“1”指縣級社會治理中心。 “4” 第二個“4”指鄉鎮&#xff08;街道&#xff09;基…