CentOS上搭建OpenStack雲平臺只需8G內存!!!

Hello!大家好,今天阿坤爲大家帶來8G內存的雲平臺搭建,按照官方的標準是需要32G,最少也是16G內存的,但是阿坤覺的還不是極限,所以今天帶大家挑戰8G內存搭建最小云平臺!

環境準備

1.總共需要三臺虛擬機配置如下:
openstack主機配置:
2個CPU,6G內存(空閒內存),50G硬盤
nova1主機配置:
2個CPU,3.9G內存(空閒內存),100G硬盤
nova2主機配置:
2個CPU,3.9G內存(空閒內存),100G硬盤
2.配置靜態IP:
openstack:192.168.1.20
nova1:192.168.1.21
nova2:192.168.1.22
3.配置主機名/etc/hosts
4.確保互相ping通
5.配置dns服務器/etc/resolv.conf
6.配置時間同步/etc/chrony.conf
7.配置專用Yum源
8.裝包並安裝openstack

具體步驟

所有操作以openstack主機操作爲例
1.創建虛擬機

[root@room9pc01 ~]# sh vc.sh         //這個是自己寫的創建虛擬機覺本
vm-manager> vmcreate 
請輸入虛擬機名字: openstack8
請輸入虛擬機大小: 50G
Formatting '/var/lib/libvirt/images/openstack8.img', fmt=qcow2 size=53687091200 backing_file='.node_base.qcow2' encryption=off cluster_size=65536 lazy_refcounts=off 
定義域 openstack8(從 /etc/libvirt/qemu/openstack8.xml)
vm-manager> vmcreate
請輸入虛擬機名字: nova1
請輸入虛擬機大小: 100G
Formatting '/var/lib/libvirt/images/nova1.img', fmt=qcow2 size=107374182400 backing_file='.node_base.qcow2' encryption=off cluster_size=65536 lazy_refcounts=off 
定義域 nova1(從 /etc/libvirt/qemu/nova1.xml)

vm-manager> vmcreate
請輸入虛擬機名字: nova2
請輸入虛擬機大小: 100G
Formatting '/var/lib/libvirt/images/nova2.img', fmt=qcow2 size=107374182400 backing_file='.node_base.qcow2' encryption=off cluster_size=65536 lazy_refcounts=off 
定義域 nova2(從 /etc/libvirt/qemu/nova2.xml)

vm-manager> quit
[root@room9pc01 ~]# vim /etc/libvirt/qemu/openstack8.xml
...
  <memory unit='KiB'>8188928</memory>                       //大小設置成8G就可以
  <currentMemory unit='KiB'>8188284</currentMemory>  //虛擬內存一般都和真實內存相同(切記不可大於真實內存設置)
...
[root@room9pc01 ~]# vim /etc/libvirt/qemu/nova1.xml     //nova2和nova1內存設置一樣
...
  <memory unit='KiB'>4698112</memory>               //4.5G即可
  <currentMemory unit='KiB'>4697088</currentMemory>
...

2.配置IP就不帶着大家浪費時間啦
3.配置主機名/etc/hosts

[root@openstack8 ~]# vim /etc/hosts      //nova1,nova2進行一樣操作,或者直接scp
# ::1           localhost localhost.localdomain localhost6 localhost6.localdomain6
127.0.0.1       localhost localhost.localdomain localhost4 localhost4.localdomain4
192.168.1.20    openstack8     //主機名+IP
192.168.1.21    nova1
192.168.1.22    nova2
:wq   //保存退出

4.確保互相ping通

[root@openstack8 ~]# ping -c 2 nova1
PING nova1 (192.168.1.21) 56(84) bytes of data.
64 bytes from nova1 (192.168.1.21): icmp_seq=1 ttl=255 time=0.513 ms
64 bytes from nova1 (192.168.1.21): icmp_seq=2 ttl=255 time=0.636 ms

--- nova1 ping statistics ---
2 packets transmitted, 2 received, 0% packet loss, time 1001ms
rtt min/avg/max/mdev = 0.513/0.574/0.636/0.066 ms
[root@openstack8 ~]# ping -c 2 nova2
PING nova2 (192.168.1.22) 56(84) bytes of data.
64 bytes from nova2 (192.168.1.22): icmp_seq=1 ttl=255 time=2.02 ms
64 bytes from nova2 (192.168.1.22): icmp_seq=2 ttl=255 time=0.608 ms

--- nova2 ping statistics ---
2 packets transmitted, 2 received, 0% packet loss, time 1002ms
rtt min/avg/max/mdev = 0.608/1.315/2.023/0.708 ms
[root@openstack8 ~]# ping -c 2 openstack8
PING openstack8 (192.168.1.20) 56(84) bytes of data.
64 bytes from openstack8 (192.168.1.20): icmp_seq=1 ttl=255 time=0.147 ms
64 bytes from openstack8 (192.168.1.20): icmp_seq=2 ttl=255 time=0.095 ms

--- openstack8 ping statistics ---
2 packets transmitted, 2 received, 0% packet loss, time 1000ms
rtt min/avg/max/mdev = 0.095/0.121/0.147/0.026 ms
[root@openstack8 ~]# 

5.配置dns服務器/etc/resolv.conf

[root@openstack8 ~]# vim /etc/resolv.conf       //nova1,nova2進行一樣操作,或者直接scp
; generated by /usr/sbin/dhclient-script
#search localhost        //必須註釋掉或者刪掉,否則安裝後會導致某些功能報錯
nameserver 192.168.1.254
:wq   //保存退出

6.配置時間同步/etc/chrony.conf

[root@openstack8 ~]# vim /etc/chrony.conf    //nova1,nova2進行一樣操作,或直接scp
...
server 192.168.1.254 iburst    //修改成真機ip保持時間一致
...
:wq   //保存退出
[root@openstack8 ~]# systemctl restart chronyd      //改完配置文件必須重啓服務,三臺都做
[root@openstack8 ~]# chkconfig chronyd on            //並設置開機自啓(個人習慣6、7混合用),三臺都做
注意:正在將請求轉發到“systemctl enable chronyd.service”。
[root@openstack8 ~]# chronyc sources -v    //三臺機器都執行一遍用來檢查時間是否同步成功
210 Number of sources = 1

  .-- Source mode  '^' = server, '=' = peer, '#' = local clock.
 / .- Source state '*' = current synced, '+' = combined , '-' = not combined,
| /   '?' = unreachable, 'x' = time may be in error, '~' = time too variable.
||                                                 .- xxxx [ yyyy ] +/- zzzz
||      Reachability register (octal) -.           |  xxxx = adjusted offset,
||      Log2(Polling interval) --.      |          |  yyyy = measured offset,
||                                \     |          |  zzzz = estimated error.
||                                 |    |           \
MS Name/IP address         Stratum Poll Reach LastRx Last sample               
===============================================================================
^* gateway                       3   6   377    58   +108us[ +153us] +/-   15ms
// 如果gateway前面符號爲^*說明同步OJBK,若爲^~則同步NOJBK

7.配置專用Yum源
1)真機上操作
從網上下載好所需要用的包,這裏我吧它分成了兩個目錄分別是,extras和opentsack目錄,並搭建ftp服務器使虛擬機可以掛載yum源,實際上我們用到的主要是extras源以及rhel-7-server-openstack-10-rpms源和rhel-7-server-openstack-10-devtools-rpms源.

[root@room9pc01 ~]# ls /var/ftp/{extras,openstack}/
/var/ftp/extras/:
comps.xml  Packages  repodata  version.txt

/var/ftp/openstack/:
docs                                      rhel-7-server-rhceph-2-osd-rpms
rhel-7-server-openstack-10-devtools-rpms  rhel-7-server-rhceph-2-tools-rpms
rhel-7-server-openstack-10-optools-rpms   rhel-7-server-rhscon-2-agent-rpms
rhel-7-server-openstack-10-rpms           rhel-7-server-rhscon-2-installer-rpms
rhel-7-server-openstack-10-tools-rpms     rhel-7-server-rhscon-2-main-rpms
rhel-7-server-rhceph-2-mon-rpms           version.txt

2)openstack服務器操作

[root@openstack8 ~]# vim /etc/yum.repos.d/local.repo   //三臺都配置,或者直接scp
[local_repo]                                        //本地正常源
name=CentOS-$releasever - Base
baseurl="ftp://192.168.1.254/centos-1804"
enabled=1
gpgcheck=0
[extras]                                            //以下三個都是openstack需要用的三個源
name=CentOS-$releasever - Base
baseurl="ftp://192.168.1.254/extras"
enabled=1
gpgcheck=0
[openstack1]
name=CentOS-$releasever - Base
baseurl="ftp://192.168.1.254/openstack/rhel-7-server-openstack-10-rpms"
enabled=1
gpgcheck=0
[openstack2]
name=CentOS-$releasever - Base
baseurl="ftp://192.168.1.254/openstack/rhel-7-server-openstack-10-devtools-rpms"
enabled=1
gpgcheck=0
:wq   //保存退出
[root@openstack8 ~]# for i in openstack8 nova1 nova2
> do
> scp /etc/yum.repos.d/local.repo $i:/etc/yum.repos.d/
> done
local.repo                                                               100%  488   324.7KB/s   00:00    
local.repo                                                               100%  488   192.2KB/s   00:00    
local.repo                                                               100%  488   313.0KB/s   00:00 
[root@openstack8 ~]# for i in openstack8 nova1 nova2   //檢查三臺機器源是否成功加載
> do
> ssh $i 'yum repolist'
> done
已加載插件:fastestmirror
Determining fastest mirrors
源標識                             源名稱                                  狀態
extras                             CentOS-7 - Base                            76
local_repo                         CentOS-7 - Base                         9,911
openstack1                         CentOS-7 - Base                           680
openstack2                         CentOS-7 - Base                             3
repolist: 10,670                                //都顯示10670個包yum源就搭建完畢啦
已加載插件:fastestmirror
Determining fastest mirrors
源標識                             源名稱                                  狀態
extras                             CentOS-7 - Base                            76
local_repo                         CentOS-7 - Base                         9,911
openstack1                         CentOS-7 - Base                           680
openstack2                         CentOS-7 - Base                             3
repolist: 10,670
已加載插件:fastestmirror
Determining fastest mirrors
源標識                             源名稱                                  狀態
extras                             CentOS-7 - Base                            76
local_repo                         CentOS-7 - Base                         9,911
openstack1                         CentOS-7 - Base                           680
openstack2                         CentOS-7 - Base                             3
repolist: 10,670

8.裝包並安裝openstack
1)裝包
nova1,nova2服務器

[root@nova1 ~]# yum -y install qemu-kvm libvirtdaemon libvirt-daemon-driver-qemu libvirt-client  //nova2做相同操作,總計87個包
...

openstack服務器

[root@openstack8 ~]# yum -y install qemu-kvm libvirtdaemon libvirt-daemon-driver-qemu libvirt-client python-setuptools    //openstack服務器上裝五個包,總計91個
....

2)安裝openstack

[root@openstack8 ~]# yum install -y openstack-packstack   //安裝openstack包,總計77個包
...
[root@openstack8 ~]# packstack --gen-answer-file=answer.ini   //創建通用應答文件
 [root@openstack8 ~]# vim answer.ini
 ...
42   CONFIG_SWIFT_INSTALL=n      //swift對象存儲的安裝,因爲沒有,所以使用本地硬盤
45   CONFIG_CEILOMETER_INSTALL=n     //計費模塊
49   CONFIG_AODH_INSTALL=n			//計費模塊
53   CONFIG_GNOCCHI_INSTALL=n			//計費模塊
75   CONFIG_NTP_SERVERS=192.168.1.254		// ntp服務器地址
98   CONFIG_COMPUTE_HOSTS=192.168.1.11	    //nova組件安裝的主機地址
102  CONFIG_NETWORK_HOSTS=192.168.1.10,192.168.1.11     //neutron組件安裝的主機地址
333  CONFIG_KEYSTONE_ADMIN_PW=a				//默認的管理員密碼 330是用戶名
840  CONFIG_NEUTRON_ML2_TYPE_DRIVERS=vxlan,flat      //支持的網絡協議, flat直連網絡,vxlan-->valn的擴展模式vlan支持1-4096個用戶,vxlan比較大
910  CONFIG_NEUTRON_OVS_BRIDGE_MAPPINGS=physnet1:br-ex    //虛擬交換機的名稱
921  CONFIG_NEUTRON_OVS_BRIDGE_IFACES=br-ex:eth0		//指定br-ex交換機外網出口的網卡
1179 CONFIG_PROVISION_DEMO=n                //演示demo 關閉
 ...
 :wq
[root@openstack8 ~]# packstack --answer-file=answer.ini       //一鍵部署openstack,時間大概20分鐘~40分鐘不等
Welcome to the Packstack setup utility

The installation log file is available at: /var/tmp/packstack/20191009-112804-UhwdSh/openstack-setup.log

Installing:
Clean Up                                             [ DONE ]
Discovering ip protocol version                      [ DONE ]
Setting up ssh keys                                  [ DONE ]
Preparing servers                                    [ DONE ]
Pre installing Puppet and discovering hosts' details [ DONE ]
Preparing pre-install entries                        [ DONE ]
Installing time synchronization via NTP              [ DONE ]
Setting up CACERT                                    [ DONE ]
Preparing AMQP entries                               [ DONE ]
Preparing MariaDB entries                            [ DONE ]
Fixing Keystone LDAP config parameters to be undef if empty[ DONE ]
Preparing Keystone entries                           [ DONE ]
Preparing Glance entries                             [ DONE ]
Checking if the Cinder server has a cinder-volumes vg[ DONE ]
Preparing Cinder entries                             [ DONE ]
Preparing Nova API entries                           [ DONE ]
Creating ssh keys for Nova migration                 [ DONE ]
Gathering ssh host keys for Nova migration           [ DONE ]
Preparing Nova Compute entries                       [ DONE ]
Preparing Nova Scheduler entries                     [ DONE ]
Preparing Nova VNC Proxy entries                     [ DONE ]
Preparing OpenStack Network-related Nova entries     [ DONE ]
Preparing Nova Common entries                        [ DONE ]
Preparing Neutron LBaaS Agent entries                [ DONE ]
Preparing Neutron API entries                        [ DONE ]
Preparing Neutron L3 entries                         [ DONE ]
Preparing Neutron L2 Agent entries                   [ DONE ]
Preparing Neutron DHCP Agent entries                 [ DONE ]
Preparing Neutron Metering Agent entries             [ DONE ]
Checking if NetworkManager is enabled and running    [ DONE ]
Preparing OpenStack Client entries                   [ DONE ]
Preparing Horizon entries                            [ DONE ]
Preparing Puppet manifests                           [ DONE ]
Copying Puppet modules and manifests                 [ DONE ]
Applying 192.168.1.20_controller.pp
192.168.1.20_controller.pp:                          [ DONE ]         
Applying 192.168.1.20_network.pp
Applying 192.168.1.21_network.pp
192.168.1.20_network.pp:                             [ DONE ]      
192.168.1.21_network.pp:                             [ DONE ]      
Applying 192.168.1.21_compute.pp
192.168.1.21_compute.pp:                             [ DONE ]      
Applying Puppet manifests                            [ DONE ]
Finalizing                                           [ DONE ]

 **** Installation completed successfully ******                        //出現successfully就成功啦

Additional information:
 * File /root/keystonerc_admin has been created on OpenStack client host 192.168.1.20. To use the command line tools you need to source the file.
 * To access the OpenStack Dashboard browse to http://192.168.1.20/dashboard .
Please, find your login credentials stored in the keystonerc_admin in your home directory.
 * The installation log file is available at: /var/tmp/packstack/20191009-112804-UhwdSh/openstack-setup.log
 * The generated manifests are available at: /var/tmp/packstack/20191009-112804-UhwdSh/manifests
[root@openstack8 ~]# 
[root@openstack8 ~]# vim /etc/httpd/conf.d/15-horizon_vhost.conf    //Horizon 存在一個軟件的配置BUG
WSGIApplicationGroup %{GLOBAL}         //在35行後下面加上這一行就可以解決
[root@openstack8 ~]#apachectl graceful     //重新加載配置

最後在真機上登入網站

[root@room9pc01 ~]# firefox 192.168.1.20   //出現如圖首頁

用戶默認admin,密碼是你當時改的密碼
在這裏插入圖片描述
登入成功後顯示界面
在這裏插入圖片描述
到這呢阿坤的8G openstack雲平臺就挑戰成功遼,至於爲什麼沒nova1,nova2一起安裝呢,是因爲電腦內存不允許呀,小編怕爆內存,所以安全起見就只先安裝了nova1,至於nova2配置夠的小夥伴可以一試哦!

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