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平臺。