搭建本地OpenStack源

什麼是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服務端

在這裏插入圖片描述

15、到客戶端進行同步驗證

在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章