記錄大佬的博客全文轉載於https://www.voidking.com/dev-ubuntu16-manual-openstack-env/
前言
《Ubuntu16安裝OpenStack》一文中,使用devstack在物理機上安裝了OpenStack的Queens版本。但是,在后來的《OpenStack添加鏡像》實驗中,遇到了很多奇怪的問題,遂決定重裝OpenStack。
本次安裝,計划采用一步步手動安裝的方式,在兩個節點上,最小安裝OpenStack的Queens版本。主要參考OpenStack Queens Installation Guides,首先配置環境,然后安裝必要的組件,包括keystone、glance、nova、neutron。再之后,選擇安裝horizon、cinder和swift。
本文,就記錄一下配置環境的過程。
准備
本次安裝使用兩台VirtualBox虛擬機,一個控制節點和一個計算節點,系統均為ubuntu-16.04.4-server-amd64。控制節點1核4G內存40G存儲,計算節點1核2G內存40G存儲。
這兩台虛擬機,都有三塊網卡。eth0負責主機間相互通信,eth1負責上網,eth2負責neutron網絡服務。兩張eth0網卡在同一網絡,兩張eth2網卡在同一網絡。
IP配置
參考VirtualBox下CentOS7和Ubuntu16.04網絡配置,修改網卡名,然后配置靜態IP。控制節點eth0配置為192.168.56.110,計算節點eth0配置為192.168.56.111。
主機名配置
參考VirtualBox下CentOS7和Ubuntu16.04網絡配置,配置控制節點主機名為controller,計算節點主機名為compute。
然后編輯/etc/hosts,添加:
1 |
192.168.56.110 controller |
設置sudo免密
編輯sudoers,vim /etc/sudoers
在最后添加一行:
1 |
test ALL = NOPASSWD: ALL |
更換源列表
修改/etc/apt/sources.list,參考Ubuntu更換源列表,更換為Ubuntu官方中國的源列表。
最后重啟主機,sudo reboot
。
root用戶
為了避免權限問題,建議切換到root用戶進行操作(否則要加很多sudo)。sudo -i
環境
在安裝openstack之前,需要先安裝好必須的環境,包括:
- Security
- Host networking
- Network Time Protocol (NTP)
- OpenStack packages
- SQL database
- Message queue
- Memcached
- Etcd
安裝方法參考Environment。
Security
OpenStack服務支持各種安全方法,包括密碼,策略和加密。
本節沒有什么安裝操作,過。
Host networking
在選擇部署的體系結構的每個節點上安裝操作系統后,必須配置網絡接口。openstack官方建議禁用任何自動網絡管理工具,並手動編輯網絡配置文件。
本文准備工作中已經配置好了IP,過。
NTP
NTP服務主要用來各節點之間同步時間。
控制節點
1、安裝chronyapt -y install chrony
2、配置chronyvim /etc/chrony/chrony.conf
取消兩處注釋:
1 |
allow 0/0 |
3、重啟chronyservice chrony restart
計算節點
1、安裝chronyapt -y install chrony
2、配置chronyvim /etc/chrony/chrony.conf
注釋修改如下:
1 |
#pool 2.debian.pool.ntp.org offline iburst |
3、重啟chronyservice chrony restart
驗證安裝
官方建議在繼續操作之前驗證NTP同步。某些節點,尤其是那些引用控制器節點的節點,可能需要幾分鍾才能同步。
1、在控制節點執行chronyc sources
Name/IP”列中的內容表示NTP服務器的主機名或IP地址。MS列中的內容,*
代表當前NTP服務器同步成功。
2、在計算節點執行chronyc sources
“Name/IP”列中的內容應該表示控制器節點的主機名。
OpenStack packages
由於發布計划不同,發行版將OpenStack軟件包作為發行版的一部分或使用其他方法發布。在所有節點上執行這些操作。
1、安裝openstack queens倉庫apt install software-properties-common
add-apt-repository cloud-archive:queens
2、更新軟件包apt update && apt dist-upgrade
3、安裝openstack-clientapt -y install python-openstackclient
SQL database
大多數OpenStack服務使用SQL數據庫來存儲信息,數據庫通常在控制器節點上運行。本文使用MariaDB(MySQL),OpenStack服務還支持其他SQL數據庫,包括PostgreSQL。
1、安裝mariadb和連接工具apt -y install mariadb-server python-pymysql
2、編輯50-server.cnfvim /etc/mysql/mariadb.conf.d/50-server.cnf
命令模式下輸入:set nu
顯示行號:
1 |
# line 29: change |
3、重啟mariadb
關閉mariadb,service mysql stop
。
然后查看netstat -an | grep 3306
,確認3306已經關閉。
啟動mariadb,service mysql start
。
4、設置mariadb密碼mysql_secure_installation
按照提示設置密碼為openstack。如果設置后無法登錄,那么參考MySQL重置密碼。
Message queue
OpenStack使用消息隊列來協調服務之間的操作和狀態信息。消息隊列服務通常在控制器節點上運行。OpenStack支持多種消息隊列服務,包括RabbitMQ,Qpid和ZeroMQ。這里我們安裝RabbitMQ,因為大多數發行版都支持它。
1、安裝rabbitmsqapt -y install rabbitmq-server
2、創建openstack用戶,密碼為openstackrabbitmqctl add_user openstack openstack
3、允許openstack用戶配置和讀寫rabbitmqctl set_permissions openstack ".*" ".*" ".*"
Memcached
OpenStack的各個服務的身份認證服務使用Memcached緩存令牌。memcached服務通常在控制器節點上運行。對於生產部署,我們建議啟用防火牆,身份驗證和加密的組合來保護它。
1、安裝memcachedapt -y install memcached python-memcache
2、編輯/etc/memcached.conf文件-l 127.0.0.1
修改為-l 0.0.0.0
3、重啟memcachedservice memcached restart
4、測試
1 |
telnet controller 11211 |
Etcd
OpenStack服務可能使用Etcd,它是一個可靠的分布式鍵值存儲工具。用於分布式密鑰鎖定,存儲配置,跟蹤服務的實時性等。同樣安裝在控制節點即可。
1、安裝etcdapt -y install etcd
2、查看版本etcd -version
,這里看到是2.2.5。按照Etcd for Ubuntu文檔配置的話,最終會失敗,所以,我們換一種配置方法。
3、查看服務狀態etcdctl member list
應該會看到:
1 |
ce2a822cea30bfca: name=controller peerURLs=http://localhost:2380,http://localhost:7001 clientURLs=http://localhost:2379,http://localhost:4001 |
4、官方文檔給出的/etc/etcd/etcd.conf.yml文件內容為:
1 |
name: controller |
參考etcd.conf.yml,我們在/etc/default/etcd的最后添加:
1 |
ETCD_NAME="controller" |
5、設置開機啟動systemctl enable etcd
6、重啟etcdsystemctl restart etcd
7、查看服務狀態etcdctl member list
會看到發生了變化:
1 |
ce2a822cea30bfca: name=controller peerURLs=http://localhost:2380,http://localhost:7001 clientURLs=http://127.0.0.1:2379,http://controller:2379 |
8、在控制節點和計算節點測試curl http://controller:2379/v2/stats/leader
可以看到:
1 |
{"leader":"ce2a822cea30bfca","followers":{}} |
后記
如果修改了/etc/hosts中的controller對應的IP,那么需要重啟memcached和etcd,因為它們的配置中使用了主機名而不是IP。