1. 程式人生 > >Openstack簡單搭建

Openstack簡單搭建

Openstack是一套IaaS解決方案,是一個開源的雲端計算管理平臺,以Apache許可證為授權
基礎管理服務包含Keystone,Cinder、Glance,Nova,Neutron,Horizon六個服務
Horizon
– 用於管理Openstack各種服務的、基於web的管理介面
– 通過圖形介面實現建立使用者、管理網路、啟勱例項等操作

Keystone
– 為其他服務提供認證和授權的集中身份管理服務
– 也提供了集中的目錄服務
– 支援多種身份認證模式,如密碼認證、令牌認證、以及AWS(亞馬遜Web服務)登陸
– 為使用者和其他服務提供了SSO認證服務
Glance
– 扮演虛擬機器映象註冊的角色
– 允許使用者為直接儲存拷貝伺服器映象
– 這些映象可以用於新建虛擬機器的模板

Cinder
– 為虛擬機器管理儲存卷的服務
– 為執行在Nova中的例項提供永久的塊儲存
– 可以通過快照迚行資料備份
– 經常應用在例項儲存環境中,如資料庫檔案

Nova
– 在節點上用於管理虛擬機器的服務
– Nova是一個分散式的服務,能夠與Keystone互動實現認證,與Glance互動實現映象管理
– Nova被設計成在標準硬體上能夠迚行水平擴充套件
– 啟勱例項時,如果有則需要下載映象

Neutron
– 一種軟體定義網路服務
– 用於建立網路、子網、路由器、管理浮勱IP地址
– 可以實現虛擬交換機、虛擬路由器
– 可用於在專案中建立VPN
Swift:物件儲存,實現資料的儲存和共享

下面我們搭建一臺openstack簡易平臺
環境:在真機上部署DNS解析伺服器和NTP時間同步伺服器

]# cat /etc/named.conf 
options {
        listen-on port 53 {192.168.4.254;};
        //listen-on-v6 port 53 {::1;};
        allow-query {any;};
	directory "/var/named";

	forwarders  { 114.114.114.114; };
         dnssec-enable no;                           //dnssec,資料安全認證
         dnssec-validation no;      

};
]# systemctl restart named
]#vim /etc/chrony.conf
server ntp.aliyun.com iburst                        //同步的時間伺服器地址
bindacqaddress 0.0.0.0                              //監聽所有地址
allow 0/0                                           //允許所有地址同步
]# chronyc sources -v ntp.aliyun.com

配置yum源

]# ls /var/ftp/OSP                               //可以從關網上下載以下的軟體包做網路yum源
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
]# ls /var/ftp/EXTRA
comps.xml  Packages  repodata  version.txt

安裝兩臺虛擬機器,要求如下:
1、虛擬機器openstack: openstack nova,記憶體9.5G,硬碟 系統50G,新增一塊硬碟20G,兩塊網絡卡:eth0:vbr eth1:provate1
2、虛擬機器nova01: nova,記憶體5G,硬碟 系統50G,兩塊網絡卡:eth0:vbr eth1:provate1

]# qemu-img  create -b  node.qcow2 -f qcow2 openstack.img 50G
]# qemu-img  create -b  node.qcow2 -f qcow2 nova.img 50G   
]# cd /var/lib/libvirt/images/
]# qemu-img create -f qcow2 disk.img 20G               //建立一塊空的磁碟映象
]# virsh edit openstack
<name>openstack</name>                                 //名稱修改為主機名
<memory unit='KiB'>9848000</memory>                    //記憶體大小修改為環境要求的9.5G大小
  <currentMemory unit='KiB'>9848000</currentMemory>   //同上
<devices>
    <emulator>/usr/libexec/qemu-kvm</emulator>
    <disk type='file' device='disk'>
    <driver name='qemu' type='qcow2'/>
    <source file='/var/lib/libvirt/images/openstack.img'/>
    <target dev='vda' bus='virtio'/>
     <address type='pci' domain='0x0000' bus='0x00' slot='0x05' function='0x        0'/>
      </disk>
     <disk type='file' device='disk'>              //由於需要新增磁碟,在配置檔案中新增disk項即可,刪除address內容
     <driver name='qemu' type='qcow2'/>
     <source file='/var/lib/libvirt/images/disk.img'/>
     <target dev='vdb' bus='virtio'/>
     </disk>
<interface type='bridge'>
      <mac address='52:54:00:25:28:9b'/>
      <source bridge='vbr'/>
      <model type='virtio'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x03' function='0x0'/>
    </interface>
    <interface type='bridge'>    //由於需要新增網絡卡並加入不同的網路則需要新增interface項,刪除address和mac地址,source bridge
                                    改為另一個網路名
      <source bridge='private1'/>
      <model type='virtio'/>
    </interface>

---------nova虛擬機器作如上同樣的操作-----------------------------------------------------

開啟虛擬機器,遠端連線並修改ip為靜態
]# virsh net-start private1
]# virsh start openstack
]# virsh console openstack
]#vim /etc/sysconfig/network-scripts/ifcfg-eth0
# Generated by dracut initrd
DEVICE="eth0"
ONBOOT="yes"
NM_CONTROLLED="yes"
TYPE="Ethernet"
BOOTPROTO="static"
IPADDR="192.168.1.10"
NETMASK="255.255.255.0"
GATEWAY="192.168.1.254"
]#cp /etc/sysconfig/network-scripts/ifcfg-eth0  >/etc/sysconfig/network-scripts/ifcfg-eth1
]#vim /etc/sysconfig/network-scripts/ifcfg-eth1
# Generated by dracut initrd
DEVICE="eth1"
ONBOOT="yes"
NM_CONTROLLED="yes"
TYPE="Ethernet"
BOOTPROTO="static"
IPADDR="192.168.4.10"
NETMASK="255.255.255.0"
]#reboot
擴容操作
]# /usr/bin/growpart  /dev/vda 1 
]# /usr/sbin/xfs_growfs  /

------------------nova虛擬機器上做同樣的操作,ip改成11-----------------------------------------

部署Openstack:
1、在Openstack上建立卷組

]# yum -y install lvm2
]# pvcreate  /dev/vdb                  //建立物理卷
]# vgcreate cinder-volumes /dev/vdb    //建立卷組,名字必須是cinder-volumes
]# vgs                                  //檢視卷組,這個卷組是給Cinder使用
  VG             #PV #LV #SN Attr   VSize   VFree  
  cinder-volumes   1   0   0 wz--n- <20.00g <20.00g                                              
]# yum install -y qemu-kvm libvirt-client libvirt-daemon >libvirt-daemon-driver-qemu python-setuptools
 //安裝額外軟體包

檢查openstack環境部署****************************
• 是否禁用selinux
• 是否解除安裝firewalld和NetworkManager
• 檢查配置主機網路引數(靜態IP)
• 檢查配置主機yum源(12個)
• 檢查cinder-volumes卷組是否已經建立
• 檢查公鑰是否匯入
• 檢視相關軟體包是否安裝
• 檢查NTP和DNS伺服器是否可用

]# yum install -y openstack-packstack    //openstack批量安裝管理工具
]# packstack --gen-answer-file=answer.ini  //生成應答檔案,ini結尾的檔案字有顏色
]# vim answer.ini  修改應答檔案
CONFIG_DEFAULT_PASSWORD=redhat                 //在11行,設定一個預設密碼,
CONFIG_SWIFT_INSTALL=n                         //在42行,物件儲存是否安裝,由於容量不夠,這邊寫no     
CONFIG_NTP_SERVERS=192.168.1.254               //在75行,NTP伺服器ip
CONFIG_CINDER_VOLUMES_CREATE=n                 //554行,不允許系統自己建立卷組
CONFIG_NEUTRON_ML2_TYPE_DRIVERS=flat,vxlan     //840行,網路格式
vxlan-隔離網路,劃分不同網路    flat-扁平網路,共用外網
CONFIG_NEUTRON_ML2_VXLAN_GROUP=239.1.1.5       //876行,組播地址
CONFIG_NEUTRON_OVS_BRIDGE_MAPPINGS=physnet1:br-ex 
//910行,設定虛擬交換機,用來打通次元,physnet1:br-ex:定一個有物理埠的虛擬交換機:虛擬交換機的名字
CONFIG_NEUTRON_OVS_BRIDGE_IFACES=br-ex:eth0     //921行,將eth0網絡卡變成虛擬埠
CONFIG_NEUTRON_OVS_TUNNEL_IF=eth1               //936行,隧道埠,用於兩個域的虛擬機器交換資料
CONFIG_PROVISION_DEMO=n                         //配置測試檔案,1179行
]# packstack --answer-file=answer.ini           //執行應答檔案
**** Installation completed successfully ******   //無報錯即可

BUG—安裝雖然沒有報錯,但預設無法開啟 Horizon,這是一個軟體的配置 BUG

]#vim /etc/httpd/conf.d/15-horizon_vhost.conf
## Server aliases                 //在配置檔案中找到以下內容部分
ServerAlias 192.168.1.10
ServerAlias openstack.localhost
ServerAlias localhost
WSGIDaemonProcess apache group=apache processes=3 threads=10 user=apache
WSGIProcessGroup apache
WSGIApplicationGroup %{GLOBAL}      //新增此行內容解決bug
WSGIScriptAlias /dashboard 
"/usr/share/openstack-dashboard/openstack_dashboard/wsgi/django.wsgi"
]# apachectl graceful                //重新載入配置檔案 apachectl graceful
]# cat /root/keystonerc_admin     //登陸Horizon頁面的賬戶和密碼文放在此檔案中
unset OS_SERVICE_TOKEN
    export OS_USERNAME=admin                 //賬戶名
    export OS_PASSWORD=202748b2dc544626      //密碼
    export OS_AUTH_URL=http://192.168.1.10:5000/v2.0   
    export PS1='[\[email protected]\h \W(keystone_admin)]\$ '
    export OS_TENANT_NAME=admin
    export OS_REGION_NAME=RegionOne
]# firefox http://192.168.1.10               //真機訪問192.168.1.10
]# cat ifcfg-br-ex                           //配置eth0為外部OVS網橋的埠
ONBOOT="yes"
NM_CONTROLLED="yes"
IPADDR="192.168.1.10"
NETMASK="255.255.255.0"
GATEWAY="192.168.1.254"
DEVICE=br-ex                              //裝置名稱
NAME=br-ex              
DEVICETYPE=ovs                   //裝置型別
OVSBOOTPROTO="static"  
TYPE=OVSBridge                   //OVS外部網橋
]# ovs-vsctl show                  //檢視ovs網橋配置
.........
Bridge br-int                   //內網
.........
Bridge br-ex                  //外網
.....
Port "eth0"                  //eth0作為網橋埠
Interface "eth0"
...........
]# ip -o addr show            //檢視網絡卡資訊

]# openstack --help //檢視openstack命令幫助

以上步驟可以幫助我們搭建一個基本的openstack平臺。