分享一下Rocky版本的OpenStack安裝管理經驗:
OpenStack每半年左右更新一版,目前是版本是201808月釋出的版本-R版(Rocky),目前版本安裝方法優化較好,不過依然是比較複雜
官方文件地址:https://docs.openstack.org/install-guide/openstack-services.html
本文主要分享控制節點的環境配置方法:
—————- 完美的分割線 ——————
1.0.系統環境
1)生產測試應用的伺服器最好是物理機,虛擬目前可以完成搭建測試體驗
2)系統選擇是目前的最新版本:CentOS Linux release 7.5.1804 (Core)
3)控制節點Controller :192.168.1.81
計算節點Nova:192.168.1.82
1.1.配置域名解析
1)配置主機名
# 主機名設定好就不能修改,否則會出問題,控制節點和計算節點配置相同,且都需要配置
hostname openstack01.zuiyoujie.com hostname echo "openstack01.zuiyoujie.com"> /etc/hostname cat /etc/hostname
2)配置主機名解析
vim /etc/hosts ----------------------------------- 192.168.1.81 openstack01.zuiyoujie.com controller 192.168.1.82 openstack02.zuiyoujie.com compute02 block02 object02 -----------------------------------
# 配置主機名的FQDN格式,和叢集內部角色名稱方便後續配置
1.2.關閉防火牆和selinux
1)關閉iptables
# 在CentOS7上面是firewalld
systemctl stop firewalld.service
systemctl disable firewalld.service
systemctl status firewalld.service
2)關閉 selinux
setenforce 0 getenforce sed -i `s#SELINUX=enforcing#SELINUX=disabled#g` /etc/sysconfig/selinux grep SELINUX=disabled /etc/sysconfig/selinux
1.3.配置時間同步
1)在控制端配置時間同步服務
yum install chrony -y
2)編輯配置檔案確認有以下配置
vim /etc/chrony.conf -------------------------------- server ntp1.aliyun.com iburst server ntp2.aliyun.com iburst allow 192.168.1.0/24 --------------------------------
3)重啟ntp服務,並配置開機自啟動
systemctl restart chronyd.service
systemctl status chronyd.service
systemctl enable chronyd.service
systemctl list-unit-files |grep chronyd.service
4)設定時區,同步時間
timedatectl set-timezone Asia/Shanghai
chronyc sources
timedatectl status
# 配置完成,如下顯示
[root@openstack01 ~]# chronyc sources 210 Number of sources = 2 MS Name/IP address Stratum Poll Reach LastRx Last sample ================================================================================== ^* 120.25.115.20 2 6 17 9 +17ms[ +22ms] +/- 34ms ^+ 203.107.6.88 2 6 17 9 +3029us[+8251us] +/- 54ms [root@openstack01 ~]# timedatectl status Local time: 一 2018-10-22 15:13:51 CST Universal time: 一 2018-10-22 07:13:51 UTC RTC time: 一 2018-10-22 07:13:52 Time zone: Asia/Shanghai (CST, +0800) NTP enabled: yes NTP synchronized: yes RTC in local TZ: no DST active: n/a
1.4.配置相關yum源
1)配置阿里雲的base和epel源
mv -f /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo mv /etc/yum.repos.d/epel.repo /etc/yum.repos.d/epel.repo.backup wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo
2)安裝openstack-rocky的倉庫
yum install centos-release-openstack-rocky -y
yum clean all
yum makecache
# 也可以手動建立OpenStack的阿里雲yum源地址
vim /etc/yum.repos.d/CentOS-OpenStack-Rocky.repo ---------------------------------- [centos-openstack-rocky] name=CentOS-7 - OpenStack rocky baseurl=http://mirrors.aliyun.com/centos/7/cloud/$basearch/openstack-rocky/ gpgcheck=1 enabled=1 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-SIG-Cloud [centos-openstack-rocky-test] name=CentOS-7 - OpenStack rocky Testing baseurl=http://mirrors.aliyun.com/centos/7/cloud/$basearch/openstack-rocky/ gpgcheck=0 enabled=0 [centos-openstack-rocky-debuginfo] name=CentOS-7 - OpenStack rocky - Debug baseurl=http://mirrors.aliyun.com/centos/7/cloud/$basearch/ gpgcheck=1 enabled=0 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-SIG-Cloud [centos-openstack-rocky-source] name=CentOS-7 - OpenStack rocky - Source baseurl=http://mirrors.aliyun.com/centos/7/cloud/$basearch/openstack-rocky/ gpgcheck=1 enabled=0 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-SIG-Cloud [rdo-trunk-rocky-tested] name=OpenStack rocky Trunk Tested baseurl=http://mirrors.aliyun.com/centos/7/cloud/$basearch/rdo-trunk-rocky-tested/ gpgcheck=0 enabled=0 -----------------------------------
3)更新軟體包
yum update -y
4)安裝openstack客戶端相關軟體
yum install python-openstackclient openstack-selinux -y
1.5.在控制節點安裝資料庫
# 可以修改系統核心更改最大連線數和檔案控制程式碼數
1)安裝mariadb相關軟體包
# CentOS7.5預設資料庫為maraidb
yum install mariadb mariadb-server MySQL-python python2-PyMySQL -y
2)建立openstack的資料庫配置檔案
vim /etc/my.cnf.d/mariadb_openstack.cnf # 在[mysqld]新增以下配置 ----------------------------------- [mysqld] bind-address = 0.0.0.0 default-storage-engine = innodb innodb_file_per_table = on max_connections = 4096 collation-server = utf8_general_ci character-set-server = utf8 init-connect = `SET NAMES utf8` -----------------------------------
# 配置解釋:
default-storage-engine = innodb 預設儲存引擎 innodb_file_per_table 使用獨享表空間模式,每一個表都會建一個表空間,都會有索引檔案,查索引快,共享表空間,共用一個表空間和索引,如果有損壞很難修復,比如說zabbix用到的資料庫如果不使用的獨享表空間,很難進行優化 collation-server = utf8_general_ci init-connect = `SET NAMES utf8` character-set-server = utf8
3)啟動資料庫設定開機啟動
systemctl restart mariadb.service
systemctl status mariadb.service
systemctl enable mariadb.service
systemctl list-unit-files |grep mariadb.service
4)初始化資料庫並重新啟動
# 設定密碼,預設密碼為空,然後輸入密碼123456,一路y回車
/usr/bin/mysql_secure_installation
systemctl restart mariadb.service
# 注意:生產環境可以使用pwgen工具生成資料庫密碼
openssl rand -hex 10
5)建立openstack相關資料庫,進行授權
# 測試下資料庫,相關的資料庫在需要時單獨建立
mysql -p123456 -----------------------------------
flush privileges; show databases; select user,host from mysql.user; exit -----------------------------------
# 至此,資料庫配置完畢
1.6.在控制節點安裝訊息佇列rabbitmq
訊息佇列( MQ)全稱為 Message Queue, 是一種應用程式對應用程式的通訊方法。應用程式通過讀寫出入佇列的訊息(針對應用程式的資料)來通訊,而無需專用連線來連結它們。
訊息傳遞指的是程式之間通過在訊息中傳送資料進行通訊,而不是通過直接呼叫彼此來通訊,直接呼叫通常是用於諸如遠端過程呼叫的技術。排隊指的是應用程式通過 佇列來通訊。
佇列的使用除去了接收和傳送應用程式同時執行的要求。
RabbitMQ 是一個在 AMQP 基礎上完整的,可複用的企業訊息系統。他遵循 Mozilla Public License 開源協議。
1)安裝rabbitmq-server
yum install rabbitmq-server -y
2)啟動rabbitmq,並配置自啟動
# 埠5672,15672,用於拍錯
systemctl start rabbitmq-server.service systemctl status rabbitmq-server.service systemctl enable rabbitmq-server.service systemctl list-unit-files |grep rabbitmq-server.service
3)建立訊息佇列中openstack賬號及密碼
# 新增openstack使用者和密碼,配置使用者許可權,配置讀,寫許可權
rabbitmqctl add_user openstack openstack rabbitmqctl set_permissions openstack ".*" ".*" ".*"
rabbitmqctl set_permissions -p "/" openstack ".*" ".*" ".*"
4)啟用rabbitmq_management外掛實現 web 管理
# 檢視支援的外掛
rabbitmq-plugins list
# 啟用web管理外掛,需要重啟服務使之生效
rabbitmq-plugins enable rabbitmq_management systemctl restart rabbitmq-server.service rabbitmq-plugins list lsof -i:15672
5)瀏覽器訪問RabbitMQ進行測試
訪問地址:http://192.168.1.81:15672
# 預設使用者名稱密碼都是guest
# web介面可以管理建立使用者,管理許可權
# rabbitmq配置完畢
1.7.在控制節點上安裝Memcached
認證服務認證快取使用Memcached快取令牌。快取服務memecached執行在控制節點。在生產部署中,推薦聯合啟用防火牆、認證和加密保證它的安全。
1)安裝Memcached用於快取令牌
yum install memcached python-memcached -y
2)修改memcached配置檔案
vim /etc/sysconfig/memcached ---------------------------------- OPTIONS="-l 127.0.0.1,controller" ----------------------------------
# 如果沒有啟用IPv6地址需要刪掉::1的地址繫結
3)啟動memcached並設定開機自啟動
systemctl start memcached.service systemctl status memcached.service netstat -anptl|grep memcached systemctl enable memcached.service systemctl list-unit-files |grep memcached.service
# memcached引數說明:
-d選項是作為守護程式在後臺執行 -m是分配給Memcache使用的記憶體數量,單位是MB,我這裡是10MB, -u是執行Memcache的使用者,我這裡是root, -l是監聽的伺服器IP地址,如果有多個地址的話 -p是設定Memcache監聽的埠,我這裡設定了12000,最好是1024以上的埠, -c選項是最大執行的併發連線數,預設是1024,我這裡設定了256,按照你伺服器的負載量來設定, -P是設定儲存Memcache的pid檔案 -vv是以very vrebose模式啟動,將除錯資訊和錯誤輸出到控制檯
# 至此,memcached配置完畢
1.8.在控制節點上安裝Etcd服務
# 這個Etcd服務是新加入的,用於自動化配置
1)安裝etcd服務
yum install etcd -y
2)修改etcd配置檔案
vim /etc/etcd/etcd.conf ----------------------------------- #[Member] ETCD_DATA_DIR="/var/lib/etcd/default.etcd" ETCD_LISTEN_PEER_URLS="http://192.168.1.81:2380" ETCD_LISTEN_CLIENT_URLS="http://192.168.1.81:2379" ETCD_NAME="controller" #[Clustering] ETCD_INITIAL_ADVERTISE_PEER_URLS="http://192.168.1.81:2380" ETCD_ADVERTISE_CLIENT_URLS="http://192.168.1.81:2379" ETCD_INITIAL_CLUSTER="controller=http://192.168.1.81:2380" ETCD_INITIAL_CLUSTER_TOKEN="etcd-cluster-01" ETCD_INITIAL_CLUSTER_STATE="new" ------------------------------------
# 注意上面的IP地址不能用controller替代,無法解析
3)啟動etcd並設定開機自啟動
systemctl start etcd.service systemctl status etcd.service netstat -anptl|grep etcd systemctl enable etcd.service systemctl list-unit-files |grep etcd.service
# 至此,控制節點controller就完成基礎環境的配置,下面可以開始安裝 openstack 的元件
# 虛擬機器的話配置完成可以關機做快照
======== 完畢,呵呵呵呵 ========
附:openstack計算節點的系統環境配製方法:https://www.cnblogs.com/tssc/p/9857647.html