前言
此文章基于已部署過(guò)單節(jié)點(diǎn)環(huán)境包颁,有一定的基礎(chǔ)概念瞻想。
單節(jié)點(diǎn)部署參考:http://www.reibang.com/p/73598a5cd00b
全程使用root權(quán)限操作。
已測(cè)試queens版本娩嚼。3節(jié)點(diǎn)蘑险,其中2個(gè)節(jié)點(diǎn)只部署存儲(chǔ)和網(wǎng)絡(luò)。存儲(chǔ)后端使用ceph岳悟。
環(huán)境準(zhǔn)備
整體介紹
基于vmware虛擬機(jī)搭建平臺(tái)佃迄。
3臺(tái)虛擬機(jī)。分別為node01(選為部署節(jié)點(diǎn))贵少,node02呵俏,node03。
由于性能問(wèn)題滔灶,node02和node03只作為存儲(chǔ)和網(wǎng)絡(luò)節(jié)點(diǎn)普碎。
鏡像均使用CentOS-7-x86_64-Minimal-1708.iso。
- node01:
- 1張nat網(wǎng)卡(ens33):本機(jī)網(wǎng)卡
- 1張nat網(wǎng)卡(ens34):openstack彈性ip使用的外網(wǎng)網(wǎng)卡
- 1張host-only網(wǎng)卡(ens35):openstack管理網(wǎng)網(wǎng)卡
- 額外添加一塊50G硬盤(pán)作為ceph存儲(chǔ)
- 6G內(nèi)存录平,2核
- node02:
- 1張nat網(wǎng)卡(ens33):本機(jī)網(wǎng)卡
- 1張nat網(wǎng)卡(ens34):openstack彈性ip使用的外網(wǎng)網(wǎng)卡
- 1張host-only網(wǎng)卡(ens35):openstack管理網(wǎng)網(wǎng)卡
- 額外添加一塊50G硬盤(pán)作為ceph存儲(chǔ)
- 2G內(nèi)存随常,1核
- node03:
- 1張nat網(wǎng)卡(ens33):本機(jī)網(wǎng)卡
- 1張nat網(wǎng)卡(ens34):openstack彈性ip使用的外網(wǎng)網(wǎng)卡
- 1張host-only網(wǎng)卡(ens35):openstack管理網(wǎng)網(wǎng)卡
- 額外添加一塊50G硬盤(pán)作為ceph存儲(chǔ)
- 2G內(nèi)存潜沦,1核
基礎(chǔ)環(huán)境配置
1. 網(wǎng)卡配置
參考《前言》中的單節(jié)點(diǎn)部署文檔
- node01:
- ens33: 10.10.10.80
- ens34: 不配置ip
- ens35: 192.168.10.80
- node02:
- ens33: 10.10.10.90
- ens34: 不配置ip
- ens35: 192.168.10.90
- node03:
- ens33: 10.10.10.95
- ens34: 不配置ip
- ens35: 192.168.10.95
2. 加速源以及防火墻配置
參考《前言》中的單節(jié)點(diǎn)部署文檔
所有節(jié)點(diǎn)關(guān)閉firewalld
systemctl disable firewalld
systemctl stop firewalld
3個(gè)節(jié)點(diǎn)均配置加速源以及iptables,此文章不配置私有倉(cāng)庫(kù)绪氛。
3. 主機(jī)解析配置
vim /etc/hosts
192.168.10.80 node01
192.168.10.90 node02
192.168.10.95 node03
并且在每個(gè)節(jié)點(diǎn)上分別修改hostname唆鸡,ceph將使用此命令得結(jié)果。
node01 節(jié)點(diǎn)上執(zhí)行:hostname node01
node02 節(jié)點(diǎn)上執(zhí)行:hostname node02
node03 節(jié)點(diǎn)上執(zhí)行:hostname node03
4. 基礎(chǔ)軟件安裝(3節(jié)點(diǎn)均需執(zhí)行)
單節(jié)點(diǎn)環(huán)境當(dāng)中并沒(méi)有手動(dòng)安裝docker枣察,自動(dòng)安裝的版本很老争占。此時(shí)手動(dòng)安裝較新版本的docker(18.09)。
安裝docker:
yum install -y yum-utils
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
yum makecache fast
yum install docker-ce-18.09.3 -y
systemctl enable docker
配置docker:
vi /usr/lib/systemd/system/docker.service
在[Service]中添加:
MountFlags=shared
重啟docker:
systemctl daemon-reload
systemctl restart docker
安裝其它基礎(chǔ)軟件
yum install -y epel-release
yum install -y python-pip
pip install -U pip
yum install -y python-devel libffi-devel gcc openssl-devel libselinux-python
yum install -y ansible
pip install -U ansible
編輯 ansible配置
vim /etc/ansible/ansible.cfg
[defaults]
host_key_checking=False
pipelining=True
forks=100
安裝kolla-ansible
pip install --ignore-installed PyYAML
pip install kolla-ansible==7.0.0
cp -r /usr/share/kolla-ansible/etc_examples/kolla /etc/
cp /usr/share/kolla-ansible/ansible/inventory/* /opt/
5. 配置免密登陸
在node01上執(zhí)行如下命令:
- 生成公私鑰
ssh-keygen
- 復(fù)制部署節(jié)點(diǎn)的公鑰到其它節(jié)點(diǎn)上
如下命令需輸入密碼序目,注意用戶(hù)使用的是root
ssh-copy-id -i /root/.ssh/id_rsa.pub root@node02
ssh-copy-id -i /root/.ssh/id_rsa.pub root@node03
- 測(cè)試ssh
ssh node02
ssh node03
6. 在node01上執(zhí)行臂痕,配置globals.yml
vim /etc/kolla/globals.yml
kolla_base_distro: "centos" # 基礎(chǔ)容器鏡像版本
kolla_install_type: "source" # 源碼安裝方式安裝組件
openstack_release: "queens" # openstack版本,選擇你需要的
network_interface: "ens35" # 管理網(wǎng)使用得網(wǎng)卡
neutron_external_interface: "ens34" # public網(wǎng)使用得網(wǎng)卡
kolla_internal_vip_address: "192.168.10.81" # ha或者keepalived代理的服務(wù)內(nèi)部地址猿涨。
kolla_external_vip_address: "10.10.10.81" # ha或者keepalived代理的服務(wù)外部地址握童。
enable_cinder: "yes"
enable_horizon: "yes"
# 以下為ceph配置
enable_ceph: "yes"
enable_ceph_rgw: "yes"
enable_ceph_rgw_keystone: "yes"
#ceph_target_max_bytes: "" # 表示每個(gè)cache pool最大大小。注意叛赚,如果配置了cache盤(pán)澡绩,此項(xiàng)不配置會(huì)導(dǎo)致cache不會(huì)自動(dòng)清空。cache_osd_size*cache_osd_num/replicated/cache_pool_num
#ceph_target_max_objects: "" # 表示cache pool最大的object數(shù)量
ceph_pool_pg_num: 32 # Total PGs = ((Total_number_of_OSD * 100) / pool_count / replicated . 當(dāng)前環(huán)境計(jì)算結(jié)果為32
ceph_pool_pgp_num: 32
glance_backend_ceph: "yes"
glance_backend_file: "no"
cinder_backend_ceph: "yes"
cinder_backup_driver: "ceph"
nova_backend_ceph: "yes"
7. 在node01上執(zhí)行俺附,配置mutinode
這里直接從all-in-one復(fù)制比較方便:
cp /opt/all-in-one /opt/node
替換掉localhost:
sed -i "/^localhost/c node01" /opt/node
修改配置文件
vim /opt/node
將 node02 node03 添加到[network]和[storage]下肥卡。意思為 node02 node03 作為network節(jié)點(diǎn)和storage節(jié)點(diǎn)
8. ceph硬盤(pán)配置
3個(gè)節(jié)點(diǎn)上均有一塊50G得硬盤(pán),在當(dāng)前環(huán)境中為/dev/sdb
在node01上執(zhí)行:
parted /dev/sdb -s -- mklabel gpt mkpart KOLLA_CEPH_OSD_BOOTSTRAP 1 -1
在node02上執(zhí)行:
parted /dev/sdb -s -- mklabel gpt mkpart KOLLA_CEPH_OSD_BOOTSTRAP 1 -1
在node03上執(zhí)行:
parted /dev/sdb -s -- mklabel gpt mkpart KOLLA_CEPH_OSD_BOOTSTRAP 1 -1
9. 在node01上執(zhí)行事镣,ceph配置文件
目前安裝kolla-ansible默認(rèn)使用bluestore得ceph步鉴。這里演示使用filestore。需修改文件
vim /usr/share/kolla-ansible/ansible/group_vars/all.yml
修改如下屬性:
ceph_osd_store_type: "filestore"
開(kāi)始部署
kolla-ansible -i /opt/node bootstrap-servers
kolla-ansible -i /opt/node prechecks
kolla-ansible -i /opt/node deploy
結(jié)束部署
查看ceph狀態(tài)
docker exec ceph_mon ceph -s
基本使用(可參考單節(jié)點(diǎn))
pip install --ignore-installed ipaddress
pip install -U decorator
pip install python-openstackclient python-glanceclient python-neutronclient
kolla-ansible post-deploy
. /etc/kolla/admin-openrc.sh
openstack service list --long
至此部署結(jié)束璃哟。
openstack網(wǎng)絡(luò)介紹
http://www.reibang.com/writer#/notebooks/31342015/notes/43532637/preview
ceph介紹
ceph基于Reliable Autonomic Distributed Object Store (RADOS)氛琢。RADOS在存儲(chǔ)群集中分配對(duì)象并復(fù)制對(duì)象以實(shí)現(xiàn)容錯(cuò)。
RADOS包含以下主要組件:
- ceph-osd: Object Storage Device (OSD) Daemon随闪,對(duì)象存儲(chǔ)設(shè)備服務(wù)艺沼。ceph-osd是Ceph分布式文件系統(tǒng)的對(duì)象存儲(chǔ)守護(hù)進(jìn)程。 它負(fù)責(zé)將對(duì)象存儲(chǔ)在本地文件系統(tǒng)上蕴掏,并通過(guò)網(wǎng)絡(luò)提供對(duì)它們的訪問(wèn)障般。必須在群集中的每個(gè)服務(wù)器上運(yùn)行此守護(hù)程序。 每個(gè)OSD都可以關(guān)聯(lián)硬盤(pán)驅(qū)動(dòng)器盛杰。
- ceph-mds: Meta-Data Server (MDS)挽荡,元數(shù)據(jù)服務(wù)。 MDS在Ceph客戶(hù)端的對(duì)象之上構(gòu)建POSIX文件系統(tǒng)即供。不使用Ceph文件系統(tǒng)定拟,則不需要元數(shù)據(jù)服務(wù)器。
- ceph-mon: Monitor (MON),監(jiān)控服務(wù)青自。輕量級(jí)守護(hù)程序株依,用于處理與外部應(yīng)用程序和客戶(hù)端的所有通信。 它還為Ceph / RADOS集群中的分布式?jīng)Q策提供了共識(shí)延窜。 例如恋腕,當(dāng)您在客戶(hù)端上安裝Ceph共享時(shí),您指向MON服務(wù)器的地址逆瑞。 它檢查數(shù)據(jù)的狀態(tài)和一致性荠藤。 在理想的設(shè)置中,您必須在不同的服務(wù)器上運(yùn)行至少三個(gè)ceph-mon守護(hù)進(jìn)程获高。
其它組件
- ceph-mgr: Ceph Manager Daemon(ceph-mgr)哈肖,管理服務(wù)。與監(jiān)視器守護(hù)程序一起運(yùn)行念秧,為外部監(jiān)視和管理系統(tǒng)提供額外的監(jiān)視和接口淤井。
- ceph-nfs: 可以使用NFS-Ganesha NFS Server通過(guò)NFS協(xié)議導(dǎo)出CephFS命名空間。NFS-Ganesha提供了一個(gè)文件系統(tǒng)抽象層(FSAL)來(lái)插入不同的存儲(chǔ)后端摊趾。Ceph對(duì)象網(wǎng)關(guān)可以配置為在嵌入NFS-Ganesha NFS Server時(shí)提供基于文件的訪問(wèn)币狠。
- ceph-rgw: Ceph Object Gateway,對(duì)象網(wǎng)關(guān)服務(wù)严就。Ceph對(duì)象存儲(chǔ)使用Ceph對(duì)象網(wǎng)關(guān)守護(hù)進(jìn)程(radosgw),它是一個(gè)用于與Ceph存儲(chǔ)集群交互的HTTP服務(wù)器器罐。 由于它提供與OpenStack Swift和Amazon S3兼容的接口梢为,因此Ceph對(duì)象網(wǎng)關(guān)具有自己的用戶(hù)管理。 Ceph對(duì)象網(wǎng)關(guān)可以將數(shù)據(jù)存儲(chǔ)在用于存儲(chǔ)來(lái)自Ceph文件系統(tǒng)客戶(hù)端或Ceph塊設(shè)備客戶(hù)端的數(shù)據(jù)的相同Ceph存儲(chǔ)集群中轰坊。 S3和Swift API共享一個(gè)公共命名空間铸董,因此您可以使用一個(gè)API編寫(xiě)數(shù)據(jù)并使用另一個(gè)API檢索它。
常見(jiàn)問(wèn)題及解決
參考:
http://docs.ceph.com/docs/master/rados/troubleshooting/troubleshooting-pg/
1.
Fetching Ceph Keyrings … No JSON Object Could be Decoded
此類(lèi)問(wèn)題為刪除環(huán)境時(shí)未刪除干凈肴沫,所有節(jié)點(diǎn)上使用docker volume ls
查看是否有未清除干凈得卷粟害。手動(dòng)刪除。
參考:
https://docs.oracle.com/cd/E78305_01/E78304/html/troubleshoot-deploy-ceph.html
2.
pg_num 128 size 3 would mean 768 total pgs
類(lèi)似問(wèn)題為pg 數(shù)量設(shè)置不正確颤芬,根據(jù)實(shí)際情況調(diào)整大小悲幅。但不一定每次報(bào)這個(gè)問(wèn)題都是數(shù)量不正確導(dǎo)致得。
3.
若一直無(wú)法定位問(wèn)題站蝠,可去容器中查看日志汰具。
比如,日志一直報(bào)無(wú)法連接之類(lèi)得菱魔,檢查防火墻(iptables留荔,firewalld)
4.
在反復(fù)重裝得情況下,可能觸發(fā)ceph無(wú)法mount磁盤(pán)得問(wèn)題澜倦。在vmware中刪掉此磁盤(pán)聚蝶,重新創(chuàng)建即可杰妓。
經(jīng)測(cè)試,正確得重裝姿勢(shì)為:
kolla-ansible -i /opt/node destroy --yes-i-really-really-mean-it
等待成功后碘勉,再重新命名磁盤(pán)(前面得parted命令)
常用命令及解釋
ceph -s # 查看整體狀態(tài)
ceph osd tree # 查看osd結(jié)構(gòu)巷挥,通常看是否與host對(duì)應(yīng)恰聘。
ceph osd lspools # 查看池信息
ceph health detail # 查看健康詳情
ceph osd dump # 查看osd詳情
ceph pg dump # 查看pg詳情
ceph osd crush xxxx # 此類(lèi)命令為ceph策略相關(guān)句各。建議了解
擴(kuò)展知識(shí)
- osd(filestore后端)相關(guān)
在同一個(gè)主機(jī)有多個(gè)osd磁盤(pán)時(shí),磁盤(pán)標(biāo)簽需添加后綴區(qū)分晴叨。比如2個(gè)osd:
parted /dev/sdb -s -- mklabel gpt mkpart KOLLA_CEPH_OSD_BOOTSTRAP_001 1 -1
parted /dev/sdc -s -- mklabel gpt mkpart KOLLA_CEPH_OSD_BOOTSTRAP_002 1 -1
每個(gè)osd盤(pán)都會(huì)有對(duì)應(yīng)一個(gè)osd得容器凿宾。
其次,osd還可以有日志盤(pán)兼蕊,緩存盤(pán)初厚,這兩個(gè)均建議為固態(tài)盤(pán)。