規劃
本次安裝參照官網文檔進行安裝,使用的是當前最新版 Train。
本次安裝是在 VMware 環境下進行安裝,使用 CentOS 7.4 系統,最小化安裝。
硬件配置
官方建議最低配置:
- 控制節點:1 個處理器,4 GB內存,5 GB存儲
- 計算節點:1 個處理器,2 GB內存,10 GB存儲
IP規劃
本次安裝僅使用了一張管理網卡,使用Vmware 的 NAT 模式,機器可以直接訪問互聯網:
- controller:10.1.1.128
- conpute1:10.1.1.129
修改 hosts 解析
兩臺主機都配置 controller
的解析
# vim /etc/hosts,添加 controller 的解析
10.1.1.128 controller
驗證:
[root@controller ~]# ping controller
PING controller (10.1.1.128) 56(84) bytes of data.
64 bytes from controller (10.1.1.128): icmp_seq=1 ttl=64 time=0.061 ms
64 bytes from controller (10.1.1.128): icmp_seq=2 ttl=64 time=0.027 ms
^C
--- controller ping statistics ---
2 packets transmitted, 2 received, 0% packet loss, time 999ms
rtt min/avg/max/mdev = 0.027/0.044/0.061/0.017 ms
掛載安裝磁盤,配置本地源
# 掛載鏡像到 /mnt,rc.local 會在用戶登陸之前讀取,在每次系統啓動時都會執行一次
mount /dev/cdrom /mnt
echo 'mount /dev/cdrom /mnt' >> /etc/rc.local
chmod +x /etc/rc.d/rc.local
# 配置本地源
echo '[local]
name=local
baseurl=file:///mnt
gpgcheck=0' > /etc/yum.repos.d/local.repo
安裝基礎服務
NTP 時間同步
修改控制節點爲時間服務器,控制節點與公網同步,計算節點和控制節點同步
控制節點:
# 安裝服務
yum install chrony -y
# 編輯配置文件:vim /etc/chrony.conf
# 刪除自帶的服務器,使用公網時間服務器
server pool.ntp.org iburst
# 允許本地網絡訪問
allow 10.1.1.0/24
# 修改配置文件後開啓服務,設置開機啓動
systemctl enable chronyd.service
systemctl start chronyd.service
計算節點配置文件只修改服務器地址,同樣設置爲開機啓動:
# 編輯配置文件:vim /etc/chrony.conf
# 刪除自帶的服務器,使用控制節點時間服務器
server 10.1.1.128 iburst
驗證:
[root@compute1 ~]# chronyc sources
210 Number of sources = 1
MS Name/IP address Stratum Poll Reach LastRx Last sample
===============================================================================
^? controller 0 9 0 - +0ns[ +0ns] +/- 0ns
安裝 OpenStack 包
所有節點都需要安裝,即控制節點、計算節點。
從當前源中查找 OpenStack repo :
[root@controller ~]# yum search centos-release-openstack
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
* base: mirror.bit.edu.cn
* centos-ceph-nautilus: mirrors.huaweicloud.com
* centos-nfs-ganesha28: mirror.bit.edu.cn
* centos-openstack-train: mirror.bit.edu.cn
* centos-qemu-ev: mirror.bit.edu.cn
* extras: mirrors.huaweicloud.com
* updates: mirror.bit.edu.cn
======================================== N/S matched: centos-release-openstack ========================================
centos-release-openstack-queens.noarch : OpenStack from the CentOS Cloud SIG repo configs
centos-release-openstack-rocky.noarch : OpenStack from the CentOS Cloud SIG repo configs
centos-release-openstack-stein.noarch : OpenStack from the CentOS Cloud SIG repo configs
centos-release-openstack-train.noarch : OpenStack from the CentOS Cloud SIG repo configs
Name and summary matches only, use "search all" for everything.
安裝 Train 版本的 repo:
yum install -y centos-release-openstack-train.noarch
安裝完成後,會在系統路徑中看到相關的 repo 文件:
[root@controller ~]# ls /etc/yum.repos.d/
CentOS-Base.repo CentOS-Debuginfo.repo CentOS-NFS-Ganesha-28.repo CentOS-Sources.repo local.repo
CentOS-Ceph-Nautilus.repo CentOS-fasttrack.repo CentOS-OpenStack-train.repo CentOS-Storage-common.repo
CentOS-CR.repo CentOS-Media.repo CentOS-QEMU-EV.repo CentOS-Vault.repo
更新包:
yum upgrade
安裝 OpenStack client 和 openstack-selinux。
注:HEL和CentOS默認情況下啓用SELinux。安裝openstack-selinux軟件包以自動管理OpenStack服務的安全策略。
yum install python-openstackclient openstack-selinux -y
控制節點需要安裝的服務
數據庫
- 安裝:
yum install mariadb mariadb-server python2-PyMySQL -y
- 編輯配置文件
/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
- 完成安裝,開啓服務並設置爲開機啓動
systemctl enable mariadb.service systemctl start mariadb.service
- 初始化數據庫,設置密碼
這裏我用的是空密碼,選項順序是:n y y y y ymysql_secure_installation
消息隊列
OpenStack 使用消息隊列來協調服務之間的操作和狀態信息,默認使用的是rabbitmq
。
-
安裝並啓動服務
yum install rabbitmq-server systemctl enable rabbitmq-server.service systemctl start rabbitmq-server.service
-
添加用戶併爲用戶配置授權
# 用戶名 openstack 密碼 RABBIT_PASS rabbitmqctl add_user openstack RABBIT_PASS # 爲用戶配置讀、寫、訪問權限 rabbitmqctl set_permissions openstack ".*" ".*" ".*"
-
安裝 web 管理(非必需)
rabbitmq-plugins enable rabbitmq_management
-
驗證安裝
rabbitmq 服務使用的是 5672 和 25672 端口,web 端使用 15672 端口
可以通過netstat -nltp | grep 5672
來查看端口是否已監聽注:最小化安裝沒有 netstat 命令,可以通過
yum install net-tools -y
來安裝[root@controller ~]# netstat -nltp | grep 5672 tcp 0 0 0.0.0.0:15672 0.0.0.0:* LISTEN 1208/beam.smp tcp 0 0 0.0.0.0:25672 0.0.0.0:* LISTEN 1208/beam.smp tcp6 0 0 :::5672 :::* LISTEN 1208/beam.smp
通過
http://controller_ip:15672
來訪問,默認賬號密碼是 guest,我的控制節點 IP 是 10.1.1.128,訪問如下:注:如果端口開通,但是無法訪問,一般情況是防火牆限制,請添加策略或直接關閉,我是直接關閉:
systemctl stop firewalld
Memcached
-
安裝
yum install memcached python-memcached -y
-
編輯配置文件
/etc/sysconfig/memcached
,允許其他節點來訪問 memcached,0.0.0.0
表示誰都可以訪問。OPTIONS="-l 0.0.0.0"
-
啓動服務
systemctl enable memcached.service systemctl start memcached.service
驗證:
使用netstat -nltup | grep 11211
查看 端口是否已監聽。
Etcd
OpenStack服務可以使用 Etcd 進行分佈式鍵鎖定,存儲配置,跟蹤服務活動性和其他情況。
-
安裝
yum install etcd -y
-
編輯配置文件
/etc/etcd/etcd.conf
,替換ETCD_INITIAL_CLUSTER, ETCD_INITIAL_ADVERTISE_PEER_URLS, ETCD_ADVERTISE_CLIENT_URLS, ETCD_LISTEN_CLIENT_URLS
幾項內容爲管理節點的 IP。#[Member] ETCD_DATA_DIR="/var/lib/etcd/default.etcd" ETCD_LISTEN_PEER_URLS="http://10.1.1.128:2380" ETCD_LISTEN_CLIENT_URLS="http://10.1.1.128:2379" ETCD_NAME="controller" #[Clustering] ETCD_INITIAL_ADVERTISE_PEER_URLS="http://10.1.1.128:2380" ETCD_ADVERTISE_CLIENT_URLS="http://10.1.1.128:2379" ETCD_INITIAL_CLUSTER="controller=http://10.1.1.128:2380" ETCD_INITIAL_CLUSTER_TOKEN="etcd-cluster-01" ETCD_INITIAL_CLUSTER_STATE="new"
-
開啓服務
systemctl enable etcd systemctl start etcd
驗證:
使用netstat -nltup | grep 23
查看 2379、2380 端口是否已監聽。
至此,OpenStack 需要的基礎環境已經搭建完成。