文章目錄
什麼是OpenStack?
OpenStack是一個開源的雲計算管理平臺項目,是一系列軟件開源項目的組合。由NASA(美國國家航空航天局)和Rackspace合作研發併發起,以Apache許可證(Apache軟件基金會發布的一個自由軟件許可證)授權的開源代碼項目。
OpenStack爲私有云和公有云提供可擴展的彈性的雲計算服務。項目目標是提供實施簡單、可大規模擴展、豐富、標準統一的雲計算管理平臺
根據OpenStack現場搭建環境,一些電腦並不具備搭建要求,現在主要問題是Yum源的倉庫進行本地化實施。
解決方案如下:
1、尋找第三方OpenStack生產環境專用yum源倉庫
2、搭建Centos 7.6 系統載體
3、同步Openstack成產環境源
4、解決OpenStack軟件環境依賴關係
5、發佈本地OpenStack-YUM源倉庫
6、OpenStack客戶端部署本地YUM源倉庫
7、配置阿里雲時間同步服務、配置NTP服務(允許192.168.17.0網段)
拓撲圖如下:
部署實例
環境需求
Centos 7.6 虛擬機一臺
CPU:雙核雙線程
內存:2G
硬盤:30G+300G
網卡:NAT模式
IP地址:192.168.17.100/24 網關:192.168.17.2
防火牆:關閉
核心防護:關閉
安裝完系統後配置地址
1、備份系統自帶的yum源
[root@localhost ~]# cd /etc/yum.repos.d/
[root@localhost yum.repos.d]# mkdir backup ###創建備份目錄
[root@localhost yum.repos.d]# mv * ./backup ###將當前目錄下,所有內容轉移到./backup
[root@localhost yum.repos.d]# tar -zcvf CentOS-bk.tar.gz /etc/yum.repos.d/* ###打包
[root@localhost yum.repos.d]# ll
總用量 8
drwxr-xr-x. 2 root root 187 8月 6 17:01 backup
-rw-r--r-- 1 root root 2667 11月 14 23:26 CentOS-bk.tar.gz
2、編輯阿里雲Centos 7 官方源和OpenStack源
上傳源文件(repo文件)至/etc/yum.repos.d目錄下
使用xftp或掛載均可
openstack.repo、nginx.repo、epel.repo、CentOS-Storage-common.repo
CentOS-QEMU-EV.repo、CentOS-Ceph-Luminous.repo
CentOS-Base.repo
################源解釋#########################
EPEL (Extra Packages for Enterprise Linux)是基於Fedora的一個項目,爲“紅帽系”的操作系統提供額外的軟件包,適用於RHEL、CentOS和Scientific Linux
3、檢驗阿里雲源是否正常
[root@localhost ~]# yum repolist
已加載插件:fastestmirror, langpacks
Loading mirror speeds from cached hostfile
base: mirrors.aliyun.com
extras: mirrors.aliyun.com
…………省略部分內容…………
openstack-train openstack-train 2,040
updates/7/x86_64 CentOS-7 - Updates - mirrors.aliyun.com 711
repolist: 34,370
4、安裝相關軟件
[root@localhost ~]# cd ~
[root@localhost ~]# yum install -y wget make cmake gcc gcc-c++ pcre-devel zlib-devel openssl openssl-devel createrepo yum-utils
##解釋##
yum-utils:reposync同步工具
createrepo:編輯yum庫工具 做依賴關係用發
plugin-priorities:控制yum源更新優先級工具,這個工具可以用來控制進行yum源檢索的先後順序,建議可以用在client端。
注:由於很多人喜歡最小化安裝,上邊軟件是一些常用環境。
5、將源同步到本地目錄
[root@localhost ~]# mkdir /data ###創建本地目錄
[root@localhost ~]# mkfs -t xfs /dev/sdb
[root@localhost ~]# mount /dev/sdb /data ##此爲臨時掛載,建議使用/etc/fstab永久掛載
[root@localhost ~]# df -hT ##驗證是否掛載成功
[root@localhost ~]# reposync -p /data
##解釋##
不用擔心沒有創建相關目錄,系統自動創建相關目錄,並下載,時間較長請耐心等待。
可以用 repo -r --repoid=repoid指定要查詢的repo id,可以指定多個(# reposync -r base -p /data #這裏同步base目錄到本地)
更新新的rpm包#reposync -np /data
注:時間同樣較長,請耐心等待。
6、創建軟件依賴關係庫
[root@localhost ~]# createrepo -po /data/base/ /data/base/
[root@localhost ~]# createrepo -po /data/extras/ /data/extras/
[root@localhost ~]# createrepo -po /data/updates/ /data/updates/
[root@localhost ~]# createrepo -po /data/epel/ /data/epel/
[root@localhost ~]# createrepo -po /data/openstack-queens/ /data/openstack-queens/
[root@localhost ~]# createrepo -po /data/openstack-rocky/ /data/openstack-rocky/
[root@localhost ~]# createrepo -po /data/openstack-stein/ /data/openstack-stein/
[root@localhost ~]# createrepo -po /data/openstack-train/ /data/openstack-train/
[root@localhost ~]# createrepo -po /data/centos-qemu-ev /data/centos-qemu-ev/
[root@localhost ~]# createrepo -po /data/nginx /data/nginx
7、更新源數據
[root@localhost ~]# createrepo --update /data/base
[root@localhost ~]# createrepo --update /data/extras
[root@localhost ~]# createrepo --update /data/updates
[root@localhost ~]# createrepo --update /data/epel
[root@localhost ~]# createrepo --update /data/openstack-queens
[root@localhost ~]# createrepo --update /data/openstack-rocky
[root@localhost ~]# createrepo --update /data/openstack-stein
[root@localhost ~]# createrepo --update /data/openstack-train
[root@localhost ~]# createrepo --update /data/centos-qemu-ev
[root@localhost ~]# createrepo --update /data/nginx
8、創建定時任務腳本
[root@localhost ~]# mkdir /data/script
[root@localhost ~]# vi /data/script/centos_yum_update.sh
#!/bin/bash
echo 'Updating Aliyum Source'
DATETIME=`date +%F_%T`
exec > /var/log/aliyumrepo_$DATETIME.log
reposync -np /data
if [ $? -eq 0 ];then
createrepo --update /data/base
createrepo --update /data/extras
createrepo --update /data/updates
createrepo --update /data/epel
createrepo --update /data/openstack-queens
createrepo --update /data/openstack-rocky
createrepo --update /data/openstack-stein
createrepo --update /data/openstack-train
createrepo --update /data/centos-qemu-ev
createrepo --update /data/nginx
echo "SUCESS: $DATETIME aliyum_yum update successful"
else
echo "ERROR: $DATETIME aliyum_yum update failed"
fi
9、將腳本加入到定時任務中
[root@localhost ~]# crontab -e
00 13 * * 6 [ $(date +%d) -eq $(cal | awk 'NR==3{print $NF}') ] && /bin/bash /data/script/centos_yum_update.sh
###上述計劃任務解釋###
每月第一個週六的13點更新阿里雲yum源
10、安裝nginx開啓目錄權限保證本地機器可以直接本地yum源
[root@localhost ~]# groupadd nginx ###創建運行賬戶組
[root@localhost ~]# useradd -r -g nginx -s /bin/false -M nginx ###創建運行賬戶
[root@localhost ~]# yum -y install nginx ###安裝Nginx
[root@localhost ~]# vi /etc/nginx/nginx.conf ####找到nginx配置文件,並修改nginx配置文件:
worker_processes 1;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;
server {
listen 80; ####要修改
server_name localhost; ####要修改
root /data ; ####這裏是yum源存放目錄
location / {
autoindex on; ####打開目錄瀏覽功能
autoindex_exact_size off; ### off:以可讀的方式顯示文件大小
autoindex_localtime on; #### on、off:是否以服務器的文件時間作爲顯示的時間
charset utf-8,gbk; ####展示中文文件名
index index.html; ####新增
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
}
[root@localhost ~]# systemctl enable nginx ###開機啓動Nginx服務
[root@localhost ~]# systemctl restart nginx ###重啓Nginx服務
#訪問驗證
11、登錄客戶機(192.168.100.111)測試本地YUM源
網絡適配器選擇爲VM1,設置網卡能與服務器連通
注:搭建好後yum安裝速度並沒有想象中的那麼快,安裝時解決依賴速度也很慢。
[root@localhost ~]# cd /etc/yum.repos.d/
[root@localhost yum.repos.d]# rm -rf * ####刪除當前目錄下所有文件,
[root@localhost yum.repos.d]# vim CentOS7.x-Base-Openstack.repo
[base]
name=CentOS-$releasever - Base - data.template.com
baseurl=http://192.168.100.100/base/
enabled=1
gpgcheck=0
[updates]
name=CentOS-$releasever - Updates - data.template.com
baseurl=http://192.168.100.100/updates/
enabled=1
gpgcheck=0
[extras]
name=CentOS-$releasever - Extras - datas.template.com
baseurl=http://192.168.100.100/extras/
enabled=1
gpgcheck=0
[epel]
name=CentOS-$releasever - epel - datas.template.com
baseurl=http://192.168.100.100/epel/
failovermethod=priority
enabled=1
gpgcheck=0
#[openstack-queens]
#name=openstack-queens
#baseurl=http://192.168.17.100/openstack-queens/
#gpgcheck=0
#enabled=1
#[openstack-rocky]
#name=openstack-rocky
#baseurl=http://192.168.100.100/openstack-rocky/
#gpgcheck=0
#enabled=1
#[openstack-stein]
#name=openstack-stein
#baseurl=http://192.168.100.100/openstack-stein/
#gpgcheck=0
#enabled=1
[openstack-train]
name=openstack-train
baseurl=http://192.168.100.100/openstack-train/
gpgcheck=0
enabled=1
[centos-qemu-ev]
name=centos-qemu-ev
baseurl=http://192.168.100.100/centos-qemu-ev/
gpgcheck=0
enabled=1
[nginx]
name=nginx
baseurl=http://192.168.100.100/nginx/
gpgcheck=0
enabled=1
####上述源解釋####
OpenStack有4個版本queens、rocky、stein、train,目前最新的是train,
前面三個不用註釋標明瞭(queens、rocky、stein)用是train版本測試
12、測試是否可下載RPM包
[root@localhost ~]# cd /opt
[root@localhost opt]# yumdownloader openstack-swift-account
[root@localhost opt]# ll
總用量 24
-rw-r--r-- 1 root root 21264 10月 25 22:27 openstack-swift-account-2.23.1-1.el7.noarch.rpm ###下載完成
drwxr-xr-x. 2 root root 6 10月 31 2018 rh
13、服務器配置同步阿里時鐘,192.168.17.100(本地源)
[root@localhost ~]# yum -y install ntpdate
[root@localhost ~]# ntpdate ntp.aliyun.com
[root@localhost ~]# crontab -e
*/2 * * * * /usr/sbin/ntpdate ntp.aliyun.com >>/var/log/ntpdate.log
[root@localhost ~]# systemctl restart crond
[root@localhost ~]# systemctl enable crond
[root@localhost ~]# tail -f /var/log/ntpdate.log ###動態查看更新日誌文件
14、服務器NTP時鐘服務配置,192.168.17.100(本地源)
[root@localhost ~]# yum -y install ntp
[root@localhost ~]# vi /etc/ntp.conf
restrict default nomodify ###改第8行
restrict 192.168.17.0 mask 255.255.255.0 nomodify notrap ###改第17行
###將21行到24行刪除##
21 server 0.centos.pool.ntp.org iburst
22 server 1.centos.pool.ntp.org iburst
23 server 2.centos.pool.ntp.org iburst
24 server 3.centos.pool.ntp.org iburst
###刪除後插入下面內容###
fudeg 127.127.1.0 stratum 10
server 127.127.1.0
NTP重啓BUG####通過禁止chronyd服務開機自啓動之後再將系統重啓
[root@localhost ~]# systemctl disable chronyd.service
[root@localhost ~]# systemctl restart ntpd ###重啓ntp服務端
[root@localhost ~]# systemctl enable ntpd ###開機啓動ntp服務端