最近為客戶內(nèi)網(wǎng)環(huán)境部署了Openstack(版本Ocata),Ocata本身屬于過渡產(chǎn)品,官方文檔本身存在一些問題,在此總結(jié),希望可以幫助到有需要的朋友。
一、環(huán)境
部署Openstack的服務(wù)器官方推薦兩臺以上,主要是創(chuàng)建的實(shí)例(Instances)實(shí)際上占用的是計算節(jié)點(diǎn)的資源,因此你的計算節(jié)點(diǎn)所擁有的VCPU、Memory,將決定你所創(chuàng)建的實(shí)例的最大Vcpu數(shù)和內(nèi)存,或許是基于此種原因考慮,官方建議控制節(jié)點(diǎn)和計算節(jié)點(diǎn)分離,我此次部署是基于物理服務(wù)器,主要是用于測試環(huán)境,因此規(guī)劃為單控制節(jié)點(diǎn)和兩個計算節(jié)點(diǎn),本系列會涉及到的部署組件為keystone,glance,nova,neutron,cinder,dashboard,aws ec2。Cinder塊存儲部署在計算節(jié)點(diǎn)上,Ceph有部署但不是我負(fù)責(zé),所以具體情況我不是很清楚,日后有了解的話再更新。
我這次是在三臺CentOS 7的服務(wù)器進(jìn)行部署。由于是測試環(huán)境,我們的服務(wù)器關(guān)閉了selinux和firewalld(就我個人理解來看,Openstack如果是部署在內(nèi)網(wǎng)的話,firewalld其實(shí)是開關(guān)無所謂的,涉及到的端口比較多,可能會麻煩一些,如果你的Openstack想創(chuàng)建的實(shí)例能夠從公網(wǎng)連接進(jìn)來,那你需要開啟firewalld并且擁有公網(wǎng)IP資源池,根據(jù)實(shí)際需要設(shè)置開放的端口)
1.關(guān)閉selinux和firewalld
#vi /etc/selinux/config
selinux=disabled
#systemctl stop firewalld
#systemctl disable firewalld```
(selinux重啟后生效,也可以setenforce 0設(shè)置臨時關(guān)閉)
2.修改主機(jī)名(hostname)
hostnamectl set-hostname controller/compute(重新登錄生效)
將其添加進(jìn)/etc/hosts文件
格式如:
10.141.128.11 controller
10.141.128.12 computer```
(這里比較基礎(chǔ),新手注意不要搞反)
3.網(wǎng)絡(luò)
按照官方需要兩塊網(wǎng)卡,分別是提供者網(wǎng)絡(luò)和管理網(wǎng)絡(luò),不過實(shí)際上每臺服務(wù)器上只要有一塊網(wǎng)卡在集群數(shù)量不大的情況下,也是完全沒問題的,如果你的Openstack集群規(guī)模比較大的時候,就要分開了,不然網(wǎng)絡(luò)會十分擁擠。所以您現(xiàn)在需要知道每一臺服務(wù)器的IP地址,以及設(shè)置IP的網(wǎng)卡的名字。
# ip a```
4.配置網(wǎng)絡(luò)時間服務(wù)(NTP)
這步看上去不是很重要,但如果您是在VMware虛擬機(jī)上創(chuàng)建的話這步將是非常重要的。這里可以將Controller作為NTP服務(wù)器為computer同步時間。
yum install chrony
vim /etc/chrony.conf
server controller iburst
allow 0.0.0.0(允許同步的IP段,我這里全部允許了,compute上不需要設(shè)置這個)
systemctl enable chronyd.service
systemctl start chronyd.service
驗證:
chronyc sources
5.安裝Openstack包
這步需要注意的是如果你的系統(tǒng)是RHEL的話,YUM是需要過RED HAT認(rèn)證的,比較麻煩(我就不說我不太擅長這個了),我的方法是1.更換yum為CentOS的yum源,當(dāng)然,這步需要你把RHEL的yum卸載干凈重裝,比較麻煩,也容易出問題。2.換CentOS的系統(tǒng)。
yum install centos-release-openstack-ocata
如果你是新裝的系統(tǒng),您可以進(jìn)行更新,如果您之前有安裝其他服務(wù),為了您的系統(tǒng)穩(wěn)定,不建議使用upgrade操作。
yum upgrade
yum install python-openstackclient
yum install openstack-selinux
6.安裝數(shù)據(jù)庫
CentOS默認(rèn)使用mariadb,我個人感覺您完全可以使用源碼安裝的mysql,因為我的實(shí)際使用感覺,yum安裝的mariadb性能實(shí)在不敢恭維,為我算是挖了無數(shù)個坑。在以下是相關(guān)鏈接,您僅需要參考MySQL的源碼安裝部分即可。
***
######LNMP環(huán)境的源碼搭建(CentOS 7) http://www.itdecent.cn/p/4699bcb04633
***
本文按照官方的mariadb來
yum install mariadb mariadb-server python2-PyMySQL
vim /etc/my.cnf.d/openstack.cnf
[mysqld]
bind-address = 10.0.0.11
default-storage-engine = innodb
innodb_file_per_table = on
max_connections = 4096
collation-server = utf8_general_ci
character-set-server = utf8
這里的max_connections最大連接數(shù)是不一定能生效的,我搭建的平臺好幾次因為數(shù)據(jù)庫連接數(shù)過多掛掉了,而實(shí)際上才連了200多個,建議檢查一下。我會在本系列第二篇附錄解決辦法。
systemctl enable mariadb.service
systemctl start mariadb.service
為mariadb配置用戶密碼(根據(jù)提示輸入yes或者要設(shè)置的密碼或者直接回車)
mysql_secure_installation
7.消息隊列
Openstack官方推薦使用消息隊列服務(wù)為RabbitMQ
yum install rabbitmq-server
systemctl enable rabbitmq-server.service
systemctl start rabbitmq-server.service
添加一個用戶和密碼
rabbitmqctl add_user openstack RABBIT_PASS
設(shè)置用戶權(quán)限
rabbitmqctl set_permissions openstack "." "." ".*"
8.緩存服務(wù)(Memcache)
yum install memcached python-memcached
vim /etc/sysconfig/memcache
OPTIONS="-l 127.0.0.1,::1,controller"
systemctl enable memcached.service
systemctl start memcached.service