centOS7 適配 ceph LUMINOUS 版本,安裝過程當中下載了jewel版本。。。node
管理節點:ceph_adminpython
一、一個雙核CPU,2G內存,NAT鏈接:192.168.184.181,其中在/etc/resolv.conf文件中添加 linux
Nameserver 8.8.8.8web
nameserver 192.168.1.109swift
二、20G硬盤分區:vim
Kernel:3.10.0-693centos
安裝虛擬機時設置好主機名。以後的操做中用虛擬機又新增了兩個硬盤當作osd瀏覽器
sudo yum install -y https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm服務器
安裝成功會顯示成功和已安裝的EPEL版本網絡
sudo vim /etc/yum.repos.d/ceph.repo
如下爲添加的文件內容
[ceph-noarch] name=Ceph noarch packages baseurl=https://download.ceph.com/rpm/el7/noarch enabled=1 gpgcheck=1 type=rpm-md gpgkey=https://download.ceph.com/keys/release.asc |
直接執行安裝最新穩定版
如需指定具體版本,在baseurl中rpm後添加「-版本名」如:
baseurl=https://download.ceph.com/rpm-luminous/el7/noarch
sudo yum update && sudo yum install ceph-deploy
會先檢查須要安裝和升級的組件,檢查完畢顯示清單並詢問是否繼續:
輸入:y 回車
以後有一個警告,沒有處理。
而後開始安裝,期間會出現下載失敗,而後會自動嘗試其餘鏡像:
此處緣由是網速太慢。。。
下載完成問是否繼續:
庫包更新完成後開始安裝ceph-deploy:
期間詢問繼續都yes;
最後安裝成功:
sudo yum install ntp ntpdate ntp-doc
sudo yum install openssh-server
3.一、若是安裝時沒有設置主機名,此時修改全部節點主機名hostname(此步驟只是用於區分節點,方便管理)
hostnamectl set-hostname {hostname}
管理節點爲:ceph_admin
集羣節點都爲:ceph_node
查看主機名:hostnamectl status
/etc/hostname 會自動更新
而後手動更新/etc/hosts
3.二、給全部集羣節點添加ceph用戶:ceph(測試用,實際部署請使用其餘名字)
sudo useradd -d /home/{username} -m {username}
useradd -d /home/ceph -m ceph
passwd {輸入密碼}
3.三、確保各集羣節點上新建立的用戶都有 sudo 權限。
echo "{username} ALL = (root) NOPASSWD:ALL" | sudo tee /etc/sudoers.d/{username}
echo "ceph ALL = (root) NOPASSWD:ALL" | sudo tee /etc/sudoers.d/ceph
sudo chmod 0440 /etc/sudoers.d/{username}
sudo chmod 0440 /etc/sudoers.d/ceph
4.一、不使用sudo或者root用戶生成ssh密鑰對:
在ceph用戶下執行
ssh-keygen
提示 「Enter passphrase」 時,直接回車,口令即爲空:
4.二、把公鑰拷貝到各集羣節點,把下列命令中的 {username} 替換成前面建立部署 Ceph 的用戶裏的用戶名。
ssh-copy-id ceph@ceph_admin
修改 ceph-deploy 管理節點上的 ~/.ssh/config 文件,這樣 ceph-deploy 就能用你所建的 用 戶 名 登 錄 Ceph 節點了,而無需每次執行 ceph-deploy 都要指定 --username {username} 。
sudo vi ~/.ssh/config
添加如下內容:
firewall
監視器:
sudo firewall-cmd --zone=public --add-service=ceph-mon --permanent
存儲器和元數據:
sudo firewall-cmd --zone=public --add-service=ceph --permanent
當即生效:
sudo firewall-cmd --reload
iptables
要開放 Ceph Monitors 使用的 6789 端口和 OSD 使用的 6800:7300 端口範圍:
sudo iptables -A INPUT -i ens33 -p tcp -s 192.168.184.181/255.255.252.0 --dport 6789 -j ACCEPT
回車後沒有反應。。。
重啓生效:
/sbin/service iptables save
執行報以下錯誤:
The service command supports only basic LSB actions (start, stop, restart, try-restart, reload, force-reload, status). For other actions, please try to use systemctl.
解決方法:
一、先執行以下命令:
systemctl stop firewalld
systemctl mask firewalld
二、安裝iptables services
yum install iptables-services
三、設置開機啓動
systemctl enable iptables
四、重啓iptables service
systemctl restart iptables
最後執行
/sbin/service iptables save
sudo setenforce 0
9.一、安裝優先級/首選項包
sudo yum install yum-plugin-priorities
9.二、配置使用 Yum Priorities
使用文本編輯器打開 Yum Priorities 配置文件,確保配置文件中包含下面的行
編輯 CentOS-Base 源配置文件 /etc/yum.repos.d/CentOS-Base.repo
1. 將priority=1分別添加到 [base], [updates]和 [extras]這幾個源記錄的後面
2. 將priority=2添加到 [centosplus] 源記錄的後面
注意:優先級由 1 ~ 99 的 99 個數表示,1 的優先級最高。優先級小的源即便有某軟件的較新版本,若是優先級高的源中沒有,在啓用該插件的狀況下,系統也沒法安裝/升級到該較新版本。圖形界面的 YUM 工具通常默認就已經包含了優先級插件。
mkdir my-cluster
cd my-cluster
ceph-deploy 會把文件輸出到當前目錄,因此請確保在此目錄下執行 ceph-deploy全部命令 。
2.一、建立集羣監視者
使用自身節點爲監視節點:
ceph-deploy new ceph_admin
2.二、副本。把 Ceph 配置文件裏的默認副本數從 3 改爲 2 ,這樣只有兩個 OSD 也能夠達到 active + clean 狀態。
在 [global] 段加入:osd pool default size = 2
2.三、網卡
在 [global] 段加入:public network = {ip-address}/{netmask}
vi ceph.conf
2.四、安裝 Ceph
ceph-deploy install ceph_admin
若是報錯:
把/etc/yum.repos.d/下ceph.repo改成ceph-deploy.repo便可。
再次安裝ceph:
ceph-deploy install ceph_admin
2.五、初始化監視器monitor
ceph-deploy mon create-initial
若是報錯:
執行:ceph-deploy --overwrite-conf mon create-initial
3.一、確保你對 ceph.client.admin.keyring 有正確的操做權限。
sudo chmod +r /etc/ceph/ceph.client.admin.keyring
執行無返回。。。
3.二、檢查集羣健康:
ssh ceph_admin sudo ceph health
若是報錯:
chmod 600 /home/ceph/.ssh/config
再次執行:ssh ceph_admin sudo ceph health
更完整的:ssh ceph_admin sudo ceph -s
此處由於尚未加入osd,因此health_err所報問題正常。
4.一、使用虛擬機爲系統再添加一塊20G硬盤和一塊10G的硬盤
使用分區命令fdisk爲這設備(/dev/sdb和/dev/sdc)分區成sdb1和sdb5和sdc1
(詳細步驟請百度)
初始化文件格式爲xfs
mkfs.xfs /dev/sdb1
mkfs.xfs /dev/sdb5
mkfs.xfs /dev/sdc1
4.二、建立osd
ceph-deploy osd create ceph_admin:/dev/sdb1 ceph_admin:/dev/sdb5 ceph-admin:/dev/sdc1
而後須要激活(文檔上說使用create命令不須要再激活,但健康檢查發現仍然沒有osd,再次激活後則顯示有osd了):
ceph-deploy osd activate ceph_admin:/dev/sdb1 ceph_admin:/dev/sdb5 ceph_admin:/dev/sdc1
4.三、健康檢查:
ceph health
緣由是OSD的hash規則與本部署不符。。。(本次部署只有一個主機。。。)
ceph osd crush rule dump
注意其 type 爲 「host」,也就是說 CRUSH 不會爲一個 PG 選擇在同一個 host 上的兩個 OSD。而個人環境中,目前只有 ceph_admin上的三個 OSD 是in 的,所以,CRUSH 沒法爲全部的 PG 分配不一樣osd
將 CRUSH ruleset 的 type 由 「host」 修改成 「osd」,使得 CRUSH 爲 PG 選擇 OSD 時再也不侷限於不一樣的 host。
ceph osd getcrushmap -o crushmap_compiled_file
crushtool -d crushmap_compiled_file -o crushmap_decompiled_file
vi crushmap_decompiled_file
再次健康檢查:
ceph-deploy install --rgw ceph_admin
ceph-deploy rgw create ceph_admin
3.一、在ceph.conf中glabal部分以後添加另外一部分
[client.rgw.client-node] rgw_frontends = "civetweb port=80" |
確保在rgw_frontends鍵/值對的port=<port-number>之間不留空白。
3.二、重起生效
sudo systemctl restart ceph-radosgw@rgw.ceph_admin.service
此處具體名稱以具體部署爲準。。。
3.四、防火牆打開端口
firewall
sudo firewall-cmd --list-all
sudo firewall-cmd --zone=public --add-port 80/tcp --permanent
sudo firewall-cmd --reload
Iptables
修改配置文件
vi /etc/sysconfig/iptables
添加:
-A INPUT -p tcp -m state --state NEW -m tcp --dport 80 -j ACCEPT |
開放80端口
3.五、測試:
在瀏覽器輸入主機IP(若是對象網關單獨安裝,輸入網關節點的IP)
返回:
完成。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。
一、建立cephgw存儲池
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
二、生成網關祕鑰文件 ceph.client.radosgw.keyring
ceph auth get client.rgw.ceph_admin > /etc/ceph/ceph.client.radosgw.keyring
而後修改ceph.conf
在[client.rgw.ceph_admin]部分添加:
host = ceph_admin keyring = /etc/ceph/ceph.client.radosgw.keyring |
而後重啓服務
radosgw -c /etc/ceph/ceph.conf -n client.rgw.ceph_admin
sudo systemctl restart ceph-radosgw@rgw.ceph_admin.service
三、生成網關訪問用戶(s3用戶和swift子用戶名字保持一致):
s3用戶cephtest
radosgw-admin user create --uid="cephtest" --display-name="cephtest"
確保access_key或secret_key中沒有轉譯符號:「\」,有的話從新生成用戶。
swift用戶
先生成用戶:
再生成用戶祕鑰:
四、訪問驗證:
4.一、測試s3
須要編寫並運行Python測試腳原本驗證S3訪問。 S3訪問測試腳本將鏈接到radosgw,建立一個新的存儲桶並列出全部的存儲桶。 aws_access_key_id和aws_secret_access_key的值取自radosgw-admin命令返回的access_key和secret_key的值。
您將須要安裝python-boto包:
sudo yum install python-boto
建立Python腳本:
vi s3test.py
import boto.s3.connection access_key = '25EN2DT7NA1K6YXXFYEC' bucket = conn.create_bucket('my-new-bucket') |
記得更改host和port。。。
運行腳本:
python s3test.py
s3測試完成。
4.二、測試swift
安裝swift命令行客戶端:
sudo yum install python-setuptools
sudo easy_install pip
sudo pip install --upgrade setuptools
sudo pip install --upgrade python-swiftclient
執行測試:
swift -A http://{IP ADDRESS}:{port}/auth/1.0 -U testuser:swift -K '{swift_secret_key}' list
將{IP ADDRESS}替換爲網關服務器的公有IP地址,將{swift_secret_key}替換爲爲swift用戶執行的radosgw-admin key create命令輸出的值。 將{port}替換爲使用Civetweb所使用的端口號(例如,7480是默認值)。 若是不更換端口,則默認爲端口80。
返回:
swift測試完成。。。
最後吐槽下,server的中文都成敏感詞彙了。。。osc的敏感檢索配置要改改。。。